diff options
author | Vadim Lomovtsev <Vadim.Lomovtsev@cavium.com> | 2018-03-30 04:59:52 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-03-31 22:18:17 -0400 |
commit | 1b6d55f23948df5ea2b9f59b766bed91fb609b99 (patch) | |
tree | 858df02e540d36a51ea35cb004f2b101d2ee39e3 | |
parent | aba4a2633b020064677df77e92238b1a753942fe (diff) | |
download | linux-1b6d55f23948df5ea2b9f59b766bed91fb609b99.tar.gz linux-1b6d55f23948df5ea2b9f59b766bed91fb609b99.tar.bz2 linux-1b6d55f23948df5ea2b9f59b766bed91fb609b99.zip |
net: thunderx: add workqueue control structures for handle ndo_set_rx_mode request
The kernel calls ndo_set_rx_mode() callback from atomic context which
causes messaging timeouts between VF and PF (as they’re implemented via
MSIx). So in order to handle ndo_set_rx_mode() we need to get rid of it.
This commit implements necessary workqueue related structures to let VF
queue kernel request processing in non-atomic context later.
Signed-off-by: Vadim Lomovtsev <Vadim.Lomovtsev@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/cavium/thunder/nic.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/ethernet/cavium/thunder/nic.h b/drivers/net/ethernet/cavium/thunder/nic.h index 069289b4f968..5fc46c5a4f36 100644 --- a/drivers/net/ethernet/cavium/thunder/nic.h +++ b/drivers/net/ethernet/cavium/thunder/nic.h @@ -265,6 +265,22 @@ struct nicvf_drv_stats { struct cavium_ptp; +struct xcast_addr { + struct list_head list; + u64 addr; +}; + +struct xcast_addr_list { + struct list_head list; + int count; +}; + +struct nicvf_work { + struct delayed_work work; + u8 mode; + struct xcast_addr_list *mc; +}; + struct nicvf { struct nicvf *pnicvf; struct net_device *netdev; @@ -313,6 +329,7 @@ struct nicvf { struct nicvf_pfc pfc; struct tasklet_struct qs_err_task; struct work_struct reset_task; + struct nicvf_work rx_mode_work; /* PTP timestamp */ struct cavium_ptp *ptp_clock; |