Re: [RFC net-next 2/2] net: fec: add ndo_select_queue to fix TX bandwidth fluctuations

From: Andrew Lunn
Date: Tue May 25 2021 - 09:58:31 EST


> > On Sun, May 23, 2021 at 06:20:19PM +0800, Joakim Zhang wrote:
> > > From: Fugang Duan <fugang.duan@xxxxxxx>
> > >
> > > As we know that AVB is enabled by default, and the ENET IP design is
> > > queue 0 for best effort, queue 1&2 for AVB Class A&B. Bandwidth of
> > > queue 1&2 set in driver is 50%, TX bandwidth fluctuated when selecting
> > > tx queues randomly with FEC_QUIRK_HAS_AVB quirk available.
> >
> > How is the driver currently scheduling between these queues? Given the
> > 802.1q priorities, i think we want queue 2 with the highest priority for
> > scheduling. Then queue 0 and lastly queue 1.
>
> I think currently there is no schedule between these queues in the driver.

So queues 1 and 2 are limited to 50% the total bandwidth, but are
otherwise not prioritised over queue 0? That sounds odd.

> Could you please point me where I can find mapping between priorities and queues? You prefer to below mapping?
> static const u16 fec_enet_vlan_pri_to_queue[8] = {1, 1, 0, 0, 0, 2, 2, 2};

https://en.wikipedia.org/wiki/IEEE_P802.1p

I'm not sure i actually believe the hardware does not prioritise the
queues. It seems to me, it is more likely to take frames from queues 1
and 2 if they have not consumed their 50% share.

PCP value 0 is best effort. That should really be given the same
priority as a packet without a VLAN header. Which is why i suggested
putting those packets into queue 0.

Also, if the hardware is performing prioritisation, PCP value 1,
background, when put into queue 1 will end up as higher priority then
best effort?

Andrew