On Thu, May 4, 2023 at 11:28 AM Sanjay Rao <srao@xxxxxxxxxx> wrote: > > I am looking at the implementation of ndo_xdp_xmit() in > mlx5/core/en/xdp.c (most other drivers also have similar > implementations). This function is called for XDP-REDIRECT. > > int mlx5e_xdp_xmit(struct net_device *dev, int n, struct xdp_frame > **frames, u32 flags) > { > ------ > ------ > > sq_num = smp_processor_id(); > if (unlikely(sq_num >= priv->channels.num)) > return -ENXIO; > > -------- > } > > > Doesn't this restrict all ports to be bound to the same CPUs via > smp_affinity? In my setup, one port has CPUs 1-63 and the other has > 65-127 for a 63 queue configuration. XDP_REDIRECT will fail because > 65-127 will exceed the channel count. Is that by design, or am I > missing something? We can find a similar implementation for the i40e > driver as well. We had previously brought this up for the i40e driver[0]. My take on the resulting conversation is that this behavior being a bug, but there is no clear idea of how to solve it without introducing locks, which would be an unacceptable performance hit. > > Regards, > Sanjay --Zvi [0]: https://lore.kernel.org/xdp-newbies/CAC1LvL1NHj6n+RNYRmja2YDhkcCwREuhjaBz_k255rU1jdO8Sw@xxxxxxxxxxxxxx/