net/i40evf: add multicast MAC address filtering
[dpdk.git] / drivers / net / i40e / i40e_ethdev.h
index 12da379..151ed1a 100644 (file)
@@ -950,6 +950,7 @@ struct i40e_pf {
        bool gtp_replace_flag;   /* 1 - GTP-C/U filter replace is done */
        bool qinq_replace_flag;  /* QINQ filter replace is done */
        struct i40e_tm_conf tm_conf;
+       bool support_multi_driver; /* 1 - support multiple driver */
 
        /* Dynamic Device Personalization */
        bool gtp_support; /* 1 - support GTP-C and GTP-U */
@@ -1004,6 +1005,9 @@ struct i40e_vf {
        uint16_t promisc_flags; /* Promiscuous setting */
        uint32_t vlan[I40E_VFTA_SIZE]; /* VLAN bit map */
 
+       struct ether_addr mc_addrs[I40E_NUM_MACADDR_MAX]; /* Multicast addrs */
+       uint16_t mc_addrs_num;   /* Multicast mac addresses number */
+
        /* Event from pf */
        bool dev_closed;
        bool link_up;
@@ -1291,13 +1295,17 @@ i40e_align_floor(int n)
 }
 
 static inline uint16_t
-i40e_calc_itr_interval(int16_t interval, bool is_pf)
+i40e_calc_itr_interval(int16_t interval, bool is_pf, bool is_multi_drv)
 {
        if (interval < 0 || interval > I40E_QUEUE_ITR_INTERVAL_MAX) {
-               if (is_pf)
-                       interval = I40E_QUEUE_ITR_INTERVAL_DEFAULT;
-               else
-                       interval = I40E_VF_QUEUE_ITR_INTERVAL_DEFAULT;
+               if (is_multi_drv) {
+                       interval = I40E_QUEUE_ITR_INTERVAL_MAX;
+               } else {
+                       if (is_pf)
+                               interval = I40E_QUEUE_ITR_INTERVAL_DEFAULT;
+                       else
+                               interval = I40E_VF_QUEUE_ITR_INTERVAL_DEFAULT;
+               }
        }
 
        /* Convert to hardware count, as writing each 1 represents 2 us */