diff options
Diffstat (limited to 'drivers/net/ethernet/intel/idpf/xdp.c')
| -rw-r--r-- | drivers/net/ethernet/intel/idpf/xdp.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/idpf/xdp.c b/drivers/net/ethernet/intel/idpf/xdp.c index 89d5735f42f2..180335beaae1 100644 --- a/drivers/net/ethernet/intel/idpf/xdp.c +++ b/drivers/net/ethernet/intel/idpf/xdp.c @@ -4,6 +4,7 @@ #include "idpf.h" #include "idpf_virtchnl.h" #include "xdp.h" +#include "xsk.h" static int idpf_rxq_for_each(const struct idpf_vport *vport, int (*fn)(struct idpf_rx_queue *rxq, void *arg), @@ -66,6 +67,11 @@ static int __idpf_xdp_rxq_info_init(struct idpf_rx_queue *rxq, void *arg) return 0; } +int idpf_xdp_rxq_info_init(struct idpf_rx_queue *rxq) +{ + return __idpf_xdp_rxq_info_init(rxq, NULL); +} + int idpf_xdp_rxq_info_init_all(const struct idpf_vport *vport) { return idpf_rxq_for_each(vport, __idpf_xdp_rxq_info_init, NULL); @@ -84,6 +90,11 @@ static int __idpf_xdp_rxq_info_deinit(struct idpf_rx_queue *rxq, void *arg) return 0; } +void idpf_xdp_rxq_info_deinit(struct idpf_rx_queue *rxq, u32 model) +{ + __idpf_xdp_rxq_info_deinit(rxq, (void *)(size_t)model); +} + void idpf_xdp_rxq_info_deinit_all(const struct idpf_vport *vport) { idpf_rxq_for_each(vport, __idpf_xdp_rxq_info_deinit, @@ -442,6 +453,9 @@ int idpf_xdp(struct net_device *dev, struct netdev_bpf *xdp) case XDP_SETUP_PROG: ret = idpf_xdp_setup_prog(vport, xdp); break; + case XDP_SETUP_XSK_POOL: + ret = idpf_xsk_pool_setup(vport, xdp); + break; default: notsupp: ret = -EOPNOTSUPP; |
