tsnep: Rework RX buffer allocation
authorGerhard Engleder <gerhard@engleder-embedded.com>
Wed, 30 Nov 2022 19:37:08 +0000 (20:37 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 2 Dec 2022 10:47:49 +0000 (10:47 +0000)
commitdbadae92728788d61e910506b0cb61986c7fdb4a
tree82649fb6be7d1322bb031aa081bf0b3cb6ff8c69
parentd3dfe8d6c04061a3eadfc299ba8009b38f4bc25b
tsnep: Rework RX buffer allocation

Refill RX queue in batches of descriptors to improve performance. Refill
is allowed to fail as long as a minimum number of descriptors is active.
Thus, a limited number of failed RX buffer allocations is now allowed
for normal operation. Previously every failed allocation resulted in a
dropped frame.

If the minimum number of active descriptors is reached, then RX buffers
are still reused and frames are dropped. This ensures that the RX queue
never runs empty and always continues to operate.

Prework for future XDP support.

Signed-off-by: Gerhard Engleder <gerhard@engleder-embedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/engleder/tsnep.h
drivers/net/ethernet/engleder/tsnep_ethtool.c
drivers/net/ethernet/engleder/tsnep_main.c