net: enetc: stop XDP NAPI processing when build_skb() fails
authorVladimir Oltean <vladimir.oltean@nxp.com>
Fri, 16 Apr 2021 21:22:19 +0000 (00:22 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 17 Apr 2021 00:08:39 +0000 (17:08 -0700)
commit8f50d8bb3f1c173492d1d224bce99486fd6ccd32
treebe737a4c3d79ed879fe0e7f7da5ebe0d77e724bc
parent672f9a21989e56c8233d1d8daab3e5eecf76c59e
net: enetc: stop XDP NAPI processing when build_skb() fails

When the code path below fails:

enetc_clean_rx_ring_xdp // XDP_PASS
-> enetc_build_skb
   -> enetc_map_rx_buff_to_skb
      -> build_skb

enetc_clean_rx_ring_xdp will 'break', but that 'break' instruction isn't
strong enough to actually break the NAPI poll loop, just the switch/case
statement for XDP actions. So we increment rx_frm_cnt and go to the next
frames minding our own business.

Instead let's do what the skb NAPI poll function does, and break the
loop now, waiting for the memory pressure to go away. Otherwise the next
calls to build_skb() are likely to fail too.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/enetc/enetc.c