linux/drivers/net/ethernet/aquantia/atlantic
Dmitry Bogdanov be6cef69ba net: aquantia: fix out of memory condition on rx side
On embedded environments with hard memory limits it is a normal although
rare case when skb can't be allocated on rx part under high traffic.

In such OOM cases napi_complete_done() was not called.
So the napi object became in an invalid state like it is "scheduled".
Kernel do not re-schedules the poll of that napi object.

Consequently, kernel can not remove that object the system hangs on
`ifconfig down` waiting for a poll.

We are fixing this by gracefully closing napi poll routine with correct
invocation of napi_complete_done.

This was reproduced with artificially failing the allocation of skb to
simulate an "out of memory" error case and check that traffic does
not get stuck.

Fixes: 970a2e9864 ("net: ethernet: aquantia: Vector operations")
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: Dmitry Bogdanov <dmitry.bogdanov@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-08-31 19:07:11 -07:00
..
hw_atl Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-06-27 21:06:39 -07:00
aq_cfg.h net: aquantia: replace internal driver version code with uts 2019-06-27 10:58:32 -07:00
aq_common.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_drvinfo.c net: aquantia: make all files GPL-2.0-only 2019-06-27 10:58:32 -07:00
aq_drvinfo.h net: aquantia: make all files GPL-2.0-only 2019-06-27 10:58:32 -07:00
aq_ethtool.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_ethtool.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_filters.c net: aquantia: fix limit of vlan filters 2019-08-31 19:07:11 -07:00
aq_filters.h net: aquantia: make all files GPL-2.0-only 2019-06-27 10:58:32 -07:00
aq_hw_utils.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_hw_utils.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_hw.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_main.c net: aquantia: reapply vlan filters on up 2019-08-31 19:07:11 -07:00
aq_main.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_nic.c net: aquantia: linkstate irq should be oneshot 2019-08-31 19:07:11 -07:00
aq_nic.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-06-27 21:06:39 -07:00
aq_pci_func.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_pci_func.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_ring.c net: aquantia: vlan offloads logic in datapath 2019-06-27 10:58:32 -07:00
aq_ring.h net: aquantia: adding fields and device features for vlan offload 2019-06-27 10:58:32 -07:00
aq_rss.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_utils.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
aq_vec.c net: aquantia: fix out of memory condition on rx side 2019-08-31 19:07:11 -07:00
aq_vec.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
Makefile treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 308 2019-06-05 17:37:04 +02:00
ver.h net: aquantia: replace internal driver version code with uts 2019-06-27 10:58:32 -07:00