Lines Matching defs:nn

24 static bool nfp_net_ebpf_capable(struct nfp_net *nn)
27 struct nfp_app_bpf *bpf = nn->app->priv;
29 return nn->cap & NFP_NET_CFG_CTRL_BPF &&
31 nn_readb(nn, NFP_NET_CFG_BPF_ABI) == bpf->abi_version;
38 nfp_bpf_xdp_offload(struct nfp_app *app, struct nfp_net *nn,
43 if (!nfp_net_ebpf_capable(nn))
46 running = nn->dp.ctrl & NFP_NET_CFG_CTRL_BPF;
47 xdp_running = running && nn->xdp_hw.prog;
54 return nfp_net_bpf_offload(nn, prog, running, extack);
57 static const char *nfp_bpf_extra_cap(struct nfp_app *app, struct nfp_net *nn)
59 return nfp_net_ebpf_capable(nn) ? "BPF" : "";
63 nfp_bpf_vnic_alloc(struct nfp_app *app, struct nfp_net *nn, unsigned int id)
82 nn->app_priv = bv;
84 err = nfp_app_nic_vnic_alloc(app, nn, id);
88 bv->start_off = nn_readw(nn, NFP_NET_CFG_BPF_START);
89 bv->tgt_done = nn_readw(nn, NFP_NET_CFG_BPF_DONE);
93 kfree(nn->app_priv);
97 static void nfp_bpf_vnic_free(struct nfp_app *app, struct nfp_net *nn)
99 struct nfp_bpf_vnic *bv = nn->app_priv;
109 struct nfp_net *nn = cb_priv;
119 if (!tc_cls_can_offload_and_chain0(nn->dp.netdev, &cls_bpf->common))
121 if (!nfp_net_ebpf_capable(nn)) {
143 bv = nn->app_priv;
153 err = nfp_net_bpf_offload(nn, cls_bpf->prog, oldprog,
159 nn->port->tc_offload_cnt = !!bv->tc_prog;
168 struct nfp_net *nn = netdev_priv(netdev);
175 nn, nn, true);
184 struct nfp_net *nn = netdev_priv(netdev);
188 if (~nn->dp.ctrl & NFP_NET_CFG_CTRL_BPF)
191 if (nn->xdp_hw.prog) {
192 prog = nn->xdp_hw.prog;
194 bv = nn->app_priv;
198 if (nfp_bpf_offload_check_mtu(nn, prog, new_mtu)) {
199 nn_info(nn, "BPF offload active, potential packet access beyond hardware packet boundary");