On 2021-06-07 19:26, Michael Walle wrote:
Hi Vladimir, Hi Xiaoliang,
Am 2021-05-07 14:19, schrieb Vladimir Oltean:
> Devices like Felix need the per-queue max SDU from the user - if that
> isn's specified in the netlink message they'll have to default to the
> interface's MTU.
Btw. just to let you and Xiaoliang know:
It appears that PORT_MAX_SDU isn't working as expected. It is used as a
fallback if QMAXSDU_CFG_n isn't set for the guard band calculation. But it
appears to be _not_ used for discarding any frames. E.g. if you set
PORT_MAX_SDU to 500 the port will still happily send frames larger than 500
bytes. (Unless of course you hit the guard band of 500 bytes). OTOH
QMAXSDU_CFG_n works as expected, it will discard oversized frames - and
presumly will set the guard band accordingly, I haven't tested this explicitly.
Thus, I wonder what sense PORT_MAX_SDU makes at all. If you set the guard
band to a smaller value than the MTU, you'll also need to make sure, there will
be no larger frames scheduled on that port.
In any case, the workaround is to set QMAXSDU_CFG_n (for all
n=0..7) to the desired max_sdu value instead of using PORT_MAX_SDU.
It might also make sense to check with the IP supplier.
In the case anyone wants to implement that for (upstream) linux ;)
-michael
Yes, PORT_MAX_SDU is only used for guard band calculation. DEV_GMII:
MAC_MAXLEN_CFG
limited the frame length accepted by the MAC.
I am worried that
QMAXSDU is not a universal
setting, it may just be set on Felix, so there is no suitable place to
add this configuration.