Ujwal Kundur <ujwal.kundur@xxxxxxxxx> writes: > Refer to the Rx queue using a XDP frame's attached netdev and ascertain > the queue index from it. > > Signed-off-by: Ujwal Kundur <ujwal.kundur@xxxxxxxxx> > --- > kernel/bpf/cpumap.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/kernel/bpf/cpumap.c b/kernel/bpf/cpumap.c > index 67e8a2fc1a99..8230292deac1 100644 > --- a/kernel/bpf/cpumap.c > +++ b/kernel/bpf/cpumap.c > @@ -34,6 +34,7 @@ > #include <linux/btf_ids.h> > > #include <linux/netdevice.h> > +#include <net/netdev_rx_queue.h> > #include <net/gro.h> > > /* General idea: XDP packets getting XDP redirected to another CPU, > @@ -196,7 +197,7 @@ static int cpu_map_bpf_prog_run_xdp(struct bpf_cpu_map_entry *rcpu, > > rxq.dev = xdpf->dev_rx; > rxq.mem.type = xdpf->mem_type; > - /* TODO: report queue_index to xdp_rxq_info */ > + rxq.queue_index = get_netdev_rx_queue_index(xdpf->dev_rx->_rx); This is pretty nonsensical; the definition of the function you're calling is this: static inline unsigned int get_netdev_rx_queue_index(struct netdev_rx_queue *queue) { struct net_device *dev = queue->dev; int index = queue - dev->_rx; BUG_ON(index >= dev->num_rx_queues); return index; } So passing dev->_rx to that function will always return 0; which is what the field is already initialised to... -Toke