summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorElad Kanfi <eladkan@mellanox.com>2016-05-26 15:00:06 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-06-24 10:22:01 -0700
commit2d83aedee4aac5452f598e13df8982b929ba27bd (patch)
tree845cf20c4de910c781e2742417fb5011105721a5 /drivers
parent2e42134e1894ab69ab0343e2c561bd25aee47d42 (diff)
downloadlwn-2d83aedee4aac5452f598e13df8982b929ba27bd.tar.gz
lwn-2d83aedee4aac5452f598e13df8982b929ba27bd.zip
net: nps_enet: Disable interrupts before napi reschedule
[ Upstream commit 86651650d16a359e4142c6a8b0467c87e48c4c94 ] Since NAPI works by shutting down event interrupts when theres work and turning them on when theres none, the net driver must make sure that interrupts are disabled when it reschedules polling. By calling napi_reschedule, the driver switches to polling mode, therefor there should be no interrupt interference. Any received packets will be handled in nps_enet_poll by polling the HW indication of received packet until all packets are handled. Signed-off-by: Elad Kanfi <eladkan@mellanox.com> Acked-by: Noam Camus <noamca@mellanox.com> Tested-by: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/ezchip/nps_enet.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ethernet/ezchip/nps_enet.c b/drivers/net/ethernet/ezchip/nps_enet.c
index 085f9125cf42..06f031715b57 100644
--- a/drivers/net/ethernet/ezchip/nps_enet.c
+++ b/drivers/net/ethernet/ezchip/nps_enet.c
@@ -205,8 +205,10 @@ static int nps_enet_poll(struct napi_struct *napi, int budget)
* re-adding ourselves to the poll list.
*/
- if (priv->tx_skb && !tx_ctrl_ct)
+ if (priv->tx_skb && !tx_ctrl_ct) {
+ nps_enet_reg_set(priv, NPS_ENET_REG_BUF_INT_ENABLE, 0);
napi_reschedule(napi);
+ }
}
return work_done;