aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/ping.c
diff options
context:
space:
mode:
authorTobias Waldekranz <tobias@waldekranz.com>2020-07-03 16:10:58 +0200
committerDavid S. Miller <davem@davemloft.net>2020-07-07 15:25:05 -0700
commit7cdaa4cc4bdfa252d515b307863f5a1972246dd6 (patch)
tree32cec9b7733825cc0f160c9964adb6ad651edbab /net/ipv4/ping.c
parentnet: sky2: initialize return of gm_phy_read (diff)
downloadlinux-dev-7cdaa4cc4bdfa252d515b307863f5a1972246dd6.tar.xz
linux-dev-7cdaa4cc4bdfa252d515b307863f5a1972246dd6.zip
net: ethernet: fec: prevent tx starvation under high rx load
In the ISR, we poll the event register for the queues in need of service and then enter polled mode. After this point, the event register will never be read again until we exit polled mode. In a scenario where a UDP flow is routed back out through the same interface, i.e. "router-on-a-stick" we'll typically only see an rx queue event initially. Once we start to process the incoming flow we'll be locked polled mode, but we'll never clean the tx rings since that event is never caught. Eventually the netdev watchdog will trip, causing all buffers to be dropped and then the process starts over again. Rework the NAPI poll to keep trying to consome the entire budget as long as new events are coming in, making sure to service all rx/tx queues, in priority order, on each pass. Fixes: 4d494cdc92b3 ("net: fec: change data structure to support multiqueue") Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com> Tested-by: Fugang Duan <fugang.duan@nxp.com> Reviewed-by: Fugang Duan <fugang.duan@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ping.c')
0 files changed, 0 insertions, 0 deletions