diff options
| -rw-r--r-- | drivers/net/ethernet/netronome/nfp/bpf/main.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/bpf/main.c b/drivers/net/ethernet/netronome/nfp/bpf/main.c index 214b02a3acdd..4b63167906ca 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/main.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/main.c | |||
| @@ -84,6 +84,33 @@ static const char *nfp_bpf_extra_cap(struct nfp_app *app, struct nfp_net *nn) | |||
| 84 | return nfp_net_ebpf_capable(nn) ? "BPF" : ""; | 84 | return nfp_net_ebpf_capable(nn) ? "BPF" : ""; |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | static int | ||
| 88 | nfp_bpf_vnic_alloc(struct nfp_app *app, struct nfp_net *nn, unsigned int id) | ||
| 89 | { | ||
| 90 | int err; | ||
| 91 | |||
| 92 | nn->app_priv = kzalloc(sizeof(struct nfp_bpf_vnic), GFP_KERNEL); | ||
| 93 | if (!nn->app_priv) | ||
| 94 | return -ENOMEM; | ||
| 95 | |||
| 96 | err = nfp_app_nic_vnic_alloc(app, nn, id); | ||
| 97 | if (err) | ||
| 98 | goto err_free_priv; | ||
| 99 | |||
| 100 | return 0; | ||
| 101 | err_free_priv: | ||
| 102 | kfree(nn->app_priv); | ||
| 103 | return err; | ||
| 104 | } | ||
| 105 | |||
| 106 | static void nfp_bpf_vnic_free(struct nfp_app *app, struct nfp_net *nn) | ||
| 107 | { | ||
| 108 | struct nfp_bpf_vnic *bv = nn->app_priv; | ||
| 109 | |||
| 110 | WARN_ON(bv->tc_prog); | ||
| 111 | kfree(bv); | ||
| 112 | } | ||
| 113 | |||
| 87 | static int nfp_bpf_setup_tc_block_cb(enum tc_setup_type type, | 114 | static int nfp_bpf_setup_tc_block_cb(enum tc_setup_type type, |
| 88 | void *type_data, void *cb_priv) | 115 | void *type_data, void *cb_priv) |
| 89 | { | 116 | { |
| @@ -286,7 +313,8 @@ const struct nfp_app_type app_bpf = { | |||
| 286 | 313 | ||
| 287 | .extra_cap = nfp_bpf_extra_cap, | 314 | .extra_cap = nfp_bpf_extra_cap, |
| 288 | 315 | ||
| 289 | .vnic_alloc = nfp_app_nic_vnic_alloc, | 316 | .vnic_alloc = nfp_bpf_vnic_alloc, |
| 317 | .vnic_free = nfp_bpf_vnic_free, | ||
| 290 | 318 | ||
| 291 | .setup_tc = nfp_bpf_setup_tc, | 319 | .setup_tc = nfp_bpf_setup_tc, |
| 292 | .tc_busy = nfp_bpf_tc_busy, | 320 | .tc_busy = nfp_bpf_tc_busy, |
