mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-04 04:04:19 +00:00
Merge branch 'net-lantiq_xrx200-fix-errors-under-memory-pressure'
Aleksander Jan Bajkowski says: ==================== net: lantiq_xrx200: fix errors under memory pressure This series fixes issues that can occur in the driver under memory pressure. Situations when the system cannot allocate memory are rare, so the mentioned bugs have been fixed recently. The patches have been tested on a BT Home router with the Lantiq xRX200 chipset. Changelog: v3: - removed netdev_err() log from the first patch v2: - the second patch has been changed, so that under memory pressure situation the driver will not receive packets indefinitely regardless of the NAPI budget, - the third patch has been added. ==================== Link: https://lore.kernel.org/r/20220824215408.4695-1-olek2@wp.pl Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
d974730c88
@ -193,6 +193,7 @@ static int xrx200_alloc_buf(struct xrx200_chan *ch, void *(*alloc)(unsigned int
|
||||
|
||||
ch->rx_buff[ch->dma.desc] = alloc(priv->rx_skb_size);
|
||||
if (!ch->rx_buff[ch->dma.desc]) {
|
||||
ch->rx_buff[ch->dma.desc] = buf;
|
||||
ret = -ENOMEM;
|
||||
goto skip;
|
||||
}
|
||||
@ -239,6 +240,12 @@ static int xrx200_hw_receive(struct xrx200_chan *ch)
|
||||
}
|
||||
|
||||
skb = build_skb(buf, priv->rx_skb_size);
|
||||
if (!skb) {
|
||||
skb_free_frag(buf);
|
||||
net_dev->stats.rx_dropped++;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
skb_reserve(skb, NET_SKB_PAD);
|
||||
skb_put(skb, len);
|
||||
|
||||
@ -288,7 +295,7 @@ static int xrx200_poll_rx(struct napi_struct *napi, int budget)
|
||||
if (ret == XRX200_DMA_PACKET_IN_PROGRESS)
|
||||
continue;
|
||||
if (ret != XRX200_DMA_PACKET_COMPLETE)
|
||||
return ret;
|
||||
break;
|
||||
rx++;
|
||||
} else {
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user