net: lantiq_xrx200: fix lock under memory pressure
When the xrx200_hw_receive() function returns -ENOMEM, the NAPI poll
function immediately returns an error.
This is incorrect for two reasons:
* the function terminates without enabling interrupts or scheduling NAPI,
* the error code (-ENOMEM) is returned instead of the number of received
packets.
After the first memory allocation failure occurs, packet reception is
locked due to disabled interrupts from DMA..
Fixes: fe1a56420c
("net: lantiq: Add Lantiq / Intel VRX200 Ethernet driver")
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Родитель
c8b043702d
Коммит
c4b6e9341f
|
@ -294,7 +294,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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче