be2net: add rxhash support
[deliverable/linux.git] / drivers / net / benet / be.h
index f803c58b941d7196f4ce53d62cf6c5a0a63d33d1..ab5be0545e38640b5b8b3889c4c013f8db0e698e 100644 (file)
@@ -84,7 +84,8 @@ static inline char *nic_name(struct pci_dev *pdev)
 #define MCC_CQ_LEN             256
 
 #define MAX_RSS_QS             4       /* BE limit is 4 queues/port */
-#define BE_MAX_MSIX_VECTORS    (MAX_RSS_QS + 1 + 1)/* RSS qs + 1 def Rx + Tx */
+#define MAX_RX_QS              (MAX_RSS_QS + 1) /* RSS qs + 1 def Rx */
+#define BE_MAX_MSIX_VECTORS    (MAX_RX_QS + 1)/* RX + TX */
 #define BE_NAPI_WEIGHT         64
 #define MAX_RX_POST            BE_NAPI_WEIGHT /* Frags posted at a time */
 #define RX_FRAGS_REFILL_WM     (RX_Q_LEN - MAX_RX_POST)
@@ -154,7 +155,7 @@ struct be_eq_obj {
        u16 min_eqd;            /* in usecs */
        u16 max_eqd;            /* in usecs */
        u16 cur_eqd;            /* in usecs */
-       u8  msix_vec_idx;
+       u8  eq_idx;
 
        struct napi_struct napi;
 };
@@ -276,7 +277,7 @@ struct be_adapter {
        spinlock_t mcc_cq_lock;
 
        struct msix_entry msix_entries[BE_MAX_MSIX_VECTORS];
-       bool msix_enabled;
+       u32 num_msix_vec;
        bool isr_registered;
 
        /* TX Rings */
@@ -287,11 +288,11 @@ struct be_adapter {
        u32 cache_line_break[8];
 
        /* Rx rings */
-       struct be_rx_obj rx_obj[MAX_RSS_QS + 1]; /* one default non-rss Q */
+       struct be_rx_obj rx_obj[MAX_RX_QS];
        u32 num_rx_qs;
        u32 big_page_size;      /* Compounded page size shared by rx wrbs */
 
-       u8 msix_vec_next_idx;
+       u8 eq_next_idx;
        struct be_drv_stats drv_stats;
 
        struct vlan_group *vlan_grp;
@@ -312,6 +313,7 @@ struct be_adapter {
        char fw_ver[FW_VER_LEN];
        u32 if_handle;          /* Used to configure filtering */
        u32 pmac_id;            /* MAC addr handle used by BE card */
+       u32 beacon_state;       /* for set_phys_id */
 
        bool eeh_err;
        bool link_up;
@@ -351,6 +353,7 @@ struct be_adapter {
 
 extern const struct ethtool_ops be_ethtool_ops;
 
+#define msix_enabled(adapter)          (adapter->num_msix_vec > 0)
 #define tx_stats(adapter)              (&adapter->tx_stats)
 #define rx_stats(rxo)                  (&rxo->stats)
 
@@ -482,6 +485,11 @@ static inline void be_vf_eth_addr_generate(struct be_adapter *adapter, u8 *mac)
        memcpy(mac, adapter->netdev->dev_addr, 3);
 }
 
+static inline bool be_multi_rxq(const struct be_adapter *adapter)
+{
+       return adapter->num_rx_qs > 1;
+}
+
 extern void be_cq_notify(struct be_adapter *adapter, u16 qid, bool arm,
                u16 num_popped);
 extern void be_link_status_update(struct be_adapter *adapter, bool link_up);
This page took 0.026168 seconds and 5 git commands to generate.