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>
 
 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;
        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;