d6707bec59
Currently, bcmgenet_desc_rx() calls bcmgenet_rx_refill() at the end of Rx packet processing loop, after the current Rx packet has already been passed to napi_gro_receive(). However, bcmgenet_rx_refill() might fail to allocate a new Rx skb, thus leaving a hole on the Rx queue where no valid Rx buffer exists. To eliminate this situation: 1. Rewrite bcmgenet_rx_refill() to retain the current Rx skb on the Rx queue if a new replacement Rx skb can't be allocated and DMA-mapped. In this case, the data on the current Rx skb is effectively dropped. 2. Modify bcmgenet_desc_rx() to call bcmgenet_rx_refill() at the top of Rx packet processing loop, so that the new replacement Rx skb is already in place before the current Rx skb is processed. Signed-off-by: Petri Gynther <pgynther@google.com> Tested-by: Jaedon Shin <jaedon.shin@gmail.com>-- Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Tested-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
bnx2x | ||
genet | ||
b44.c | ||
b44.h | ||
bcm63xx_enet.c | ||
bcm63xx_enet.h | ||
bcmsysport.c | ||
bcmsysport.h | ||
bgmac.c | ||
bgmac.h | ||
bnx2_fw.h | ||
bnx2.c | ||
bnx2.h | ||
cnic_defs.h | ||
cnic_if.h | ||
cnic.c | ||
cnic.h | ||
Kconfig | ||
Makefile | ||
sb1250-mac.c | ||
tg3.c | ||
tg3.h |