Messages in this thread Patch in this message |  | | From | Aleksander Jan Bajkowski <> | Subject | [PATCH net 2/2] net: lantiq_xrx200: fix return value in ENOMEM case | Date | Sun, 17 Jul 2022 21:48:24 +0200 |
| |
The xrx200_hw_receive() function can return: * XRX200_DMA_PACKET_IN_PROGRESS (the next descriptor contains the further part of the packet), * XRX200_DMA_PACKET_COMPLETE (a complete packet has been received), * -ENOMEM (a memory allocation error occurred).
Currently, the third of these cases is incorrectly handled. The NAPI poll function returns then a negative value (-ENOMEM). Correctly in such a situation, the driver should try to receive next packet in the hope that this time the memory allocation for the next descriptor will succeed.
This patch replaces the XRX200_DMA_PACKET_IN_PROGRESS definition with -EINPROGRESS to simplify the driver.
Fixes: c3e6b2c35b34 ("net: lantiq_xrx200: add ingress SG DMA support") Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl> --- drivers/net/ethernet/lantiq_xrx200.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/lantiq_xrx200.c b/drivers/net/ethernet/lantiq_xrx200.c index 6a83a6c19484..2865d07f3fc8 100644 --- a/drivers/net/ethernet/lantiq_xrx200.c +++ b/drivers/net/ethernet/lantiq_xrx200.c @@ -27,9 +27,6 @@ #define XRX200_DMA_TX 1 #define XRX200_DMA_BURST_LEN 8 -#define XRX200_DMA_PACKET_COMPLETE 0 -#define XRX200_DMA_PACKET_IN_PROGRESS 1 - /* cpu port mac */ #define PMAC_RX_IPG 0x0024 #define PMAC_RX_IPG_MASK 0xf @@ -272,9 +269,8 @@ static int xrx200_hw_receive(struct xrx200_chan *ch) netif_receive_skb(ch->skb_head); ch->skb_head = NULL; ch->skb_tail = NULL; - ret = XRX200_DMA_PACKET_COMPLETE; } else { - ret = XRX200_DMA_PACKET_IN_PROGRESS; + ret = -EINPROGRESS; } return ret; @@ -292,10 +288,8 @@ static int xrx200_poll_rx(struct napi_struct *napi, int budget) if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) == LTQ_DMA_C) { ret = xrx200_hw_receive(ch); - if (ret == XRX200_DMA_PACKET_IN_PROGRESS) + if (ret) continue; - if (ret != XRX200_DMA_PACKET_COMPLETE) - return ret; rx++; } else { break; -- 2.30.2
|  |