diff options
author | Sowmini Varadhan <sowmini.varadhan@oracle.com> | 2014-08-13 10:29:41 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-08-13 20:04:46 -0700 |
commit | 1d311ad2f9fe5d75cf228372174170d0f435e3ef (patch) | |
tree | e1ceb11d8f5ea8602b970baac8475735dd88eda9 /drivers/net/ethernet/sun/sunvnet.h | |
parent | adddc32d6fde82156c779997f928865100542e55 (diff) | |
download | linux-1d311ad2f9fe5d75cf228372174170d0f435e3ef.tar.bz2 |
sunvnet: Schedule maybe_tx_wakeup() as a tasklet from ldc_rx path
At the tail of vnet_event(), if we hit the maybe_tx_wakeup()
condition, we try to take the netif_tx_lock() in the
recv-interrupt-context and can deadlock with dev_watchdog().
vnet_event() should schedule maybe_tx_wakeup() as a tasklet
to avoid this deadlock
Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sun/sunvnet.h')
-rw-r--r-- | drivers/net/ethernet/sun/sunvnet.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/ethernet/sun/sunvnet.h b/drivers/net/ethernet/sun/sunvnet.h index d347a5bf24b0..de5c2c64996f 100644 --- a/drivers/net/ethernet/sun/sunvnet.h +++ b/drivers/net/ethernet/sun/sunvnet.h @@ -1,6 +1,8 @@ #ifndef _SUNVNET_H #define _SUNVNET_H +#include <linux/interrupt.h> + #define DESC_NCOOKIES(entry_size) \ ((entry_size) - sizeof(struct vio_net_desc)) @@ -78,6 +80,8 @@ struct vnet { struct list_head list; u64 local_mac; + + struct tasklet_struct vnet_tx_wakeup; }; #endif /* _SUNVNET_H */ |