Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[cascardo/linux.git] / drivers / net / ethernet / emulex / benet / be.h
index 515e206..fe3763d 100644 (file)
@@ -72,6 +72,9 @@
 #define BE_MAX_MTU              (BE_MAX_JUMBO_FRAME_SIZE -     \
                                 (ETH_HLEN + ETH_FCS_LEN))
 
+/* Accommodate for QnQ configurations where VLAN insertion is enabled in HW */
+#define BE_MAX_GSO_SIZE                (65535 - 2 * VLAN_HLEN)
+
 #define BE_NUM_VLANS_SUPPORTED 64
 #define BE_MAX_EQD             128u
 #define        BE_MAX_TX_FRAG_COUNT    30
 #define        RSS_INDIR_TABLE_LEN     128
 #define RSS_HASH_KEY_LEN       40
 
+#define BE_UNKNOWN_PHY_STATE   0xFF
+
 struct be_dma_mem {
        void *va;
        dma_addr_t dma;
@@ -122,27 +127,27 @@ struct be_dma_mem {
 };
 
 struct be_queue_info {
+       u32 len;
+       u32 entry_size; /* Size of an element in the queue */
+       u32 tail, head;
+       atomic_t used;  /* Number of valid elements in the queue */
+       u32 id;
        struct be_dma_mem dma_mem;
-       u16 len;
-       u16 entry_size; /* Size of an element in the queue */
-       u16 id;
-       u16 tail, head;
        bool created;
-       atomic_t used;  /* Number of valid elements in the queue */
 };
 
-static inline u32 MODULO(u16 val, u16 limit)
+static inline u32 MODULO(u32 val, u32 limit)
 {
        BUG_ON(limit & (limit - 1));
        return val & (limit - 1);
 }
 
-static inline void index_adv(u16 *index, u16 val, u16 limit)
+static inline void index_adv(u32 *index, u32 val, u32 limit)
 {
        *index = MODULO((*index + val), limit);
 }
 
-static inline void index_inc(u16 *index, u16 limit)
+static inline void index_inc(u32 *index, u32 limit)
 {
        *index = MODULO((*index + 1), limit);
 }
@@ -167,7 +172,7 @@ static inline void queue_head_inc(struct be_queue_info *q)
        index_inc(&q->head, q->len);
 }
 
-static inline void index_dec(u16 *index, u16 limit)
+static inline void index_dec(u32 *index, u32 limit)
 {
        *index = MODULO((*index - 1), limit);
 }
@@ -390,7 +395,7 @@ enum vf_state {
 #define BE_FLAGS_QNQ_ASYNC_EVT_RCVD            BIT(7)
 #define BE_FLAGS_VXLAN_OFFLOADS                        BIT(8)
 #define BE_FLAGS_SETUP_DONE                    BIT(9)
-#define BE_FLAGS_EVT_INCOMPATIBLE_SFP          BIT(10)
+#define BE_FLAGS_PHY_MISCONFIGURED             BIT(10)
 #define BE_FLAGS_ERR_DETECTION_SCHEDULED       BIT(11)
 #define BE_FLAGS_OS2BMC                                BIT(12)
 
@@ -540,6 +545,7 @@ struct be_adapter {
        struct delayed_work be_err_detection_work;
        u8 recovery_retries;
        u8 err_flags;
+       bool pcicfg_mapped;     /* pcicfg obtained via pci_iomap() */
        u32 flags;
        u32 cmd_privileges;
        /* Ethtool knobs and info */
@@ -603,6 +609,7 @@ struct be_adapter {
        u32 bmc_filt_mask;
        u32 fat_dump_len;
        u16 serial_num[CNTL_SERIAL_NUM_WORDS];
+       u8 phy_state; /* state of sfp optics (functional, faulted, etc.,) */
 };
 
 #define be_physfn(adapter)             (!adapter->virtfn)