next                                                                                                                                                                                
 linux/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h:5893                                │ linux/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h:5561                                 
                                                                                         │                                                                                          
                                                                                         │          __le16  error_code;                                                             
        __le16  req_type;                                                                │          __le16  req_type;                                                               
        __le16  cmpl_ring;                                                               │                                                                                          
        __le16  seq_id;                                                                  │          __le16  seq_id;                                                                 
        __le16  target_id;                                                               │          __le16  resp_len;                                                               
        __le64  resp_addr;                                                               │                                                                                          
        __le32  flags;                                                                   │                                                                                          
        __le32  enables;                                                                 │                                                                                          
        #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID0_VALID     0x1UL               │                                                                                          
        #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID1_VALID     0x2UL               │                                                                                          
        #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID2_VALID     0x4UL               │                                                                                          
        #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID3_VALID     0x8UL               │                                                                                          
        #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID4_VALID     0x10UL              │                                                                                          
        #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID5_VALID     0x20UL              │                                                                                          
        #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID6_VALID     0x40UL              │                                                                                          
        #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID7_VALID     0x80UL              │                                                                                          
        __le16  port_id;                                                                 │                                                                                          
        u8      queue_id0;                                                               │          u8      queue_id0;                                                              
        u8      unused_0;                                                                │          u8      unused_0;                                                               
                                                                                         │          __le16  unused_1;                                                               
        __le32  queue_id0_min_bw;                                                        │          __le32  queue_id0_min_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE
        __le32  queue_id0_max_bw;                                                        │          __le32  queue_id0_max_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE
        u8      queue_id0_tsa_assign;                                                    │          u8      queue_id0_tsa_assign;                                                   
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_SP             0x0UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_SP             0x0UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_ETS            0x1UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_ETS            0x1UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST  0xffUL          │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST  0xffUL       
        u8      queue_id0_pri_lvl;                                                       │          u8      queue_id0_pri_lvl;                                                      
        u8      queue_id0_bw_weight;                                                     │          u8      queue_id0_bw_weight;                                                    
        u8      queue_id1;                                                               │          u8      queue_id1;                                                              
        __le32  queue_id1_min_bw;                                                        │          __le32  queue_id1_min_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE
        __le32  queue_id1_max_bw;                                                        │          __le32  queue_id1_max_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE
        u8      queue_id1_tsa_assign;                                                    │          u8      queue_id1_tsa_assign;                                                   
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_SP             0x0UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_SP             0x0UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_ETS            0x1UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_ETS            0x1UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_FIRST 0x2UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_RESERVED_FIRST 0x2UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_LAST  0xffUL          │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_RESERVED_LAST  0xffUL       
        u8      queue_id1_pri_lvl;                                                       │          u8      queue_id1_pri_lvl;                                                      
        u8      queue_id1_bw_weight;                                                     │          u8      queue_id1_bw_weight;                                                    
        u8      queue_id2;                                                               │          u8      queue_id2;                                                              
        __le32  queue_id2_min_bw;                                                        │          __le32  queue_id2_min_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE
        __le32  queue_id2_max_bw;                                                        │          __le32  queue_id2_max_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE
        u8      queue_id2_tsa_assign;                                                    │          u8      queue_id2_tsa_assign;                                                   
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_SP             0x0UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_SP             0x0UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_ETS            0x1UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_ETS            0x1UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_FIRST 0x2UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_RESERVED_FIRST 0x2UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_LAST  0xffUL          │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_RESERVED_LAST  0xffUL       
        u8      queue_id2_pri_lvl;                                                       │          u8      queue_id2_pri_lvl;                                                      
        u8      queue_id2_bw_weight;                                                     │          u8      queue_id2_bw_weight;                                                    
        u8      queue_id3;                                                               │          u8      queue_id3;                                                              
        __le32  queue_id3_min_bw;                                                        │          __le32  queue_id3_min_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE
        __le32  queue_id3_max_bw;                                                        │          __le32  queue_id3_max_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE
        u8      queue_id3_tsa_assign;                                                    │          u8      queue_id3_tsa_assign;                                                   
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_SP             0x0UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_SP             0x0UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_ETS            0x1UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_ETS            0x1UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_FIRST 0x2UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_RESERVED_FIRST 0x2UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_LAST  0xffUL          │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_RESERVED_LAST  0xffUL       
        u8      queue_id3_pri_lvl;                                                       │          u8      queue_id3_pri_lvl;                                                      
        u8      queue_id3_bw_weight;                                                     │          u8      queue_id3_bw_weight;                                                    
        u8      queue_id4;                                                               │          u8      queue_id4;                                                              
        __le32  queue_id4_min_bw;                                                        │          __le32  queue_id4_min_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE
        __le32  queue_id4_max_bw;                                                        │          __le32  queue_id4_max_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE
        u8      queue_id4_tsa_assign;                                                    │          u8      queue_id4_tsa_assign;                                                   
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_SP             0x0UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_SP             0x0UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_ETS            0x1UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_ETS            0x1UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_FIRST 0x2UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_RESERVED_FIRST 0x2UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_LAST  0xffUL          │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_RESERVED_LAST  0xffUL       
        u8      queue_id4_pri_lvl;                                                       │          u8      queue_id4_pri_lvl;                                                      
        u8      queue_id4_bw_weight;                                                     │          u8      queue_id4_bw_weight;                                                    
        u8      queue_id5;                                                               │          u8      queue_id5;                                                              
        __le32  queue_id5_min_bw;                                                        │          __le32  queue_id5_min_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE
        __le32  queue_id5_max_bw;                                                        │          __le32  queue_id5_max_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE
        u8      queue_id5_tsa_assign;                                                    │          u8      queue_id5_tsa_assign;                                                   
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_SP             0x0UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_SP             0x0UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_ETS            0x1UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_ETS            0x1UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_FIRST 0x2UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_RESERVED_FIRST 0x2UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_LAST  0xffUL          │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_RESERVED_LAST  0xffUL       
        u8      queue_id5_pri_lvl;                                                       │          u8      queue_id5_pri_lvl;                                                      
        u8      queue_id5_bw_weight;                                                     │          u8      queue_id5_bw_weight;                                                    
        u8      queue_id6;                                                               │          u8      queue_id6;                                                              
        __le32  queue_id6_min_bw;                                                        │          __le32  queue_id6_min_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE
        __le32  queue_id6_max_bw;                                                        │          __le32  queue_id6_max_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE
        u8      queue_id6_tsa_assign;                                                    │          u8      queue_id6_tsa_assign;                                                   
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_SP             0x0UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_SP             0x0UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_ETS            0x1UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_ETS            0x1UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_FIRST 0x2UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_RESERVED_FIRST 0x2UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_LAST  0xffUL          │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_RESERVED_LAST  0xffUL       
        u8      queue_id6_pri_lvl;                                                       │          u8      queue_id6_pri_lvl;                                                      
        u8      queue_id6_bw_weight;                                                     │          u8      queue_id6_bw_weight;                                                    
        u8      queue_id7;                                                               │          u8      queue_id7;                                                              
        __le32  queue_id7_min_bw;                                                        │          __le32  queue_id7_min_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE
        __le32  queue_id7_max_bw;                                                        │          __le32  queue_id7_max_bw;                                                       
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_MASK             0xffffff │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_MASK             0xffff
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_SFT              0        │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_SFT              0     
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_SCALE                     0x100000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_SCALE                     0x1000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_SCALE_BITS                  (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_SCALE_BITS                  (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_SCALE_BYTES                 (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_SCALE_BYTES                 (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_SCALE_LAST                 QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_SCALE_LAST                 QUEUE
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MASK        0xe00000 │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MASK        0xe000
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_SFT         29       │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_SFT         29    
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_KILO          (0x2
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_BASE          (0x4
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_C │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE
        u8      queue_id7_tsa_assign;                                                    │          u8      queue_id7_tsa_assign;                                                   
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_SP             0x0UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_SP             0x0UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_ETS            0x1UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_ETS            0x1UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_FIRST 0x2UL           │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_RESERVED_FIRST 0x2UL        
        #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_LAST  0xffUL          │          #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_RESERVED_LAST  0xffUL       
        u8      queue_id7_pri_lvl;                                                       │          u8      queue_id7_pri_lvl;                                                      
        u8      queue_id7_bw_weight;                                                     │          u8      queue_id7_bw_weight;                                                    
        u8      unused_1[5];                                                             │          u8      unused_2[4];                                                            
                                                                                         │          u8      valid;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:4655                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:3267                                     
                                                                                         │                                                                                          
        u8 reserved0;                                                                    │          u8 reserved0;                                                                   
        u8 state;                                                                        │          u8 state;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_SHIFT    0                                │  #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT       0                               
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_MASK        0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED1_MASK   0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_SHIFT       1                                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED1_SHIFT  1                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_MASK        0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED2_MASK   0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_SHIFT       2                                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED2_SHIFT  2                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_SHIFT    3                                │  #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_SHIFT       3                               
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_MASK        0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED3_MASK   0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_SHIFT       4                                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED3_SHIFT  4                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_MASK        0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED4_MASK   0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_SHIFT       5                                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED4_SHIFT  5                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_MASK        0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED5_MASK   0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_SHIFT       6                                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED5_SHIFT  6                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_MASK        0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED6_MASK   0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_SHIFT       7                                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED6_SHIFT  7                                       
        u8 flags1;                                                                       │                  u8 flags1;                                                              
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_MASK                0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED7_MASK   0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_SHIFT               0                        │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED7_SHIFT  0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_MASK                0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED8_MASK   0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_SHIFT               1                        │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED8_SHIFT  1                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_MASK                0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED9_MASK   0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_SHIFT               2                        │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED9_SHIFT  2                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_BIT11_MASK                    0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_BIT11_MASK               0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_BIT11_SHIFT           3                                │  #define XSTORM_ETH_CONN_AG_CTX_BIT11_SHIFT              3                               
#define XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_MASK             0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_SHIFT            4                        │  #define XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_SHIFT       4                               
#define XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_MASK             0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_SHIFT            5                        │  #define XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_SHIFT       5                               
#define XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_MASK   0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_MASK      0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT  6                                │  #define XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT     6                               
#define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_MASK             0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT            7                        │  #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT       7                               
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define XSTORM_ETH_HW_CONN_AG_CTX_CF0_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF0_SHIFT     0                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF0_SHIFT        0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF1_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF1_SHIFT     2                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF1_SHIFT        2                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF2_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF2_SHIFT     4                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF2_SHIFT        4                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF3_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF3_SHIFT     6                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF3_SHIFT        6                                       
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define XSTORM_ETH_HW_CONN_AG_CTX_CF4_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF4_SHIFT     0                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF4_SHIFT        0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF5_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF5_SHIFT     2                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF5_SHIFT        2                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF6_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF6_SHIFT     4                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF6_SHIFT        4                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF7_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF7_SHIFT     6                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF7_SHIFT        6                                       
        u8 flags4;                                                                       │                  u8 flags4;                                                              
#define XSTORM_ETH_HW_CONN_AG_CTX_CF8_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF8_SHIFT     0                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF8_SHIFT        0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF9_MASK      0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3                                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF9_SHIFT     2                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF9_SHIFT        2                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF10_MASK     0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF10_MASK        0x3                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF10_SHIFT    4                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF10_SHIFT       4                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF11_MASK     0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF11_MASK        0x3                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF11_SHIFT    6                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF11_SHIFT       6                                       
        u8 flags5;                                                                       │          u8 flags5;                                                                      
#define XSTORM_ETH_HW_CONN_AG_CTX_CF12_MASK     0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF12_MASK        0x3                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF12_SHIFT    0                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF12_SHIFT       0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF13_MASK     0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF13_MASK        0x3                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF13_SHIFT    2                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF13_SHIFT       2                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF14_MASK     0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF14_MASK        0x3                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF14_SHIFT    4                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF14_SHIFT       4                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF15_MASK     0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_CF15_MASK        0x3                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF15_SHIFT    6                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF15_SHIFT       6                                       
        u8 flags6;                                                                       │          u8 flags6;                                                                      
#define XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK 0x3                              │  #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK            0x3                     
#define XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT        0                        │  #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT   0                               
#define XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_MASK 0x3                              │  #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_MASK            0x3                     
#define XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT        2                        │  #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT   2                               
#define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_MASK                    0x3                      │  #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_MASK                       0x3                     
#define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_SHIFT           4                                │  #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_SHIFT                      4                       
#define XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_MASK             0x3                      │  #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_MASK                0x3                     
#define XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_SHIFT            6                        │  #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_SHIFT               6                       
        u8 flags7;                                                                       │          u8 flags7;                                                                      
#define XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_MASK 0x3                                      │  #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_MASK            0x3                             
#define XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_SHIFT        0                                │  #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_SHIFT   0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_MASK       0x3                              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED10_MASK  0x3                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_SHIFT      2                                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED10_SHIFT 2                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_MASK        0x3                              │  #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_MASK   0x3                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_SHIFT       4                                │  #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_SHIFT  4                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF0EN_MASK               0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_SHIFT   6                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT              6                               
#define XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF1EN_MASK               0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_SHIFT   7                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT              7                               
        u8 flags8;                                                                       │          u8 flags8;                                                                      
#define XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF2EN_MASK       0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_SHIFT   0                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT      0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF3EN_MASK       0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_SHIFT   1                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT      1                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF4EN_MASK       0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_SHIFT   2                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT      2                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF5EN_MASK       0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_SHIFT   3                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT      3                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF6EN_MASK       0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_SHIFT   4                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT      4                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF7EN_MASK       0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_SHIFT   5                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT      5                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF8EN_MASK       0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_SHIFT   6                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT      6                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_MASK            0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF9EN_MASK       0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_SHIFT   7                                        │  #define XSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT      7                                       
        u8 flags9;                                                                       │          u8 flags9;                                                                      
#define XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_MASK           0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF10EN_MASK                      0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_SHIFT          0                                │  #define XSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT                     0                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_MASK           0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF11EN_MASK                      0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_SHIFT          1                                │  #define XSTORM_ETH_CONN_AG_CTX_CF11EN_SHIFT                     1                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_MASK           0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF12EN_MASK                      0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_SHIFT          2                                │  #define XSTORM_ETH_CONN_AG_CTX_CF12EN_SHIFT                     2                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_MASK           0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF13EN_MASK                      0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_SHIFT          3                                │  #define XSTORM_ETH_CONN_AG_CTX_CF13EN_SHIFT                     3                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_MASK           0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF14EN_MASK                      0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_SHIFT          4                                │  #define XSTORM_ETH_CONN_AG_CTX_CF14EN_SHIFT                     4                       
#define XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_MASK           0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_CF15EN_MASK                      0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_SHIFT          5                                │  #define XSTORM_ETH_CONN_AG_CTX_CF15EN_SHIFT                     5                       
#define XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK      0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK 0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT     6                        │  #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT        6                       
#define XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK      0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK 0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT     7                        │  #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT        7                       
        u8 flags10;                                                                      │          u8 flags10;                                                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_MASK                 0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_MASK                    0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_SHIFT                        0                │  #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_SHIFT           0                               
#define XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_MASK          0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_MASK             0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT         1                        │  #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT            1                       
#define XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_MASK                      0x1              │  #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_MASK         0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT                     2                │  #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT                2                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_MASK                       0x1              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED11_MASK          0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_SHIFT                      3                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED11_SHIFT         3                               
#define XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_MASK                     0x1              │  #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_MASK                0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_SHIFT                    4                │  #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_SHIFT               4                       
#define XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK   0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK      0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT  5                        │  #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT     5                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_MASK                       0x1              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED12_MASK          0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_SHIFT                      6                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED12_SHIFT         6                               
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_MASK                       0x1              │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED13_MASK          0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_SHIFT                      7                │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED13_SHIFT         7                               
        u8 flags11;                                                                      │          u8 flags11;                                                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_MASK               0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED14_MASK  0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_SHIFT              0                        │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED14_SHIFT 0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_MASK               0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED15_MASK  0x1                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_SHIFT              1                        │  #define XSTORM_ETH_CONN_AG_CTX_RESERVED15_SHIFT 1                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_MASK   0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_MASK      0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT  2                                │  #define XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT     2                               
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_MASK          0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK             0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_SHIFT         3                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT            3                               
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_MASK          0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RULE6EN_MASK             0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_SHIFT         4                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT            4                               
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_MASK          0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK             0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_SHIFT         5                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT            5                               
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_MASK             0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_SHIFT            6                        │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_SHIFT       6                               
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_MASK          0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_RULE9EN_MASK             0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_SHIFT         7                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE9EN_SHIFT            7                               
        u8 flags12;                                                                      │          u8 flags12;                                                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_MASK 0x1                                      │  #define XSTORM_ETH_CONN_AG_CTX_RULE10EN_MASK            0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_SHIFT        0                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE10EN_SHIFT   0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_MASK 0x1                                      │  #define XSTORM_ETH_CONN_AG_CTX_RULE11EN_MASK            0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_SHIFT        1                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE11EN_SHIFT   1                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_SHIFT    2                                │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_SHIFT       2                               
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_SHIFT    3                                │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_SHIFT       3                               
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_MASK 0x1                                      │  #define XSTORM_ETH_CONN_AG_CTX_RULE14EN_MASK            0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_SHIFT        4                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE14EN_SHIFT   4                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_MASK 0x1                                      │  #define XSTORM_ETH_CONN_AG_CTX_RULE15EN_MASK            0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_SHIFT        5                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE15EN_SHIFT   5                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_MASK 0x1                                      │  #define XSTORM_ETH_CONN_AG_CTX_RULE16EN_MASK            0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_SHIFT        6                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE16EN_SHIFT   6                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_MASK 0x1                                      │  #define XSTORM_ETH_CONN_AG_CTX_RULE17EN_MASK            0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_SHIFT        7                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE17EN_SHIFT   7                                       
        u8 flags13;                                                                      │          u8 flags13;                                                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_MASK 0x1                                      │  #define XSTORM_ETH_CONN_AG_CTX_RULE18EN_MASK            0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_SHIFT        0                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE18EN_SHIFT   0                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_MASK 0x1                                      │  #define XSTORM_ETH_CONN_AG_CTX_RULE19EN_MASK            0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_SHIFT        1                                │  #define XSTORM_ETH_CONN_AG_CTX_RULE19EN_SHIFT   1                                       
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_SHIFT    2                                │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_SHIFT       2                               
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_SHIFT    3                                │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_SHIFT       3                               
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_SHIFT    4                                │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_SHIFT       4                               
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_SHIFT    5                                │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_SHIFT       5                               
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_SHIFT    6                                │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_SHIFT       6                               
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_MASK     0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_MASK        0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_SHIFT    7                                │  #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_SHIFT       7                               
        u8 flags14;                                                                      │          u8 flags14;                                                                     
#define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK 0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK            0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT        0                        │  #define XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT   0                               
#define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK       0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK  0x1                             
#define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT      1                        │  #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT 1                               
#define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK     0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK        0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT    2                        │  #define XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT       2                       
#define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK     0x1                      │  #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK        0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT    3                        │  #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT       3                       
#define XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_MASK   0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_MASK              0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT  4                                │  #define XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT             4                       
#define XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1                              │  #define XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK            0x1                     
#define XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT        5                        │  #define XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT   5                               
#define XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_MASK               0x3                      │  #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_MASK          0x3                             
#define XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_SHIFT              6                        │  #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_SHIFT         6                               
        u8 edpm_event_id;                                                                │          u8 edpm_event_id;                                                               
        __le16 physical_q0;                                                              │          __le16 physical_q0;                                                             
        __le16 e5_reserved1;                                                             │          __le16 e5_reserved1;                                                            
        __le16 edpm_num_bds;                                                             │          __le16 edpm_num_bds;                                                            
        __le16 tx_bd_cons;                                                               │          __le16 tx_bd_cons;                                                              
        __le16 tx_bd_prod;                                                               │          __le16 tx_bd_prod;                                                              
        __le16 updated_qm_pq_id;                                                         │          __le16 updated_qm_pq_id;                                                        
        __le16 conn_dpi;                                                                 │          __le16 conn_dpi;                                                                
                                                                                         │          u8 byte3;                                                                       
                                                                                         │          u8 byte4;                                                                       
                                                                                         │          u8 byte5;                                                                       
                                                                                         │          u8 byte6;                                                                       
                                                                                         │          __le32 reg0;                                                                    
                                                                                         │          __le32 reg1;                                                                    
                                                                                         │          __le32 reg2;                                                                    
                                                                                         │          __le32 reg3;                                                                    
                                                                                         │          __le32 reg4;                                                                    
                                                                                         │          __le32 reg5;                                                                    
                                                                                         │          __le32 reg6;                                                                    
                                                                                         │          __le16 word7;                                                                   
                                                                                         │          __le16 word8;                                                                   
                                                                                         │          __le16 word9;                                                                   
                                                                                         │          __le16 word10;                                                                  
                                                                                         │          __le32 reg7;                                                                    
                                                                                         │          __le32 reg8;                                                                    
                                                                                         │          __le32 reg9;                                                                    
                                                                                         │          u8 byte7;                                                                       
                                                                                         │          u8 byte8;                                                                       
                                                                                         │          u8 byte9;                                                                       
                                                                                         │          u8 byte10;                                                                      
                                                                                         │          u8 byte11;                                                                      
                                                                                         │          u8 byte12;                                                                      
                                                                                         │          u8 byte13;                                                                      
                                                                                         │          u8 byte14;                                                                      
                                                                                         │          u8 byte15;                                                                      
                                                                                         │          u8 e5_reserved;                                                                 
                                                                                         │          __le16 word11;                                                                  
                                                                                         │          __le32 reg10;                                                                   
                                                                                         │          __le32 reg11;                                                                   
                                                                                         │          __le32 reg12;                                                                   
                                                                                         │          __le32 reg13;                                                                   
                                                                                         │          __le32 reg14;                                                                   
                                                                                         │          __le32 reg15;                                                                   
                                                                                         │          __le32 reg16;                                                                   
                                                                                         │          __le32 reg17;                                                                   
                                                                                         │          __le32 reg18;                                                                   
                                                                                         │          __le32 reg19;                                                                   
                                                                                         │          __le16 word12;                                                                  
                                                                                         │          __le16 word13;                                                                  
                                                                                         │          __le16 word14;                                                                  
                                                                                         │          __le16 word15;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/cnic_defs.h:2141                                    │ linux/drivers/net/ethernet/broadcom/cnic_defs.h:1904                                     
                                                                                         │                                                                                          
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 agg_val1;                                                                    │          u16 agg_val1;                                                                   
        u8 agg_vars1;                                                                    │          u8 agg_vars1;                                                                   
#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)                                
#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0                                   │  #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0                                 
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)                                    │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)                                  
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1                                     │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1                                   
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)                                    │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)                                  
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2                                     │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2                                   
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)                                    │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)                                  
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3                                     │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3                                   
#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)                                │  #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)                              
#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4                                 │  #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4                               
#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5)                                         │  #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)                                       
#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5                                          │  #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5                                        
#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)                                
#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6                                   │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6                                 
#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)                                
#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7                                   │  #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7                                 
        u8 state;                                                                        │          u8 state;                                                                       
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 state;                                                                        │          u8 state;                                                                       
        u8 agg_vars1;                                                                    │          u8 agg_vars1;                                                                   
#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)                                
#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0                                   │  #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0                                 
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)                                    │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)                                  
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1                                     │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1                                   
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)                                    │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)                                  
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2                                     │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2                                   
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)                                    │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)                                  
#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3                                     │  #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3                                   
#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)                                │  #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)                              
#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4                                 │  #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4                               
#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5)                                         │  #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)                                       
#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5                                          │  #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5                                        
#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)                                
#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6                                   │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6                                 
#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)                                
#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7                                   │  #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7                                 
        u16 agg_val1;                                                                    │          u16 agg_val1;                                                                   
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 cdu_reserved;                                                                 │          u8 cdu_reserved;                                                                
        u8 __agg_vars4;                                                                  │          u8 __agg_vars4;                                                                 
        u8 agg_vars3;                                                                    │          u8 agg_vars3;                                                                   
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)                             │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)                           
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0                               │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0                             
#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)                                  
#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6                                   
        u8 agg_vars2;                                                                    │          u8 agg_vars2;                                                                   
#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0)                                          │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)                                        
#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0                                           │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0                                         
#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)                               │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)                             
#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2                                │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2                              
#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3)                                      │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)                                    
#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3                                       │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3                                     
#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4)                                      │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)                                    
#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4                                       │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4                                     
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5                                  
#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7)                                       │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)                                     
#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7                                        │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7                                      
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 agg_vars2;                                                                    │          u8 agg_vars2;                                                                   
#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0)                                          │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)                                        
#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0                                           │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0                                         
#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)                               │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)                             
#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2                                │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2                              
#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3)                                      │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)                                    
#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3                                       │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3                                     
#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4)                                      │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)                                    
#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4                                       │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4                                     
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5                                  
#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7)                                       │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)                                     
#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7                                        │  #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7                                      
        u8 agg_vars3;                                                                    │          u8 agg_vars3;                                                                   
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)                             │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)                           
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0                               │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0                             
#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)                                  
#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6                                   
        u8 __agg_vars4;                                                                  │          u8 __agg_vars4;                                                                 
        u8 cdu_reserved;                                                                 │          u8 cdu_reserved;                                                                
#endif                                                                                   │  #endif                                                                                  
        u32 more_to_send;                                                                │          u32 more_to_send;                                                               
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 agg_vars5;                                                                   │          u16 agg_vars5;                                                                  
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0                                  
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)                             │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)                           
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2                               │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2                             
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)                             │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)                           
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8                               │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8                             
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14)                                  │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)                                
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14                                 
        u16 agg_val4_th;                                                                 │          u16 sq_cons;                                                                    
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 agg_val4_th;                                                                 │          u16 sq_cons;                                                                    
        u16 agg_vars5;                                                                   │          u16 agg_vars5;                                                                  
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0                                  
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)                             │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)                           
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2                               │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2                             
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)                             │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)                           
#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8                               │  #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8                             
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14)                                  │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)                                
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14                                 
#endif                                                                                   │  #endif                                                                                  
        struct xstorm_tcp_tcp_ag_context_section tcp;                                    │          struct xstorm_tcp_tcp_ag_context_section tcp;                                   
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 agg_vars7;                                                                   │          u16 agg_vars7;                                                                  
#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)                        │  #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)                      
#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0                         │  #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0                       
#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3)                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)                                   
#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3                                      │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3                                    
#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)                                 │  #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)                               
#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4                                
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6                                  
#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8)                                          │  #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)                                        
#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8                                           │  #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8                                         
#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)                  │  #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)                
#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10                   │  #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10                 
#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)                                  
#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11                                   
#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)                                  
#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12                                   
#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)                                  
#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13                                   
#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)                                  
#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14                                   
#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)                                 │  #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)                               
#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15                                
        u8 agg_val3_th;                                                                  │          u8 agg_val3_th;                                                                 
        u8 agg_vars6;                                                                    │          u8 agg_vars6;                                                                   
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0                                  
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3                                  
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6                                  
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 agg_vars6;                                                                    │          u8 agg_vars6;                                                                   
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0                                  
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3                                  
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6                                  
        u8 agg_val3_th;                                                                  │          u8 agg_val3_th;                                                                 
        u16 agg_vars7;                                                                   │          u16 agg_vars7;                                                                  
#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)                        │  #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)                      
#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0                         │  #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0                       
#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3)                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)                                   
#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3                                      │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3                                    
#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)                                 │  #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)                               
#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4                                
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)                                 
#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6                                    │  #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6                                  
#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8)                                          │  #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)                                        
#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8                                           │  #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8                                         
#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)                  │  #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)                
#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10                   │  #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10                 
#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)                                  
#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11                                   
#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)                                  
#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12                                   
#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)                                  
#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13                                   
#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14)                                    │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)                                  
#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14                                     │  #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14                                   
#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)                                 │  #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)                               
#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15                                  │  #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15                                
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 __agg_val11_th;                                                              │          u16 __agg_val11_th;                                                             
        u16 __gen_data;                                                                  │          u16 __gen_data;                                                                 
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 __gen_data;                                                                  │          u16 __gen_data;                                                                 
        u16 __agg_val11_th;                                                              │          u16 __agg_val11_th;                                                             
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 __reserved1;                                                                  │          u8 __reserved1;                                                                 
        u8 __agg_val6_th;                                                                │          u8 __agg_val6_th;                                                               
        u16 __agg_val9;                                                                  │          u16 __agg_val9;                                                                 
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 __agg_val9;                                                                  │          u16 __agg_val9;                                                                 
        u8 __agg_val6_th;                                                                │          u8 __agg_val6_th;                                                               
        u8 __reserved1;                                                                  │          u8 __reserved1;                                                                 
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 agg_val2_th;                                                                 │          u16 hq_prod;                                                                    
        u16 agg_val2;                                                                    │          u16 hq_cons;                                                                    
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 agg_val2;                                                                    │          u16 hq_cons;                                                                    
        u16 agg_val2_th;                                                                 │          u16 hq_prod;                                                                    
#endif                                                                                   │  #endif                                                                                  
        u32 agg_vars8;                                                                   │          u32 agg_vars8;                                                                  
#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)                                   │  #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)                                 
#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2_SHIFT 0                                         │  #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2_SHIFT 0                                       
#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3 (0xFF<<24)                                      │  #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3 (0xFF<<24)                                    
#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3_SHIFT 24                                        │  #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3_SHIFT 24                                      
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 agg_misc0;                                                                   │          u16 r2tq_prod;                                                                  
        u16 agg_val4;                                                                    │          u16 sq_prod;                                                                    
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 agg_val4;                                                                    │          u16 sq_prod;                                                                    
        u16 agg_misc0;                                                                   │          u16 r2tq_prod;                                                                  
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 agg_val3;                                                                     │          u8 agg_val3;                                                                    
        u8 agg_val6;                                                                     │          u8 agg_val6;                                                                    
        u8 agg_val5_th;                                                                  │          u8 agg_val5_th;                                                                 
        u8 agg_val5;                                                                     │          u8 agg_val5;                                                                    
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 agg_val5;                                                                     │          u8 agg_val5;                                                                    
        u8 agg_val5_th;                                                                  │          u8 agg_val5_th;                                                                 
        u8 agg_val6;                                                                     │          u8 agg_val6;                                                                    
        u8 agg_val3;                                                                     │          u8 agg_val3;                                                                    
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 __agg_misc1;                                                                 │          u16 __agg_misc1;                                                                
        u16 agg_limit1;                                                                  │          u16 agg_limit1;                                                                 
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 agg_limit1;                                                                  │          u16 agg_limit1;                                                                 
        u16 __agg_misc1;                                                                 │          u16 __agg_misc1;                                                                
#endif                                                                                   │  #endif                                                                                  
        u32 completion_seq;                                                              │          u32 hq_cons_tcp_seq;                                                            
        u32 agg_misc4;                                                                   │          u32 exp_stat_sn;                                                                
        u32 rst_seq_num;                                                                 │          u32 rst_seq_num;                                                                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/nfdk/dp.c:980                                  │ linux/drivers/net/ethernet/netronome/nfp/nfd3/dp.c:844                                   
                                                                                         │                                                                                          
        struct nfp_net_r_vector *r_vec = rx_ring->r_vec;                                 │          struct nfp_net_r_vector *r_vec = rx_ring->r_vec;                                
        struct nfp_net_dp *dp = &r_vec->nfp_net->dp;                                     │          struct nfp_net_dp *dp = &r_vec->nfp_net->dp;                                    
        struct nfp_net_tx_ring *tx_ring;                                                 │          struct nfp_net_tx_ring *tx_ring;                                                
        struct bpf_prog *xdp_prog;                                                       │          struct bpf_prog *xdp_prog;                                                      
        bool xdp_tx_cmpl = false;                                                        │          bool xdp_tx_cmpl = false;                                                       
        unsigned int true_bufsz;                                                         │          unsigned int true_bufsz;                                                        
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
        int pkts_polled = 0;                                                             │          int pkts_polled = 0;                                                            
        struct xdp_buff xdp;                                                             │          struct xdp_buff xdp;                                                            
        int idx;                                                                         │          int idx;                                                                        
                                                                                         │                                                                                          
        xdp_prog = READ_ONCE(dp->xdp_prog);                                              │          xdp_prog = READ_ONCE(dp->xdp_prog);                                             
        true_bufsz = xdp_prog ? PAGE_SIZE : dp->fl_bufsz;                                │          true_bufsz = xdp_prog ? PAGE_SIZE : dp->fl_bufsz;                               
        xdp_init_buff(&xdp, PAGE_SIZE - NFP_NET_RX_BUF_HEADROOM,                         │          xdp_init_buff(&xdp, PAGE_SIZE - NFP_NET_RX_BUF_HEADROOM,                        
                      &rx_ring->xdp_rxq);                                                │                        &rx_ring->xdp_rxq);                                               
        tx_ring = r_vec->xdp_ring;                                                       │          tx_ring = r_vec->xdp_ring;                                                      
                                                                                         │                                                                                          
        while (pkts_polled < budget) {                                                   │          while (pkts_polled < budget) {                                                  
                unsigned int meta_len, data_len, meta_off, pkt_len, pkt_off;             │                  unsigned int meta_len, data_len, meta_off, pkt_len, pkt_off;            
                struct nfp_net_rx_buf *rxbuf;                                            │                  struct nfp_net_rx_buf *rxbuf;                                           
                struct nfp_net_rx_desc *rxd;                                             │                  struct nfp_net_rx_desc *rxd;                                            
                struct nfp_meta_parsed meta;                                             │                  struct nfp_meta_parsed meta;                                            
                bool redir_egress = false;                                               │                  bool redir_egress = false;                                              
                struct net_device *netdev;                                               │                  struct net_device *netdev;                                              
                dma_addr_t new_dma_addr;                                                 │                  dma_addr_t new_dma_addr;                                                
                u32 meta_len_xdp = 0;                                                    │                  u32 meta_len_xdp = 0;                                                   
                void *new_frag;                                                          │                  void *new_frag;                                                         
                                                                                         │                                                                                          
                idx = D_IDX(rx_ring, rx_ring->rd_p);                                     │                  idx = D_IDX(rx_ring, rx_ring->rd_p);                                    
                                                                                         │                                                                                          
                rxd = &rx_ring->rxds[idx];                                               │                  rxd = &rx_ring->rxds[idx];                                              
                if (!(rxd->rxd.meta_len_dd & PCIE_DESC_RX_DD))                           │                  if (!(rxd->rxd.meta_len_dd & PCIE_DESC_RX_DD))                          
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* Memory barrier to ensure that we won't do other reads                 │                  /* Memory barrier to ensure that we won't do other reads                
                 * before the DD bit.                                                    │                   * before the DD bit.                                                   
                 */                                                                      │                   */                                                                     
                dma_rmb();                                                               │                  dma_rmb();                                                              
                                                                                         │                                                                                          
                memset(&meta, 0, sizeof(meta));                                          │                  memset(&meta, 0, sizeof(meta));                                         
                                                                                         │                                                                                          
                rx_ring->rd_p++;                                                         │                  rx_ring->rd_p++;                                                        
                pkts_polled++;                                                           │                  pkts_polled++;                                                          
                                                                                         │                                                                                          
                rxbuf = &rx_ring->rxbufs[idx];                                           │                  rxbuf = &rx_ring->rxbufs[idx];                                          
                /*         < meta_len >                                                  │                  /*         < meta_len >                                                 
                 *  <-- [rx_offset] -->                                                  │                   *  <-- [rx_offset] -->                                                 
                 *  ---------------------------------------------------------            │                   *  ---------------------------------------------------------           
                 * | [XX] |  metadata  |             packet           | XXXX |           │                   * | [XX] |  metadata  |             packet           | XXXX |          
                 *  ---------------------------------------------------------            │                   *  ---------------------------------------------------------           
                 *         <---------------- data_len --------------->                   │                   *         <---------------- data_len --------------->                  
                 *                                                                       │                   *                                                                      
                 * The rx_offset is fixed for all packets, the meta_len can vary         │                   * The rx_offset is fixed for all packets, the meta_len can vary        
                 * on a packet by packet basis. If rx_offset is set to zero              │                   * on a packet by packet basis. If rx_offset is set to zero             
                 * (_RX_OFFSET_DYNAMIC) metadata starts at the beginning of the          │                   * (_RX_OFFSET_DYNAMIC) metadata starts at the beginning of the         
                 * buffer and is immediately followed by the packet (no [XX]).           │                   * buffer and is immediately followed by the packet (no [XX]).          
                 */                                                                      │                   */                                                                     
                meta_len = rxd->rxd.meta_len_dd & PCIE_DESC_RX_META_LEN_MASK;            │                  meta_len = rxd->rxd.meta_len_dd & PCIE_DESC_RX_META_LEN_MASK;           
                data_len = le16_to_cpu(rxd->rxd.data_len);                               │                  data_len = le16_to_cpu(rxd->rxd.data_len);                              
                pkt_len = data_len - meta_len;                                           │                  pkt_len = data_len - meta_len;                                          
                                                                                         │                                                                                          
                pkt_off = NFP_NET_RX_BUF_HEADROOM + dp->rx_dma_off;                      │                  pkt_off = NFP_NET_RX_BUF_HEADROOM + dp->rx_dma_off;                     
                if (dp->rx_offset == NFP_NET_CFG_RX_OFFSET_DYNAMIC)                      │                  if (dp->rx_offset == NFP_NET_CFG_RX_OFFSET_DYNAMIC)                     
                        pkt_off += meta_len;                                             │                          pkt_off += meta_len;                                            
                else                                                                     │                  else                                                                    
                        pkt_off += dp->rx_offset;                                        │                          pkt_off += dp->rx_offset;                                       
                meta_off = pkt_off - meta_len;                                           │                  meta_off = pkt_off - meta_len;                                          
                                                                                         │                                                                                          
                /* Stats update */                                                       │                  /* Stats update */                                                      
                u64_stats_update_begin(&r_vec->rx_sync);                                 │                  u64_stats_update_begin(&r_vec->rx_sync);                                
                r_vec->rx_pkts++;                                                        │                  r_vec->rx_pkts++;                                                       
                r_vec->rx_bytes += pkt_len;                                              │                  r_vec->rx_bytes += pkt_len;                                             
                u64_stats_update_end(&r_vec->rx_sync);                                   │                  u64_stats_update_end(&r_vec->rx_sync);                                  
                                                                                         │                                                                                          
                if (unlikely(meta_len > NFP_NET_MAX_PREPEND ||                           │                  if (unlikely(meta_len > NFP_NET_MAX_PREPEND ||                          
                             (dp->rx_offset && meta_len > dp->rx_offset))) {             │                               (dp->rx_offset && meta_len > dp->rx_offset))) {            
                        nn_dp_warn(dp, "oversized RX packet metadata %u\n",              │                          nn_dp_warn(dp, "oversized RX packet metadata %u\n",             
                                   meta_len);                                            │                                     meta_len);                                           
                        nfp_nfdk_rx_drop(dp, r_vec, rx_ring, rxbuf, NULL);               │                          nfp_nfd3_rx_drop(dp, r_vec, rx_ring, rxbuf, NULL);              
                        continue;                                                        │                          continue;                                                       
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                nfp_net_dma_sync_cpu_rx(dp, rxbuf->dma_addr + meta_off,                  │                  nfp_net_dma_sync_cpu_rx(dp, rxbuf->dma_addr + meta_off,                 
                                        data_len);                                       │                                          data_len);                                      
                                                                                         │                                                                                          
                if (meta_len) {                                                          │                  if (!dp->chained_metadata_format) {                                     
                        if (unlikely(nfp_nfdk_parse_meta(dp->netdev, &meta,              │                          nfp_nfd3_set_hash_desc(dp->netdev, &meta,                       
                                                                                         │                                                 rxbuf->frag + meta_off, rxd);            
                                                                                         │                  } else if (meta_len) {                                                  
                                                                                         │                          if (unlikely(nfp_nfd3_parse_meta(dp->netdev, &meta,             
                                                         rxbuf->frag + meta_off,         │                                                           rxbuf->frag + meta_off,        
                                                         rxbuf->frag + pkt_off,          │                                                           rxbuf->frag + pkt_off,         
                                                         pkt_len, meta_len))) {          │                                                           pkt_len, meta_len))) {         
                                nn_dp_warn(dp, "invalid RX packet metadata\n");          │                                  nn_dp_warn(dp, "invalid RX packet metadata\n");         
                                nfp_nfdk_rx_drop(dp, r_vec, rx_ring, rxbuf,              │                                  nfp_nfd3_rx_drop(dp, r_vec, rx_ring, rxbuf,             
                                                 NULL);                                  │                                                   NULL);                                 
                                continue;                                                │                                  continue;                                               
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (xdp_prog && !meta.portid) {                                          │                  if (xdp_prog && !meta.portid) {                                         
                        void *orig_data = rxbuf->frag + pkt_off;                         │                          void *orig_data = rxbuf->frag + pkt_off;                        
                        unsigned int dma_off;                                            │                          unsigned int dma_off;                                           
                        int act;                                                         │                          int act;                                                        
                                                                                         │                                                                                          
                        xdp_prepare_buff(&xdp,                                           │                          xdp_prepare_buff(&xdp,                                          
                                         rxbuf->frag + NFP_NET_RX_BUF_HEADROOM,          │                                           rxbuf->frag + NFP_NET_RX_BUF_HEADROOM,         
                                         pkt_off - NFP_NET_RX_BUF_HEADROOM,              │                                           pkt_off - NFP_NET_RX_BUF_HEADROOM,             
                                         pkt_len, true);                                 │                                           pkt_len, true);                                
                                                                                         │                                                                                          
                        act = bpf_prog_run_xdp(xdp_prog, &xdp);                          │                          act = bpf_prog_run_xdp(xdp_prog, &xdp);                         
                                                                                         │                                                                                          
                        pkt_len = xdp.data_end - xdp.data;                               │                          pkt_len = xdp.data_end - xdp.data;                              
                        pkt_off += xdp.data - orig_data;                                 │                          pkt_off += xdp.data - orig_data;                                
                                                                                         │                                                                                          
                        switch (act) {                                                   │                          switch (act) {                                                  
                        case XDP_PASS:                                                   │                          case XDP_PASS:                                                  
                                meta_len_xdp = xdp.data - xdp.data_meta;                 │                                  meta_len_xdp = xdp.data - xdp.data_meta;                
                                break;                                                   │                                  break;                                                  
                        case XDP_TX:                                                     │                          case XDP_TX:                                                    
                                dma_off = pkt_off - NFP_NET_RX_BUF_HEADROOM;             │                                  dma_off = pkt_off - NFP_NET_RX_BUF_HEADROOM;            
                                if (unlikely(!nfp_nfdk_tx_xdp_buf(dp, rx_ring,           │                                  if (unlikely(!nfp_nfd3_tx_xdp_buf(dp, rx_ring,          
                                                                  tx_ring,               │                                                                    tx_ring,              
                                                                  rxbuf,                 │                                                                    rxbuf,                
                                                                  dma_off,               │                                                                    dma_off,              
                                                                  pkt_len,               │                                                                    pkt_len,              
                                                                  &xdp_tx_cmpl)))        │                                                                    &xdp_tx_cmpl)))       
                                        trace_xdp_exception(dp->netdev,                  │                                          trace_xdp_exception(dp->netdev,                 
                                                            xdp_prog, act);              │                                                              xdp_prog, act);             
                                continue;                                                │                                  continue;                                               
                        default:                                                         │                          default:                                                        
                                bpf_warn_invalid_xdp_action(dp->netdev, xdp_prog, act);  │                                  bpf_warn_invalid_xdp_action(dp->netdev, xdp_prog, act); 
                                fallthrough;                                             │                                  fallthrough;                                            
                        case XDP_ABORTED:                                                │                          case XDP_ABORTED:                                               
                                trace_xdp_exception(dp->netdev, xdp_prog, act);          │                                  trace_xdp_exception(dp->netdev, xdp_prog, act);         
                                fallthrough;                                             │                                  fallthrough;                                            
                        case XDP_DROP:                                                   │                          case XDP_DROP:                                                  
                                nfp_nfdk_rx_give_one(dp, rx_ring, rxbuf->frag,           │                                  nfp_nfd3_rx_give_one(dp, rx_ring, rxbuf->frag,          
                                                     rxbuf->dma_addr);                   │                                                       rxbuf->dma_addr);                  
                                continue;                                                │                                  continue;                                               
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (likely(!meta.portid)) {                                              │                  if (likely(!meta.portid)) {                                             
                        netdev = dp->netdev;                                             │                          netdev = dp->netdev;                                            
                } else if (meta.portid == NFP_META_PORT_ID_CTRL) {                       │                  } else if (meta.portid == NFP_META_PORT_ID_CTRL) {                      
                        struct nfp_net *nn = netdev_priv(dp->netdev);                    │                          struct nfp_net *nn = netdev_priv(dp->netdev);                   
                                                                                         │                                                                                          
                        nfp_app_ctrl_rx_raw(nn->app, rxbuf->frag + pkt_off,              │                          nfp_app_ctrl_rx_raw(nn->app, rxbuf->frag + pkt_off,             
                                            pkt_len);                                    │                                              pkt_len);                                   
                        nfp_nfdk_rx_give_one(dp, rx_ring, rxbuf->frag,                   │                          nfp_nfd3_rx_give_one(dp, rx_ring, rxbuf->frag,                  
                                             rxbuf->dma_addr);                           │                                               rxbuf->dma_addr);                          
                        continue;                                                        │                          continue;                                                       
                } else {                                                                 │                  } else {                                                                
                        struct nfp_net *nn;                                              │                          struct nfp_net *nn;                                             
                                                                                         │                                                                                          
                        nn = netdev_priv(dp->netdev);                                    │                          nn = netdev_priv(dp->netdev);                                   
                        netdev = nfp_app_dev_get(nn->app, meta.portid,                   │                          netdev = nfp_app_dev_get(nn->app, meta.portid,                  
                                                 &redir_egress);                         │                                                   &redir_egress);                        
                        if (unlikely(!netdev)) {                                         │                          if (unlikely(!netdev)) {                                        
                                nfp_nfdk_rx_drop(dp, r_vec, rx_ring, rxbuf,              │                                  nfp_nfd3_rx_drop(dp, r_vec, rx_ring, rxbuf,             
                                                 NULL);                                  │                                                   NULL);                                 
                                continue;                                                │                                  continue;                                               
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        if (nfp_netdev_is_nfp_repr(netdev))                              │                          if (nfp_netdev_is_nfp_repr(netdev))                             
                                nfp_repr_inc_rx_stats(netdev, pkt_len);                  │                                  nfp_repr_inc_rx_stats(netdev, pkt_len);                 
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                skb = build_skb(rxbuf->frag, true_bufsz);                                │                  skb = build_skb(rxbuf->frag, true_bufsz);                               
                if (unlikely(!skb)) {                                                    │                  if (unlikely(!skb)) {                                                   
                        nfp_nfdk_rx_drop(dp, r_vec, rx_ring, rxbuf, NULL);               │                          nfp_nfd3_rx_drop(dp, r_vec, rx_ring, rxbuf, NULL);              
                        continue;                                                        │                          continue;                                                       
                }                                                                        │                  }                                                                       
                new_frag = nfp_nfdk_napi_alloc_one(dp, &new_dma_addr);                   │                  new_frag = nfp_nfd3_napi_alloc_one(dp, &new_dma_addr);                  
                if (unlikely(!new_frag)) {                                               │                  if (unlikely(!new_frag)) {                                              
                        nfp_nfdk_rx_drop(dp, r_vec, rx_ring, rxbuf, skb);                │                          nfp_nfd3_rx_drop(dp, r_vec, rx_ring, rxbuf, skb);               
                        continue;                                                        │                          continue;                                                       
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                nfp_net_dma_unmap_rx(dp, rxbuf->dma_addr);                               │                  nfp_net_dma_unmap_rx(dp, rxbuf->dma_addr);                              
                                                                                         │                                                                                          
                nfp_nfdk_rx_give_one(dp, rx_ring, new_frag, new_dma_addr);               │                  nfp_nfd3_rx_give_one(dp, rx_ring, new_frag, new_dma_addr);              
                                                                                         │                                                                                          
                skb_reserve(skb, pkt_off);                                               │                  skb_reserve(skb, pkt_off);                                              
                skb_put(skb, pkt_len);                                                   │                  skb_put(skb, pkt_len);                                                  
                                                                                         │                                                                                          
                skb->mark = meta.mark;                                                   │                  skb->mark = meta.mark;                                                  
                skb_set_hash(skb, meta.hash, meta.hash_type);                            │                  skb_set_hash(skb, meta.hash, meta.hash_type);                           
                                                                                         │                                                                                          
                skb_record_rx_queue(skb, rx_ring->idx);                                  │                  skb_record_rx_queue(skb, rx_ring->idx);                                 
                skb->protocol = eth_type_trans(skb, netdev);                             │                  skb->protocol = eth_type_trans(skb, netdev);                            
                                                                                         │                                                                                          
                nfp_nfdk_rx_csum(dp, r_vec, rxd, &meta, skb);                            │                  nfp_nfd3_rx_csum(dp, r_vec, rxd, &meta, skb);                           
                                                                                         │                                                                                          
                                                                                         │  #ifdef CONFIG_TLS_DEVICE                                                                
                                                                                         │                  if (rxd->rxd.flags & PCIE_DESC_RX_DECRYPTED) {                          
                                                                                         │                          skb->decrypted = true;                                          
                                                                                         │                          u64_stats_update_begin(&r_vec->rx_sync);                        
                                                                                         │                          r_vec->hw_tls_rx++;                                             
                                                                                         │                          u64_stats_update_end(&r_vec->rx_sync);                          
                                                                                         │                  }                                                                       
                                                                                         │  #endif                                                                                  
                                                                                         │                                                                                          
                if (rxd->rxd.flags & PCIE_DESC_RX_VLAN)                                  │                  if (rxd->rxd.flags & PCIE_DESC_RX_VLAN)                                 
                        __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),                  │                          __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),                 
                                               le16_to_cpu(rxd->rxd.vlan));              │                                                 le16_to_cpu(rxd->rxd.vlan));             
                if (meta_len_xdp)                                                        │                  if (meta_len_xdp)                                                       
                        skb_metadata_set(skb, meta_len_xdp);                             │                          skb_metadata_set(skb, meta_len_xdp);                            
                                                                                         │                                                                                          
                if (likely(!redir_egress)) {                                             │                  if (likely(!redir_egress)) {                                            
                        napi_gro_receive(&rx_ring->r_vec->napi, skb);                    │                          napi_gro_receive(&rx_ring->r_vec->napi, skb);                   
                } else {                                                                 │                  } else {                                                                
                        skb->dev = netdev;                                               │                          skb->dev = netdev;                                              
                        skb_reset_network_header(skb);                                   │                          skb_reset_network_header(skb);                                  
                        __skb_push(skb, ETH_HLEN);                                       │                          __skb_push(skb, ETH_HLEN);                                      
                        dev_queue_xmit(skb);                                             │                          dev_queue_xmit(skb);                                            
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (xdp_prog) {                                                                  │          if (xdp_prog) {                                                                 
                if (tx_ring->wr_ptr_add)                                                 │                  if (tx_ring->wr_ptr_add)                                                
                        nfp_net_tx_xmit_more_flush(tx_ring);                             │                          nfp_net_tx_xmit_more_flush(tx_ring);                            
                else if (unlikely(tx_ring->wr_p != tx_ring->rd_p) &&                     │                  else if (unlikely(tx_ring->wr_p != tx_ring->rd_p) &&                    
                         !xdp_tx_cmpl)                                                   │                           !xdp_tx_cmpl)                                                  
                        if (!nfp_nfdk_xdp_complete(tx_ring))                             │                          if (!nfp_nfd3_xdp_complete(tx_ring))                            
                                pkts_polled = budget;                                    │                                  pkts_polled = budget;                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return pkts_polled;                                                              │          return pkts_polled;                                                             
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c:1413                           │ linux/drivers/net/ethernet/cavium/liquidio/lio_main.c:2293                               
                                                                                         │                                                                                          
                                                                                         │          struct lio *lio;                                                                
        struct octnet_buf_free_info *finfo;                                              │          struct octnet_buf_free_info *finfo;                                             
        union octnic_cmd_setup cmdsetup;                                                 │          union octnic_cmd_setup cmdsetup;                                                
        struct octnic_data_pkt ndata;                                                    │          struct octnic_data_pkt ndata;                                                   
        struct octeon_instr_irh *irh;                                                    │                                                                                          
        struct oct_iq_stats *stats;                                                      │                                                                                          
        struct octeon_device *oct;                                                       │          struct octeon_device *oct;                                                      
        int q_idx = 0, iq_no = 0;                                                        │          struct oct_iq_stats *stats;                                                     
                                                                                         │          struct octeon_instr_irh *irh;                                                   
        union tx_info *tx_info;                                                          │          union tx_info *tx_info;                                                         
        int xmit_more = 0;                                                               │                                                                                          
        struct lio *lio;                                                                 │                                                                                          
        int status = 0;                                                                  │          int status = 0;                                                                 
                                                                                         │          int q_idx = 0, iq_no = 0;                                                       
                                                                                         │          int j, xmit_more = 0;                                                           
        u64 dptr = 0;                                                                    │          u64 dptr = 0;                                                                   
        u32 tag = 0;                                                                     │          u32 tag = 0;                                                                    
        int j;                                                                           │                                                                                          
                                                                                         │                                                                                          
        lio = GET_LIO(netdev);                                                           │          lio = GET_LIO(netdev);                                                          
        oct = lio->oct_dev;                                                              │          oct = lio->oct_dev;                                                             
                                                                                         │                                                                                          
        q_idx = skb_iq(lio->oct_dev, skb);                                               │          q_idx = skb_iq(oct, skb);                                                       
        tag = q_idx;                                                                     │          tag = q_idx;                                                                    
        iq_no = lio->linfo.txpciq[q_idx].s.q_no;                                         │          iq_no = lio->linfo.txpciq[q_idx].s.q_no;                                        
                                                                                         │                                                                                          
        stats = &oct->instr_queue[iq_no]->stats;                                         │          stats = &oct->instr_queue[iq_no]->stats;                                        
                                                                                         │                                                                                          
        /* Check for all conditions in which the current packet cannot be                │          /* Check for all conditions in which the current packet cannot be               
         * transmitted.                                                                  │           * transmitted.                                                                 
         */                                                                              │           */                                                                             
        if (!(atomic_read(&lio->ifstate) & LIO_IFSTATE_RUNNING) ||                       │          if (!(atomic_read(&lio->ifstate) & LIO_IFSTATE_RUNNING) ||                      
            (!lio->linfo.link.s.link_up) || (skb->len <= 0)) {                           │              (!lio->linfo.link.s.link_up) ||                                             
                netif_info(lio, tx_err, lio->netdev, "Transmit failed link_status : %d\n │              (skb->len <= 0)) {                                                          
                                                                                         │                  netif_info(lio, tx_err, lio->netdev,                                    
                                                                                         │                             "Transmit failed link_status : %d\n",                        
                           lio->linfo.link.s.link_up);                                   │                             lio->linfo.link.s.link_up);                                  
                goto lio_xmit_failed;                                                    │                  goto lio_xmit_failed;                                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Use space in skb->cb to store info used to unmap and                          │          /* Use space in skb->cb to store info used to unmap and                         
         * free the buffers.                                                             │           * free the buffers.                                                            
         */                                                                              │           */                                                                             
        finfo = (struct octnet_buf_free_info *)skb->cb;                                  │          finfo = (struct octnet_buf_free_info *)skb->cb;                                 
        finfo->lio = lio;                                                                │          finfo->lio = lio;                                                               
        finfo->skb = skb;                                                                │          finfo->skb = skb;                                                               
        finfo->sc = NULL;                                                                │          finfo->sc = NULL;                                                               
                                                                                         │                                                                                          
        /* Prepare the attributes for the data to be passed to OSI. */                   │          /* Prepare the attributes for the data to be passed to OSI. */                  
        memset(&ndata, 0, sizeof(struct octnic_data_pkt));                               │          memset(&ndata, 0, sizeof(struct octnic_data_pkt));                              
                                                                                         │                                                                                          
        ndata.buf = finfo;                                                               │          ndata.buf = (void *)finfo;                                                      
                                                                                         │                                                                                          
        ndata.q_no = iq_no;                                                              │          ndata.q_no = iq_no;                                                             
                                                                                         │                                                                                          
        if (octnet_iq_is_full(oct, ndata.q_no)) {                                        │          if (octnet_iq_is_full(oct, ndata.q_no)) {                                       
                /* defer sending if queue is full */                                     │                  /* defer sending if queue is full */                                    
                netif_info(lio, tx_err, lio->netdev, "Transmit failed iq:%d full\n",     │                  netif_info(lio, tx_err, lio->netdev, "Transmit failed iq:%d full\n",    
                           ndata.q_no);                                                  │                             ndata.q_no);                                                 
                stats->tx_iq_busy++;                                                     │                  stats->tx_iq_busy++;                                                    
                return NETDEV_TX_BUSY;                                                   │                  return NETDEV_TX_BUSY;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          /* pr_info(" XMIT - valid Qs: %d, 1st Q no: %d, cpu:  %d, q_no:%d\n",           
                                                                                         │           *      lio->linfo.num_txpciq, lio->txq, cpu, ndata.q_no);                      
                                                                                         │           */                                                                             
                                                                                         │                                                                                          
        ndata.datasize = skb->len;                                                       │          ndata.datasize = skb->len;                                                      
                                                                                         │                                                                                          
        cmdsetup.u64 = 0;                                                                │          cmdsetup.u64 = 0;                                                               
        cmdsetup.s.iq_no = iq_no;                                                        │          cmdsetup.s.iq_no = iq_no;                                                       
                                                                                         │                                                                                          
        if (skb->ip_summed == CHECKSUM_PARTIAL) {                                        │          if (skb->ip_summed == CHECKSUM_PARTIAL) {                                       
                if (skb->encapsulation) {                                                │                  if (skb->encapsulation) {                                               
                        cmdsetup.s.tnl_csum = 1;                                         │                          cmdsetup.s.tnl_csum = 1;                                        
                        stats->tx_vxlan++;                                               │                          stats->tx_vxlan++;                                              
                } else {                                                                 │                  } else {                                                                
                        cmdsetup.s.transport_csum = 1;                                   │                          cmdsetup.s.transport_csum = 1;                                  
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
        if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) {                     │          if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) {                    
                skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;                          │                  skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;                         
                cmdsetup.s.timestamp = 1;                                                │                  cmdsetup.s.timestamp = 1;                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!skb_shinfo(skb)->nr_frags) {                                                │          if (skb_shinfo(skb)->nr_frags == 0) {                                           
                cmdsetup.s.u.datasize = skb->len;                                        │                  cmdsetup.s.u.datasize = skb->len;                                       
                octnet_prepare_pci_cmd(oct, &ndata.cmd, &cmdsetup, tag);                 │                  octnet_prepare_pci_cmd(oct, &ndata.cmd, &cmdsetup, tag);                
                                                                                         │                                                                                          
                /* Offload checksum calculation for TCP/UDP packets */                   │                  /* Offload checksum calculation for TCP/UDP packets */                  
                dptr = dma_map_single(&oct->pci_dev->dev,                                │                  dptr = dma_map_single(&oct->pci_dev->dev,                               
                                      skb->data,                                         │                                        skb->data,                                        
                                      skb->len,                                          │                                        skb->len,                                         
                                      DMA_TO_DEVICE);                                    │                                        DMA_TO_DEVICE);                                   
                if (dma_mapping_error(&oct->pci_dev->dev, dptr)) {                       │                  if (dma_mapping_error(&oct->pci_dev->dev, dptr)) {                      
                        dev_err(&oct->pci_dev->dev, "%s DMA mapping error 1\n",          │                          dev_err(&oct->pci_dev->dev, "%s DMA mapping error 1\n",         
                                __func__);                                               │                                  __func__);                                              
                                                                                         │                          stats->tx_dmamap_fail++;                                        
                        return NETDEV_TX_BUSY;                                           │                          return NETDEV_TX_BUSY;                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                ndata.cmd.cmd3.dptr = dptr;                                              │                  if (OCTEON_CN23XX_PF(oct))                                              
                                                                                         │                          ndata.cmd.cmd3.dptr = dptr;                                     
                                                                                         │                  else                                                                    
                                                                                         │                          ndata.cmd.cmd2.dptr = dptr;                                     
                finfo->dptr = dptr;                                                      │                  finfo->dptr = dptr;                                                     
                ndata.reqtype = REQTYPE_NORESP_NET;                                      │                  ndata.reqtype = REQTYPE_NORESP_NET;                                     
                                                                                         │                                                                                          
        } else {                                                                         │          } else {                                                                        
                                                                                         │                  int i, frags;                                                           
                skb_frag_t *frag;                                                        │                  skb_frag_t *frag;                                                       
                struct octnic_gather *g;                                                 │                  struct octnic_gather *g;                                                
                int i, frags;                                                            │                                                                                          
                                                                                         │                                                                                          
                spin_lock(&lio->glist_lock[q_idx]);                                      │                  spin_lock(&lio->glist_lock[q_idx]);                                     
                g = (struct octnic_gather *)                                             │                  g = (struct octnic_gather *)                                            
                        lio_list_delete_head(&lio->glist[q_idx]);                        │                          lio_list_delete_head(&lio->glist[q_idx]);                       
                spin_unlock(&lio->glist_lock[q_idx]);                                    │                  spin_unlock(&lio->glist_lock[q_idx]);                                   
                                                                                         │                                                                                          
                if (!g) {                                                                │                  if (!g) {                                                               
                        netif_info(lio, tx_err, lio->netdev,                             │                          netif_info(lio, tx_err, lio->netdev,                            
                                   "Transmit scatter gather: glist null!\n");            │                                     "Transmit scatter gather: glist null!\n");           
                        goto lio_xmit_failed;                                            │                          goto lio_xmit_failed;                                           
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                cmdsetup.s.gather = 1;                                                   │                  cmdsetup.s.gather = 1;                                                  
                cmdsetup.s.u.gatherptrs = (skb_shinfo(skb)->nr_frags + 1);               │                  cmdsetup.s.u.gatherptrs = (skb_shinfo(skb)->nr_frags + 1);              
                octnet_prepare_pci_cmd(oct, &ndata.cmd, &cmdsetup, tag);                 │                  octnet_prepare_pci_cmd(oct, &ndata.cmd, &cmdsetup, tag);                
                                                                                         │                                                                                          
                memset(g->sg, 0, g->sg_size);                                            │                  memset(g->sg, 0, g->sg_size);                                           
                                                                                         │                                                                                          
                g->sg[0].ptr[0] = dma_map_single(&oct->pci_dev->dev,                     │                  g->sg[0].ptr[0] = dma_map_single(&oct->pci_dev->dev,                    
                                                 skb->data,                              │                                                   skb->data,                             
                                                 (skb->len - skb->data_len),             │                                                   (skb->len - skb->data_len),            
                                                 DMA_TO_DEVICE);                         │                                                   DMA_TO_DEVICE);                        
                if (dma_mapping_error(&oct->pci_dev->dev, g->sg[0].ptr[0])) {            │                  if (dma_mapping_error(&oct->pci_dev->dev, g->sg[0].ptr[0])) {           
                        dev_err(&oct->pci_dev->dev, "%s DMA mapping error 2\n",          │                          dev_err(&oct->pci_dev->dev, "%s DMA mapping error 2\n",         
                                __func__);                                               │                                  __func__);                                              
                                                                                         │                          stats->tx_dmamap_fail++;                                        
                        return NETDEV_TX_BUSY;                                           │                          return NETDEV_TX_BUSY;                                          
                }                                                                        │                  }                                                                       
                add_sg_size(&g->sg[0], (skb->len - skb->data_len), 0);                   │                  add_sg_size(&g->sg[0], (skb->len - skb->data_len), 0);                  
                                                                                         │                                                                                          
                frags = skb_shinfo(skb)->nr_frags;                                       │                  frags = skb_shinfo(skb)->nr_frags;                                      
                i = 1;                                                                   │                  i = 1;                                                                  
                while (frags--) {                                                        │                  while (frags--) {                                                       
                        frag = &skb_shinfo(skb)->frags[i - 1];                           │                          frag = &skb_shinfo(skb)->frags[i - 1];                          
                                                                                         │                                                                                          
                        g->sg[(i >> 2)].ptr[(i & 3)] =                                   │                          g->sg[(i >> 2)].ptr[(i & 3)] =                                  
                                skb_frag_dma_map(&oct->pci_dev->dev,                     │                                  skb_frag_dma_map(&oct->pci_dev->dev,                    
                                                 frag, 0, skb_frag_size(frag),           │                                                   frag, 0, skb_frag_size(frag),          
                                                 DMA_TO_DEVICE);                         │                                                   DMA_TO_DEVICE);                        
                                                                                         │                                                                                          
                        if (dma_mapping_error(&oct->pci_dev->dev,                        │                          if (dma_mapping_error(&oct->pci_dev->dev,                       
                                              g->sg[i >> 2].ptr[i & 3])) {               │                                                g->sg[i >> 2].ptr[i & 3])) {              
                                dma_unmap_single(&oct->pci_dev->dev,                     │                                  dma_unmap_single(&oct->pci_dev->dev,                    
                                                 g->sg[0].ptr[0],                        │                                                   g->sg[0].ptr[0],                       
                                                 skb->len - skb->data_len,               │                                                   skb->len - skb->data_len,              
                                                 DMA_TO_DEVICE);                         │                                                   DMA_TO_DEVICE);                        
                                for (j = 1; j < i; j++) {                                │                                  for (j = 1; j < i; j++) {                               
                                        frag = &skb_shinfo(skb)->frags[j - 1];           │                                          frag = &skb_shinfo(skb)->frags[j - 1];          
                                        dma_unmap_page(&oct->pci_dev->dev,               │                                          dma_unmap_page(&oct->pci_dev->dev,              
                                                       g->sg[j >> 2].ptr[j & 3],         │                                                         g->sg[j >> 2].ptr[j & 3],        
                                                       skb_frag_size(frag),              │                                                         skb_frag_size(frag),             
                                                       DMA_TO_DEVICE);                   │                                                         DMA_TO_DEVICE);                  
                                }                                                        │                                  }                                                       
                                dev_err(&oct->pci_dev->dev, "%s DMA mapping error 3\n",  │                                  dev_err(&oct->pci_dev->dev, "%s DMA mapping error 3\n", 
                                        __func__);                                       │                                          __func__);                                      
                                return NETDEV_TX_BUSY;                                   │                                  return NETDEV_TX_BUSY;                                  
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        add_sg_size(&g->sg[(i >> 2)], skb_frag_size(frag),               │                          add_sg_size(&g->sg[(i >> 2)], skb_frag_size(frag),              
                                    (i & 3));                                            │                                      (i & 3));                                           
                        i++;                                                             │                          i++;                                                            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                dptr = g->sg_dma_ptr;                                                    │                  dptr = g->sg_dma_ptr;                                                   
                                                                                         │                                                                                          
                ndata.cmd.cmd3.dptr = dptr;                                              │                  if (OCTEON_CN23XX_PF(oct))                                              
                                                                                         │                          ndata.cmd.cmd3.dptr = dptr;                                     
                                                                                         │                  else                                                                    
                                                                                         │                          ndata.cmd.cmd2.dptr = dptr;                                     
                finfo->dptr = dptr;                                                      │                  finfo->dptr = dptr;                                                     
                finfo->g = g;                                                            │                  finfo->g = g;                                                           
                                                                                         │                                                                                          
                ndata.reqtype = REQTYPE_NORESP_NET_SG;                                   │                  ndata.reqtype = REQTYPE_NORESP_NET_SG;                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        irh = (struct octeon_instr_irh *)&ndata.cmd.cmd3.irh;                            │          if (OCTEON_CN23XX_PF(oct)) {                                                    
        tx_info = (union tx_info *)&ndata.cmd.cmd3.ossp[0];                              │                  irh = (struct octeon_instr_irh *)&ndata.cmd.cmd3.irh;                   
                                                                                         │                  tx_info = (union tx_info *)&ndata.cmd.cmd3.ossp[0];                     
                                                                                         │          } else {                                                                        
                                                                                         │                  irh = (struct octeon_instr_irh *)&ndata.cmd.cmd2.irh;                   
                                                                                         │                  tx_info = (union tx_info *)&ndata.cmd.cmd2.ossp[0];                     
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        if (skb_shinfo(skb)->gso_size) {                                                 │          if (skb_shinfo(skb)->gso_size) {                                                
                tx_info->s.gso_size = skb_shinfo(skb)->gso_size;                         │                  tx_info->s.gso_size = skb_shinfo(skb)->gso_size;                        
                tx_info->s.gso_segs = skb_shinfo(skb)->gso_segs;                         │                  tx_info->s.gso_segs = skb_shinfo(skb)->gso_segs;                        
                                                                                         │                  stats->tx_gso++;                                                        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* HW insert VLAN tag */                                                         │          /* HW insert VLAN tag */                                                        
        if (skb_vlan_tag_present(skb)) {                                                 │          if (skb_vlan_tag_present(skb)) {                                                
                irh->priority = skb_vlan_tag_get(skb) >> VLAN_PRIO_SHIFT;                │                  irh->priority = skb_vlan_tag_get(skb) >> 13;                            
                irh->vlan = skb_vlan_tag_get(skb) & VLAN_VID_MASK;                       │                  irh->vlan = skb_vlan_tag_get(skb) & 0xfff;                              
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        xmit_more = netdev_xmit_more();                                                  │          xmit_more = netdev_xmit_more();                                                 
                                                                                         │                                                                                          
        if (unlikely(cmdsetup.s.timestamp))                                              │          if (unlikely(cmdsetup.s.timestamp))                                             
                status = send_nic_timestamp_pkt(oct, &ndata, finfo, xmit_more);          │                  status = send_nic_timestamp_pkt(oct, &ndata, finfo, xmit_more);         
        else                                                                             │          else                                                                            
                status = octnet_send_nic_data_pkt(oct, &ndata, xmit_more);               │                  status = octnet_send_nic_data_pkt(oct, &ndata, xmit_more);              
        if (status == IQ_SEND_FAILED)                                                    │          if (status == IQ_SEND_FAILED)                                                   
                goto lio_xmit_failed;                                                    │                  goto lio_xmit_failed;                                                   
                                                                                         │                                                                                          
        netif_info(lio, tx_queued, lio->netdev, "Transmit queued successfully\n");       │          netif_info(lio, tx_queued, lio->netdev, "Transmit queued successfully\n");      
                                                                                         │                                                                                          
        if (status == IQ_SEND_STOP) {                                                    │          if (status == IQ_SEND_STOP)                                                     
                dev_err(&oct->pci_dev->dev, "Rcvd IQ_SEND_STOP signal; stopping IQ-%d\n" │                                                                                          
                        iq_no);                                                          │                                                                                          
                netif_stop_subqueue(netdev, q_idx);                                      │                  netif_stop_subqueue(netdev, q_idx);                                     
        }                                                                                │                                                                                          
                                                                                         │                                                                                          
        netif_trans_update(netdev);                                                      │          netif_trans_update(netdev);                                                     
                                                                                         │                                                                                          
        if (tx_info->s.gso_segs)                                                         │          if (tx_info->s.gso_segs)                                                        
                stats->tx_done += tx_info->s.gso_segs;                                   │                  stats->tx_done += tx_info->s.gso_segs;                                  
        else                                                                             │          else                                                                            
                stats->tx_done++;                                                        │                  stats->tx_done++;                                                       
        stats->tx_tot_bytes += ndata.datasize;                                           │          stats->tx_tot_bytes += ndata.datasize;                                          
                                                                                         │                                                                                          
        return NETDEV_TX_OK;                                                             │          return NETDEV_TX_OK;                                                            
                                                                                         │                                                                                          
lio_xmit_failed:                                                                         │  lio_xmit_failed:                                                                        
        stats->tx_dropped++;                                                             │          stats->tx_dropped++;                                                            
        netif_info(lio, tx_err, lio->netdev, "IQ%d Transmit dropped:%llu\n",             │          netif_info(lio, tx_err, lio->netdev, "IQ%d Transmit dropped:%llu\n",            
                   iq_no, stats->tx_dropped);                                            │                     iq_no, stats->tx_dropped);                                           
        if (dptr)                                                                        │          if (dptr)                                                                       
                dma_unmap_single(&oct->pci_dev->dev, dptr,                               │                  dma_unmap_single(&oct->pci_dev->dev, dptr,                              
                                 ndata.datasize, DMA_TO_DEVICE);                         │                                   ndata.datasize, DMA_TO_DEVICE);                        
                                                                                         │                                                                                          
        octeon_ring_doorbell_locked(oct, iq_no);                                         │          octeon_ring_doorbell_locked(oct, iq_no);                                        
                                                                                         │                                                                                          
        tx_buffer_free(skb);                                                             │          tx_buffer_free(skb);                                                            
        return NETDEV_TX_OK;                                                             │          return NETDEV_TX_OK;                                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/cnic_defs.h:1054                                    │ linux/drivers/net/ethernet/broadcom/cnic_defs.h:1197                                     
                                                                                         │                                                                                          
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 __aux_counter_flags;                                                          │          u8 __aux_counter_flags;                                                         
        u8 agg_vars2;                                                                    │          u8 agg_vars2;                                                                   
#define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)                                            │  #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)                                          
#define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0                                             │  #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0                                           
#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)                                       │  #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)                                     
#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2                                        │  #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2                                      
#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)                                   │  #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)                                 
#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4                                    │  #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4                                  
#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)                                  │  #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)                                
#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7                                   │  #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7                                 
        u8 agg_vars1;                                                                    │          u8 agg_vars1;                                                                   
#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)                                  │  #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)                                
#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0                                   │  #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0                                 
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)                                    │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)                                  
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1                                     │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1                                   
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)                                    │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)                                  
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2                                     │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2                                   
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)                                    │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)                                  
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3                                     │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3                                   
#define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)                                           │  #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)                                         
#define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4                                            │  #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4                                          
#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)                                    │  #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)                                  
#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6                                     │  #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6                                   
        u8 state;                                                                        │          u8 state;                                                                       
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 state;                                                                        │          u8 state;                                                                       
        u8 agg_vars1;                                                                    │          u8 agg_vars1;                                                                   
#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)                                  │  #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)                                
#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0                                   │  #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0                                 
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)                                    │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)                                  
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1                                     │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1                                   
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)                                    │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)                                  
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2                                     │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2                                   
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)                                    │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)                                  
#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3                                     │  #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3                                   
#define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)                                           │  #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)                                         
#define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4                                            │  #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4                                          
#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)                                    │  #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)                                  
#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6                                     │  #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6                                   
        u8 agg_vars2;                                                                    │          u8 agg_vars2;                                                                   
#define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)                                            │  #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)                                          
#define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0                                             │  #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0                                           
#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)                                       │  #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)                                     
#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2                                        │  #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2                                      
#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)                                   │  #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)                                 
#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4                                    │  #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4                                  
#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)                                  │  #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)                                
#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7                                   │  #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7                                 
        u8 __aux_counter_flags;                                                          │          u8 __aux_counter_flags;                                                         
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 cdu_usage;                                                                    │          u8 cdu_usage;                                                                   
        u8 agg_misc2;                                                                    │          u8 agg_misc2;                                                                   
        u16 pbf_tx_seq_ack;                                                              │          u16 __cq_local_comp_itt_val;                                                    
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 pbf_tx_seq_ack;                                                              │          u16 __cq_local_comp_itt_val;                                                    
        u8 agg_misc2;                                                                    │          u8 agg_misc2;                                                                   
        u8 cdu_usage;                                                                    │          u8 cdu_usage;                                                                   
#endif                                                                                   │  #endif                                                                                  
        u32 agg_misc4;                                                                   │          u32 agg_misc4;                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 agg_val3_th;                                                                  │          u8 agg_val3_th;                                                                 
        u8 agg_val3;                                                                     │          u8 agg_val3;                                                                    
        u16 agg_misc3;                                                                   │          u16 agg_misc3;                                                                  
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 agg_misc3;                                                                   │          u16 agg_misc3;                                                                  
        u8 agg_val3;                                                                     │          u8 agg_val3;                                                                    
        u8 agg_val3_th;                                                                  │          u8 agg_val3_th;                                                                 
#endif                                                                                   │  #endif                                                                                  
        u32 expired_task_id;                                                             │          u32 agg_val1;                                                                   
        u32 agg_misc4_th;                                                                │          u32 agg_misc4_th;                                                               
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 cq_prod;                                                                     │          u16 agg_val2_th;                                                                
        u16 cq_cons;                                                                     │          u16 agg_val2;                                                                   
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 cq_cons;                                                                     │          u16 agg_val2;                                                                   
        u16 cq_prod;                                                                     │          u16 agg_val2_th;                                                                
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 __reserved2;                                                                 │          u16 __reserved2;                                                                
        u8 decision_rules;                                                               │          u8 decision_rules;                                                              
#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)                                      │  #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)                                  
#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0                                       │  #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0                                   
#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)                                  │  #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)                                
#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3                                   │  #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3                                 
#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)                                    │  #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)                            
#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6                                     │  #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6                             
#define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)                                      │  #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)                                    
#define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7                                       │  #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7                                     
        u8 decision_rule_enable_bits;                                                    │          u8 decision_rule_enable_bits;                                                   
#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)                             │  #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)                                      
#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0                              │  #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0                                       
#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)                                 │  #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)                               
#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1                                  │  #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1                                
#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)                                         │  #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)                                       
#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2                                          │  #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2                                        
#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)                                    │  #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)                                  
#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3                                     │  #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3                                   
#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)                                     │  #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)                          
#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4                                      │  #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4                           
#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)                                   │  #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)                        
#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5                                    │  #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5                         
#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)                                     │  #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)                                   
#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6                                      │  #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6                                    
#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)                                       │  #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)                                     
#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7                                        │  #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7                                      
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 decision_rule_enable_bits;                                                    │          u8 decision_rule_enable_bits;                                                   
#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)                             │  #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)                                      
#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0                              │  #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0                                       
#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)                                 │  #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)                               
#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1                                  │  #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1                                
#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)                                         │  #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)                                       
#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2                                          │  #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2                                        
#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)                                    │  #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)                                  
#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3                                     │  #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3                                   
#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)                                     │  #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)                          
#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4                                      │  #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4                           
#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)                                   │  #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)                        
#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5                                    │  #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5                         
#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)                                     │  #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)                                   
#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6                                      │  #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6                                    
#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)                                       │  #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)                                     
#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7                                        │  #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7                                      
        u8 decision_rules;                                                               │          u8 decision_rules;                                                              
#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)                                      │  #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)                                  
#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0                                       │  #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0                                   
#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)                                  │  #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)                                
#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3                                   │  #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3                                 
#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)                                    │  #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)                            
#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6                                     │  #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6                             
#define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)                                      │  #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)                                    
#define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7                                       │  #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7                                     
        u16 __reserved2;                                                                 │          u16 __reserved2;                                                                
#endif                                                                                   │  #endif                                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v1.c:132                  │ linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v2.c:39                    
                                                                                         │                                                                                          
        [MLX5_ACTION_IN_FIELD_OUT_SMAC_47_16] = {                                        │          [MLX5_ACTION_IN_FIELD_OUT_SMAC_47_16] = {                                       
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_SRC_L2_OUT_0, .start = 0, .end = 3 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_0, .start = 0, .end = 3
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_SMAC_15_0] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_SMAC_15_0] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_SRC_L2_OUT_1, .start = 16, .end =  │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_1, .start = 16, .end = 
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_ETHERTYPE] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_ETHERTYPE] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L2_OUT_1, .start = 0, .end = 15,   │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_1, .start = 0, .end = 15,  
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_DMAC_47_16] = {                                        │          [MLX5_ACTION_IN_FIELD_OUT_DMAC_47_16] = {                                       
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L2_OUT_0, .start = 0, .end = 31,   │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_0, .start = 0, .end = 31,  
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_DMAC_15_0] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_DMAC_15_0] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L2_OUT_1, .start = 16, .end = 31,  │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_1, .start = 16, .end = 31, 
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_IP_DSCP] = {                                           │          [MLX5_ACTION_IN_FIELD_OUT_IP_DSCP] = {                                          
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L3_OUT_0, .start = 18, .end = 23,  │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0, .start = 18, .end = 23, 
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_TCP_FLAGS] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_TCP_FLAGS] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L4_OUT_1, .start = 16, .end = 24,  │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_1, .start = 16, .end = 24, 
                .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,                               │                  .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,                              
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_TCP_SPORT] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_TCP_SPORT] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L4_OUT_0, .start = 16, .end = 31,  │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 16, .end = 31, 
                .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,                               │                  .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,                              
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_TCP_DPORT] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_TCP_DPORT] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L4_OUT_0, .start = 0, .end = 15,   │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 0, .end = 15,  
                .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,                               │                  .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,                              
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_IP_TTL] = {                                            │          [MLX5_ACTION_IN_FIELD_OUT_IP_TTL] = {                                           
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L3_OUT_0, .start = 8, .end = 15,   │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0, .start = 8, .end = 15,  
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_IPV6_HOPLIMIT] = {                                     │          [MLX5_ACTION_IN_FIELD_OUT_IPV6_HOPLIMIT] = {                                    
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L3_OUT_0, .start = 8, .end = 15,   │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0, .start = 8, .end = 15,  
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_UDP_SPORT] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_UDP_SPORT] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L4_OUT_0, .start = 16, .end = 31,  │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 16, .end = 31, 
                .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_UDP,                               │                  .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_UDP,                              
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_UDP_DPORT] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_UDP_DPORT] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L4_OUT_0, .start = 0, .end = 15,   │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 0, .end = 15,  
                .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_UDP,                               │                  .l4_type = DR_STE_ACTION_MDFY_TYPE_L4_UDP,                              
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_SIPV6_127_96] = {                                      │          [MLX5_ACTION_IN_FIELD_OUT_SIPV6_127_96] = {                                     
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV6_SRC_OUT_0, .start = 0, .end = │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_0, .start = 0, .end =
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_SIPV6_95_64] = {                                       │          [MLX5_ACTION_IN_FIELD_OUT_SIPV6_95_64] = {                                      
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV6_SRC_OUT_1, .start = 0, .end = │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_1, .start = 0, .end =
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_SIPV6_63_32] = {                                       │          [MLX5_ACTION_IN_FIELD_OUT_SIPV6_63_32] = {                                      
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV6_SRC_OUT_2, .start = 0, .end = │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_2, .start = 0, .end =
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_SIPV6_31_0] = {                                        │          [MLX5_ACTION_IN_FIELD_OUT_SIPV6_31_0] = {                                       
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV6_SRC_OUT_3, .start = 0, .end = │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_3, .start = 0, .end =
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_DIPV6_127_96] = {                                      │          [MLX5_ACTION_IN_FIELD_OUT_DIPV6_127_96] = {                                     
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV6_DST_OUT_0, .start = 0, .end = │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_0, .start = 0, .end =
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_DIPV6_95_64] = {                                       │          [MLX5_ACTION_IN_FIELD_OUT_DIPV6_95_64] = {                                      
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV6_DST_OUT_1, .start = 0, .end = │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_1, .start = 0, .end =
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_DIPV6_63_32] = {                                       │          [MLX5_ACTION_IN_FIELD_OUT_DIPV6_63_32] = {                                      
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV6_DST_OUT_2, .start = 0, .end = │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_2, .start = 0, .end =
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_DIPV6_31_0] = {                                        │          [MLX5_ACTION_IN_FIELD_OUT_DIPV6_31_0] = {                                       
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV6_DST_OUT_3, .start = 0, .end = │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_3, .start = 0, .end =
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_SIPV4] = {                                             │          [MLX5_ACTION_IN_FIELD_OUT_SIPV4] = {                                            
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV4_OUT_0, .start = 0, .end = 31, │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_0, .start = 0, .end = 31,
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_DIPV4] = {                                             │          [MLX5_ACTION_IN_FIELD_OUT_DIPV4] = {                                            
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_IPV4_OUT_1, .start = 0, .end = 31, │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_1, .start = 0, .end = 31,
                .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,                              │                  .l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,                             
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_METADATA_REG_A] = {                                        │          [MLX5_ACTION_IN_FIELD_METADATA_REG_A] = {                                       
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_GNRL_PURPOSE, .start = 0, .end = 3 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_GNRL_PURPOSE, .start = 0, .end = 3
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_METADATA_REG_B] = {                                        │          [MLX5_ACTION_IN_FIELD_METADATA_REG_B] = {                                       
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_METADATA_2_CQE, .start = 0, .end = │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_METADATA_2_CQE, .start = 0, .end =
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_METADATA_REG_C_0] = {                                      │          [MLX5_ACTION_IN_FIELD_METADATA_REG_C_0] = {                                     
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_REGISTER_0_0, .start = 0, .end = 3 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_0, .start = 0, .end = 3
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_METADATA_REG_C_1] = {                                      │          [MLX5_ACTION_IN_FIELD_METADATA_REG_C_1] = {                                     
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_REGISTER_0_1, .start = 0, .end = 3 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_1, .start = 0, .end = 3
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_METADATA_REG_C_2] = {                                      │          [MLX5_ACTION_IN_FIELD_METADATA_REG_C_2] = {                                     
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_REGISTER_1_0, .start = 0, .end = 3 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_0, .start = 0, .end = 3
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_METADATA_REG_C_3] = {                                      │          [MLX5_ACTION_IN_FIELD_METADATA_REG_C_3] = {                                     
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_REGISTER_1_1, .start = 0, .end = 3 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_1, .start = 0, .end = 3
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_METADATA_REG_C_4] = {                                      │          [MLX5_ACTION_IN_FIELD_METADATA_REG_C_4] = {                                     
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_REGISTER_2_0, .start = 0, .end = 3 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_0, .start = 0, .end = 3
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_METADATA_REG_C_5] = {                                      │          [MLX5_ACTION_IN_FIELD_METADATA_REG_C_5] = {                                     
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_REGISTER_2_1, .start = 0, .end = 3 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_1, .start = 0, .end = 3
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_TCP_SEQ_NUM] = {                                       │          [MLX5_ACTION_IN_FIELD_OUT_TCP_SEQ_NUM] = {                                      
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_TCP_MISC_0, .start = 0, .end = 31, │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_0, .start = 0, .end = 31,
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_TCP_ACK_NUM] = {                                       │          [MLX5_ACTION_IN_FIELD_OUT_TCP_ACK_NUM] = {                                      
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_TCP_MISC_1, .start = 0, .end = 31, │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_1, .start = 0, .end = 31,
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_FIRST_VID] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_FIRST_VID] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_L2_OUT_2, .start = 0, .end = 15,   │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_2, .start = 0, .end = 15,  
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_EMD_31_0] = {                                          │          [MLX5_ACTION_IN_FIELD_OUT_EMD_31_0] = {                                         
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_CFG_HDR_0_1, .start = 0, .end = 31 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_1, .start = 0, .end = 31
        },                                                                               │          },                                                                              
        [MLX5_ACTION_IN_FIELD_OUT_EMD_47_32] = {                                         │          [MLX5_ACTION_IN_FIELD_OUT_EMD_47_32] = {                                        
                .hw_field = DR_STE_V1_ACTION_MDFY_FLD_CFG_HDR_0_0, .start = 0, .end = 15 │                  .hw_field = DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_0, .start = 0, .end = 15
        },                                                                               │          },                                                                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/atheros/atl1c/atl1c.h:297                                    │ linux/drivers/net/ethernet/atheros/atl1e/atl1e.h:246                                     
                                                                                         │                                                                                          
        /* rx */                                                                         │          /* rx */                                                                        
        unsigned long rx_ok;            /* The number of good packet received. */        │          unsigned long rx_ok;          /* The number of good packet received. */         
        unsigned long rx_bcast;         /* The number of good broadcast packet received. │          unsigned long rx_bcast;       /* The number of good broadcast packet received. *
        unsigned long rx_mcast;         /* The number of good multicast packet received. │          unsigned long rx_mcast;       /* The number of good multicast packet received. *
        unsigned long rx_pause;         /* The number of Pause packet received. */       │          unsigned long rx_pause;       /* The number of Pause packet received. */        
        unsigned long rx_ctrl;          /* The number of Control packet received other t │          unsigned long rx_ctrl;        /* The number of Control packet received other tha
        unsigned long rx_fcs_err;       /* The number of packets with bad FCS. */        │          unsigned long rx_fcs_err;     /* The number of packets with bad FCS. */         
        unsigned long rx_len_err;       /* The number of packets with mismatch of length │          unsigned long rx_len_err;     /* The number of packets with mismatch of length f
        unsigned long rx_byte_cnt;      /* The number of bytes of good packet received.  │          unsigned long rx_byte_cnt;    /* The number of bytes of good packet received. FC
        unsigned long rx_runt;          /* The number of packets received that are less  │          unsigned long rx_runt;        /* The number of packets received that are less th
        unsigned long rx_frag;          /* The number of packets received that are less  │          unsigned long rx_frag;        /* The number of packets received that are less th
        unsigned long rx_sz_64;         /* The number of good and bad packets received t │          unsigned long rx_sz_64;       /* The number of good and bad packets received tha
        unsigned long rx_sz_65_127;     /* The number of good and bad packets received t │          unsigned long rx_sz_65_127;   /* The number of good and bad packets received tha
        unsigned long rx_sz_128_255;    /* The number of good and bad packets received t │          unsigned long rx_sz_128_255;  /* The number of good and bad packets received tha
        unsigned long rx_sz_256_511;    /* The number of good and bad packets received t │          unsigned long rx_sz_256_511;  /* The number of good and bad packets received tha
        unsigned long rx_sz_512_1023;   /* The number of good and bad packets received t │          unsigned long rx_sz_512_1023; /* The number of good and bad packets received tha
        unsigned long rx_sz_1024_1518;  /* The number of good and bad packets received t │          unsigned long rx_sz_1024_1518;    /* The number of good and bad packets received
        unsigned long rx_sz_1519_max;   /* The number of good and bad packets received t │          unsigned long rx_sz_1519_max; /* The number of good and bad packets received tha
        unsigned long rx_sz_ov;         /* The number of good and bad packets received t │          unsigned long rx_sz_ov;       /* The number of good and bad packets received tha
        unsigned long rx_rxf_ov;        /* The number of frame dropped due to occurrence │          unsigned long rx_rxf_ov;      /* The number of frame dropped due to occurrence o
        unsigned long rx_rrd_ov;        /* The number of frame dropped due to occurrence │          unsigned long rx_rrd_ov;      /* The number of frame dropped due to occurrence o
        unsigned long rx_align_err;     /* Alignment Error */                            │          unsigned long rx_align_err;   /* Alignment Error */                             
        unsigned long rx_bcast_byte_cnt; /* The byte count of broadcast packet received, │          unsigned long rx_bcast_byte_cnt;  /* The byte count of broadcast packet received
        unsigned long rx_mcast_byte_cnt; /* The byte count of multicast packet received, │          unsigned long rx_mcast_byte_cnt;  /* The byte count of multicast packet received
        unsigned long rx_err_addr;      /* The number of packets dropped due to address  │          unsigned long rx_err_addr;    /* The number of packets dropped due to address fi
                                                                                         │                                                                                          
        /* tx */                                                                         │          /* tx */                                                                        
        unsigned long tx_ok;            /* The number of good packet transmitted. */     │          unsigned long tx_ok;      /* The number of good packet transmitted. */          
        unsigned long tx_bcast;         /* The number of good broadcast packet transmitt │          unsigned long tx_bcast;       /* The number of good broadcast packet transmitted
        unsigned long tx_mcast;         /* The number of good multicast packet transmitt │          unsigned long tx_mcast;       /* The number of good multicast packet transmitted
        unsigned long tx_pause;         /* The number of Pause packet transmitted. */    │          unsigned long tx_pause;       /* The number of Pause packet transmitted. */     
        unsigned long tx_exc_defer;     /* The number of packets transmitted with excess │          unsigned long tx_exc_defer;   /* The number of packets transmitted with excessiv
        unsigned long tx_ctrl;          /* The number of packets transmitted is a contro │          unsigned long tx_ctrl;        /* The number of packets transmitted is a control 
        unsigned long tx_defer;         /* The number of packets transmitted that is def │          unsigned long tx_defer;       /* The number of packets transmitted that is defer
        unsigned long tx_byte_cnt;      /* The number of bytes of data transmitted. FCS  │          unsigned long tx_byte_cnt;    /* The number of bytes of data transmitted. FCS is
        unsigned long tx_sz_64;         /* The number of good and bad packets transmitte │          unsigned long tx_sz_64;       /* The number of good and bad packets transmitted 
        unsigned long tx_sz_65_127;     /* The number of good and bad packets transmitte │          unsigned long tx_sz_65_127;   /* The number of good and bad packets transmitted 
        unsigned long tx_sz_128_255;    /* The number of good and bad packets transmitte │          unsigned long tx_sz_128_255;  /* The number of good and bad packets transmitted 
        unsigned long tx_sz_256_511;    /* The number of good and bad packets transmitte │          unsigned long tx_sz_256_511;  /* The number of good and bad packets transmitted 
        unsigned long tx_sz_512_1023;   /* The number of good and bad packets transmitte │          unsigned long tx_sz_512_1023; /* The number of good and bad packets transmitted 
        unsigned long tx_sz_1024_1518;  /* The number of good and bad packets transmitte │          unsigned long tx_sz_1024_1518;    /* The number of good and bad packets transmit
        unsigned long tx_sz_1519_max;   /* The number of good and bad packets transmitte │          unsigned long tx_sz_1519_max; /* The number of good and bad packets transmitted 
        unsigned long tx_1_col;         /* The number of packets subsequently transmitte │          unsigned long tx_1_col;       /* The number of packets subsequently transmitted 
        unsigned long tx_2_col;         /* The number of packets subsequently transmitte │          unsigned long tx_2_col;       /* The number of packets subsequently transmitted 
        unsigned long tx_late_col;      /* The number of packets transmitted with late c │          unsigned long tx_late_col;    /* The number of packets transmitted with late col
        unsigned long tx_abort_col;     /* The number of transmit packets aborted due to │          unsigned long tx_abort_col;   /* The number of transmit packets aborted due to e
        unsigned long tx_underrun;      /* The number of transmit packets aborted due to │          unsigned long tx_underrun;    /* The number of transmit packets aborted due to t
        unsigned long tx_rd_eop;        /* The number of times that read beyond the EOP  │          unsigned long tx_rd_eop;      /* The number of times that read beyond the EOP in
        unsigned long tx_len_err;       /* The number of transmit packets with length fi │          unsigned long tx_len_err;     /* The number of transmit packets with length fiel
        unsigned long tx_trunc;         /* The number of transmit packets truncated due  │          unsigned long tx_trunc;       /* The number of transmit packets truncated due to
        unsigned long tx_bcast_byte;    /* The byte count of broadcast packet transmitte │          unsigned long tx_bcast_byte;  /* The byte count of broadcast packet transmitted,
        unsigned long tx_mcast_byte;    /* The byte count of multicast packet transmitte │          unsigned long tx_mcast_byte;  /* The byte count of multicast packet transmitted,
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c:636                        │ linux/drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c:340                         
                                                                                         │                                                                                          
        sparx5_update_counter(&portstats[spx5_stats_rx_undersize_cnt],                   │          sparx5_update_counter(&portstats[spx5_stats_rx_undersize_cnt],                  
                              spx5_inst_rd(inst, ASM_RX_UNDERSIZE_CNT(portno)));         │                                spx5_inst_rd(inst,                                        
                                                                                         │                                             DEV5G_RX_UNDERSIZE_CNT(tinst)));             
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_undersize_cnt],              │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_undersize_cnt],             
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_UNDERSIZE_CNT(portno)));          │                                             DEV5G_PMAC_RX_UNDERSIZE_CNT(tinst)));        
        sparx5_update_counter(&portstats[spx5_stats_rx_oversize_cnt],                    │          sparx5_update_counter(&portstats[spx5_stats_rx_oversize_cnt],                   
                              spx5_inst_rd(inst, ASM_RX_OVERSIZE_CNT(portno)));          │                                spx5_inst_rd(inst, DEV5G_RX_OVERSIZE_CNT(tinst)));        
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_oversize_cnt],               │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_oversize_cnt],              
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_OVERSIZE_CNT(portno)));           │                                             DEV5G_PMAC_RX_OVERSIZE_CNT(tinst)));         
        sparx5_update_counter(&portstats[spx5_stats_rx_fragments_cnt],                   │          sparx5_update_counter(&portstats[spx5_stats_rx_fragments_cnt],                  
                              spx5_inst_rd(inst, ASM_RX_FRAGMENTS_CNT(portno)));         │                                spx5_inst_rd(inst,                                        
                                                                                         │                                             DEV5G_RX_FRAGMENTS_CNT(tinst)));             
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_fragments_cnt],              │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_fragments_cnt],             
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_FRAGMENTS_CNT(portno)));          │                                             DEV5G_PMAC_RX_FRAGMENTS_CNT(tinst)));        
        sparx5_update_counter(&portstats[spx5_stats_rx_jabbers_cnt],                     │          sparx5_update_counter(&portstats[spx5_stats_rx_jabbers_cnt],                    
                              spx5_inst_rd(inst, ASM_RX_JABBERS_CNT(portno)));           │                                spx5_inst_rd(inst, DEV5G_RX_JABBERS_CNT(tinst)));         
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_jabbers_cnt],                │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_jabbers_cnt],               
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_JABBERS_CNT(portno)));            │                                             DEV5G_PMAC_RX_JABBERS_CNT(tinst)));          
        sparx5_update_counter(&portstats[spx5_stats_rx_size64_cnt],                      │          sparx5_update_counter(&portstats[spx5_stats_rx_size64_cnt],                     
                              spx5_inst_rd(inst, ASM_RX_SIZE64_CNT(portno)));            │                                spx5_inst_rd(inst, DEV5G_RX_SIZE64_CNT(tinst)));          
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size64_cnt],                 │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size64_cnt],                
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_SIZE64_CNT(portno)));             │                                             DEV5G_PMAC_RX_SIZE64_CNT(tinst)));           
        sparx5_update_counter(&portstats[spx5_stats_rx_size65to127_cnt],                 │          sparx5_update_counter(&portstats[spx5_stats_rx_size65to127_cnt],                
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_RX_SIZE65TO127_CNT(portno)));             │                                             DEV5G_RX_SIZE65TO127_CNT(tinst)));           
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size65to127_cnt],            │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size65to127_cnt],           
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_SIZE65TO127_CNT(portno)));        │                                             DEV5G_PMAC_RX_SIZE65TO127_CNT(tinst)));      
        sparx5_update_counter(&portstats[spx5_stats_rx_size128to255_cnt],                │          sparx5_update_counter(&portstats[spx5_stats_rx_size128to255_cnt],               
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_RX_SIZE128TO255_CNT(portno)));            │                                             DEV5G_RX_SIZE128TO255_CNT(tinst)));          
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size128to255_cnt],           │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size128to255_cnt],          
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_SIZE128TO255_CNT(portno)));       │                                             DEV5G_PMAC_RX_SIZE128TO255_CNT(tinst)));     
        sparx5_update_counter(&portstats[spx5_stats_rx_size256to511_cnt],                │          sparx5_update_counter(&portstats[spx5_stats_rx_size256to511_cnt],               
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_RX_SIZE256TO511_CNT(portno)));            │                                             DEV5G_RX_SIZE256TO511_CNT(tinst)));          
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size256to511_cnt],           │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size256to511_cnt],          
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_SIZE256TO511_CNT(portno)));       │                                             DEV5G_PMAC_RX_SIZE256TO511_CNT(tinst)));     
        sparx5_update_counter(&portstats[spx5_stats_rx_size512to1023_cnt],               │          sparx5_update_counter(&portstats[spx5_stats_rx_size512to1023_cnt],              
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_RX_SIZE512TO1023_CNT(portno)));           │                                             DEV5G_RX_SIZE512TO1023_CNT(tinst)));         
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size512to1023_cnt],          │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size512to1023_cnt],         
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_SIZE512TO1023_CNT(portno)));      │                                             DEV5G_PMAC_RX_SIZE512TO1023_CNT(tinst)));    
        sparx5_update_counter(&portstats[spx5_stats_rx_size1024to1518_cnt],              │          sparx5_update_counter(&portstats[spx5_stats_rx_size1024to1518_cnt],             
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_RX_SIZE1024TO1518_CNT(portno)));          │                                             DEV5G_RX_SIZE1024TO1518_CNT(tinst)));        
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size1024to1518_cnt],         │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size1024to1518_cnt],        
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_SIZE1024TO1518_CNT(portno)));     │                                             DEV5G_PMAC_RX_SIZE1024TO1518_CNT(tinst)));   
        sparx5_update_counter(&portstats[spx5_stats_rx_size1519tomax_cnt],               │          sparx5_update_counter(&portstats[spx5_stats_rx_size1519tomax_cnt],              
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_RX_SIZE1519TOMAX_CNT(portno)));           │                                             DEV5G_RX_SIZE1519TOMAX_CNT(tinst)));         
        sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size1519tomax_cnt],          │          sparx5_update_counter(&portstats[spx5_stats_pmac_rx_size1519tomax_cnt],         
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_RX_SIZE1519TOMAX_CNT(portno)));      │                                             DEV5G_PMAC_RX_SIZE1519TOMAX_CNT(tinst)));    
        sparx5_update_counter(&portstats[spx5_stats_tx_size64_cnt],                      │          sparx5_update_counter(&portstats[spx5_stats_tx_size64_cnt],                     
                              spx5_inst_rd(inst, ASM_TX_SIZE64_CNT(portno)));            │                                spx5_inst_rd(inst, DEV5G_TX_SIZE64_CNT(tinst)));          
        sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size64_cnt],                 │          sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size64_cnt],                
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_TX_SIZE64_CNT(portno)));             │                                             DEV5G_PMAC_TX_SIZE64_CNT(tinst)));           
        sparx5_update_counter(&portstats[spx5_stats_tx_size65to127_cnt],                 │          sparx5_update_counter(&portstats[spx5_stats_tx_size65to127_cnt],                
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_TX_SIZE65TO127_CNT(portno)));             │                                             DEV5G_TX_SIZE65TO127_CNT(tinst)));           
        sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size65to127_cnt],            │          sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size65to127_cnt],           
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_TX_SIZE65TO127_CNT(portno)));        │                                             DEV5G_PMAC_TX_SIZE65TO127_CNT(tinst)));      
        sparx5_update_counter(&portstats[spx5_stats_tx_size128to255_cnt],                │          sparx5_update_counter(&portstats[spx5_stats_tx_size128to255_cnt],               
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_TX_SIZE128TO255_CNT(portno)));            │                                             DEV5G_TX_SIZE128TO255_CNT(tinst)));          
        sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size128to255_cnt],           │          sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size128to255_cnt],          
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_TX_SIZE128TO255_CNT(portno)));       │                                             DEV5G_PMAC_TX_SIZE128TO255_CNT(tinst)));     
        sparx5_update_counter(&portstats[spx5_stats_tx_size256to511_cnt],                │          sparx5_update_counter(&portstats[spx5_stats_tx_size256to511_cnt],               
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_TX_SIZE256TO511_CNT(portno)));            │                                             DEV5G_TX_SIZE256TO511_CNT(tinst)));          
        sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size256to511_cnt],           │          sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size256to511_cnt],          
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_TX_SIZE256TO511_CNT(portno)));       │                                             DEV5G_PMAC_TX_SIZE256TO511_CNT(tinst)));     
        sparx5_update_counter(&portstats[spx5_stats_tx_size512to1023_cnt],               │          sparx5_update_counter(&portstats[spx5_stats_tx_size512to1023_cnt],              
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_TX_SIZE512TO1023_CNT(portno)));           │                                             DEV5G_TX_SIZE512TO1023_CNT(tinst)));         
        sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size512to1023_cnt],          │          sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size512to1023_cnt],         
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_TX_SIZE512TO1023_CNT(portno)));      │                                             DEV5G_PMAC_TX_SIZE512TO1023_CNT(tinst)));    
        sparx5_update_counter(&portstats[spx5_stats_tx_size1024to1518_cnt],              │          sparx5_update_counter(&portstats[spx5_stats_tx_size1024to1518_cnt],             
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_TX_SIZE1024TO1518_CNT(portno)));          │                                             DEV5G_TX_SIZE1024TO1518_CNT(tinst)));        
        sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size1024to1518_cnt],         │          sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size1024to1518_cnt],        
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_TX_SIZE1024TO1518_CNT(portno)));     │                                             DEV5G_PMAC_TX_SIZE1024TO1518_CNT(tinst)));   
        sparx5_update_counter(&portstats[spx5_stats_tx_size1519tomax_cnt],               │          sparx5_update_counter(&portstats[spx5_stats_tx_size1519tomax_cnt],              
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_TX_SIZE1519TOMAX_CNT(portno)));           │                                             DEV5G_TX_SIZE1519TOMAX_CNT(tinst)));         
        sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size1519tomax_cnt],          │          sparx5_update_counter(&portstats[spx5_stats_pmac_tx_size1519tomax_cnt],         
                              spx5_inst_rd(inst,                                         │                                spx5_inst_rd(inst,                                        
                                           ASM_PMAC_TX_SIZE1519TOMAX_CNT(portno)));      │                                             DEV5G_PMAC_TX_SIZE1519TOMAX_CNT(tinst)));    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:266                             │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:1115                                 
                                                                                         │                                                                                          
        struct ixgbevf_adapter *adapter = q_vector->adapter;                             │          struct ixgbe_adapter *adapter = q_vector->adapter;                              
        struct ixgbevf_tx_buffer *tx_buffer;                                             │          struct ixgbe_tx_buffer *tx_buffer;                                              
        union ixgbe_adv_tx_desc *tx_desc;                                                │          union ixgbe_adv_tx_desc *tx_desc;                                               
        unsigned int total_bytes = 0, total_packets = 0, total_ipsec = 0;                │          unsigned int total_bytes = 0, total_packets = 0, total_ipsec = 0;               
        unsigned int budget = tx_ring->count / 2;                                        │          unsigned int budget = q_vector->tx.work_limit;                                  
        unsigned int i = tx_ring->next_to_clean;                                         │          unsigned int i = tx_ring->next_to_clean;                                        
                                                                                         │                                                                                          
        if (test_bit(__IXGBEVF_DOWN, &adapter->state))                                   │          if (test_bit(__IXGBE_DOWN, &adapter->state))                                    
                return true;                                                             │                  return true;                                                            
                                                                                         │                                                                                          
        tx_buffer = &tx_ring->tx_buffer_info[i];                                         │          tx_buffer = &tx_ring->tx_buffer_info[i];                                        
        tx_desc = IXGBEVF_TX_DESC(tx_ring, i);                                           │          tx_desc = IXGBE_TX_DESC(tx_ring, i);                                            
        i -= tx_ring->count;                                                             │          i -= tx_ring->count;                                                            
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                union ixgbe_adv_tx_desc *eop_desc = tx_buffer->next_to_watch;            │                  union ixgbe_adv_tx_desc *eop_desc = tx_buffer->next_to_watch;           
                                                                                         │                                                                                          
                /* if next_to_watch is not set then there is no work pending */          │                  /* if next_to_watch is not set then there is no work pending */         
                if (!eop_desc)                                                           │                  if (!eop_desc)                                                          
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* prevent any other reads prior to eop_desc */                          │                  /* prevent any other reads prior to eop_desc */                         
                smp_rmb();                                                               │                  smp_rmb();                                                              
                                                                                         │                                                                                          
                /* if DD is not set pending work has not been completed */               │                  /* if DD is not set pending work has not been completed */              
                if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)))             │                  if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)))            
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* clear next_to_watch to prevent false hangs */                         │                  /* clear next_to_watch to prevent false hangs */                        
                tx_buffer->next_to_watch = NULL;                                         │                  tx_buffer->next_to_watch = NULL;                                        
                                                                                         │                                                                                          
                /* update the statistics for this packet */                              │                  /* update the statistics for this packet */                             
                total_bytes += tx_buffer->bytecount;                                     │                  total_bytes += tx_buffer->bytecount;                                    
                total_packets += tx_buffer->gso_segs;                                    │                  total_packets += tx_buffer->gso_segs;                                   
                if (tx_buffer->tx_flags & IXGBE_TX_FLAGS_IPSEC)                          │                  if (tx_buffer->tx_flags & IXGBE_TX_FLAGS_IPSEC)                         
                        total_ipsec++;                                                   │                          total_ipsec++;                                                  
                                                                                         │                                                                                          
                /* free the skb */                                                       │                  /* free the skb */                                                      
                if (ring_is_xdp(tx_ring))                                                │                  if (ring_is_xdp(tx_ring))                                               
                        page_frag_free(tx_buffer->data);                                 │                          xdp_return_frame(tx_buffer->xdpf);                              
                else                                                                     │                  else                                                                    
                        napi_consume_skb(tx_buffer->skb, napi_budget);                   │                          napi_consume_skb(tx_buffer->skb, napi_budget);                  
                                                                                         │                                                                                          
                /* unmap skb header data */                                              │                  /* unmap skb header data */                                             
                dma_unmap_single(tx_ring->dev,                                           │                  dma_unmap_single(tx_ring->dev,                                          
                                 dma_unmap_addr(tx_buffer, dma),                         │                                   dma_unmap_addr(tx_buffer, dma),                        
                                 dma_unmap_len(tx_buffer, len),                          │                                   dma_unmap_len(tx_buffer, len),                         
                                 DMA_TO_DEVICE);                                         │                                   DMA_TO_DEVICE);                                        
                                                                                         │                                                                                          
                /* clear tx_buffer data */                                               │                  /* clear tx_buffer data */                                              
                dma_unmap_len_set(tx_buffer, len, 0);                                    │                  dma_unmap_len_set(tx_buffer, len, 0);                                   
                                                                                         │                                                                                          
                /* unmap remaining buffers */                                            │                  /* unmap remaining buffers */                                           
                while (tx_desc != eop_desc) {                                            │                  while (tx_desc != eop_desc) {                                           
                        tx_buffer++;                                                     │                          tx_buffer++;                                                    
                        tx_desc++;                                                       │                          tx_desc++;                                                      
                        i++;                                                             │                          i++;                                                            
                        if (unlikely(!i)) {                                              │                          if (unlikely(!i)) {                                             
                                i -= tx_ring->count;                                     │                                  i -= tx_ring->count;                                    
                                tx_buffer = tx_ring->tx_buffer_info;                     │                                  tx_buffer = tx_ring->tx_buffer_info;                    
                                tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);                   │                                  tx_desc = IXGBE_TX_DESC(tx_ring, 0);                    
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        /* unmap any remaining paged data */                             │                          /* unmap any remaining paged data */                            
                        if (dma_unmap_len(tx_buffer, len)) {                             │                          if (dma_unmap_len(tx_buffer, len)) {                            
                                dma_unmap_page(tx_ring->dev,                             │                                  dma_unmap_page(tx_ring->dev,                            
                                               dma_unmap_addr(tx_buffer, dma),           │                                                 dma_unmap_addr(tx_buffer, dma),          
                                               dma_unmap_len(tx_buffer, len),            │                                                 dma_unmap_len(tx_buffer, len),           
                                               DMA_TO_DEVICE);                           │                                                 DMA_TO_DEVICE);                          
                                dma_unmap_len_set(tx_buffer, len, 0);                    │                                  dma_unmap_len_set(tx_buffer, len, 0);                   
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* move us one more past the eop_desc for start of next pkt */           │                  /* move us one more past the eop_desc for start of next pkt */          
                tx_buffer++;                                                             │                  tx_buffer++;                                                            
                tx_desc++;                                                               │                  tx_desc++;                                                              
                i++;                                                                     │                  i++;                                                                    
                if (unlikely(!i)) {                                                      │                  if (unlikely(!i)) {                                                     
                        i -= tx_ring->count;                                             │                          i -= tx_ring->count;                                            
                        tx_buffer = tx_ring->tx_buffer_info;                             │                          tx_buffer = tx_ring->tx_buffer_info;                            
                        tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);                           │                          tx_desc = IXGBE_TX_DESC(tx_ring, 0);                            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* issue prefetch for next Tx descriptor */                              │                  /* issue prefetch for next Tx descriptor */                             
                prefetch(tx_desc);                                                       │                  prefetch(tx_desc);                                                      
                                                                                         │                                                                                          
                /* update budget accounting */                                           │                  /* update budget accounting */                                          
                budget--;                                                                │                  budget--;                                                               
        } while (likely(budget));                                                        │          } while (likely(budget));                                                       
                                                                                         │                                                                                          
        i += tx_ring->count;                                                             │          i += tx_ring->count;                                                            
        tx_ring->next_to_clean = i;                                                      │          tx_ring->next_to_clean = i;                                                     
        u64_stats_update_begin(&tx_ring->syncp);                                         │          u64_stats_update_begin(&tx_ring->syncp);                                        
        tx_ring->stats.bytes += total_bytes;                                             │          tx_ring->stats.bytes += total_bytes;                                            
        tx_ring->stats.packets += total_packets;                                         │          tx_ring->stats.packets += total_packets;                                        
        u64_stats_update_end(&tx_ring->syncp);                                           │          u64_stats_update_end(&tx_ring->syncp);                                          
        q_vector->tx.total_bytes += total_bytes;                                         │          q_vector->tx.total_bytes += total_bytes;                                        
        q_vector->tx.total_packets += total_packets;                                     │          q_vector->tx.total_packets += total_packets;                                    
        adapter->tx_ipsec += total_ipsec;                                                │          adapter->tx_ipsec += total_ipsec;                                               
                                                                                         │                                                                                          
        if (check_for_tx_hang(tx_ring) && ixgbevf_check_tx_hang(tx_ring)) {              │          if (check_for_tx_hang(tx_ring) && ixgbe_check_tx_hang(tx_ring)) {               
                                                                                         │                  /* schedule immediate reset if we believe we hung */                    
                struct ixgbe_hw *hw = &adapter->hw;                                      │                  struct ixgbe_hw *hw = &adapter->hw;                                     
                union ixgbe_adv_tx_desc *eop_desc;                                       │                  e_err(drv, "Detected Tx Unit Hang %s\n"                                 
                                                                                         │                          "  Tx Queue             <%d>\n"                                 
                eop_desc = tx_ring->tx_buffer_info[i].next_to_watch;                     │                          "  TDH, TDT             <%x>, <%x>\n"                           
                                                                                         │                          "  next_to_use          <%x>\n"                                 
                pr_err("Detected Tx Unit Hang%s\n"                                       │                          "  next_to_clean        <%x>\n"                                 
                       "  Tx Queue             <%d>\n"                                   │                          "tx_buffer_info[next_to_clean]\n"                               
                       "  TDH, TDT             <%x>, <%x>\n"                             │                          "  time_stamp           <%lx>\n"                                
                       "  next_to_use          <%x>\n"                                   │                          "  jiffies              <%lx>\n",                               
                       "  next_to_clean        <%x>\n"                                   │                          ring_is_xdp(tx_ring) ? "(XDP)" : "",                            
                       "tx_buffer_info[next_to_clean]\n"                                 │                          tx_ring->queue_index,                                           
                       "  next_to_watch        <%p>\n"                                   │                          IXGBE_READ_REG(hw, IXGBE_TDH(tx_ring->reg_idx)),                
                       "  eop_desc->wb.status  <%x>\n"                                   │                          IXGBE_READ_REG(hw, IXGBE_TDT(tx_ring->reg_idx)),                
                       "  time_stamp           <%lx>\n"                                  │                          tx_ring->next_to_use, i,                                        
                       "  jiffies              <%lx>\n",                                 │                          tx_ring->tx_buffer_info[i].time_stamp, jiffies);                
                       ring_is_xdp(tx_ring) ? " XDP" : "",                               │                                                                                          
                       tx_ring->queue_index,                                             │                                                                                          
                       IXGBE_READ_REG(hw, IXGBE_VFTDH(tx_ring->reg_idx)),                │                                                                                          
                       IXGBE_READ_REG(hw, IXGBE_VFTDT(tx_ring->reg_idx)),                │                                                                                          
                       tx_ring->next_to_use, i,                                          │                                                                                          
                       eop_desc, (eop_desc ? eop_desc->wb.status : 0),                   │                                                                                          
                       tx_ring->tx_buffer_info[i].time_stamp, jiffies);                  │                                                                                          
                                                                                         │                                                                                          
                if (!ring_is_xdp(tx_ring))                                               │                  if (!ring_is_xdp(tx_ring))                                              
                        netif_stop_subqueue(tx_ring->netdev,                             │                          netif_stop_subqueue(tx_ring->netdev,                            
                                            tx_ring->queue_index);                       │                                              tx_ring->queue_index);                      
                                                                                         │                                                                                          
                                                                                         │                  e_info(probe,                                                           
                                                                                         │                         "tx hang %d detected on queue %d, resetting adapter\n",          
                                                                                         │                          adapter->tx_timeout_count + 1, tx_ring->queue_index);           
                                                                                         │                                                                                          
                /* schedule immediate reset if we believe we hung */                     │                  /* schedule immediate reset if we believe we hung */                    
                ixgbevf_tx_timeout_reset(adapter);                                       │                  ixgbe_tx_timeout_reset(adapter);                                        
                                                                                         │                                                                                          
                                                                                         │                  /* the adapter is about to reset, no point in enabling stuff */         
                return true;                                                             │                  return true;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (ring_is_xdp(tx_ring))                                                        │          if (ring_is_xdp(tx_ring))                                                       
                return !!budget;                                                         │                  return !!budget;                                                        
                                                                                         │                                                                                          
                                                                                         │          netdev_tx_completed_queue(txring_txq(tx_ring),                                  
                                                                                         │                                    total_packets, total_bytes);                          
                                                                                         │                                                                                          
#define TX_WAKE_THRESHOLD (DESC_NEEDED * 2)                                              │  #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2)                                             
        if (unlikely(total_packets && netif_carrier_ok(tx_ring->netdev) &&               │          if (unlikely(total_packets && netif_carrier_ok(tx_ring->netdev) &&              
                     (ixgbevf_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD))) {             │                       (ixgbe_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD))) {              
                /* Make sure that anybody stopping the queue after this                  │                  /* Make sure that anybody stopping the queue after this                 
                 * sees the new next_to_clean.                                           │                   * sees the new next_to_clean.                                          
                 */                                                                      │                   */                                                                     
                smp_mb();                                                                │                  smp_mb();                                                               
                                                                                         │                                                                                          
                if (__netif_subqueue_stopped(tx_ring->netdev,                            │                  if (__netif_subqueue_stopped(tx_ring->netdev,                           
                                             tx_ring->queue_index) &&                    │                                               tx_ring->queue_index)                      
                    !test_bit(__IXGBEVF_DOWN, &adapter->state)) {                        │                      && !test_bit(__IXGBE_DOWN, &adapter->state)) {                      
                        netif_wake_subqueue(tx_ring->netdev,                             │                          netif_wake_subqueue(tx_ring->netdev,                            
                                            tx_ring->queue_index);                       │                                              tx_ring->queue_index);                      
                        ++tx_ring->tx_stats.restart_queue;                               │                          ++tx_ring->tx_stats.restart_queue;                              
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return !!budget;                                                                 │          return !!budget;                                                                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/mac.c:1175                                      │ linux/drivers/net/ethernet/intel/igb/e1000_mac.c:1099                                    
                                                                                         │                                                                                          
                /* Read the PCS_LSTS and check to see if AutoNeg                         │                  /* Read the PCS_LSTS and check to see if AutoNeg                        
                 * has completed.                                                        │                   * has completed.                                                       
                 */                                                                      │                   */                                                                     
                pcs_status_reg = er32(PCS_LSTAT);                                        │                  pcs_status_reg = rd32(E1000_PCS_LSTAT);                                 
                                                                                         │                                                                                          
                if (!(pcs_status_reg & E1000_PCS_LSTS_AN_COMPLETE)) {                    │                  if (!(pcs_status_reg & E1000_PCS_LSTS_AN_COMPLETE)) {                   
                        e_dbg("PCS Auto Neg has not completed.\n");                      │                          hw_dbg("PCS Auto Neg has not completed.\n");                    
                        return ret_val;                                                  │                          return ret_val;                                                 
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* The AutoNeg process has completed, so we now need to                  │                  /* The AutoNeg process has completed, so we now need to                 
                 * read both the Auto Negotiation Advertisement                          │                   * read both the Auto Negotiation Advertisement                         
                 * Register (PCS_ANADV) and the Auto_Negotiation Base                    │                   * Register (PCS_ANADV) and the Auto_Negotiation Base                   
                 * Page Ability Register (PCS_LPAB) to determine how                     │                   * Page Ability Register (PCS_LPAB) to determine how                    
                 * flow control was negotiated.                                          │                   * flow control was negotiated.                                         
                 */                                                                      │                   */                                                                     
                pcs_adv_reg = er32(PCS_ANADV);                                           │                  pcs_adv_reg = rd32(E1000_PCS_ANADV);                                    
                pcs_lp_ability_reg = er32(PCS_LPAB);                                     │                  pcs_lp_ability_reg = rd32(E1000_PCS_LPAB);                              
                                                                                         │                                                                                          
                /* Two bits in the Auto Negotiation Advertisement Register               │                  /* Two bits in the Auto Negotiation Advertisement Register              
                 * (PCS_ANADV) and two bits in the Auto Negotiation Base                 │                   * (PCS_ANADV) and two bits in the Auto Negotiation Base                
                 * Page Ability Register (PCS_LPAB) determine flow control               │                   * Page Ability Register (PCS_LPAB) determine flow control              
                 * for both the PHY and the link partner.  The following                 │                   * for both the PHY and the link partner.  The following                
                 * table, taken out of the IEEE 802.3ab/D6.0 dated March 25,             │                   * table, taken out of the IEEE 802.3ab/D6.0 dated March 25,            
                 * 1999, describes these PAUSE resolution bits and how flow              │                   * 1999, describes these PAUSE resolution bits and how flow             
                 * control is determined based upon these settings.                      │                   * control is determined based upon these settings.                     
                 * NOTE:  DC = Don't Care                                                │                   * NOTE:  DC = Don't Care                                               
                 *                                                                       │                   *                                                                      
                 *   LOCAL DEVICE  |   LINK PARTNER                                      │                   *   LOCAL DEVICE  |   LINK PARTNER                                     
                 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | NIC Resolution                    │                   * PAUSE | ASM_DIR | PAUSE | ASM_DIR | NIC Resolution                   
                 *-------|---------|-------|---------|--------------------               │                   *-------|---------|-------|---------|--------------------              
                 *   0   |    0    |  DC   |   DC    | e1000_fc_none                     │                   *   0   |    0    |  DC   |   DC    | e1000_fc_none                    
                 *   0   |    1    |   0   |   DC    | e1000_fc_none                     │                   *   0   |    1    |   0   |   DC    | e1000_fc_none                    
                 *   0   |    1    |   1   |    0    | e1000_fc_none                     │                   *   0   |    1    |   1   |    0    | e1000_fc_none                    
                 *   0   |    1    |   1   |    1    | e1000_fc_tx_pause                 │                   *   0   |    1    |   1   |    1    | e1000_fc_tx_pause                
                 *   1   |    0    |   0   |   DC    | e1000_fc_none                     │                   *   1   |    0    |   0   |   DC    | e1000_fc_none                    
                 *   1   |   DC    |   1   |   DC    | e1000_fc_full                     │                   *   1   |   DC    |   1   |   DC    | e1000_fc_full                    
                 *   1   |    1    |   0   |    0    | e1000_fc_none                     │                   *   1   |    1    |   0   |    0    | e1000_fc_none                    
                 *   1   |    1    |   0   |    1    | e1000_fc_rx_pause                 │                   *   1   |    1    |   0   |    1    | e1000_fc_rx_pause                
                 *                                                                       │                   *                                                                      
                 * Are both PAUSE bits set to 1?  If so, this implies                    │                   * Are both PAUSE bits set to 1?  If so, this implies                   
                 * Symmetric Flow Control is enabled at both ends.  The                  │                   * Symmetric Flow Control is enabled at both ends.  The                 
                 * ASM_DIR bits are irrelevant per the spec.                             │                   * ASM_DIR bits are irrelevant per the spec.                            
                 *                                                                       │                   *                                                                      
                 * For Symmetric Flow Control:                                           │                   * For Symmetric Flow Control:                                          
                 *                                                                       │                   *                                                                      
                 *   LOCAL DEVICE  |   LINK PARTNER                                      │                   *   LOCAL DEVICE  |   LINK PARTNER                                     
                 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result                            │                   * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result                           
                 *-------|---------|-------|---------|--------------------               │                   *-------|---------|-------|---------|--------------------              
                 *   1   |   DC    |   1   |   DC    | e1000_fc_full                     │                   *   1   |   DC    |   1   |   DC    | e1000_fc_full                    
                 *                                                                       │                   *                                                                      
                 */                                                                      │                   */                                                                     
                if ((pcs_adv_reg & E1000_TXCW_PAUSE) &&                                  │                  if ((pcs_adv_reg & E1000_TXCW_PAUSE) &&                                 
                    (pcs_lp_ability_reg & E1000_TXCW_PAUSE)) {                           │                      (pcs_lp_ability_reg & E1000_TXCW_PAUSE)) {                          
                        /* Now we need to check if the user selected Rx ONLY             │                          /* Now we need to check if the user selected Rx ONLY            
                         * of pause frames.  In this case, we had to advertise           │                           * of pause frames.  In this case, we had to advertise          
                         * FULL flow control because we could not advertise Rx           │                           * FULL flow control because we could not advertise Rx          
                         * ONLY. Hence, we must now check to see if we need to           │                           * ONLY. Hence, we must now check to see if we need to          
                         * turn OFF the TRANSMISSION of PAUSE frames.                    │                           * turn OFF the TRANSMISSION of PAUSE frames.                   
                         */                                                              │                           */                                                             
                        if (hw->fc.requested_mode == e1000_fc_full) {                    │                          if (hw->fc.requested_mode == e1000_fc_full) {                   
                                hw->fc.current_mode = e1000_fc_full;                     │                                  hw->fc.current_mode = e1000_fc_full;                    
                                e_dbg("Flow Control = FULL.\n");                         │                                  hw_dbg("Flow Control = FULL.\n");                       
                        } else {                                                         │                          } else {                                                        
                                hw->fc.current_mode = e1000_fc_rx_pause;                 │                                  hw->fc.current_mode = e1000_fc_rx_pause;                
                                e_dbg("Flow Control = Rx PAUSE frames only.\n");         │                                  hw_dbg("Flow Control = Rx PAUSE frames only.\n");       
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                /* For receiving PAUSE frames ONLY.                                      │                  /* For receiving PAUSE frames ONLY.                                     
                 *                                                                       │                   *                                                                      
                 *   LOCAL DEVICE  |   LINK PARTNER                                      │                   *   LOCAL DEVICE  |   LINK PARTNER                                     
                 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result                            │                   * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result                           
                 *-------|---------|-------|---------|--------------------               │                   *-------|---------|-------|---------|--------------------              
                 *   0   |    1    |   1   |    1    | e1000_fc_tx_pause                 │                   *   0   |    1    |   1   |    1    | e1000_fc_tx_pause                
                 */                                                                      │                   */                                                                     
                else if (!(pcs_adv_reg & E1000_TXCW_PAUSE) &&                            │                  else if (!(pcs_adv_reg & E1000_TXCW_PAUSE) &&                           
                         (pcs_adv_reg & E1000_TXCW_ASM_DIR) &&                           │                            (pcs_adv_reg & E1000_TXCW_ASM_DIR) &&                         
                         (pcs_lp_ability_reg & E1000_TXCW_PAUSE) &&                      │                            (pcs_lp_ability_reg & E1000_TXCW_PAUSE) &&                    
                         (pcs_lp_ability_reg & E1000_TXCW_ASM_DIR)) {                    │                            (pcs_lp_ability_reg & E1000_TXCW_ASM_DIR)) {                  
                        hw->fc.current_mode = e1000_fc_tx_pause;                         │                          hw->fc.current_mode = e1000_fc_tx_pause;                        
                        e_dbg("Flow Control = Tx PAUSE frames only.\n");                 │                          hw_dbg("Flow Control = Tx PAUSE frames only.\n");               
                }                                                                        │                  }                                                                       
                /* For transmitting PAUSE frames ONLY.                                   │                  /* For transmitting PAUSE frames ONLY.                                  
                 *                                                                       │                   *                                                                      
                 *   LOCAL DEVICE  |   LINK PARTNER                                      │                   *   LOCAL DEVICE  |   LINK PARTNER                                     
                 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result                            │                   * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result                           
                 *-------|---------|-------|---------|--------------------               │                   *-------|---------|-------|---------|--------------------              
                 *   1   |    1    |   0   |    1    | e1000_fc_rx_pause                 │                   *   1   |    1    |   0   |    1    | e1000_fc_rx_pause                
                 */                                                                      │                   */                                                                     
                else if ((pcs_adv_reg & E1000_TXCW_PAUSE) &&                             │                  else if ((pcs_adv_reg & E1000_TXCW_PAUSE) &&                            
                         (pcs_adv_reg & E1000_TXCW_ASM_DIR) &&                           │                           (pcs_adv_reg & E1000_TXCW_ASM_DIR) &&                          
                         !(pcs_lp_ability_reg & E1000_TXCW_PAUSE) &&                     │                           !(pcs_lp_ability_reg & E1000_TXCW_PAUSE) &&                    
                         (pcs_lp_ability_reg & E1000_TXCW_ASM_DIR)) {                    │                           (pcs_lp_ability_reg & E1000_TXCW_ASM_DIR)) {                   
                        hw->fc.current_mode = e1000_fc_rx_pause;                         │                          hw->fc.current_mode = e1000_fc_rx_pause;                        
                        e_dbg("Flow Control = Rx PAUSE frames only.\n");                 │                          hw_dbg("Flow Control = Rx PAUSE frames only.\n");               
                } else {                                                                 │                  } else {                                                                
                        /* Per the IEEE spec, at this point flow control                 │                          /* Per the IEEE spec, at this point flow control                
                         * should be disabled.                                           │                           * should be disabled.                                          
                         */                                                              │                           */                                                             
                        hw->fc.current_mode = e1000_fc_none;                             │                          hw->fc.current_mode = e1000_fc_none;                            
                        e_dbg("Flow Control = NONE.\n");                                 │                          hw_dbg("Flow Control = NONE.\n");                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* Now we call a subroutine to actually force the MAC                    │                  /* Now we call a subroutine to actually force the MAC                   
                 * controller to use the correct flow control settings.                  │                   * controller to use the correct flow control settings.                 
                 */                                                                      │                   */                                                                     
                pcs_ctrl_reg = er32(PCS_LCTL);                                           │                  pcs_ctrl_reg = rd32(E1000_PCS_LCTL);                                    
                pcs_ctrl_reg |= E1000_PCS_LCTL_FORCE_FCTRL;                              │                  pcs_ctrl_reg |= E1000_PCS_LCTL_FORCE_FCTRL;                             
                ew32(PCS_LCTL, pcs_ctrl_reg);                                            │                  wr32(E1000_PCS_LCTL, pcs_ctrl_reg);                                     
                                                                                         │                                                                                          
                ret_val = e1000e_force_mac_fc(hw);                                       │                  ret_val = igb_force_mac_fc(hw);                                         
                if (ret_val) {                                                           │                  if (ret_val) {                                                          
                        e_dbg("Error forcing flow control settings\n");                  │                          hw_dbg("Error forcing flow control settings\n");                
                        return ret_val;                                                  │                          return ret_val;                                                 
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ptp.c:663                                      │ linux/drivers/net/ethernet/intel/igc/igc_ptp.c:248                                       
                                                                                         │                                                                                          
        struct igb_adapter *igb =                                                        │          struct igc_adapter *igc =                                                       
                container_of(ptp, struct igb_adapter, ptp_caps);                         │                  container_of(ptp, struct igc_adapter, ptp_caps);                        
        struct e1000_hw *hw = &igb->hw;                                                  │          struct igc_hw *hw = &igc->hw;                                                   
        u32 tsauxc, tsim, tsauxc_mask, tsim_mask, trgttiml, trgttimh, freqout;           │                                                                                          
        unsigned long flags;                                                             │          unsigned long flags;                                                            
        struct timespec64 ts;                                                            │          struct timespec64 ts;                                                           
        int use_freq = 0, pin = -1;                                                      │          int use_freq = 0, pin = -1;                                                     
                                                                                         │          u32 tsim, tsauxc, tsauxc_mask, tsim_mask, trgttiml, trgttimh, freqout;          
        s64 ns;                                                                          │          s64 ns;                                                                         
                                                                                         │                                                                                          
        switch (rq->type) {                                                              │          switch (rq->type) {                                                             
        case PTP_CLK_REQ_EXTTS:                                                          │          case PTP_CLK_REQ_EXTTS:                                                         
                /* Reject requests with unsupported flags */                             │                  /* Reject requests with unsupported flags */                            
                if (rq->extts.flags & ~(PTP_ENABLE_FEATURE |                             │                  if (rq->extts.flags & ~(PTP_ENABLE_FEATURE |                            
                                        PTP_RISING_EDGE |                                │                                          PTP_RISING_EDGE |                               
                                        PTP_FALLING_EDGE |                               │                                          PTP_FALLING_EDGE |                              
                                        PTP_STRICT_FLAGS))                               │                                          PTP_STRICT_FLAGS))                              
                        return -EOPNOTSUPP;                                              │                          return -EOPNOTSUPP;                                             
                                                                                         │                                                                                          
                /* Reject requests failing to enable both edges. */                      │                  /* Reject requests failing to enable both edges. */                     
                if ((rq->extts.flags & PTP_STRICT_FLAGS) &&                              │                  if ((rq->extts.flags & PTP_STRICT_FLAGS) &&                             
                    (rq->extts.flags & PTP_ENABLE_FEATURE) &&                            │                      (rq->extts.flags & PTP_ENABLE_FEATURE) &&                           
                    (rq->extts.flags & PTP_EXTTS_EDGES) != PTP_EXTTS_EDGES)              │                      (rq->extts.flags & PTP_EXTTS_EDGES) != PTP_EXTTS_EDGES)             
                        return -EOPNOTSUPP;                                              │                          return -EOPNOTSUPP;                                             
                                                                                         │                                                                                          
                if (on) {                                                                │                  if (on) {                                                               
                        pin = ptp_find_pin(igb->ptp_clock, PTP_PF_EXTTS,                 │                          pin = ptp_find_pin(igc->ptp_clock, PTP_PF_EXTTS,                
                                           rq->extts.index);                             │                                             rq->extts.index);                            
                        if (pin < 0)                                                     │                          if (pin < 0)                                                    
                                return -EBUSY;                                           │                                  return -EBUSY;                                          
                }                                                                        │                  }                                                                       
                if (rq->extts.index == 1) {                                              │                  if (rq->extts.index == 1) {                                             
                        tsauxc_mask = TSAUXC_EN_TS1;                                     │                          tsauxc_mask = IGC_TSAUXC_EN_TS1;                                
                        tsim_mask = TSINTR_AUTT1;                                        │                          tsim_mask = IGC_TSICR_AUTT1;                                    
                } else {                                                                 │                  } else {                                                                
                        tsauxc_mask = TSAUXC_EN_TS0;                                     │                          tsauxc_mask = IGC_TSAUXC_EN_TS0;                                
                        tsim_mask = TSINTR_AUTT0;                                        │                          tsim_mask = IGC_TSICR_AUTT0;                                    
                }                                                                        │                  }                                                                       
                spin_lock_irqsave(&igb->tmreg_lock, flags);                              │                  spin_lock_irqsave(&igc->tmreg_lock, flags);                             
                tsauxc = rd32(E1000_TSAUXC);                                             │                  tsauxc = rd32(IGC_TSAUXC);                                              
                tsim = rd32(E1000_TSIM);                                                 │                  tsim = rd32(IGC_TSIM);                                                  
                if (on) {                                                                │                  if (on) {                                                               
                        igb_pin_extts(igb, rq->extts.index, pin);                        │                          igc_pin_extts(igc, rq->extts.index, pin);                       
                        tsauxc |= tsauxc_mask;                                           │                          tsauxc |= tsauxc_mask;                                          
                        tsim |= tsim_mask;                                               │                          tsim |= tsim_mask;                                              
                } else {                                                                 │                  } else {                                                                
                        tsauxc &= ~tsauxc_mask;                                          │                          tsauxc &= ~tsauxc_mask;                                         
                        tsim &= ~tsim_mask;                                              │                          tsim &= ~tsim_mask;                                             
                }                                                                        │                  }                                                                       
                wr32(E1000_TSAUXC, tsauxc);                                              │                  wr32(IGC_TSAUXC, tsauxc);                                               
                wr32(E1000_TSIM, tsim);                                                  │                  wr32(IGC_TSIM, tsim);                                                   
                spin_unlock_irqrestore(&igb->tmreg_lock, flags);                         │                  spin_unlock_irqrestore(&igc->tmreg_lock, flags);                        
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        case PTP_CLK_REQ_PEROUT:                                                         │          case PTP_CLK_REQ_PEROUT:                                                        
                /* Reject requests with unsupported flags */                             │                  /* Reject requests with unsupported flags */                            
                if (rq->perout.flags)                                                    │                  if (rq->perout.flags)                                                   
                        return -EOPNOTSUPP;                                              │                          return -EOPNOTSUPP;                                             
                                                                                         │                                                                                          
                if (on) {                                                                │                  if (on) {                                                               
                        pin = ptp_find_pin(igb->ptp_clock, PTP_PF_PEROUT,                │                          pin = ptp_find_pin(igc->ptp_clock, PTP_PF_PEROUT,               
                                           rq->perout.index);                            │                                             rq->perout.index);                           
                        if (pin < 0)                                                     │                          if (pin < 0)                                                    
                                return -EBUSY;                                           │                                  return -EBUSY;                                          
                }                                                                        │                  }                                                                       
                ts.tv_sec = rq->perout.period.sec;                                       │                  ts.tv_sec = rq->perout.period.sec;                                      
                ts.tv_nsec = rq->perout.period.nsec;                                     │                  ts.tv_nsec = rq->perout.period.nsec;                                    
                ns = timespec64_to_ns(&ts);                                              │                  ns = timespec64_to_ns(&ts);                                             
                ns = ns >> 1;                                                            │                  ns = ns >> 1;                                                           
                if (on && ((ns <= 70000000LL) || (ns == 125000000LL) ||                  │                  if (on && (ns <= 70000000LL || ns == 125000000LL ||                     
                           (ns == 250000000LL) || (ns == 500000000LL))) {                │                             ns == 250000000LL || ns == 500000000LL)) {                   
                        if (ns < 8LL)                                                    │                          if (ns < 8LL)                                                   
                                return -EINVAL;                                          │                                  return -EINVAL;                                         
                        use_freq = 1;                                                    │                          use_freq = 1;                                                   
                }                                                                        │                  }                                                                       
                ts = ns_to_timespec64(ns);                                               │                  ts = ns_to_timespec64(ns);                                              
                if (rq->perout.index == 1) {                                             │                  if (rq->perout.index == 1) {                                            
                        if (use_freq) {                                                  │                          if (use_freq) {                                                 
                                tsauxc_mask = TSAUXC_EN_CLK1 | TSAUXC_ST1;               │                                  tsauxc_mask = IGC_TSAUXC_EN_CLK1;                       
                                tsim_mask = 0;                                           │                                  tsim_mask = 0;                                          
                        } else {                                                         │                          } else {                                                        
                                tsauxc_mask = TSAUXC_EN_TT1;                             │                                  tsauxc_mask = IGC_TSAUXC_EN_TT1;                        
                                tsim_mask = TSINTR_TT1;                                  │                                  tsim_mask = IGC_TSICR_TT1;                              
                        }                                                                │                          }                                                               
                        trgttiml = E1000_TRGTTIML1;                                      │                          trgttiml = IGC_TRGTTIML1;                                       
                        trgttimh = E1000_TRGTTIMH1;                                      │                          trgttimh = IGC_TRGTTIMH1;                                       
                        freqout = E1000_FREQOUT1;                                        │                          freqout = IGC_FREQOUT1;                                         
                } else {                                                                 │                  } else {                                                                
                        if (use_freq) {                                                  │                          if (use_freq) {                                                 
                                tsauxc_mask = TSAUXC_EN_CLK0 | TSAUXC_ST0;               │                                  tsauxc_mask = IGC_TSAUXC_EN_CLK0;                       
                                tsim_mask = 0;                                           │                                  tsim_mask = 0;                                          
                        } else {                                                         │                          } else {                                                        
                                tsauxc_mask = TSAUXC_EN_TT0;                             │                                  tsauxc_mask = IGC_TSAUXC_EN_TT0;                        
                                tsim_mask = TSINTR_TT0;                                  │                                  tsim_mask = IGC_TSICR_TT0;                              
                        }                                                                │                          }                                                               
                        trgttiml = E1000_TRGTTIML0;                                      │                          trgttiml = IGC_TRGTTIML0;                                       
                        trgttimh = E1000_TRGTTIMH0;                                      │                          trgttimh = IGC_TRGTTIMH0;                                       
                        freqout = E1000_FREQOUT0;                                        │                          freqout = IGC_FREQOUT0;                                         
                }                                                                        │                  }                                                                       
                spin_lock_irqsave(&igb->tmreg_lock, flags);                              │                  spin_lock_irqsave(&igc->tmreg_lock, flags);                             
                tsauxc = rd32(E1000_TSAUXC);                                             │                  tsauxc = rd32(IGC_TSAUXC);                                              
                tsim = rd32(E1000_TSIM);                                                 │                  tsim = rd32(IGC_TSIM);                                                  
                if (rq->perout.index == 1) {                                             │                  if (rq->perout.index == 1) {                                            
                        tsauxc &= ~(TSAUXC_EN_TT1 | TSAUXC_EN_CLK1 | TSAUXC_ST1);        │                          tsauxc &= ~(IGC_TSAUXC_EN_TT1 | IGC_TSAUXC_EN_CLK1);            
                        tsim &= ~TSINTR_TT1;                                             │                          tsim &= ~IGC_TSICR_TT1;                                         
                } else {                                                                 │                  } else {                                                                
                        tsauxc &= ~(TSAUXC_EN_TT0 | TSAUXC_EN_CLK0 | TSAUXC_ST0);        │                          tsauxc &= ~(IGC_TSAUXC_EN_TT0 | IGC_TSAUXC_EN_CLK0);            
                        tsim &= ~TSINTR_TT0;                                             │                          tsim &= ~IGC_TSICR_TT0;                                         
                }                                                                        │                  }                                                                       
                if (on) {                                                                │                  if (on) {                                                               
                        int i = rq->perout.index;                                        │                          int i = rq->perout.index;                                       
                        igb_pin_perout(igb, i, pin, use_freq);                           │                                                                                          
                        igb->perout[i].start.tv_sec = rq->perout.start.sec;              │                          igc_pin_perout(igc, i, pin, use_freq);                          
                        igb->perout[i].start.tv_nsec = rq->perout.start.nsec;            │                          igc->perout[i].start.tv_sec = rq->perout.start.sec;             
                        igb->perout[i].period.tv_sec = ts.tv_sec;                        │                          igc->perout[i].start.tv_nsec = rq->perout.start.nsec;           
                        igb->perout[i].period.tv_nsec = ts.tv_nsec;                      │                          igc->perout[i].period.tv_sec = ts.tv_sec;                       
                                                                                         │                          igc->perout[i].period.tv_nsec = ts.tv_nsec;                     
                        wr32(trgttimh, rq->perout.start.sec);                            │                          wr32(trgttimh, rq->perout.start.sec);                           
                        wr32(trgttiml, rq->perout.start.nsec);                           │                          /* For now, always select timer 0 as source. */                 
                                                                                         │                          wr32(trgttiml, rq->perout.start.nsec | IGC_TT_IO_TIMER_SEL_SYSTI
                        if (use_freq)                                                    │                          if (use_freq)                                                   
                                wr32(freqout, ns);                                       │                                  wr32(freqout, ns);                                      
                        tsauxc |= tsauxc_mask;                                           │                          tsauxc |= tsauxc_mask;                                          
                        tsim |= tsim_mask;                                               │                          tsim |= tsim_mask;                                              
                }                                                                        │                  }                                                                       
                wr32(E1000_TSAUXC, tsauxc);                                              │                  wr32(IGC_TSAUXC, tsauxc);                                               
                wr32(E1000_TSIM, tsim);                                                  │                  wr32(IGC_TSIM, tsim);                                                   
                spin_unlock_irqrestore(&igb->tmreg_lock, flags);                         │                  spin_unlock_irqrestore(&igc->tmreg_lock, flags);                        
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        case PTP_CLK_REQ_PPS:                                                            │          case PTP_CLK_REQ_PPS:                                                           
                spin_lock_irqsave(&igb->tmreg_lock, flags);                              │                  spin_lock_irqsave(&igc->tmreg_lock, flags);                             
                tsim = rd32(E1000_TSIM);                                                 │                  tsim = rd32(IGC_TSIM);                                                  
                if (on)                                                                  │                  if (on)                                                                 
                        tsim |= TSINTR_SYS_WRAP;                                         │                          tsim |= IGC_TSICR_SYS_WRAP;                                     
                else                                                                     │                  else                                                                    
                        tsim &= ~TSINTR_SYS_WRAP;                                        │                          tsim &= ~IGC_TSICR_SYS_WRAP;                                    
                igb->pps_sys_wrap_on = !!on;                                             │                  igc->pps_sys_wrap_on = on;                                              
                wr32(E1000_TSIM, tsim);                                                  │                  wr32(IGC_TSIM, tsim);                                                   
                spin_unlock_irqrestore(&igb->tmreg_lock, flags);                         │                  spin_unlock_irqrestore(&igc->tmreg_lock, flags);                        
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
                                                                                         │          default:                                                                        
                                                                                         │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return -EOPNOTSUPP;                                                              │          return -EOPNOTSUPP;                                                             
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:3579                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:694                                      
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define TSTORM_ETH_CONN_AG_CTX_BIT0_MASK        0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT       0                                        │  #define TSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                       
#define TSTORM_ETH_CONN_AG_CTX_BIT1_MASK        0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT       1                                        │  #define TSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                       
#define TSTORM_ETH_CONN_AG_CTX_BIT2_MASK        0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_BIT2_MASK       0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_BIT2_SHIFT       2                                        │  #define TSTORM_CORE_CONN_AG_CTX_BIT2_SHIFT      2                                       
#define TSTORM_ETH_CONN_AG_CTX_BIT3_MASK        0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_BIT3_MASK       0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_BIT3_SHIFT       3                                        │  #define TSTORM_CORE_CONN_AG_CTX_BIT3_SHIFT      3                                       
#define TSTORM_ETH_CONN_AG_CTX_BIT4_MASK        0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_BIT4_MASK       0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_BIT4_SHIFT       4                                        │  #define TSTORM_CORE_CONN_AG_CTX_BIT4_SHIFT      4                                       
#define TSTORM_ETH_CONN_AG_CTX_BIT5_MASK        0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_BIT5_MASK       0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_BIT5_SHIFT       5                                        │  #define TSTORM_CORE_CONN_AG_CTX_BIT5_SHIFT      5                                       
#define TSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF0_SHIFT        6                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define TSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF1_SHIFT        0                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       0                                       
#define TSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF2_SHIFT        2                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       2                                       
#define TSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF3_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF3_SHIFT        4                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF3_SHIFT       4                                       
#define TSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF4_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF4_SHIFT        6                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF4_SHIFT       6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define TSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF5_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF5_SHIFT        0                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF5_SHIFT       0                                       
#define TSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF6_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF6_SHIFT        2                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF6_SHIFT       2                                       
#define TSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF7_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF7_SHIFT        4                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF7_SHIFT       4                                       
#define TSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF8_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF8_SHIFT        6                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF8_SHIFT       6                                       
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define TSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3                                              │  #define TSTORM_CORE_CONN_AG_CTX_CF9_MASK        0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF9_SHIFT        0                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF9_SHIFT       0                                       
#define TSTORM_ETH_CONN_AG_CTX_CF10_MASK        0x3                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF10_MASK       0x3                                     
#define TSTORM_ETH_CONN_AG_CTX_CF10_SHIFT       2                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF10_SHIFT      2                                       
#define TSTORM_ETH_CONN_AG_CTX_CF0EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF0EN_MASK      0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT      4                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT     4                                       
#define TSTORM_ETH_CONN_AG_CTX_CF1EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF1EN_MASK      0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT      5                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT     5                                       
#define TSTORM_ETH_CONN_AG_CTX_CF2EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF2EN_MASK      0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT      6                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT     6                                       
#define TSTORM_ETH_CONN_AG_CTX_CF3EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF3EN_MASK      0x1                                     
#define TSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT      7                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT     7                                       
        u8 flags4;                                                                       │          u8 flags4;                                                                      
#define TSTORM_ETH_CONN_AG_CTX_CF4EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF4EN_MASK              0x1                             
#define TSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT      0                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT             0                               
#define TSTORM_ETH_CONN_AG_CTX_CF5EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF5EN_MASK              0x1                             
#define TSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT      1                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT             1                               
#define TSTORM_ETH_CONN_AG_CTX_CF6EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF6EN_MASK              0x1                             
#define TSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT      2                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT             2                               
#define TSTORM_ETH_CONN_AG_CTX_CF7EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF7EN_MASK              0x1                             
#define TSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT      3                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT             3                               
#define TSTORM_ETH_CONN_AG_CTX_CF8EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF8EN_MASK              0x1                             
#define TSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT      4                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT             4                               
#define TSTORM_ETH_CONN_AG_CTX_CF9EN_MASK       0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF9EN_MASK              0x1                             
#define TSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT      5                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT             5                               
#define TSTORM_ETH_CONN_AG_CTX_CF10EN_MASK      0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_CF10EN_MASK             0x1                             
#define TSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT     6                                        │  #define TSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT            6                               
#define TSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK     0x1                                      │  #define TSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                             
#define TSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT    7                                        │  #define TSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   7                                       
        u8 flags5;                                                                       │          u8 flags5;                                                                      
#define TSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK             0x1                              │  #define TSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                             
#define TSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT            0                                │  #define TSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   0                                       
#define TSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK             0x1                              │  #define TSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                             
#define TSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT            1                                │  #define TSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   1                                       
#define TSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK             0x1                              │  #define TSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                             
#define TSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT            2                                │  #define TSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   2                                       
#define TSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK             0x1                              │  #define TSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                             
#define TSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT            3                                │  #define TSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   3                                       
#define TSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK             0x1                              │  #define TSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK            0x1                             
#define TSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT            4                                │  #define TSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT   4                                       
#define TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_MASK            0x1                              │  #define TSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK            0x1                             
#define TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_SHIFT   5                                        │  #define TSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT   5                                       
#define TSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK             0x1                              │  #define TSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK            0x1                             
#define TSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT            6                                │  #define TSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT   6                                       
#define TSTORM_ETH_CONN_AG_CTX_RULE8EN_MASK             0x1                              │  #define TSTORM_CORE_CONN_AG_CTX_RULE8EN_MASK            0x1                             
#define TSTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT            7                                │  #define TSTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT   7                                       
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le32 reg4;                                                                     │          __le32 reg4;                                                                    
        __le32 reg5;                                                                     │          __le32 reg5;                                                                    
        __le32 reg6;                                                                     │          __le32 reg6;                                                                    
        __le32 reg7;                                                                     │          __le32 reg7;                                                                    
        __le32 reg8;                                                                     │          __le32 reg8;                                                                    
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 rx_bd_cons;                                                               │          __le16 word0;                                                                   
        u8 byte4;                                                                        │          u8 byte4;                                                                       
        u8 byte5;                                                                        │          u8 byte5;                                                                       
        __le16 rx_bd_prod;                                                               │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le32 reg9;                                                                     │          __le32 ll2_rx_prod;                                                             
        __le32 reg10;                                                                    │          __le32 reg10;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:194                          │ linux/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:345                           
                                                                                         │                                                                                          
        struct mac_delay_struct *mac_delay = &plat->mac_delay;                           │          struct mac_delay_struct *mac_delay = &plat->mac_delay;                          
        u32 delay_val = 0, fine_val = 0;                                                 │          u32 gtxc_delay_val = 0, delay_val = 0, rmii_delay_val = 0;                      
                                                                                         │                                                                                          
        mt2712_delay_ps2stage(plat);                                                     │          mt8195_delay_ps2stage(plat);                                                    
                                                                                         │                                                                                          
        switch (plat->phy_mode) {                                                        │          switch (plat->phy_mode) {                                                       
        case PHY_INTERFACE_MODE_MII:                                                     │          case PHY_INTERFACE_MODE_MII:                                                    
                delay_val |= FIELD_PREP(ETH_DLY_TXC_ENABLE, !!mac_delay->tx_delay);      │                  delay_val |= FIELD_PREP(MT8195_DLY_TXC_ENABLE, !!mac_delay->tx_delay);  
                delay_val |= FIELD_PREP(ETH_DLY_TXC_STAGES, mac_delay->tx_delay);        │                  delay_val |= FIELD_PREP(MT8195_DLY_TXC_STAGES, mac_delay->tx_delay);    
                delay_val |= FIELD_PREP(ETH_DLY_TXC_INV, mac_delay->tx_inv);             │                  delay_val |= FIELD_PREP(MT8195_DLY_TXC_INV, mac_delay->tx_inv);         
                                                                                         │                                                                                          
                delay_val |= FIELD_PREP(ETH_DLY_RXC_ENABLE, !!mac_delay->rx_delay);      │                  delay_val |= FIELD_PREP(MT8195_DLY_RXC_ENABLE, !!mac_delay->rx_delay);  
                delay_val |= FIELD_PREP(ETH_DLY_RXC_STAGES, mac_delay->rx_delay);        │                  delay_val |= FIELD_PREP(MT8195_DLY_RXC_STAGES, mac_delay->rx_delay);    
                delay_val |= FIELD_PREP(ETH_DLY_RXC_INV, mac_delay->rx_inv);             │                  delay_val |= FIELD_PREP(MT8195_DLY_RXC_INV, mac_delay->rx_inv);         
                break;                                                                   │                  break;                                                                  
        case PHY_INTERFACE_MODE_RMII:                                                    │          case PHY_INTERFACE_MODE_RMII:                                                   
                if (plat->rmii_clk_from_mac) {                                           │                  if (plat->rmii_clk_from_mac) {                                          
                        /* case 1: mac provides the rmii reference clock,                │                          /* case 1: mac provides the rmii reference clock,               
                         * and the clock output to TXC pin.                              │                           * and the clock output to TXC pin.                             
                         * The egress timing can be adjusted by GTXC delay macro circuit │                           * The egress timing can be adjusted by RMII_TXC delay macro cir
                         * The ingress timing can be adjusted by TXC delay macro circuit │                           * The ingress timing can be adjusted by RMII_RXC delay macro ci
                         */                                                              │                           */                                                             
                        delay_val |= FIELD_PREP(ETH_DLY_TXC_ENABLE, !!mac_delay->rx_dela │                          rmii_delay_val |= FIELD_PREP(MT8195_DLY_RMII_TXC_ENABLE,        
                        delay_val |= FIELD_PREP(ETH_DLY_TXC_STAGES, mac_delay->rx_delay) │                                                       !!mac_delay->tx_delay);            
                        delay_val |= FIELD_PREP(ETH_DLY_TXC_INV, mac_delay->rx_inv);     │                          rmii_delay_val |= FIELD_PREP(MT8195_DLY_RMII_TXC_STAGES,        
                                                                                         │                                                       mac_delay->tx_delay);              
                        delay_val |= FIELD_PREP(ETH_DLY_GTXC_ENABLE, !!mac_delay->tx_del │                          rmii_delay_val |= FIELD_PREP(MT8195_DLY_RMII_TXC_INV,           
                        delay_val |= FIELD_PREP(ETH_DLY_GTXC_STAGES, mac_delay->tx_delay │                                                       mac_delay->tx_inv);                
                        delay_val |= FIELD_PREP(ETH_DLY_GTXC_INV, mac_delay->tx_inv);    │                                                                                          
                                                                                         │                          rmii_delay_val |= FIELD_PREP(MT8195_DLY_RMII_RXC_ENABLE,        
                                                                                         │                                                       !!mac_delay->rx_delay);            
                                                                                         │                          rmii_delay_val |= FIELD_PREP(MT8195_DLY_RMII_RXC_STAGES,        
                                                                                         │                                                       mac_delay->rx_delay);              
                                                                                         │                          rmii_delay_val |= FIELD_PREP(MT8195_DLY_RMII_RXC_INV,           
                                                                                         │                                                       mac_delay->rx_inv);                
                } else {                                                                 │                  } else {                                                                
                        /* case 2: the rmii reference clock is from external phy,        │                          /* case 2: the rmii reference clock is from external phy,       
                         * and the property "rmii_rxc" indicates which pin(TXC/RXC)      │                           * and the property "rmii_rxc" indicates which pin(TXC/RXC)     
                         * the reference clk is connected to. The reference clock is a   │                           * the reference clk is connected to. The reference clock is a  
                         * received signal, so rx_delay/rx_inv are used to indicate      │                           * received signal, so rx_delay/rx_inv are used to indicate     
                         * the reference clock timing adjustment                         │                           * the reference clock timing adjustment                        
                         */                                                              │                           */                                                             
                        if (plat->rmii_rxc) {                                            │                          if (plat->rmii_rxc) {                                           
                                /* the rmii reference clock from outside is connected    │                                  /* the rmii reference clock from outside is connected   
                                 * to RXC pin, the reference clock will be adjusted      │                                   * to RXC pin, the reference clock will be adjusted     
                                 * by RXC delay macro circuit.                           │                                   * by RXC delay macro circuit.                          
                                 */                                                      │                                   */                                                     
                                delay_val |= FIELD_PREP(ETH_DLY_RXC_ENABLE, !!mac_delay- │                                  delay_val |= FIELD_PREP(MT8195_DLY_RXC_ENABLE,          
                                delay_val |= FIELD_PREP(ETH_DLY_RXC_STAGES, mac_delay->r │                                                          !!mac_delay->rx_delay);         
                                delay_val |= FIELD_PREP(ETH_DLY_RXC_INV, mac_delay->rx_i │                                  delay_val |= FIELD_PREP(MT8195_DLY_RXC_STAGES,          
                                                                                         │                                                          mac_delay->rx_delay);           
                                                                                         │                                  delay_val |= FIELD_PREP(MT8195_DLY_RXC_INV,             
                                                                                         │                                                          mac_delay->rx_inv);             
                        } else {                                                         │                          } else {                                                        
                                /* the rmii reference clock from outside is connected    │                                  /* the rmii reference clock from outside is connected   
                                 * to TXC pin, the reference clock will be adjusted      │                                   * to TXC pin, the reference clock will be adjusted     
                                 * by TXC delay macro circuit.                           │                                   * by TXC delay macro circuit.                          
                                 */                                                      │                                   */                                                     
                                delay_val |= FIELD_PREP(ETH_DLY_TXC_ENABLE, !!mac_delay- │                                  delay_val |= FIELD_PREP(MT8195_DLY_TXC_ENABLE,          
                                delay_val |= FIELD_PREP(ETH_DLY_TXC_STAGES, mac_delay->r │                                                          !!mac_delay->rx_delay);         
                                delay_val |= FIELD_PREP(ETH_DLY_TXC_INV, mac_delay->rx_i │                                  delay_val |= FIELD_PREP(MT8195_DLY_TXC_STAGES,          
                                                                                         │                                                          mac_delay->rx_delay);           
                                                                                         │                                  delay_val |= FIELD_PREP(MT8195_DLY_TXC_INV,             
                                                                                         │                                                          mac_delay->rx_inv);             
                        }                                                                │                          }                                                               
                        /* tx_inv will inverse the tx clock inside mac relateive to      │                                                                                          
                         * reference clock from external phy,                            │                                                                                          
                         * and this bit is located in the same register with fine-tune   │                                                                                          
                         */                                                              │                                                                                          
                        if (mac_delay->tx_inv)                                           │                                                                                          
                                fine_val = ETH_RMII_DLY_TX_INV;                          │                                                                                          
                }                                                                        │                  }                                                                       
                break;                                                                   │                  break;                                                                  
        case PHY_INTERFACE_MODE_RGMII:                                                   │          case PHY_INTERFACE_MODE_RGMII:                                                  
        case PHY_INTERFACE_MODE_RGMII_TXID:                                              │          case PHY_INTERFACE_MODE_RGMII_TXID:                                             
        case PHY_INTERFACE_MODE_RGMII_RXID:                                              │          case PHY_INTERFACE_MODE_RGMII_RXID:                                             
        case PHY_INTERFACE_MODE_RGMII_ID:                                                │          case PHY_INTERFACE_MODE_RGMII_ID:                                               
                fine_val = ETH_FINE_DLY_GTXC | ETH_FINE_DLY_RXC;                         │                  gtxc_delay_val |= FIELD_PREP(MT8195_DLY_GTXC_ENABLE, !!mac_delay->tx_del
                                                                                         │                  gtxc_delay_val |= FIELD_PREP(MT8195_DLY_GTXC_STAGES, mac_delay->tx_delay
                                                                                         │                  gtxc_delay_val |= FIELD_PREP(MT8195_DLY_GTXC_INV, mac_delay->tx_inv);   
                                                                                         │                                                                                          
                                                                                         │                  delay_val |= FIELD_PREP(MT8195_DLY_RXC_ENABLE, !!mac_delay->rx_delay);  
                                                                                         │                  delay_val |= FIELD_PREP(MT8195_DLY_RXC_STAGES, mac_delay->rx_delay);    
                                                                                         │                  delay_val |= FIELD_PREP(MT8195_DLY_RXC_INV, mac_delay->rx_inv);         
                                                                                         │                                                                                          
                delay_val |= FIELD_PREP(ETH_DLY_GTXC_ENABLE, !!mac_delay->tx_delay);     │                                                                                          
                delay_val |= FIELD_PREP(ETH_DLY_GTXC_STAGES, mac_delay->tx_delay);       │                                                                                          
                delay_val |= FIELD_PREP(ETH_DLY_GTXC_INV, mac_delay->tx_inv);            │                                                                                          
                                                                                         │                                                                                          
                delay_val |= FIELD_PREP(ETH_DLY_RXC_ENABLE, !!mac_delay->rx_delay);      │                                                                                          
                delay_val |= FIELD_PREP(ETH_DLY_RXC_STAGES, mac_delay->rx_delay);        │                                                                                          
                delay_val |= FIELD_PREP(ETH_DLY_RXC_INV, mac_delay->rx_inv);             │                                                                                          
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                dev_err(plat->dev, "phy interface not supported\n");                     │                  dev_err(plat->dev, "phy interface not supported\n");                    
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
        regmap_write(plat->peri_regmap, PERI_ETH_DLY, delay_val);                        │                                                                                          
        regmap_write(plat->peri_regmap, PERI_ETH_DLY_FINE, fine_val);                    │                                                                                          
                                                                                         │                                                                                          
        mt2712_delay_stage2ps(plat);                                                     │          regmap_update_bits(plat->peri_regmap,                                           
                                                                                         │                             MT8195_PERI_ETH_CTRL0,                                       
                                                                                         │                             MT8195_RGMII_TXC_PHASE_CTRL |                                
                                                                                         │                             MT8195_DLY_GTXC_INV |                                        
                                                                                         │                             MT8195_DLY_GTXC_ENABLE |                                     
                                                                                         │                             MT8195_DLY_GTXC_STAGES,                                      
                                                                                         │                             gtxc_delay_val);                                             
                                                                                         │          regmap_write(plat->peri_regmap, MT8195_PERI_ETH_CTRL1, delay_val);              
                                                                                         │          regmap_write(plat->peri_regmap, MT8195_PERI_ETH_CTRL2, rmii_delay_val);         
                                                                                         │                                                                                          
                                                                                         │          mt8195_delay_stage2ps(plat);                                                    
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:6113                                    │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:8226                                 
                                                                                         │                                                                                          
        struct sk_buff *skb = first->skb;                                                │          struct sk_buff *skb = first->skb;                                               
        struct igb_tx_buffer *tx_buffer;                                                 │          struct ixgbe_tx_buffer *tx_buffer;                                              
        union e1000_adv_tx_desc *tx_desc;                                                │          union ixgbe_adv_tx_desc *tx_desc;                                               
        skb_frag_t *frag;                                                                │          skb_frag_t *frag;                                                               
        dma_addr_t dma;                                                                  │          dma_addr_t dma;                                                                 
        unsigned int data_len, size;                                                     │          unsigned int data_len, size;                                                    
        u32 tx_flags = first->tx_flags;                                                  │          u32 tx_flags = first->tx_flags;                                                 
        u32 cmd_type = igb_tx_cmd_type(skb, tx_flags);                                   │          u32 cmd_type = ixgbe_tx_cmd_type(skb, tx_flags);                                
        u16 i = tx_ring->next_to_use;                                                    │          u16 i = tx_ring->next_to_use;                                                   
                                                                                         │                                                                                          
        tx_desc = IGB_TX_DESC(tx_ring, i);                                               │          tx_desc = IXGBE_TX_DESC(tx_ring, i);                                            
                                                                                         │                                                                                          
        igb_tx_olinfo_status(tx_ring, tx_desc, tx_flags, skb->len - hdr_len);            │          ixgbe_tx_olinfo_status(tx_desc, tx_flags, skb->len - hdr_len);                  
                                                                                         │                                                                                          
        size = skb_headlen(skb);                                                         │          size = skb_headlen(skb);                                                        
        data_len = skb->data_len;                                                        │          data_len = skb->data_len;                                                       
                                                                                         │                                                                                          
                                                                                         │  #ifdef IXGBE_FCOE                                                                       
                                                                                         │          if (tx_flags & IXGBE_TX_FLAGS_FCOE) {                                           
                                                                                         │                  if (data_len < sizeof(struct fcoe_crc_eof)) {                           
                                                                                         │                          size -= sizeof(struct fcoe_crc_eof) - data_len;                 
                                                                                         │                          data_len = 0;                                                   
                                                                                         │                  } else {                                                                
                                                                                         │                          data_len -= sizeof(struct fcoe_crc_eof);                        
                                                                                         │                  }                                                                       
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │  #endif                                                                                  
        dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);              │          dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);             
                                                                                         │                                                                                          
        tx_buffer = first;                                                               │          tx_buffer = first;                                                              
                                                                                         │                                                                                          
        for (frag = &skb_shinfo(skb)->frags[0];; frag++) {                               │          for (frag = &skb_shinfo(skb)->frags[0];; frag++) {                              
                if (dma_mapping_error(tx_ring->dev, dma))                                │                  if (dma_mapping_error(tx_ring->dev, dma))                               
                        goto dma_error;                                                  │                          goto dma_error;                                                 
                                                                                         │                                                                                          
                /* record length, and DMA address */                                     │                  /* record length, and DMA address */                                    
                dma_unmap_len_set(tx_buffer, len, size);                                 │                  dma_unmap_len_set(tx_buffer, len, size);                                
                dma_unmap_addr_set(tx_buffer, dma, dma);                                 │                  dma_unmap_addr_set(tx_buffer, dma, dma);                                
                                                                                         │                                                                                          
                tx_desc->read.buffer_addr = cpu_to_le64(dma);                            │                  tx_desc->read.buffer_addr = cpu_to_le64(dma);                           
                                                                                         │                                                                                          
                while (unlikely(size > IGB_MAX_DATA_PER_TXD)) {                          │                  while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) {                       
                        tx_desc->read.cmd_type_len =                                     │                          tx_desc->read.cmd_type_len =                                    
                                cpu_to_le32(cmd_type ^ IGB_MAX_DATA_PER_TXD);            │                                  cpu_to_le32(cmd_type ^ IXGBE_MAX_DATA_PER_TXD);         
                                                                                         │                                                                                          
                        i++;                                                             │                          i++;                                                            
                        tx_desc++;                                                       │                          tx_desc++;                                                      
                        if (i == tx_ring->count) {                                       │                          if (i == tx_ring->count) {                                      
                                tx_desc = IGB_TX_DESC(tx_ring, 0);                       │                                  tx_desc = IXGBE_TX_DESC(tx_ring, 0);                    
                                i = 0;                                                   │                                  i = 0;                                                  
                        }                                                                │                          }                                                               
                        tx_desc->read.olinfo_status = 0;                                 │                          tx_desc->read.olinfo_status = 0;                                
                                                                                         │                                                                                          
                        dma += IGB_MAX_DATA_PER_TXD;                                     │                          dma += IXGBE_MAX_DATA_PER_TXD;                                  
                        size -= IGB_MAX_DATA_PER_TXD;                                    │                          size -= IXGBE_MAX_DATA_PER_TXD;                                 
                                                                                         │                                                                                          
                        tx_desc->read.buffer_addr = cpu_to_le64(dma);                    │                          tx_desc->read.buffer_addr = cpu_to_le64(dma);                   
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (likely(!data_len))                                                   │                  if (likely(!data_len))                                                  
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type ^ size);               │                  tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type ^ size);              
                                                                                         │                                                                                          
                i++;                                                                     │                  i++;                                                                    
                tx_desc++;                                                               │                  tx_desc++;                                                              
                if (i == tx_ring->count) {                                               │                  if (i == tx_ring->count) {                                              
                        tx_desc = IGB_TX_DESC(tx_ring, 0);                               │                          tx_desc = IXGBE_TX_DESC(tx_ring, 0);                            
                        i = 0;                                                           │                          i = 0;                                                          
                }                                                                        │                  }                                                                       
                tx_desc->read.olinfo_status = 0;                                         │                  tx_desc->read.olinfo_status = 0;                                        
                                                                                         │                                                                                          
                                                                                         │  #ifdef IXGBE_FCOE                                                                       
                                                                                         │                  size = min_t(unsigned int, data_len, skb_frag_size(frag));              
                                                                                         │  #else                                                                                   
                size = skb_frag_size(frag);                                              │                  size = skb_frag_size(frag);                                             
                                                                                         │  #endif                                                                                  
                data_len -= size;                                                        │                  data_len -= size;                                                       
                                                                                         │                                                                                          
                dma = skb_frag_dma_map(tx_ring->dev, frag, 0,                            │                  dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size,                     
                                       size, DMA_TO_DEVICE);                             │                                         DMA_TO_DEVICE);                                  
                                                                                         │                                                                                          
                tx_buffer = &tx_ring->tx_buffer_info[i];                                 │                  tx_buffer = &tx_ring->tx_buffer_info[i];                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* write last descriptor with RS and EOP bits */                                 │          /* write last descriptor with RS and EOP bits */                                
        cmd_type |= size | IGB_TXD_DCMD;                                                 │          cmd_type |= size | IXGBE_TXD_CMD;                                               
        tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);                              │          tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);                             
                                                                                         │                                                                                          
        netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);                     │          netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);                    
                                                                                         │                                                                                          
        /* set the timestamp */                                                          │          /* set the timestamp */                                                         
        first->time_stamp = jiffies;                                                     │          first->time_stamp = jiffies;                                                    
                                                                                         │                                                                                          
        skb_tx_timestamp(skb);                                                           │          skb_tx_timestamp(skb);                                                          
                                                                                         │                                                                                          
        /* Force memory writes to complete before letting h/w know there                 │          /*                                                                              
                                                                                         │           * Force memory writes to complete before letting h/w know there                
         * are new descriptors to fetch.  (Only applicable for weak-ordered              │           * are new descriptors to fetch.  (Only applicable for weak-ordered             
         * memory model archs, such as IA-64).                                           │           * memory model archs, such as IA-64).                                          
         *                                                                               │           *                                                                              
         * We also need this memory barrier to make certain all of the                   │           * We also need this memory barrier to make certain all of the                  
         * status bits have been updated before next_to_watch is written.                │           * status bits have been updated before next_to_watch is written.               
         */                                                                              │           */                                                                             
        dma_wmb();                                                                       │          wmb();                                                                          
                                                                                         │                                                                                          
        /* set next_to_watch value indicating a packet is present */                     │          /* set next_to_watch value indicating a packet is present */                    
        first->next_to_watch = tx_desc;                                                  │          first->next_to_watch = tx_desc;                                                 
                                                                                         │                                                                                          
        i++;                                                                             │          i++;                                                                            
        if (i == tx_ring->count)                                                         │          if (i == tx_ring->count)                                                        
                i = 0;                                                                   │                  i = 0;                                                                  
                                                                                         │                                                                                          
        tx_ring->next_to_use = i;                                                        │          tx_ring->next_to_use = i;                                                       
                                                                                         │                                                                                          
        /* Make sure there is space in the ring for the next send. */                    │          ixgbe_maybe_stop_tx(tx_ring, DESC_NEEDED);                                      
        igb_maybe_stop_tx(tx_ring, DESC_NEEDED);                                         │                                                                                          
                                                                                         │                                                                                          
        if (netif_xmit_stopped(txring_txq(tx_ring)) || !netdev_xmit_more()) {            │          if (netif_xmit_stopped(txring_txq(tx_ring)) || !netdev_xmit_more()) {           
                writel(i, tx_ring->tail);                                                │                  writel(i, tx_ring->tail);                                               
        }                                                                                │          }                                                                               
        return 0;                                                                        │                                                                                          
                                                                                         │                                                                                          
                                                                                         │          return 0;                                                                       
dma_error:                                                                               │  dma_error:                                                                              
        dev_err(tx_ring->dev, "TX DMA map failed\n");                                    │          dev_err(tx_ring->dev, "TX DMA map failed\n");                                   
        tx_buffer = &tx_ring->tx_buffer_info[i];                                         │                                                                                          
                                                                                         │                                                                                          
        /* clear dma mappings for failed tx_buffer_info map */                           │          /* clear dma mappings for failed tx_buffer_info map */                          
        while (tx_buffer != first) {                                                     │          for (;;) {                                                                      
                                                                                         │                  tx_buffer = &tx_ring->tx_buffer_info[i];                                
                if (dma_unmap_len(tx_buffer, len))                                       │                  if (dma_unmap_len(tx_buffer, len))                                      
                        dma_unmap_page(tx_ring->dev,                                     │                          dma_unmap_page(tx_ring->dev,                                    
                                       dma_unmap_addr(tx_buffer, dma),                   │                                         dma_unmap_addr(tx_buffer, dma),                  
                                       dma_unmap_len(tx_buffer, len),                    │                                         dma_unmap_len(tx_buffer, len),                   
                                       DMA_TO_DEVICE);                                   │                                         DMA_TO_DEVICE);                                  
                dma_unmap_len_set(tx_buffer, len, 0);                                    │                  dma_unmap_len_set(tx_buffer, len, 0);                                   
                                                                                         │                  if (tx_buffer == first)                                                 
                if (i-- == 0)                                                            │                          break;                                                          
                                                                                         │                  if (i == 0)                                                             
                        i += tx_ring->count;                                             │                          i += tx_ring->count;                                            
                tx_buffer = &tx_ring->tx_buffer_info[i];                                 │                  i--;                                                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (dma_unmap_len(tx_buffer, len))                                               │          dev_kfree_skb_any(first->skb);                                                  
                dma_unmap_single(tx_ring->dev,                                           │          first->skb = NULL;                                                              
                                 dma_unmap_addr(tx_buffer, dma),                         │                                                                                          
                                 dma_unmap_len(tx_buffer, len),                          │                                                                                          
                                 DMA_TO_DEVICE);                                         │                                                                                          
        dma_unmap_len_set(tx_buffer, len, 0);                                            │                                                                                          
                                                                                         │                                                                                          
        dev_kfree_skb_any(tx_buffer->skb);                                               │                                                                                          
        tx_buffer->skb = NULL;                                                           │                                                                                          
                                                                                         │                                                                                          
        tx_ring->next_to_use = i;                                                        │          tx_ring->next_to_use = i;                                                       
                                                                                         │                                                                                          
        return -1;                                                                       │          return -1;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/aquantia/atlantic/hw_atl2/hw_atl2.c:240                      │ linux/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c:333                      
                                                                                         │                                                                                          
        static const u32 max_weight = BIT(HW_ATL2_TPS_DATA_TCTWEIGHT_WIDTH) - 1;         │          static const u32 max_weight = BIT(HW_ATL_TPS_DATA_TCTWEIGHT_WIDTH) - 1;         
        /* Scale factor is based on the number of bits in fractional portion */          │          /* Scale factor is based on the number of bits in fractional portion */         
        static const u32 scale = BIT(HW_ATL_TPS_DESC_RATE_Y_WIDTH);                      │          static const u32 scale = BIT(HW_ATL_TPS_DESC_RATE_Y_WIDTH);                     
        static const u32 frac_msk = HW_ATL_TPS_DESC_RATE_Y_MSK >>                        │          static const u32 frac_msk = HW_ATL_TPS_DESC_RATE_Y_MSK >>                       
                                    HW_ATL_TPS_DESC_RATE_Y_SHIFT;                        │                                      HW_ATL_TPS_DESC_RATE_Y_SHIFT;                       
        const u32 link_speed = self->aq_link_status.mbps;                                │          const u32 link_speed = self->aq_link_status.mbps;                               
        struct aq_nic_cfg_s *nic_cfg = self->aq_nic_cfg;                                 │          struct aq_nic_cfg_s *nic_cfg = self->aq_nic_cfg;                                
        unsigned long num_min_rated_tcs = 0;                                             │          unsigned long num_min_rated_tcs = 0;                                            
        u32 tc_weight[AQ_CFG_TCS_MAX];                                                   │          u32 tc_weight[AQ_CFG_TCS_MAX];                                                  
        u32 fixed_max_credit_4b;                                                         │                                                                                          
        u32 fixed_max_credit;                                                            │          u32 fixed_max_credit;                                                           
        u8 min_rate_msk = 0;                                                             │          u8 min_rate_msk = 0;                                                            
        u32 sum_weight = 0;                                                              │          u32 sum_weight = 0;                                                             
        int tc;                                                                          │          int tc;                                                                         
                                                                                         │                                                                                          
        /* By default max_credit is based upon MTU (in unit of 64b) */                   │          /* By default max_credit is based upon MTU (in unit of 64b) */                  
        fixed_max_credit = nic_cfg->aq_hw_caps->mtu / 64;                                │          fixed_max_credit = nic_cfg->aq_hw_caps->mtu / 64;                               
        /* in unit of 4b */                                                              │                                                                                          
        fixed_max_credit_4b = nic_cfg->aq_hw_caps->mtu / 4;                              │                                                                                          
                                                                                         │                                                                                          
        if (link_speed) {                                                                │          if (link_speed) {                                                               
                min_rate_msk = nic_cfg->tc_min_rate_msk &                                │                  min_rate_msk = nic_cfg->tc_min_rate_msk &                               
                               (BIT(nic_cfg->tcs) - 1);                                  │                                 (BIT(nic_cfg->tcs) - 1);                                 
                num_min_rated_tcs = hweight8(min_rate_msk);                              │                  num_min_rated_tcs = hweight8(min_rate_msk);                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* First, calculate weights where min_rate is specified */                       │          /* First, calculate weights where min_rate is specified */                      
        if (num_min_rated_tcs) {                                                         │          if (num_min_rated_tcs) {                                                        
                for (tc = 0; tc != nic_cfg->tcs; tc++) {                                 │                  for (tc = 0; tc != nic_cfg->tcs; tc++) {                                
                        if (!nic_cfg->tc_min_rate[tc]) {                                 │                          if (!nic_cfg->tc_min_rate[tc]) {                                
                                tc_weight[tc] = 0;                                       │                                  tc_weight[tc] = 0;                                      
                                continue;                                                │                                  continue;                                               
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        tc_weight[tc] = (-1L + link_speed +                              │                          tc_weight[tc] = (-1L + link_speed +                             
                                         nic_cfg->tc_min_rate[tc] *                      │                                           nic_cfg->tc_min_rate[tc] *                     
                                         max_weight) /                                   │                                           max_weight) /                                  
                                        link_speed;                                      │                                          link_speed;                                     
                        tc_weight[tc] = min(tc_weight[tc], max_weight);                  │                          tc_weight[tc] = min(tc_weight[tc], max_weight);                 
                        sum_weight += tc_weight[tc];                                     │                          sum_weight += tc_weight[tc];                                    
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* WSP, if min_rate is set for at least one TC.                                  │          /* WSP, if min_rate is set for at least one TC.                                 
         * RR otherwise.                                                                 │           * RR otherwise.                                                                
                                                                                         │           *                                                                              
                                                                                         │           * NB! MAC FW sets arb mode itself if PTP is enabled. We shouldn't              
                                                                                         │           * overwrite it here in that case.                                              
         */                                                                              │           */                                                                             
        hw_atl2_tps_tx_pkt_shed_data_arb_mode_set(self, min_rate_msk ? 1U : 0U);         │          if (!nic_cfg->is_ptp)                                                           
                                                                                         │                  hw_atl_tps_tx_pkt_shed_data_arb_mode_set(self, min_rate_msk ? 1U : 0U); 
                                                                                         │                                                                                          
        /* Data TC Arbiter takes precedence over Descriptor TC Arbiter,                  │          /* Data TC Arbiter takes precedence over Descriptor TC Arbiter,                 
         * leave Descriptor TC Arbiter as RR.                                            │           * leave Descriptor TC Arbiter as RR.                                           
         */                                                                              │           */                                                                             
        hw_atl_tps_tx_pkt_shed_desc_tc_arb_mode_set(self, 0U);                           │          hw_atl_tps_tx_pkt_shed_desc_tc_arb_mode_set(self, 0U);                          
                                                                                         │                                                                                          
        hw_atl_tps_tx_desc_rate_mode_set(self, nic_cfg->is_qos ? 1U : 0U);               │          hw_atl_tps_tx_desc_rate_mode_set(self, nic_cfg->is_qos ? 1U : 0U);              
                                                                                         │                                                                                          
        for (tc = 0; tc != nic_cfg->tcs; tc++) {                                         │          for (tc = 0; tc != nic_cfg->tcs; tc++) {                                        
                const u32 en = (nic_cfg->tc_max_rate[tc] != 0) ? 1U : 0U;                │                  const u32 en = (nic_cfg->tc_max_rate[tc] != 0) ? 1U : 0U;               
                const u32 desc = AQ_NIC_CFG_TCVEC2RING(nic_cfg, tc, 0);                  │                  const u32 desc = AQ_NIC_CFG_TCVEC2RING(nic_cfg, tc, 0);                 
                u32 weight, max_credit;                                                  │                  u32 weight, max_credit;                                                 
                                                                                         │                                                                                          
                hw_atl_tps_tx_pkt_shed_desc_tc_max_credit_set(self, tc,                  │                  hw_atl_tps_tx_pkt_shed_desc_tc_max_credit_set(self, tc,                 
                                                              fixed_max_credit);         │                                                                fixed_max_credit);        
                hw_atl_tps_tx_pkt_shed_desc_tc_weight_set(self, tc, 0x1E);               │                  hw_atl_tps_tx_pkt_shed_desc_tc_weight_set(self, tc, 0x1E);              
                                                                                         │                                                                                          
                if (num_min_rated_tcs) {                                                 │                  if (num_min_rated_tcs) {                                                
                        weight = tc_weight[tc];                                          │                          weight = tc_weight[tc];                                         
                                                                                         │                                                                                          
                        if (!weight && sum_weight < max_weight)                          │                          if (!weight && sum_weight < max_weight)                         
                                weight = (max_weight - sum_weight) /                     │                                  weight = (max_weight - sum_weight) /                    
                                         (nic_cfg->tcs - num_min_rated_tcs);             │                                           (nic_cfg->tcs - num_min_rated_tcs);            
                        else if (!weight)                                                │                          else if (!weight)                                               
                                weight = 0x640;                                          │                                  weight = 0x64;                                          
                                                                                         │                                                                                          
                        max_credit = max(2 * weight, fixed_max_credit_4b);               │                          max_credit = max(8 * weight, fixed_max_credit);                 
                } else {                                                                 │                  } else {                                                                
                        weight = 0x640;                                                  │                          weight = 0x64;                                                  
                        max_credit = 0xFFF0;                                             │                          max_credit = 0xFFF;                                             
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                hw_atl2_tps_tx_pkt_shed_tc_data_weight_set(self, tc, weight);            │                  hw_atl_tps_tx_pkt_shed_tc_data_weight_set(self, tc, weight);            
                hw_atl2_tps_tx_pkt_shed_tc_data_max_credit_set(self, tc,                 │                  hw_atl_tps_tx_pkt_shed_tc_data_max_credit_set(self, tc,                 
                                                               max_credit);              │                                                                max_credit);              
                                                                                         │                                                                                          
                hw_atl_tps_tx_desc_rate_en_set(self, desc, en);                          │                  hw_atl_tps_tx_desc_rate_en_set(self, desc, en);                         
                                                                                         │                                                                                          
                if (en) {                                                                │                  if (en) {                                                               
                        /* Nominal rate is always 10G */                                 │                          /* Nominal rate is always 10G */                                
                        const u32 rate = 10000U * scale /                                │                          const u32 rate = 10000U * scale /                               
                                         nic_cfg->tc_max_rate[tc];                       │                                           nic_cfg->tc_max_rate[tc];                      
                        const u32 rate_int = rate >>                                     │                          const u32 rate_int = rate >>                                    
                                             HW_ATL_TPS_DESC_RATE_Y_WIDTH;               │                                               HW_ATL_TPS_DESC_RATE_Y_WIDTH;              
                        const u32 rate_frac = rate & frac_msk;                           │                          const u32 rate_frac = rate & frac_msk;                          
                                                                                         │                                                                                          
                        hw_atl_tps_tx_desc_rate_x_set(self, desc, rate_int);             │                          hw_atl_tps_tx_desc_rate_x_set(self, desc, rate_int);            
                        hw_atl_tps_tx_desc_rate_y_set(self, desc, rate_frac);            │                          hw_atl_tps_tx_desc_rate_y_set(self, desc, rate_frac);           
                } else {                                                                 │                  } else {                                                                
                        /* A value of 1 indicates the queue is not                       │                          /* A value of 1 indicates the queue is not                      
                         * rate controlled.                                              │                           * rate controlled.                                             
                         */                                                              │                           */                                                             
                        hw_atl_tps_tx_desc_rate_x_set(self, desc, 1U);                   │                          hw_atl_tps_tx_desc_rate_x_set(self, desc, 1U);                  
                        hw_atl_tps_tx_desc_rate_y_set(self, desc, 0U);                   │                          hw_atl_tps_tx_desc_rate_y_set(self, desc, 0U);                  
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
        for (tc = nic_cfg->tcs; tc != AQ_CFG_TCS_MAX; tc++) {                            │          for (tc = nic_cfg->tcs; tc != AQ_CFG_TCS_MAX; tc++) {                           
                const u32 desc = AQ_NIC_CFG_TCVEC2RING(nic_cfg, tc, 0);                  │                  const u32 desc = AQ_NIC_CFG_TCVEC2RING(nic_cfg, tc, 0);                 
                                                                                         │                                                                                          
                hw_atl_tps_tx_desc_rate_en_set(self, desc, 0U);                          │                  hw_atl_tps_tx_desc_rate_en_set(self, desc, 0U);                         
                hw_atl_tps_tx_desc_rate_x_set(self, desc, 1U);                           │                  hw_atl_tps_tx_desc_rate_x_set(self, desc, 1U);                          
                hw_atl_tps_tx_desc_rate_y_set(self, desc, 0U);                           │                  hw_atl_tps_tx_desc_rate_y_set(self, desc, 0U);                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return aq_hw_err_from_flags(self);                                               │          return aq_hw_err_from_flags(self);                                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/neterion/vxge/vxge-config.c:4298                             │ linux/drivers/net/ethernet/neterion/vxge/vxge-config.c:4405                              
                                                                                         │                                                                                          
                                                                                         │                                                                                          
                val64 = readq(&vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_TX]);         │                  val64 = readq(&vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_RX]);        
                                                                                         │                                                                                          
                if (config->tti.btimer_val != VXGE_HW_USE_FLASH_DEFAULT) {               │                  if (config->rti.btimer_val != VXGE_HW_USE_FLASH_DEFAULT) {              
                        val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_BTIMER_VAL(                   │                          val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_BTIMER_VAL(                  
                                0x3ffffff);                                              │                                          0x3ffffff);                                     
                        val64 |= VXGE_HW_TIM_CFG1_INT_NUM_BTIMER_VAL(                    │                          val64 |= VXGE_HW_TIM_CFG1_INT_NUM_BTIMER_VAL(                   
                                        config->tti.btimer_val);                         │                                          config->rti.btimer_val);                        
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_BITMP_EN;                             │                  val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_BITMP_EN;                            
                                                                                         │                                                                                          
                if (config->tti.timer_ac_en != VXGE_HW_USE_FLASH_DEFAULT) {              │                  if (config->rti.timer_ac_en != VXGE_HW_USE_FLASH_DEFAULT) {             
                        if (config->tti.timer_ac_en)                                     │                          if (config->rti.timer_ac_en)                                    
                                val64 |= VXGE_HW_TIM_CFG1_INT_NUM_TIMER_AC;              │                                  val64 |= VXGE_HW_TIM_CFG1_INT_NUM_TIMER_AC;             
                        else                                                             │                          else                                                            
                                val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_TIMER_AC;             │                                  val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_TIMER_AC;            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.timer_ci_en != VXGE_HW_USE_FLASH_DEFAULT) {              │                  if (config->rti.timer_ci_en != VXGE_HW_USE_FLASH_DEFAULT) {             
                        if (config->tti.timer_ci_en)                                     │                          if (config->rti.timer_ci_en)                                    
                                val64 |= VXGE_HW_TIM_CFG1_INT_NUM_TIMER_CI;              │                                  val64 |= VXGE_HW_TIM_CFG1_INT_NUM_TIMER_CI;             
                        else                                                             │                          else                                                            
                                val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_TIMER_CI;             │                                  val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_TIMER_CI;            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.urange_a != VXGE_HW_USE_FLASH_DEFAULT) {                 │                  if (config->rti.urange_a != VXGE_HW_USE_FLASH_DEFAULT) {                
                        val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_URNG_A(0x3f);                 │                          val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_URNG_A(0x3f);                
                        val64 |= VXGE_HW_TIM_CFG1_INT_NUM_URNG_A(                        │                          val64 |= VXGE_HW_TIM_CFG1_INT_NUM_URNG_A(                       
                                        config->tti.urange_a);                           │                                          config->rti.urange_a);                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.urange_b != VXGE_HW_USE_FLASH_DEFAULT) {                 │                  if (config->rti.urange_b != VXGE_HW_USE_FLASH_DEFAULT) {                
                        val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_URNG_B(0x3f);                 │                          val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_URNG_B(0x3f);                
                        val64 |= VXGE_HW_TIM_CFG1_INT_NUM_URNG_B(                        │                          val64 |= VXGE_HW_TIM_CFG1_INT_NUM_URNG_B(                       
                                        config->tti.urange_b);                           │                                          config->rti.urange_b);                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.urange_c != VXGE_HW_USE_FLASH_DEFAULT) {                 │                  if (config->rti.urange_c != VXGE_HW_USE_FLASH_DEFAULT) {                
                        val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_URNG_C(0x3f);                 │                          val64 &= ~VXGE_HW_TIM_CFG1_INT_NUM_URNG_C(0x3f);                
                        val64 |= VXGE_HW_TIM_CFG1_INT_NUM_URNG_C(                        │                          val64 |= VXGE_HW_TIM_CFG1_INT_NUM_URNG_C(                       
                                        config->tti.urange_c);                           │                                          config->rti.urange_c);                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                writeq(val64, &vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_TX]);         │                  writeq(val64, &vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_RX]);        
                vpath->tim_tti_cfg1_saved = val64;                                       │                  vpath->tim_rti_cfg1_saved = val64;                                      
                                                                                         │                                                                                          
                val64 = readq(&vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_TX]);         │                  val64 = readq(&vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_RX]);        
                                                                                         │                                                                                          
                if (config->tti.uec_a != VXGE_HW_USE_FLASH_DEFAULT) {                    │                  if (config->rti.uec_a != VXGE_HW_USE_FLASH_DEFAULT) {                   
                        val64 &= ~VXGE_HW_TIM_CFG2_INT_NUM_UEC_A(0xffff);                │                          val64 &= ~VXGE_HW_TIM_CFG2_INT_NUM_UEC_A(0xffff);               
                        val64 |= VXGE_HW_TIM_CFG2_INT_NUM_UEC_A(                         │                          val64 |= VXGE_HW_TIM_CFG2_INT_NUM_UEC_A(                        
                                                config->tti.uec_a);                      │                                                  config->rti.uec_a);                     
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.uec_b != VXGE_HW_USE_FLASH_DEFAULT) {                    │                  if (config->rti.uec_b != VXGE_HW_USE_FLASH_DEFAULT) {                   
                        val64 &= ~VXGE_HW_TIM_CFG2_INT_NUM_UEC_B(0xffff);                │                          val64 &= ~VXGE_HW_TIM_CFG2_INT_NUM_UEC_B(0xffff);               
                        val64 |= VXGE_HW_TIM_CFG2_INT_NUM_UEC_B(                         │                          val64 |= VXGE_HW_TIM_CFG2_INT_NUM_UEC_B(                        
                                                config->tti.uec_b);                      │                                                  config->rti.uec_b);                     
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.uec_c != VXGE_HW_USE_FLASH_DEFAULT) {                    │                  if (config->rti.uec_c != VXGE_HW_USE_FLASH_DEFAULT) {                   
                        val64 &= ~VXGE_HW_TIM_CFG2_INT_NUM_UEC_C(0xffff);                │                          val64 &= ~VXGE_HW_TIM_CFG2_INT_NUM_UEC_C(0xffff);               
                        val64 |= VXGE_HW_TIM_CFG2_INT_NUM_UEC_C(                         │                          val64 |= VXGE_HW_TIM_CFG2_INT_NUM_UEC_C(                        
                                                config->tti.uec_c);                      │                                                  config->rti.uec_c);                     
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.uec_d != VXGE_HW_USE_FLASH_DEFAULT) {                    │                  if (config->rti.uec_d != VXGE_HW_USE_FLASH_DEFAULT) {                   
                        val64 &= ~VXGE_HW_TIM_CFG2_INT_NUM_UEC_D(0xffff);                │                          val64 &= ~VXGE_HW_TIM_CFG2_INT_NUM_UEC_D(0xffff);               
                        val64 |= VXGE_HW_TIM_CFG2_INT_NUM_UEC_D(                         │                          val64 |= VXGE_HW_TIM_CFG2_INT_NUM_UEC_D(                        
                                                config->tti.uec_d);                      │                                                  config->rti.uec_d);                     
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                writeq(val64, &vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_TX]);         │                  writeq(val64, &vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_RX]);        
                val64 = readq(&vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_TX]);         │                  val64 = readq(&vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_RX]);        
                                                                                         │                                                                                          
                if (config->tti.timer_ri_en != VXGE_HW_USE_FLASH_DEFAULT) {              │                  if (config->rti.timer_ri_en != VXGE_HW_USE_FLASH_DEFAULT) {             
                        if (config->tti.timer_ri_en)                                     │                          if (config->rti.timer_ri_en)                                    
                                val64 |= VXGE_HW_TIM_CFG3_INT_NUM_TIMER_RI;              │                                  val64 |= VXGE_HW_TIM_CFG3_INT_NUM_TIMER_RI;             
                        else                                                             │                          else                                                            
                                val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_TIMER_RI;             │                                  val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_TIMER_RI;            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.rtimer_val != VXGE_HW_USE_FLASH_DEFAULT) {               │                  if (config->rti.rtimer_val != VXGE_HW_USE_FLASH_DEFAULT) {              
                        val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_RTIMER_VAL(                   │                          val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_RTIMER_VAL(                  
                                        0x3ffffff);                                      │                                          0x3ffffff);                                     
                        val64 |= VXGE_HW_TIM_CFG3_INT_NUM_RTIMER_VAL(                    │                          val64 |= VXGE_HW_TIM_CFG3_INT_NUM_RTIMER_VAL(                   
                                        config->tti.rtimer_val);                         │                                          config->rti.rtimer_val);                        
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.util_sel != VXGE_HW_USE_FLASH_DEFAULT) {                 │                  if (config->rti.util_sel != VXGE_HW_USE_FLASH_DEFAULT) {                
                        val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(0x3f);               │                          val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(0x3f);              
                        val64 |= VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(vp_id);               │                          val64 |= VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(vp_id);              
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (config->tti.ltimer_val != VXGE_HW_USE_FLASH_DEFAULT) {               │                  if (config->rti.ltimer_val != VXGE_HW_USE_FLASH_DEFAULT) {              
                        val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_LTIMER_VAL(                   │                          val64 &= ~VXGE_HW_TIM_CFG3_INT_NUM_LTIMER_VAL(                  
                                        0x3ffffff);                                      │                                          0x3ffffff);                                     
                        val64 |= VXGE_HW_TIM_CFG3_INT_NUM_LTIMER_VAL(                    │                          val64 |= VXGE_HW_TIM_CFG3_INT_NUM_LTIMER_VAL(                   
                                        config->tti.ltimer_val);                         │                                          config->rti.ltimer_val);                        
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_TX]);         │                  writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_RX]);        
                vpath->tim_tti_cfg3_saved = val64;                                       │                  vpath->tim_rti_cfg3_saved = val64;                                      
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:3960                            │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:8226                                 
                                                                                         │                                                                                          
        struct sk_buff *skb = first->skb;                                                │          struct sk_buff *skb = first->skb;                                               
        struct ixgbevf_tx_buffer *tx_buffer;                                             │          struct ixgbe_tx_buffer *tx_buffer;                                              
        union ixgbe_adv_tx_desc *tx_desc;                                                │          union ixgbe_adv_tx_desc *tx_desc;                                               
        skb_frag_t *frag;                                                                │          skb_frag_t *frag;                                                               
        dma_addr_t dma;                                                                  │          dma_addr_t dma;                                                                 
        unsigned int data_len, size;                                                     │          unsigned int data_len, size;                                                    
        u32 tx_flags = first->tx_flags;                                                  │          u32 tx_flags = first->tx_flags;                                                 
        __le32 cmd_type = ixgbevf_tx_cmd_type(tx_flags);                                 │          u32 cmd_type = ixgbe_tx_cmd_type(skb, tx_flags);                                
        u16 i = tx_ring->next_to_use;                                                    │          u16 i = tx_ring->next_to_use;                                                   
                                                                                         │                                                                                          
        tx_desc = IXGBEVF_TX_DESC(tx_ring, i);                                           │          tx_desc = IXGBE_TX_DESC(tx_ring, i);                                            
                                                                                         │                                                                                          
        ixgbevf_tx_olinfo_status(tx_desc, tx_flags, skb->len - hdr_len);                 │          ixgbe_tx_olinfo_status(tx_desc, tx_flags, skb->len - hdr_len);                  
                                                                                         │                                                                                          
        size = skb_headlen(skb);                                                         │          size = skb_headlen(skb);                                                        
        data_len = skb->data_len;                                                        │          data_len = skb->data_len;                                                       
                                                                                         │                                                                                          
                                                                                         │  #ifdef IXGBE_FCOE                                                                       
                                                                                         │          if (tx_flags & IXGBE_TX_FLAGS_FCOE) {                                           
                                                                                         │                  if (data_len < sizeof(struct fcoe_crc_eof)) {                           
                                                                                         │                          size -= sizeof(struct fcoe_crc_eof) - data_len;                 
                                                                                         │                          data_len = 0;                                                   
                                                                                         │                  } else {                                                                
                                                                                         │                          data_len -= sizeof(struct fcoe_crc_eof);                        
                                                                                         │                  }                                                                       
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │  #endif                                                                                  
        dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);              │          dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);             
                                                                                         │                                                                                          
        tx_buffer = first;                                                               │          tx_buffer = first;                                                              
                                                                                         │                                                                                          
        for (frag = &skb_shinfo(skb)->frags[0];; frag++) {                               │          for (frag = &skb_shinfo(skb)->frags[0];; frag++) {                              
                if (dma_mapping_error(tx_ring->dev, dma))                                │                  if (dma_mapping_error(tx_ring->dev, dma))                               
                        goto dma_error;                                                  │                          goto dma_error;                                                 
                                                                                         │                                                                                          
                /* record length, and DMA address */                                     │                  /* record length, and DMA address */                                    
                dma_unmap_len_set(tx_buffer, len, size);                                 │                  dma_unmap_len_set(tx_buffer, len, size);                                
                dma_unmap_addr_set(tx_buffer, dma, dma);                                 │                  dma_unmap_addr_set(tx_buffer, dma, dma);                                
                                                                                         │                                                                                          
                tx_desc->read.buffer_addr = cpu_to_le64(dma);                            │                  tx_desc->read.buffer_addr = cpu_to_le64(dma);                           
                                                                                         │                                                                                          
                while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) {                        │                  while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) {                       
                        tx_desc->read.cmd_type_len =                                     │                          tx_desc->read.cmd_type_len =                                    
                                cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD);          │                                  cpu_to_le32(cmd_type ^ IXGBE_MAX_DATA_PER_TXD);         
                                                                                         │                                                                                          
                        i++;                                                             │                          i++;                                                            
                        tx_desc++;                                                       │                          tx_desc++;                                                      
                        if (i == tx_ring->count) {                                       │                          if (i == tx_ring->count) {                                      
                                tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);                   │                                  tx_desc = IXGBE_TX_DESC(tx_ring, 0);                    
                                i = 0;                                                   │                                  i = 0;                                                  
                        }                                                                │                          }                                                               
                        tx_desc->read.olinfo_status = 0;                                 │                          tx_desc->read.olinfo_status = 0;                                
                                                                                         │                                                                                          
                        dma += IXGBE_MAX_DATA_PER_TXD;                                   │                          dma += IXGBE_MAX_DATA_PER_TXD;                                  
                        size -= IXGBE_MAX_DATA_PER_TXD;                                  │                          size -= IXGBE_MAX_DATA_PER_TXD;                                 
                                                                                         │                                                                                          
                        tx_desc->read.buffer_addr = cpu_to_le64(dma);                    │                          tx_desc->read.buffer_addr = cpu_to_le64(dma);                   
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (likely(!data_len))                                                   │                  if (likely(!data_len))                                                  
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size);               │                  tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type ^ size);              
                                                                                         │                                                                                          
                i++;                                                                     │                  i++;                                                                    
                tx_desc++;                                                               │                  tx_desc++;                                                              
                if (i == tx_ring->count) {                                               │                  if (i == tx_ring->count) {                                              
                        tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);                           │                          tx_desc = IXGBE_TX_DESC(tx_ring, 0);                            
                        i = 0;                                                           │                          i = 0;                                                          
                }                                                                        │                  }                                                                       
                tx_desc->read.olinfo_status = 0;                                         │                  tx_desc->read.olinfo_status = 0;                                        
                                                                                         │                                                                                          
                                                                                         │  #ifdef IXGBE_FCOE                                                                       
                                                                                         │                  size = min_t(unsigned int, data_len, skb_frag_size(frag));              
                                                                                         │  #else                                                                                   
                size = skb_frag_size(frag);                                              │                  size = skb_frag_size(frag);                                             
                                                                                         │  #endif                                                                                  
                data_len -= size;                                                        │                  data_len -= size;                                                       
                                                                                         │                                                                                          
                dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size,                      │                  dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size,                     
                                       DMA_TO_DEVICE);                                   │                                         DMA_TO_DEVICE);                                  
                                                                                         │                                                                                          
                tx_buffer = &tx_ring->tx_buffer_info[i];                                 │                  tx_buffer = &tx_ring->tx_buffer_info[i];                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* write last descriptor with RS and EOP bits */                                 │          /* write last descriptor with RS and EOP bits */                                
        cmd_type |= cpu_to_le32(size) | cpu_to_le32(IXGBE_TXD_CMD);                      │          cmd_type |= size | IXGBE_TXD_CMD;                                               
        tx_desc->read.cmd_type_len = cmd_type;                                           │          tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);                             
                                                                                         │                                                                                          
                                                                                         │          netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);                    
                                                                                         │                                                                                          
        /* set the timestamp */                                                          │          /* set the timestamp */                                                         
        first->time_stamp = jiffies;                                                     │          first->time_stamp = jiffies;                                                    
                                                                                         │                                                                                          
        skb_tx_timestamp(skb);                                                           │          skb_tx_timestamp(skb);                                                          
                                                                                         │                                                                                          
        /* Force memory writes to complete before letting h/w know there                 │          /*                                                                              
                                                                                         │           * Force memory writes to complete before letting h/w know there                
         * are new descriptors to fetch.  (Only applicable for weak-ordered              │           * are new descriptors to fetch.  (Only applicable for weak-ordered             
         * memory model archs, such as IA-64).                                           │           * memory model archs, such as IA-64).                                          
         *                                                                               │           *                                                                              
         * We also need this memory barrier (wmb) to make certain all of the             │           * We also need this memory barrier to make certain all of the                  
         * status bits have been updated before next_to_watch is written.                │           * status bits have been updated before next_to_watch is written.               
         */                                                                              │           */                                                                             
        wmb();                                                                           │          wmb();                                                                          
                                                                                         │                                                                                          
        /* set next_to_watch value indicating a packet is present */                     │          /* set next_to_watch value indicating a packet is present */                    
        first->next_to_watch = tx_desc;                                                  │          first->next_to_watch = tx_desc;                                                 
                                                                                         │                                                                                          
        i++;                                                                             │          i++;                                                                            
        if (i == tx_ring->count)                                                         │          if (i == tx_ring->count)                                                        
                i = 0;                                                                   │                  i = 0;                                                                  
                                                                                         │                                                                                          
        tx_ring->next_to_use = i;                                                        │          tx_ring->next_to_use = i;                                                       
                                                                                         │                                                                                          
        /* notify HW of packet */                                                        │          ixgbe_maybe_stop_tx(tx_ring, DESC_NEEDED);                                      
        ixgbevf_write_tail(tx_ring, i);                                                  │                                                                                          
                                                                                         │          if (netif_xmit_stopped(txring_txq(tx_ring)) || !netdev_xmit_more()) {           
                                                                                         │                  writel(i, tx_ring->tail);                                               
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        return;                                                                          │          return 0;                                                                       
dma_error:                                                                               │  dma_error:                                                                              
        dev_err(tx_ring->dev, "TX DMA map failed\n");                                    │          dev_err(tx_ring->dev, "TX DMA map failed\n");                                   
        tx_buffer = &tx_ring->tx_buffer_info[i];                                         │                                                                                          
                                                                                         │                                                                                          
        /* clear dma mappings for failed tx_buffer_info map */                           │          /* clear dma mappings for failed tx_buffer_info map */                          
        while (tx_buffer != first) {                                                     │          for (;;) {                                                                      
                                                                                         │                  tx_buffer = &tx_ring->tx_buffer_info[i];                                
                if (dma_unmap_len(tx_buffer, len))                                       │                  if (dma_unmap_len(tx_buffer, len))                                      
                        dma_unmap_page(tx_ring->dev,                                     │                          dma_unmap_page(tx_ring->dev,                                    
                                       dma_unmap_addr(tx_buffer, dma),                   │                                         dma_unmap_addr(tx_buffer, dma),                  
                                       dma_unmap_len(tx_buffer, len),                    │                                         dma_unmap_len(tx_buffer, len),                   
                                       DMA_TO_DEVICE);                                   │                                         DMA_TO_DEVICE);                                  
                dma_unmap_len_set(tx_buffer, len, 0);                                    │                  dma_unmap_len_set(tx_buffer, len, 0);                                   
                                                                                         │                  if (tx_buffer == first)                                                 
                if (i-- == 0)                                                            │                          break;                                                          
                                                                                         │                  if (i == 0)                                                             
                        i += tx_ring->count;                                             │                          i += tx_ring->count;                                            
                tx_buffer = &tx_ring->tx_buffer_info[i];                                 │                  i--;                                                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (dma_unmap_len(tx_buffer, len))                                               │          dev_kfree_skb_any(first->skb);                                                  
                dma_unmap_single(tx_ring->dev,                                           │          first->skb = NULL;                                                              
                                 dma_unmap_addr(tx_buffer, dma),                         │                                                                                          
                                 dma_unmap_len(tx_buffer, len),                          │                                                                                          
                                 DMA_TO_DEVICE);                                         │                                                                                          
        dma_unmap_len_set(tx_buffer, len, 0);                                            │                                                                                          
                                                                                         │                                                                                          
        dev_kfree_skb_any(tx_buffer->skb);                                               │                                                                                          
        tx_buffer->skb = NULL;                                                           │                                                                                          
                                                                                         │                                                                                          
        tx_ring->next_to_use = i;                                                        │          tx_ring->next_to_use = i;                                                       
                                                                                         │                                                                                          
                                                                                         │          return -1;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:3960                            │ linux/drivers/net/ethernet/intel/igb/igb_main.c:6113                                     
                                                                                         │                                                                                          
        struct sk_buff *skb = first->skb;                                                │          struct sk_buff *skb = first->skb;                                               
        struct ixgbevf_tx_buffer *tx_buffer;                                             │          struct igb_tx_buffer *tx_buffer;                                                
        union ixgbe_adv_tx_desc *tx_desc;                                                │          union e1000_adv_tx_desc *tx_desc;                                               
        skb_frag_t *frag;                                                                │          skb_frag_t *frag;                                                               
        dma_addr_t dma;                                                                  │          dma_addr_t dma;                                                                 
        unsigned int data_len, size;                                                     │          unsigned int data_len, size;                                                    
        u32 tx_flags = first->tx_flags;                                                  │          u32 tx_flags = first->tx_flags;                                                 
        __le32 cmd_type = ixgbevf_tx_cmd_type(tx_flags);                                 │          u32 cmd_type = igb_tx_cmd_type(skb, tx_flags);                                  
        u16 i = tx_ring->next_to_use;                                                    │          u16 i = tx_ring->next_to_use;                                                   
                                                                                         │                                                                                          
        tx_desc = IXGBEVF_TX_DESC(tx_ring, i);                                           │          tx_desc = IGB_TX_DESC(tx_ring, i);                                              
                                                                                         │                                                                                          
        ixgbevf_tx_olinfo_status(tx_desc, tx_flags, skb->len - hdr_len);                 │          igb_tx_olinfo_status(tx_ring, tx_desc, tx_flags, skb->len - hdr_len);           
                                                                                         │                                                                                          
        size = skb_headlen(skb);                                                         │          size = skb_headlen(skb);                                                        
        data_len = skb->data_len;                                                        │          data_len = skb->data_len;                                                       
                                                                                         │                                                                                          
        dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);              │          dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);             
                                                                                         │                                                                                          
        tx_buffer = first;                                                               │          tx_buffer = first;                                                              
                                                                                         │                                                                                          
        for (frag = &skb_shinfo(skb)->frags[0];; frag++) {                               │          for (frag = &skb_shinfo(skb)->frags[0];; frag++) {                              
                if (dma_mapping_error(tx_ring->dev, dma))                                │                  if (dma_mapping_error(tx_ring->dev, dma))                               
                        goto dma_error;                                                  │                          goto dma_error;                                                 
                                                                                         │                                                                                          
                /* record length, and DMA address */                                     │                  /* record length, and DMA address */                                    
                dma_unmap_len_set(tx_buffer, len, size);                                 │                  dma_unmap_len_set(tx_buffer, len, size);                                
                dma_unmap_addr_set(tx_buffer, dma, dma);                                 │                  dma_unmap_addr_set(tx_buffer, dma, dma);                                
                                                                                         │                                                                                          
                tx_desc->read.buffer_addr = cpu_to_le64(dma);                            │                  tx_desc->read.buffer_addr = cpu_to_le64(dma);                           
                                                                                         │                                                                                          
                while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) {                        │                  while (unlikely(size > IGB_MAX_DATA_PER_TXD)) {                         
                        tx_desc->read.cmd_type_len =                                     │                          tx_desc->read.cmd_type_len =                                    
                                cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD);          │                                  cpu_to_le32(cmd_type ^ IGB_MAX_DATA_PER_TXD);           
                                                                                         │                                                                                          
                        i++;                                                             │                          i++;                                                            
                        tx_desc++;                                                       │                          tx_desc++;                                                      
                        if (i == tx_ring->count) {                                       │                          if (i == tx_ring->count) {                                      
                                tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);                   │                                  tx_desc = IGB_TX_DESC(tx_ring, 0);                      
                                i = 0;                                                   │                                  i = 0;                                                  
                        }                                                                │                          }                                                               
                        tx_desc->read.olinfo_status = 0;                                 │                          tx_desc->read.olinfo_status = 0;                                
                                                                                         │                                                                                          
                        dma += IXGBE_MAX_DATA_PER_TXD;                                   │                          dma += IGB_MAX_DATA_PER_TXD;                                    
                        size -= IXGBE_MAX_DATA_PER_TXD;                                  │                          size -= IGB_MAX_DATA_PER_TXD;                                   
                                                                                         │                                                                                          
                        tx_desc->read.buffer_addr = cpu_to_le64(dma);                    │                          tx_desc->read.buffer_addr = cpu_to_le64(dma);                   
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (likely(!data_len))                                                   │                  if (likely(!data_len))                                                  
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size);               │                  tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type ^ size);              
                                                                                         │                                                                                          
                i++;                                                                     │                  i++;                                                                    
                tx_desc++;                                                               │                  tx_desc++;                                                              
                if (i == tx_ring->count) {                                               │                  if (i == tx_ring->count) {                                              
                        tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);                           │                          tx_desc = IGB_TX_DESC(tx_ring, 0);                              
                        i = 0;                                                           │                          i = 0;                                                          
                }                                                                        │                  }                                                                       
                tx_desc->read.olinfo_status = 0;                                         │                  tx_desc->read.olinfo_status = 0;                                        
                                                                                         │                                                                                          
                size = skb_frag_size(frag);                                              │                  size = skb_frag_size(frag);                                             
                data_len -= size;                                                        │                  data_len -= size;                                                       
                                                                                         │                                                                                          
                dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size,                      │                  dma = skb_frag_dma_map(tx_ring->dev, frag, 0,                           
                                       DMA_TO_DEVICE);                                   │                                         size, DMA_TO_DEVICE);                            
                                                                                         │                                                                                          
                tx_buffer = &tx_ring->tx_buffer_info[i];                                 │                  tx_buffer = &tx_ring->tx_buffer_info[i];                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* write last descriptor with RS and EOP bits */                                 │          /* write last descriptor with RS and EOP bits */                                
        cmd_type |= cpu_to_le32(size) | cpu_to_le32(IXGBE_TXD_CMD);                      │          cmd_type |= size | IGB_TXD_DCMD;                                                
        tx_desc->read.cmd_type_len = cmd_type;                                           │          tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);                             
                                                                                         │                                                                                          
                                                                                         │          netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);                    
                                                                                         │                                                                                          
        /* set the timestamp */                                                          │          /* set the timestamp */                                                         
        first->time_stamp = jiffies;                                                     │          first->time_stamp = jiffies;                                                    
                                                                                         │                                                                                          
        skb_tx_timestamp(skb);                                                           │          skb_tx_timestamp(skb);                                                          
                                                                                         │                                                                                          
        /* Force memory writes to complete before letting h/w know there                 │          /* Force memory writes to complete before letting h/w know there                
         * are new descriptors to fetch.  (Only applicable for weak-ordered              │           * are new descriptors to fetch.  (Only applicable for weak-ordered             
         * memory model archs, such as IA-64).                                           │           * memory model archs, such as IA-64).                                          
         *                                                                               │           *                                                                              
         * We also need this memory barrier (wmb) to make certain all of the             │           * We also need this memory barrier to make certain all of the                  
         * status bits have been updated before next_to_watch is written.                │           * status bits have been updated before next_to_watch is written.               
         */                                                                              │           */                                                                             
        wmb();                                                                           │          dma_wmb();                                                                      
                                                                                         │                                                                                          
        /* set next_to_watch value indicating a packet is present */                     │          /* set next_to_watch value indicating a packet is present */                    
        first->next_to_watch = tx_desc;                                                  │          first->next_to_watch = tx_desc;                                                 
                                                                                         │                                                                                          
        i++;                                                                             │          i++;                                                                            
        if (i == tx_ring->count)                                                         │          if (i == tx_ring->count)                                                        
                i = 0;                                                                   │                  i = 0;                                                                  
                                                                                         │                                                                                          
        tx_ring->next_to_use = i;                                                        │          tx_ring->next_to_use = i;                                                       
                                                                                         │                                                                                          
        /* notify HW of packet */                                                        │          /* Make sure there is space in the ring for the next send. */                   
        ixgbevf_write_tail(tx_ring, i);                                                  │          igb_maybe_stop_tx(tx_ring, DESC_NEEDED);                                        
                                                                                         │                                                                                          
                                                                                         │          if (netif_xmit_stopped(txring_txq(tx_ring)) || !netdev_xmit_more()) {           
                                                                                         │                  writel(i, tx_ring->tail);                                               
                                                                                         │          }                                                                               
                                                                                         │          return 0;                                                                       
                                                                                         │                                                                                          
        return;                                                                          │                                                                                          
dma_error:                                                                               │  dma_error:                                                                              
        dev_err(tx_ring->dev, "TX DMA map failed\n");                                    │          dev_err(tx_ring->dev, "TX DMA map failed\n");                                   
        tx_buffer = &tx_ring->tx_buffer_info[i];                                         │          tx_buffer = &tx_ring->tx_buffer_info[i];                                        
                                                                                         │                                                                                          
        /* clear dma mappings for failed tx_buffer_info map */                           │          /* clear dma mappings for failed tx_buffer_info map */                          
        while (tx_buffer != first) {                                                     │          while (tx_buffer != first) {                                                    
                if (dma_unmap_len(tx_buffer, len))                                       │                  if (dma_unmap_len(tx_buffer, len))                                      
                        dma_unmap_page(tx_ring->dev,                                     │                          dma_unmap_page(tx_ring->dev,                                    
                                       dma_unmap_addr(tx_buffer, dma),                   │                                         dma_unmap_addr(tx_buffer, dma),                  
                                       dma_unmap_len(tx_buffer, len),                    │                                         dma_unmap_len(tx_buffer, len),                   
                                       DMA_TO_DEVICE);                                   │                                         DMA_TO_DEVICE);                                  
                dma_unmap_len_set(tx_buffer, len, 0);                                    │                  dma_unmap_len_set(tx_buffer, len, 0);                                   
                                                                                         │                                                                                          
                if (i-- == 0)                                                            │                  if (i-- == 0)                                                           
                        i += tx_ring->count;                                             │                          i += tx_ring->count;                                            
                tx_buffer = &tx_ring->tx_buffer_info[i];                                 │                  tx_buffer = &tx_ring->tx_buffer_info[i];                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (dma_unmap_len(tx_buffer, len))                                               │          if (dma_unmap_len(tx_buffer, len))                                              
                dma_unmap_single(tx_ring->dev,                                           │                  dma_unmap_single(tx_ring->dev,                                          
                                 dma_unmap_addr(tx_buffer, dma),                         │                                   dma_unmap_addr(tx_buffer, dma),                        
                                 dma_unmap_len(tx_buffer, len),                          │                                   dma_unmap_len(tx_buffer, len),                         
                                 DMA_TO_DEVICE);                                         │                                   DMA_TO_DEVICE);                                        
        dma_unmap_len_set(tx_buffer, len, 0);                                            │          dma_unmap_len_set(tx_buffer, len, 0);                                           
                                                                                         │                                                                                          
        dev_kfree_skb_any(tx_buffer->skb);                                               │          dev_kfree_skb_any(tx_buffer->skb);                                              
        tx_buffer->skb = NULL;                                                           │          tx_buffer->skb = NULL;                                                          
                                                                                         │                                                                                          
        tx_ring->next_to_use = i;                                                        │          tx_ring->next_to_use = i;                                                       
                                                                                         │                                                                                          
                                                                                         │          return -1;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/cnic_defs.h:877                                     │ linux/drivers/net/ethernet/broadcom/cnic_defs.h:700                                      
                                                                                         │                                                                                          
        u32 __agg_val1;                                                                  │          u32 __agg_val1;                                                                 
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 __tcp_agg_vars2;                                                              │          u8 __tcp_agg_vars2;                                                             
        u8 __agg_val3;                                                                   │          u8 __agg_val3;                                                                  
        u16 __agg_val2;                                                                  │          u16 __agg_val2;                                                                 
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 __agg_val2;                                                                  │          u16 __agg_val2;                                                                 
        u8 __agg_val3;                                                                   │          u8 __agg_val3;                                                                  
        u8 __tcp_agg_vars2;                                                              │          u8 __tcp_agg_vars2;                                                             
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 __agg_val5;                                                                  │          u16 __agg_val5;                                                                 
        u8 __agg_val6;                                                                   │          u8 __agg_val6;                                                                  
        u8 __tcp_agg_vars3;                                                              │          u8 __tcp_agg_vars3;                                                             
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 __tcp_agg_vars3;                                                              │          u8 __tcp_agg_vars3;                                                             
        u8 __agg_val6;                                                                   │          u8 __agg_val6;                                                                  
        u16 __agg_val5;                                                                  │          u16 __agg_val5;                                                                 
#endif                                                                                   │  #endif                                                                                  
        u32 snd_nxt;                                                                     │          u32 __lcq_prod;                                                                 
        u32 rtt_seq;                                                                     │          u32 rtt_seq;                                                                    
        u32 rtt_time;                                                                    │          u32 rtt_time;                                                                   
        u32 wnd_right_edge_local;                                                        │          u32 __reserved66;                                                               
        u32 wnd_right_edge;                                                              │          u32 wnd_right_edge;                                                             
        u32 tcp_agg_vars1;                                                               │          u32 tcp_agg_vars1;                                                              
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)                         │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)                     
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0                          │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0                      
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)                  │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)              
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1                   │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1               
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)                            │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)                        
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2                             │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2                         
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)                            │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)                        
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4                             │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4                         
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)                         │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)                     
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6                          │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6                      
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)                         │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)                     
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7                          │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7                      
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)                     │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)                 
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8                      │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8                  
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9)                            │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN (0x1<<9)                      
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9                             │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN_SHIFT 9                       
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)                            │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)                        
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10                             │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10                         
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)                            │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)                        
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11                             │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11                         
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)                           │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)                       
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12                            │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12                        
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)                           │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)                       
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13                            │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13                        
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)                              │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)                          
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14                               │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14                           
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)                              │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)                          
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16                               │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16                           
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)                           │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)                       
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18                            │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18                        
#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)                        │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)                    
#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19                         │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19                     
#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)                        │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)                    
#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20                         │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20                     
#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)                        │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)                    
#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21                         │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21                     
#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)                          │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)                      
#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22                           │  #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22                       
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)                  │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)              
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24                   │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24               
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)                  │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)              
#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28                   │  #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28               
        u32 snd_max;                                                                     │          u32 snd_max;                                                                    
        u32 snd_una;                                                                     │          u32 __lcq_cons;                                                                 
        u32 __reserved2;                                                                 │          u32 __reserved2;                                                                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_main.c:1186                                    │ linux/drivers/net/ethernet/intel/igb/igb_main.c:6113                                     
                                                                                         │                                                                                          
        struct sk_buff *skb = first->skb;                                                │          struct sk_buff *skb = first->skb;                                               
        struct igc_tx_buffer *tx_buffer;                                                 │          struct igb_tx_buffer *tx_buffer;                                                
        union igc_adv_tx_desc *tx_desc;                                                  │          union e1000_adv_tx_desc *tx_desc;                                               
        u32 tx_flags = first->tx_flags;                                                  │                                                                                          
        skb_frag_t *frag;                                                                │          skb_frag_t *frag;                                                               
        u16 i = tx_ring->next_to_use;                                                    │                                                                                          
        unsigned int data_len, size;                                                     │                                                                                          
        dma_addr_t dma;                                                                  │          dma_addr_t dma;                                                                 
        u32 cmd_type;                                                                    │          unsigned int data_len, size;                                                    
                                                                                         │          u32 tx_flags = first->tx_flags;                                                 
                                                                                         │          u32 cmd_type = igb_tx_cmd_type(skb, tx_flags);                                  
                                                                                         │          u16 i = tx_ring->next_to_use;                                                   
                                                                                         │                                                                                          
        cmd_type = igc_tx_cmd_type(skb, tx_flags);                                       │          tx_desc = IGB_TX_DESC(tx_ring, i);                                              
        tx_desc = IGC_TX_DESC(tx_ring, i);                                               │                                                                                          
                                                                                         │                                                                                          
        igc_tx_olinfo_status(tx_ring, tx_desc, tx_flags, skb->len - hdr_len);            │          igb_tx_olinfo_status(tx_ring, tx_desc, tx_flags, skb->len - hdr_len);           
                                                                                         │                                                                                          
        size = skb_headlen(skb);                                                         │          size = skb_headlen(skb);                                                        
        data_len = skb->data_len;                                                        │          data_len = skb->data_len;                                                       
                                                                                         │                                                                                          
        dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);              │          dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);             
                                                                                         │                                                                                          
        tx_buffer = first;                                                               │          tx_buffer = first;                                                              
                                                                                         │                                                                                          
        for (frag = &skb_shinfo(skb)->frags[0];; frag++) {                               │          for (frag = &skb_shinfo(skb)->frags[0];; frag++) {                              
                if (dma_mapping_error(tx_ring->dev, dma))                                │                  if (dma_mapping_error(tx_ring->dev, dma))                               
                        goto dma_error;                                                  │                          goto dma_error;                                                 
                                                                                         │                                                                                          
                /* record length, and DMA address */                                     │                  /* record length, and DMA address */                                    
                dma_unmap_len_set(tx_buffer, len, size);                                 │                  dma_unmap_len_set(tx_buffer, len, size);                                
                dma_unmap_addr_set(tx_buffer, dma, dma);                                 │                  dma_unmap_addr_set(tx_buffer, dma, dma);                                
                                                                                         │                                                                                          
                tx_desc->read.buffer_addr = cpu_to_le64(dma);                            │                  tx_desc->read.buffer_addr = cpu_to_le64(dma);                           
                                                                                         │                                                                                          
                while (unlikely(size > IGC_MAX_DATA_PER_TXD)) {                          │                  while (unlikely(size > IGB_MAX_DATA_PER_TXD)) {                         
                        tx_desc->read.cmd_type_len =                                     │                          tx_desc->read.cmd_type_len =                                    
                                cpu_to_le32(cmd_type ^ IGC_MAX_DATA_PER_TXD);            │                                  cpu_to_le32(cmd_type ^ IGB_MAX_DATA_PER_TXD);           
                                                                                         │                                                                                          
                        i++;                                                             │                          i++;                                                            
                        tx_desc++;                                                       │                          tx_desc++;                                                      
                        if (i == tx_ring->count) {                                       │                          if (i == tx_ring->count) {                                      
                                tx_desc = IGC_TX_DESC(tx_ring, 0);                       │                                  tx_desc = IGB_TX_DESC(tx_ring, 0);                      
                                i = 0;                                                   │                                  i = 0;                                                  
                        }                                                                │                          }                                                               
                        tx_desc->read.olinfo_status = 0;                                 │                          tx_desc->read.olinfo_status = 0;                                
                                                                                         │                                                                                          
                        dma += IGC_MAX_DATA_PER_TXD;                                     │                          dma += IGB_MAX_DATA_PER_TXD;                                    
                        size -= IGC_MAX_DATA_PER_TXD;                                    │                          size -= IGB_MAX_DATA_PER_TXD;                                   
                                                                                         │                                                                                          
                        tx_desc->read.buffer_addr = cpu_to_le64(dma);                    │                          tx_desc->read.buffer_addr = cpu_to_le64(dma);                   
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (likely(!data_len))                                                   │                  if (likely(!data_len))                                                  
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type ^ size);               │                  tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type ^ size);              
                                                                                         │                                                                                          
                i++;                                                                     │                  i++;                                                                    
                tx_desc++;                                                               │                  tx_desc++;                                                              
                if (i == tx_ring->count) {                                               │                  if (i == tx_ring->count) {                                              
                        tx_desc = IGC_TX_DESC(tx_ring, 0);                               │                          tx_desc = IGB_TX_DESC(tx_ring, 0);                              
                        i = 0;                                                           │                          i = 0;                                                          
                }                                                                        │                  }                                                                       
                tx_desc->read.olinfo_status = 0;                                         │                  tx_desc->read.olinfo_status = 0;                                        
                                                                                         │                                                                                          
                size = skb_frag_size(frag);                                              │                  size = skb_frag_size(frag);                                             
                data_len -= size;                                                        │                  data_len -= size;                                                       
                                                                                         │                                                                                          
                dma = skb_frag_dma_map(tx_ring->dev, frag, 0,                            │                  dma = skb_frag_dma_map(tx_ring->dev, frag, 0,                           
                                       size, DMA_TO_DEVICE);                             │                                         size, DMA_TO_DEVICE);                            
                                                                                         │                                                                                          
                tx_buffer = &tx_ring->tx_buffer_info[i];                                 │                  tx_buffer = &tx_ring->tx_buffer_info[i];                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* write last descriptor with RS and EOP bits */                                 │          /* write last descriptor with RS and EOP bits */                                
        cmd_type |= size | IGC_TXD_DCMD;                                                 │          cmd_type |= size | IGB_TXD_DCMD;                                                
        tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);                              │          tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);                             
                                                                                         │                                                                                          
        netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);                     │          netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);                    
                                                                                         │                                                                                          
        /* set the timestamp */                                                          │          /* set the timestamp */                                                         
        first->time_stamp = jiffies;                                                     │          first->time_stamp = jiffies;                                                    
                                                                                         │                                                                                          
        skb_tx_timestamp(skb);                                                           │          skb_tx_timestamp(skb);                                                          
                                                                                         │                                                                                          
        /* Force memory writes to complete before letting h/w know there                 │          /* Force memory writes to complete before letting h/w know there                
         * are new descriptors to fetch.  (Only applicable for weak-ordered              │           * are new descriptors to fetch.  (Only applicable for weak-ordered             
         * memory model archs, such as IA-64).                                           │           * memory model archs, such as IA-64).                                          
         *                                                                               │           *                                                                              
         * We also need this memory barrier to make certain all of the                   │           * We also need this memory barrier to make certain all of the                  
         * status bits have been updated before next_to_watch is written.                │           * status bits have been updated before next_to_watch is written.               
         */                                                                              │           */                                                                             
        wmb();                                                                           │          dma_wmb();                                                                      
                                                                                         │                                                                                          
        /* set next_to_watch value indicating a packet is present */                     │          /* set next_to_watch value indicating a packet is present */                    
        first->next_to_watch = tx_desc;                                                  │          first->next_to_watch = tx_desc;                                                 
                                                                                         │                                                                                          
        i++;                                                                             │          i++;                                                                            
        if (i == tx_ring->count)                                                         │          if (i == tx_ring->count)                                                        
                i = 0;                                                                   │                  i = 0;                                                                  
                                                                                         │                                                                                          
        tx_ring->next_to_use = i;                                                        │          tx_ring->next_to_use = i;                                                       
                                                                                         │                                                                                          
        /* Make sure there is space in the ring for the next send. */                    │          /* Make sure there is space in the ring for the next send. */                   
        igc_maybe_stop_tx(tx_ring, DESC_NEEDED);                                         │          igb_maybe_stop_tx(tx_ring, DESC_NEEDED);                                        
                                                                                         │                                                                                          
        if (netif_xmit_stopped(txring_txq(tx_ring)) || !netdev_xmit_more()) {            │          if (netif_xmit_stopped(txring_txq(tx_ring)) || !netdev_xmit_more()) {           
                writel(i, tx_ring->tail);                                                │                  writel(i, tx_ring->tail);                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
dma_error:                                                                               │  dma_error:                                                                              
        netdev_err(tx_ring->netdev, "TX DMA map failed\n");                              │          dev_err(tx_ring->dev, "TX DMA map failed\n");                                   
        tx_buffer = &tx_ring->tx_buffer_info[i];                                         │          tx_buffer = &tx_ring->tx_buffer_info[i];                                        
                                                                                         │                                                                                          
        /* clear dma mappings for failed tx_buffer_info map */                           │          /* clear dma mappings for failed tx_buffer_info map */                          
        while (tx_buffer != first) {                                                     │          while (tx_buffer != first) {                                                    
                if (dma_unmap_len(tx_buffer, len))                                       │                  if (dma_unmap_len(tx_buffer, len))                                      
                        igc_unmap_tx_buffer(tx_ring->dev, tx_buffer);                    │                          dma_unmap_page(tx_ring->dev,                                    
                                                                                         │                                         dma_unmap_addr(tx_buffer, dma),                  
                                                                                         │                                         dma_unmap_len(tx_buffer, len),                   
                                                                                         │                                         DMA_TO_DEVICE);                                  
                                                                                         │                  dma_unmap_len_set(tx_buffer, len, 0);                                   
                                                                                         │                                                                                          
                if (i-- == 0)                                                            │                  if (i-- == 0)                                                           
                        i += tx_ring->count;                                             │                          i += tx_ring->count;                                            
                tx_buffer = &tx_ring->tx_buffer_info[i];                                 │                  tx_buffer = &tx_ring->tx_buffer_info[i];                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (dma_unmap_len(tx_buffer, len))                                               │          if (dma_unmap_len(tx_buffer, len))                                              
                igc_unmap_tx_buffer(tx_ring->dev, tx_buffer);                            │                  dma_unmap_single(tx_ring->dev,                                          
                                                                                         │                                   dma_unmap_addr(tx_buffer, dma),                        
                                                                                         │                                   dma_unmap_len(tx_buffer, len),                         
                                                                                         │                                   DMA_TO_DEVICE);                                        
                                                                                         │          dma_unmap_len_set(tx_buffer, len, 0);                                           
                                                                                         │                                                                                          
        dev_kfree_skb_any(tx_buffer->skb);                                               │          dev_kfree_skb_any(tx_buffer->skb);                                              
        tx_buffer->skb = NULL;                                                           │          tx_buffer->skb = NULL;                                                          
                                                                                         │                                                                                          
        tx_ring->next_to_use = i;                                                        │          tx_ring->next_to_use = i;                                                       
                                                                                         │                                                                                          
        return -1;                                                                       │          return -1;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c:226                           │ linux/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c:496                            
                                                                                         │                                                                                          
        int max_encap_size = MLX5_CAP_ESW(priv->mdev, max_encap_header_size);            │          int max_encap_size = MLX5_CAP_ESW(priv->mdev, max_encap_header_size);           
        const struct ip_tunnel_key *tun_key = &e->tun_info->key;                         │          const struct ip_tunnel_key *tun_key = &e->tun_info->key;                        
        struct mlx5_pkt_reformat_params reformat_params;                                 │          struct mlx5_pkt_reformat_params reformat_params;                                
        struct mlx5e_neigh m_neigh = {};                                                 │          struct mlx5e_neigh m_neigh = {};                                                
        TC_TUN_ROUTE_ATTR_INIT(attr);                                                    │          TC_TUN_ROUTE_ATTR_INIT(attr);                                                   
        int ipv4_encap_size;                                                             │          struct ipv6hdr *ip6h;                                                           
                                                                                         │          int ipv6_encap_size;                                                            
        char *encap_header;                                                              │          char *encap_header;                                                             
        struct iphdr *ip;                                                                │                                                                                          
        u8 nud_state;                                                                    │          u8 nud_state;                                                                   
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        /* add the IP fields */                                                          │                                                                                          
        attr.fl.fl4.flowi4_tos = tun_key->tos & ~INET_ECN_MASK;                          │                                                                                          
        attr.fl.fl4.daddr = tun_key->u.ipv4.dst;                                         │                                                                                          
        attr.fl.fl4.saddr = tun_key->u.ipv4.src;                                         │                                                                                          
        attr.ttl = tun_key->ttl;                                                         │          attr.ttl = tun_key->ttl;                                                        
                                                                                         │          attr.fl.fl6.flowlabel = ip6_make_flowinfo(RT_TOS(tun_key->tos), tun_key->label);
                                                                                         │          attr.fl.fl6.daddr = tun_key->u.ipv6.dst;                                        
                                                                                         │          attr.fl.fl6.saddr = tun_key->u.ipv6.src;                                        
                                                                                         │                                                                                          
        err = mlx5e_route_lookup_ipv4_get(priv, mirred_dev, &attr);                      │          err = mlx5e_route_lookup_ipv6_get(priv, mirred_dev, &attr);                     
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        ipv4_encap_size =                                                                │          ipv6_encap_size =                                                               
                (is_vlan_dev(attr.route_dev) ? VLAN_ETH_HLEN : ETH_HLEN) +               │                  (is_vlan_dev(attr.route_dev) ? VLAN_ETH_HLEN : ETH_HLEN) +              
                sizeof(struct iphdr) +                                                   │                  sizeof(struct ipv6hdr) +                                                
                e->tunnel->calc_hlen(e);                                                 │                  e->tunnel->calc_hlen(e);                                                
                                                                                         │                                                                                          
        if (max_encap_size < ipv4_encap_size) {                                          │          if (max_encap_size < ipv6_encap_size) {                                         
                mlx5_core_warn(priv->mdev, "encap size %d too big, max supported is %d\n │                  mlx5_core_warn(priv->mdev, "encap size %d too big, max supported is %d\n
                               ipv4_encap_size, max_encap_size);                         │                                 ipv6_encap_size, max_encap_size);                        
                err = -EOPNOTSUPP;                                                       │                  err = -EOPNOTSUPP;                                                      
                goto release_neigh;                                                      │                  goto release_neigh;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        encap_header = kzalloc(ipv4_encap_size, GFP_KERNEL);                             │          encap_header = kzalloc(ipv6_encap_size, GFP_KERNEL);                            
        if (!encap_header) {                                                             │          if (!encap_header) {                                                            
                err = -ENOMEM;                                                           │                  err = -ENOMEM;                                                          
                goto release_neigh;                                                      │                  goto release_neigh;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        m_neigh.family = attr.n->ops->family;                                            │          m_neigh.family = attr.n->ops->family;                                           
        memcpy(&m_neigh.dst_ip, attr.n->primary_key, attr.n->tbl->key_len);              │          memcpy(&m_neigh.dst_ip, attr.n->primary_key, attr.n->tbl->key_len);             
        e->out_dev = attr.out_dev;                                                       │          e->out_dev = attr.out_dev;                                                      
        e->route_dev_ifindex = attr.route_dev->ifindex;                                  │          e->route_dev_ifindex = attr.route_dev->ifindex;                                 
                                                                                         │                                                                                          
        /* It's important to add the neigh to the hash table before checking             │          /* It's important to add the neigh to the hash table before checking            
         * the neigh validity state. So if we'll get a notification, in case the         │           * the neigh validity state. So if we'll get a notification, in case the        
         * neigh changes it's validity state, we would find the relevant neigh           │           * neigh changes it's validity state, we would find the relevant neigh          
         * in the hash.                                                                  │           * in the hash.                                                                 
         */                                                                              │           */                                                                             
        err = mlx5e_rep_encap_entry_attach(netdev_priv(attr.out_dev), e, &m_neigh, attr. │          err = mlx5e_rep_encap_entry_attach(netdev_priv(attr.out_dev), e, &m_neigh, attr.
        if (err)                                                                         │          if (err)                                                                        
                goto free_encap;                                                         │                  goto free_encap;                                                        
                                                                                         │                                                                                          
        read_lock_bh(&attr.n->lock);                                                     │          read_lock_bh(&attr.n->lock);                                                    
        nud_state = attr.n->nud_state;                                                   │          nud_state = attr.n->nud_state;                                                  
        ether_addr_copy(e->h_dest, attr.n->ha);                                          │          ether_addr_copy(e->h_dest, attr.n->ha);                                         
        read_unlock_bh(&attr.n->lock);                                                   │          read_unlock_bh(&attr.n->lock);                                                  
                                                                                         │                                                                                          
        /* add ethernet header */                                                        │          /* add ethernet header */                                                       
        ip = (struct iphdr *)gen_eth_tnl_hdr(encap_header, attr.route_dev, e,            │          ip6h = (struct ipv6hdr *)gen_eth_tnl_hdr(encap_header, attr.route_dev, e,       
                                             ETH_P_IP);                                  │                                                   ETH_P_IPV6);                           
                                                                                         │                                                                                          
        /* add ip header */                                                              │          /* add ip header */                                                             
        ip->tos = tun_key->tos;                                                          │          ip6_flow_hdr(ip6h, tun_key->tos, 0);                                            
        ip->version = 0x4;                                                               │          /* the HW fills up ipv6 payload len */                                          
        ip->ihl = 0x5;                                                                   │          ip6h->hop_limit   = attr.ttl;                                                   
        ip->ttl = attr.ttl;                                                              │          ip6h->daddr       = attr.fl.fl6.daddr;                                          
        ip->daddr = attr.fl.fl4.daddr;                                                   │          ip6h->saddr       = attr.fl.fl6.saddr;                                          
        ip->saddr = attr.fl.fl4.saddr;                                                   │                                                                                          
                                                                                         │                                                                                          
        /* add tunneling protocol header */                                              │          /* add tunneling protocol header */                                             
        err = mlx5e_gen_ip_tunnel_header((char *)ip + sizeof(struct iphdr),              │          err = mlx5e_gen_ip_tunnel_header((char *)ip6h + sizeof(struct ipv6hdr),         
                                         &ip->protocol, e);                              │                                           &ip6h->nexthdr, e);                            
        if (err)                                                                         │          if (err)                                                                        
                goto destroy_neigh_entry;                                                │                  goto destroy_neigh_entry;                                               
                                                                                         │                                                                                          
        e->encap_size = ipv4_encap_size;                                                 │          e->encap_size = ipv6_encap_size;                                                
        e->encap_header = encap_header;                                                  │          e->encap_header = encap_header;                                                 
                                                                                         │                                                                                          
        if (!(nud_state & NUD_VALID)) {                                                  │          if (!(nud_state & NUD_VALID)) {                                                 
                neigh_event_send(attr.n, NULL);                                          │                  neigh_event_send(attr.n, NULL);                                         
                /* the encap entry will be made valid on neigh update event              │                  /* the encap entry will be made valid on neigh update event             
                 * and not used before that.                                             │                   * and not used before that.                                            
                 */                                                                      │                   */                                                                     
                goto release_neigh;                                                      │                  goto release_neigh;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        memset(&reformat_params, 0, sizeof(reformat_params));                            │          memset(&reformat_params, 0, sizeof(reformat_params));                           
        reformat_params.type = e->reformat_type;                                         │          reformat_params.type = e->reformat_type;                                        
        reformat_params.size = ipv4_encap_size;                                          │          reformat_params.size = ipv6_encap_size;                                         
        reformat_params.data = encap_header;                                             │          reformat_params.data = encap_header;                                            
        e->pkt_reformat = mlx5_packet_reformat_alloc(priv->mdev, &reformat_params,       │          e->pkt_reformat = mlx5_packet_reformat_alloc(priv->mdev, &reformat_params,      
                                                     MLX5_FLOW_NAMESPACE_FDB);           │                                                       MLX5_FLOW_NAMESPACE_FDB);          
        if (IS_ERR(e->pkt_reformat)) {                                                   │          if (IS_ERR(e->pkt_reformat)) {                                                  
                err = PTR_ERR(e->pkt_reformat);                                          │                  err = PTR_ERR(e->pkt_reformat);                                         
                goto destroy_neigh_entry;                                                │                  goto destroy_neigh_entry;                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        e->flags |= MLX5_ENCAP_ENTRY_VALID;                                              │          e->flags |= MLX5_ENCAP_ENTRY_VALID;                                             
        mlx5e_rep_queue_neigh_stats_work(netdev_priv(attr.out_dev));                     │          mlx5e_rep_queue_neigh_stats_work(netdev_priv(attr.out_dev));                    
        mlx5e_route_lookup_ipv4_put(&attr);                                              │          mlx5e_route_lookup_ipv6_put(&attr);                                             
        return err;                                                                      │          return err;                                                                     
                                                                                         │                                                                                          
destroy_neigh_entry:                                                                     │  destroy_neigh_entry:                                                                    
        mlx5e_rep_encap_entry_detach(netdev_priv(e->out_dev), e);                        │          mlx5e_rep_encap_entry_detach(netdev_priv(e->out_dev), e);                       
free_encap:                                                                              │  free_encap:                                                                             
        kfree(encap_header);                                                             │          kfree(encap_header);                                                            
release_neigh:                                                                           │  release_neigh:                                                                          
        mlx5e_route_lookup_ipv4_put(&attr);                                              │          mlx5e_route_lookup_ipv6_put(&attr);                                             
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sun/niu.c:755                                                │ linux/drivers/net/ethernet/sun/niu.c:2351                                                
                                                                                         │                                                                                          
        struct niu_link_config *lp = &np->link_config;                                   │          struct niu_link_config *lp = &np->link_config;                                  
        unsigned long ctrl_reg, test_cfg_reg, i;                                         │          unsigned long ctrl_reg, test_cfg_reg, pll_cfg, i;                               
        u64 ctrl_val, test_cfg_val, sig, mask, val;                                      │          u64 ctrl_val, test_cfg_val, sig, mask, val;                                     
        int err;                                                                         │                                                                                          
                                                                                         │                                                                                          
        switch (np->port) {                                                              │          switch (np->port) {                                                             
        case 0:                                                                          │          case 0:                                                                         
                ctrl_reg = ENET_SERDES_0_CTRL_CFG;                                       │                  ctrl_reg = ENET_SERDES_0_CTRL_CFG;                                      
                test_cfg_reg = ENET_SERDES_0_TEST_CFG;                                   │                  test_cfg_reg = ENET_SERDES_0_TEST_CFG;                                  
                                                                                         │                  pll_cfg = ENET_SERDES_0_PLL_CFG;                                        
                break;                                                                   │                  break;                                                                  
        case 1:                                                                          │          case 1:                                                                         
                ctrl_reg = ENET_SERDES_1_CTRL_CFG;                                       │                  ctrl_reg = ENET_SERDES_1_CTRL_CFG;                                      
                test_cfg_reg = ENET_SERDES_1_TEST_CFG;                                   │                  test_cfg_reg = ENET_SERDES_1_TEST_CFG;                                  
                                                                                         │                  pll_cfg = ENET_SERDES_1_PLL_CFG;                                        
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        default:                                                                         │          default:                                                                        
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
        ctrl_val = (ENET_SERDES_CTRL_SDET_0 |                                            │          ctrl_val = (ENET_SERDES_CTRL_SDET_0 |                                           
                    ENET_SERDES_CTRL_SDET_1 |                                            │                      ENET_SERDES_CTRL_SDET_1 |                                           
                    ENET_SERDES_CTRL_SDET_2 |                                            │                      ENET_SERDES_CTRL_SDET_2 |                                           
                    ENET_SERDES_CTRL_SDET_3 |                                            │                      ENET_SERDES_CTRL_SDET_3 |                                           
                    (0x5 << ENET_SERDES_CTRL_EMPH_0_SHIFT) |                             │                      (0x5 << ENET_SERDES_CTRL_EMPH_0_SHIFT) |                            
                    (0x5 << ENET_SERDES_CTRL_EMPH_1_SHIFT) |                             │                      (0x5 << ENET_SERDES_CTRL_EMPH_1_SHIFT) |                            
                    (0x5 << ENET_SERDES_CTRL_EMPH_2_SHIFT) |                             │                      (0x5 << ENET_SERDES_CTRL_EMPH_2_SHIFT) |                            
                    (0x5 << ENET_SERDES_CTRL_EMPH_3_SHIFT) |                             │                      (0x5 << ENET_SERDES_CTRL_EMPH_3_SHIFT) |                            
                    (0x1 << ENET_SERDES_CTRL_LADJ_0_SHIFT) |                             │                      (0x1 << ENET_SERDES_CTRL_LADJ_0_SHIFT) |                            
                    (0x1 << ENET_SERDES_CTRL_LADJ_1_SHIFT) |                             │                      (0x1 << ENET_SERDES_CTRL_LADJ_1_SHIFT) |                            
                    (0x1 << ENET_SERDES_CTRL_LADJ_2_SHIFT) |                             │                      (0x1 << ENET_SERDES_CTRL_LADJ_2_SHIFT) |                            
                    (0x1 << ENET_SERDES_CTRL_LADJ_3_SHIFT));                             │                      (0x1 << ENET_SERDES_CTRL_LADJ_3_SHIFT));                            
        test_cfg_val = 0;                                                                │          test_cfg_val = 0;                                                               
                                                                                         │                                                                                          
        if (lp->loopback_mode == LOOPBACK_PHY) {                                         │          if (lp->loopback_mode == LOOPBACK_PHY) {                                        
                test_cfg_val |= ((ENET_TEST_MD_PAD_LOOPBACK <<                           │                  test_cfg_val |= ((ENET_TEST_MD_PAD_LOOPBACK <<                          
                                  ENET_SERDES_TEST_MD_0_SHIFT) |                         │                                    ENET_SERDES_TEST_MD_0_SHIFT) |                        
                                 (ENET_TEST_MD_PAD_LOOPBACK <<                           │                                   (ENET_TEST_MD_PAD_LOOPBACK <<                          
                                  ENET_SERDES_TEST_MD_1_SHIFT) |                         │                                    ENET_SERDES_TEST_MD_1_SHIFT) |                        
                                 (ENET_TEST_MD_PAD_LOOPBACK <<                           │                                   (ENET_TEST_MD_PAD_LOOPBACK <<                          
                                  ENET_SERDES_TEST_MD_2_SHIFT) |                         │                                    ENET_SERDES_TEST_MD_2_SHIFT) |                        
                                 (ENET_TEST_MD_PAD_LOOPBACK <<                           │                                   (ENET_TEST_MD_PAD_LOOPBACK <<                          
                                  ENET_SERDES_TEST_MD_3_SHIFT));                         │                                    ENET_SERDES_TEST_MD_3_SHIFT));                        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          esr_reset(np);                                                                  
                                                                                         │          nw64(pll_cfg, ENET_SERDES_PLL_FBDIV2);                                          
        nw64(ctrl_reg, ctrl_val);                                                        │          nw64(ctrl_reg, ctrl_val);                                                       
        nw64(test_cfg_reg, test_cfg_val);                                                │          nw64(test_cfg_reg, test_cfg_val);                                               
                                                                                         │                                                                                          
        /* Initialize all 4 lanes of the SERDES.  */                                     │          /* Initialize all 4 lanes of the SERDES.  */                                    
        for (i = 0; i < 4; i++) {                                                        │          for (i = 0; i < 4; i++) {                                                       
                u32 rxtx_ctrl, glue0;                                                    │                  u32 rxtx_ctrl, glue0;                                                   
                                                                                         │                  int err;                                                                
                                                                                         │                                                                                          
                err = esr_read_rxtx_ctrl(np, i, &rxtx_ctrl);                             │                  err = esr_read_rxtx_ctrl(np, i, &rxtx_ctrl);                            
                if (err)                                                                 │                  if (err)                                                                
                        return err;                                                      │                          return err;                                                     
                err = esr_read_glue0(np, i, &glue0);                                     │                  err = esr_read_glue0(np, i, &glue0);                                    
                if (err)                                                                 │                  if (err)                                                                
                        return err;                                                      │                          return err;                                                     
                                                                                         │                                                                                          
                rxtx_ctrl &= ~(ESR_RXTX_CTRL_VMUXLO);                                    │                  rxtx_ctrl &= ~(ESR_RXTX_CTRL_VMUXLO);                                   
                rxtx_ctrl |= (ESR_RXTX_CTRL_ENSTRETCH |                                  │                  rxtx_ctrl |= (ESR_RXTX_CTRL_ENSTRETCH |                                 
                              (2 << ESR_RXTX_CTRL_VMUXLO_SHIFT));                        │                                (2 << ESR_RXTX_CTRL_VMUXLO_SHIFT));                       
                                                                                         │                                                                                          
                glue0 &= ~(ESR_GLUE_CTRL0_SRATE |                                        │                  glue0 &= ~(ESR_GLUE_CTRL0_SRATE |                                       
                           ESR_GLUE_CTRL0_THCNT |                                        │                             ESR_GLUE_CTRL0_THCNT |                                       
                           ESR_GLUE_CTRL0_BLTIME);                                       │                             ESR_GLUE_CTRL0_BLTIME);                                      
                glue0 |= (ESR_GLUE_CTRL0_RXLOSENAB |                                     │                  glue0 |= (ESR_GLUE_CTRL0_RXLOSENAB |                                    
                          (0xf << ESR_GLUE_CTRL0_SRATE_SHIFT) |                          │                            (0xf << ESR_GLUE_CTRL0_SRATE_SHIFT) |                         
                          (0xff << ESR_GLUE_CTRL0_THCNT_SHIFT) |                         │                            (0xff << ESR_GLUE_CTRL0_THCNT_SHIFT) |                        
                          (BLTIME_300_CYCLES <<                                          │                            (BLTIME_300_CYCLES <<                                         
                           ESR_GLUE_CTRL0_BLTIME_SHIFT));                                │                             ESR_GLUE_CTRL0_BLTIME_SHIFT));                               
                                                                                         │                                                                                          
                err = esr_write_rxtx_ctrl(np, i, rxtx_ctrl);                             │                  err = esr_write_rxtx_ctrl(np, i, rxtx_ctrl);                            
                if (err)                                                                 │                  if (err)                                                                
                        return err;                                                      │                          return err;                                                     
                err = esr_write_glue0(np, i, glue0);                                     │                  err = esr_write_glue0(np, i, glue0);                                    
                if (err)                                                                 │                  if (err)                                                                
                        return err;                                                      │                          return err;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        err = esr_reset(np);                                                             │                                                                                          
        if (err)                                                                         │                                                                                          
                return err;                                                              │                                                                                          
                                                                                         │                                                                                          
        sig = nr64(ESR_INT_SIGNALS);                                                     │          sig = nr64(ESR_INT_SIGNALS);                                                    
        switch (np->port) {                                                              │          switch (np->port) {                                                             
        case 0:                                                                          │          case 0:                                                                         
                mask = ESR_INT_SIGNALS_P0_BITS;                                          │                  mask = ESR_INT_SIGNALS_P0_BITS;                                         
                val = (ESR_INT_SRDY0_P0 |                                                │                  val = (ESR_INT_SRDY0_P0 |                                               
                       ESR_INT_DET0_P0 |                                                 │                         ESR_INT_DET0_P0 |                                                
                       ESR_INT_XSRDY_P0 |                                                │                         ESR_INT_XSRDY_P0 |                                               
                       ESR_INT_XDP_P0_CH3 |                                              │                         ESR_INT_XDP_P0_CH3 |                                             
                       ESR_INT_XDP_P0_CH2 |                                              │                         ESR_INT_XDP_P0_CH2 |                                             
                       ESR_INT_XDP_P0_CH1 |                                              │                         ESR_INT_XDP_P0_CH1 |                                             
                       ESR_INT_XDP_P0_CH0);                                              │                         ESR_INT_XDP_P0_CH0);                                             
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case 1:                                                                          │          case 1:                                                                         
                mask = ESR_INT_SIGNALS_P1_BITS;                                          │                  mask = ESR_INT_SIGNALS_P1_BITS;                                         
                val = (ESR_INT_SRDY0_P1 |                                                │                  val = (ESR_INT_SRDY0_P1 |                                               
                       ESR_INT_DET0_P1 |                                                 │                         ESR_INT_DET0_P1 |                                                
                       ESR_INT_XSRDY_P1 |                                                │                         ESR_INT_XSRDY_P1 |                                               
                       ESR_INT_XDP_P1_CH3 |                                              │                         ESR_INT_XDP_P1_CH3 |                                             
                       ESR_INT_XDP_P1_CH2 |                                              │                         ESR_INT_XDP_P1_CH2 |                                             
                       ESR_INT_XDP_P1_CH1 |                                              │                         ESR_INT_XDP_P1_CH1 |                                             
                       ESR_INT_XDP_P1_CH0);                                              │                         ESR_INT_XDP_P1_CH0);                                             
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        default:                                                                         │          default:                                                                        
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if ((sig & mask) != val) {                                                       │          if ((sig & mask) != val) {                                                      
                if (np->flags & NIU_FLAGS_HOTPLUG_PHY) {                                 │                  int err;                                                                
                        np->flags &= ~NIU_FLAGS_HOTPLUG_PHY_PRESENT;                     │                  err = serdes_init_1g_serdes(np);                                        
                        return 0;                                                        │                  if (!err) {                                                             
                                                                                         │                          np->flags &= ~NIU_FLAGS_10G;                                    
                                                                                         │                          np->mac_xcvr = MAC_XCVR_PCS;                                    
                                                                                         │                  }  else {                                                               
                                                                                         │                          netdev_err(np->dev, "Port %u 10G/1G SERDES Link Failed\n",      
                                                                                         │                                     np->port);                                           
                                                                                         │                          return -ENODEV;                                                 
                }                                                                        │                  }                                                                       
                netdev_err(np->dev, "Port %u signal bits [%08x] are not [%08x]\n",       │                                                                                          
                           np->port, (int)(sig & mask), (int)val);                       │                                                                                          
                return -ENODEV;                                                          │                                                                                          
        }                                                                                │          }                                                                               
        if (np->flags & NIU_FLAGS_HOTPLUG_PHY)                                           │                                                                                          
                np->flags |= NIU_FLAGS_HOTPLUG_PHY_PRESENT;                              │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v2.c:167                  │ linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v1.c:2054                  
                                                                                         │                                                                                          
        /* Builders */                                                                   │          /* Builders */                                                                  
        .build_eth_l2_src_dst_init      = &dr_ste_v1_build_eth_l2_src_dst_init,          │          .build_eth_l2_src_dst_init      = &dr_ste_v1_build_eth_l2_src_dst_init,         
        .build_eth_l3_ipv6_src_init     = &dr_ste_v1_build_eth_l3_ipv6_src_init,         │          .build_eth_l3_ipv6_src_init     = &dr_ste_v1_build_eth_l3_ipv6_src_init,        
        .build_eth_l3_ipv6_dst_init     = &dr_ste_v1_build_eth_l3_ipv6_dst_init,         │          .build_eth_l3_ipv6_dst_init     = &dr_ste_v1_build_eth_l3_ipv6_dst_init,        
        .build_eth_l3_ipv4_5_tuple_init = &dr_ste_v1_build_eth_l3_ipv4_5_tuple_init,     │          .build_eth_l3_ipv4_5_tuple_init = &dr_ste_v1_build_eth_l3_ipv4_5_tuple_init,    
        .build_eth_l2_src_init          = &dr_ste_v1_build_eth_l2_src_init,              │          .build_eth_l2_src_init          = &dr_ste_v1_build_eth_l2_src_init,             
        .build_eth_l2_dst_init          = &dr_ste_v1_build_eth_l2_dst_init,              │          .build_eth_l2_dst_init          = &dr_ste_v1_build_eth_l2_dst_init,             
        .build_eth_l2_tnl_init          = &dr_ste_v1_build_eth_l2_tnl_init,              │          .build_eth_l2_tnl_init          = &dr_ste_v1_build_eth_l2_tnl_init,             
        .build_eth_l3_ipv4_misc_init    = &dr_ste_v1_build_eth_l3_ipv4_misc_init,        │          .build_eth_l3_ipv4_misc_init    = &dr_ste_v1_build_eth_l3_ipv4_misc_init,       
        .build_eth_ipv6_l3_l4_init      = &dr_ste_v1_build_eth_ipv6_l3_l4_init,          │          .build_eth_ipv6_l3_l4_init      = &dr_ste_v1_build_eth_ipv6_l3_l4_init,         
        .build_mpls_init                = &dr_ste_v1_build_mpls_init,                    │          .build_mpls_init                = &dr_ste_v1_build_mpls_init,                   
        .build_tnl_gre_init             = &dr_ste_v1_build_tnl_gre_init,                 │          .build_tnl_gre_init             = &dr_ste_v1_build_tnl_gre_init,                
        .build_tnl_mpls_init            = &dr_ste_v1_build_tnl_mpls_init,                │          .build_tnl_mpls_init            = &dr_ste_v1_build_tnl_mpls_init,               
        .build_tnl_mpls_over_udp_init   = &dr_ste_v1_build_tnl_mpls_over_udp_init,       │          .build_tnl_mpls_over_udp_init   = &dr_ste_v1_build_tnl_mpls_over_udp_init,      
        .build_tnl_mpls_over_gre_init   = &dr_ste_v1_build_tnl_mpls_over_gre_init,       │          .build_tnl_mpls_over_gre_init   = &dr_ste_v1_build_tnl_mpls_over_gre_init,      
        .build_icmp_init                = &dr_ste_v1_build_icmp_init,                    │          .build_icmp_init                = &dr_ste_v1_build_icmp_init,                   
        .build_general_purpose_init     = &dr_ste_v1_build_general_purpose_init,         │          .build_general_purpose_init     = &dr_ste_v1_build_general_purpose_init,        
        .build_eth_l4_misc_init         = &dr_ste_v1_build_eth_l4_misc_init,             │          .build_eth_l4_misc_init         = &dr_ste_v1_build_eth_l4_misc_init,            
        .build_tnl_vxlan_gpe_init       = &dr_ste_v1_build_flex_parser_tnl_vxlan_gpe_ini │          .build_tnl_vxlan_gpe_init       = &dr_ste_v1_build_flex_parser_tnl_vxlan_gpe_ini
        .build_tnl_geneve_init          = &dr_ste_v1_build_flex_parser_tnl_geneve_init,  │          .build_tnl_geneve_init          = &dr_ste_v1_build_flex_parser_tnl_geneve_init, 
        .build_tnl_geneve_tlv_opt_init  = &dr_ste_v1_build_flex_parser_tnl_geneve_tlv_op │          .build_tnl_geneve_tlv_opt_init  = &dr_ste_v1_build_flex_parser_tnl_geneve_tlv_op
        .build_tnl_geneve_tlv_opt_exist_init =                                           │          .build_tnl_geneve_tlv_opt_exist_init = &dr_ste_v1_build_flex_parser_tnl_geneve_t
                                  &dr_ste_v1_build_flex_parser_tnl_geneve_tlv_opt_exist_ │                                                                                          
        .build_register_0_init          = &dr_ste_v1_build_register_0_init,              │          .build_register_0_init          = &dr_ste_v1_build_register_0_init,             
        .build_register_1_init          = &dr_ste_v1_build_register_1_init,              │          .build_register_1_init          = &dr_ste_v1_build_register_1_init,             
        .build_src_gvmi_qpn_init        = &dr_ste_v1_build_src_gvmi_qpn_init,            │          .build_src_gvmi_qpn_init        = &dr_ste_v1_build_src_gvmi_qpn_init,           
        .build_flex_parser_0_init       = &dr_ste_v1_build_flex_parser_0_init,           │          .build_flex_parser_0_init       = &dr_ste_v1_build_flex_parser_0_init,          
        .build_flex_parser_1_init       = &dr_ste_v1_build_flex_parser_1_init,           │          .build_flex_parser_1_init       = &dr_ste_v1_build_flex_parser_1_init,          
        .build_tnl_gtpu_init            = &dr_ste_v1_build_flex_parser_tnl_gtpu_init,    │          .build_tnl_gtpu_init            = &dr_ste_v1_build_flex_parser_tnl_gtpu_init,   
        .build_tnl_header_0_1_init      = &dr_ste_v1_build_tnl_header_0_1_init,          │          .build_tnl_header_0_1_init      = &dr_ste_v1_build_tnl_header_0_1_init,         
        .build_tnl_gtpu_flex_parser_0_init = &dr_ste_v1_build_tnl_gtpu_flex_parser_0_ini │          .build_tnl_gtpu_flex_parser_0_init = &dr_ste_v1_build_tnl_gtpu_flex_parser_0_ini
        .build_tnl_gtpu_flex_parser_1_init = &dr_ste_v1_build_tnl_gtpu_flex_parser_1_ini │          .build_tnl_gtpu_flex_parser_1_init = &dr_ste_v1_build_tnl_gtpu_flex_parser_1_ini
                                                                                         │                                                                                          
        /* Getters and Setters */                                                        │          /* Getters and Setters */                                                       
        .ste_init                       = &dr_ste_v1_init,                               │          .ste_init                       = &dr_ste_v1_init,                              
        .set_next_lu_type               = &dr_ste_v1_set_next_lu_type,                   │          .set_next_lu_type               = &dr_ste_v1_set_next_lu_type,                  
        .get_next_lu_type               = &dr_ste_v1_get_next_lu_type,                   │          .get_next_lu_type               = &dr_ste_v1_get_next_lu_type,                  
        .set_miss_addr                  = &dr_ste_v1_set_miss_addr,                      │          .set_miss_addr                  = &dr_ste_v1_set_miss_addr,                     
        .get_miss_addr                  = &dr_ste_v1_get_miss_addr,                      │          .get_miss_addr                  = &dr_ste_v1_get_miss_addr,                     
        .set_hit_addr                   = &dr_ste_v1_set_hit_addr,                       │          .set_hit_addr                   = &dr_ste_v1_set_hit_addr,                      
        .set_byte_mask                  = &dr_ste_v1_set_byte_mask,                      │          .set_byte_mask                  = &dr_ste_v1_set_byte_mask,                     
        .get_byte_mask                  = &dr_ste_v1_get_byte_mask,                      │          .get_byte_mask                  = &dr_ste_v1_get_byte_mask,                     
                                                                                         │                                                                                          
        /* Actions */                                                                    │          /* Actions */                                                                   
        .actions_caps                   = DR_STE_CTX_ACTION_CAP_TX_POP |                 │          .actions_caps                   = DR_STE_CTX_ACTION_CAP_TX_POP |                
                                          DR_STE_CTX_ACTION_CAP_RX_PUSH |                │                                            DR_STE_CTX_ACTION_CAP_RX_PUSH |               
                                          DR_STE_CTX_ACTION_CAP_RX_ENCAP,                │                                            DR_STE_CTX_ACTION_CAP_RX_ENCAP |              
                                                                                         │                                            DR_STE_CTX_ACTION_CAP_POP_MDFY,               
        .set_actions_rx                 = &dr_ste_v1_set_actions_rx,                     │          .set_actions_rx                 = &dr_ste_v1_set_actions_rx,                    
        .set_actions_tx                 = &dr_ste_v1_set_actions_tx,                     │          .set_actions_tx                 = &dr_ste_v1_set_actions_tx,                    
        .modify_field_arr_sz            = ARRAY_SIZE(dr_ste_v2_action_modify_field_arr), │          .modify_field_arr_sz            = ARRAY_SIZE(dr_ste_v1_action_modify_field_arr),
        .modify_field_arr               = dr_ste_v2_action_modify_field_arr,             │          .modify_field_arr               = dr_ste_v1_action_modify_field_arr,            
        .set_action_set                 = &dr_ste_v1_set_action_set,                     │          .set_action_set                 = &dr_ste_v1_set_action_set,                    
        .set_action_add                 = &dr_ste_v1_set_action_add,                     │          .set_action_add                 = &dr_ste_v1_set_action_add,                    
        .set_action_copy                = &dr_ste_v1_set_action_copy,                    │          .set_action_copy                = &dr_ste_v1_set_action_copy,                   
        .set_action_decap_l3_list       = &dr_ste_v1_set_action_decap_l3_list,           │          .set_action_decap_l3_list       = &dr_ste_v1_set_action_decap_l3_list,          
                                                                                         │                                                                                          
        /* Send */                                                                       │          /* Send */                                                                      
        .prepare_for_postsend           = &dr_ste_v1_prepare_for_postsend,               │          .prepare_for_postsend           = &dr_ste_v1_prepare_for_postsend,              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c:636                               │ linux/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c:762                                
                                                                                         │                                                                                          
                                                                                         │          struct iavf_vlan_filter *f, *ftmp;                                              
        int len, i = 0, count = 0;                                                       │          int len, i = 0, count = 0;                                                      
        struct iavf_vlan_filter *f;                                                      │                                                                                          
        bool more = false;                                                               │          bool more = false;                                                              
                                                                                         │                                                                                          
        if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) {                                │          if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) {                               
                /* bail because we already have a command pending */                     │                  /* bail because we already have a command pending */                    
                dev_err(&adapter->pdev->dev, "Cannot add VLANs, command %d pending\n",   │                  dev_err(&adapter->pdev->dev, "Cannot remove VLANs, command %d pending\n"
                        adapter->current_op);                                            │                          adapter->current_op);                                           
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        spin_lock_bh(&adapter->mac_vlan_list_lock);                                      │          spin_lock_bh(&adapter->mac_vlan_list_lock);                                     
                                                                                         │                                                                                          
        list_for_each_entry(f, &adapter->vlan_filter_list, list) {                       │          list_for_each_entry_safe(f, ftmp, &adapter->vlan_filter_list, list) {           
                if (f->add)                                                              │                  /* since VLAN capabilities are not allowed, we dont want to send        
                                                                                         │                   * a VLAN delete request because it will most likely fail and           
                                                                                         │                   * create unnecessary errors/noise, so just free the VLAN               
                                                                                         │                   * filters marked for removal to enable bailing out before              
                                                                                         │                   * sending a virtchnl message                                           
                                                                                         │                   */                                                                     
                                                                                         │                  if (f->remove && !VLAN_FILTERING_ALLOWED(adapter)) {                    
                                                                                         │                          list_del(&f->list);                                             
                                                                                         │                          kfree(f);                                                       
                                                                                         │                  } else if (f->remove) {                                                 
                        count++;                                                         │                          count++;                                                        
                                                                                         │                  }                                                                       
        }                                                                                │          }                                                                               
        if (!count || !VLAN_FILTERING_ALLOWED(adapter)) {                                │          if (!count || !VLAN_FILTERING_ALLOWED(adapter)) {                               
                adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_VLAN_FILTER;                   │                  adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_VLAN_FILTER;                  
                spin_unlock_bh(&adapter->mac_vlan_list_lock);                            │                  spin_unlock_bh(&adapter->mac_vlan_list_lock);                           
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (VLAN_ALLOWED(adapter)) {                                                     │          if (VLAN_ALLOWED(adapter)) {                                                    
                struct virtchnl_vlan_filter_list *vvfl;                                  │                  struct virtchnl_vlan_filter_list *vvfl;                                 
                                                                                         │                                                                                          
                adapter->current_op = VIRTCHNL_OP_ADD_VLAN;                              │                  adapter->current_op = VIRTCHNL_OP_DEL_VLAN;                             
                                                                                         │                                                                                          
                len = sizeof(*vvfl) + (count * sizeof(u16));                             │                  len = sizeof(*vvfl) + (count * sizeof(u16));                            
                if (len > IAVF_MAX_AQ_BUF_SIZE) {                                        │                  if (len > IAVF_MAX_AQ_BUF_SIZE) {                                       
                        dev_warn(&adapter->pdev->dev, "Too many add VLAN changes in one  │                          dev_warn(&adapter->pdev->dev, "Too many delete VLAN changes in o
                        count = (IAVF_MAX_AQ_BUF_SIZE - sizeof(*vvfl)) /                 │                          count = (IAVF_MAX_AQ_BUF_SIZE - sizeof(*vvfl)) /                
                                sizeof(u16);                                             │                                  sizeof(u16);                                            
                        len = sizeof(*vvfl) + (count * sizeof(u16));                     │                          len = sizeof(*vvfl) + (count * sizeof(u16));                    
                        more = true;                                                     │                          more = true;                                                    
                }                                                                        │                  }                                                                       
                vvfl = kzalloc(len, GFP_ATOMIC);                                         │                  vvfl = kzalloc(len, GFP_ATOMIC);                                        
                if (!vvfl) {                                                             │                  if (!vvfl) {                                                            
                        spin_unlock_bh(&adapter->mac_vlan_list_lock);                    │                          spin_unlock_bh(&adapter->mac_vlan_list_lock);                   
                        return;                                                          │                          return;                                                         
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                vvfl->vsi_id = adapter->vsi_res->vsi_id;                                 │                  vvfl->vsi_id = adapter->vsi_res->vsi_id;                                
                vvfl->num_elements = count;                                              │                  vvfl->num_elements = count;                                             
                list_for_each_entry(f, &adapter->vlan_filter_list, list) {               │                  list_for_each_entry_safe(f, ftmp, &adapter->vlan_filter_list, list) {   
                        if (f->add) {                                                    │                          if (f->remove) {                                                
                                vvfl->vlan_id[i] = f->vlan.vid;                          │                                  vvfl->vlan_id[i] = f->vlan.vid;                         
                                i++;                                                     │                                  i++;                                                    
                                f->add = false;                                          │                                  list_del(&f->list);                                     
                                                                                         │                                  kfree(f);                                               
                                if (i == count)                                          │                                  if (i == count)                                         
                                        break;                                           │                                          break;                                          
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (!more)                                                               │                  if (!more)                                                              
                        adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_VLAN_FILTER;           │                          adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_VLAN_FILTER;          
                                                                                         │                                                                                          
                spin_unlock_bh(&adapter->mac_vlan_list_lock);                            │                  spin_unlock_bh(&adapter->mac_vlan_list_lock);                           
                                                                                         │                                                                                          
                iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_VLAN, (u8 *)vvfl, len);        │                  iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_VLAN, (u8 *)vvfl, len);       
                kfree(vvfl);                                                             │                  kfree(vvfl);                                                            
        } else {                                                                         │          } else {                                                                        
                struct virtchnl_vlan_filter_list_v2 *vvfl_v2;                            │                  struct virtchnl_vlan_filter_list_v2 *vvfl_v2;                           
                                                                                         │                                                                                          
                adapter->current_op = VIRTCHNL_OP_ADD_VLAN_V2;                           │                  adapter->current_op = VIRTCHNL_OP_DEL_VLAN_V2;                          
                                                                                         │                                                                                          
                len = sizeof(*vvfl_v2) + ((count - 1) *                                  │                  len = sizeof(*vvfl_v2) +                                                
                                          sizeof(struct virtchnl_vlan_filter));          │                          ((count - 1) * sizeof(struct virtchnl_vlan_filter));            
                if (len > IAVF_MAX_AQ_BUF_SIZE) {                                        │                  if (len > IAVF_MAX_AQ_BUF_SIZE) {                                       
                        dev_warn(&adapter->pdev->dev, "Too many add VLAN changes in one  │                          dev_warn(&adapter->pdev->dev, "Too many add VLAN changes in one 
                        count = (IAVF_MAX_AQ_BUF_SIZE - sizeof(*vvfl_v2)) /              │                          count = (IAVF_MAX_AQ_BUF_SIZE -                                 
                                                                                         │                                   sizeof(*vvfl_v2)) /                                    
                                sizeof(struct virtchnl_vlan_filter);                     │                                  sizeof(struct virtchnl_vlan_filter);                    
                        len = sizeof(*vvfl_v2) +                                         │                          len = sizeof(*vvfl_v2) +                                        
                                ((count - 1) *                                           │                                  ((count - 1) *                                          
                                 sizeof(struct virtchnl_vlan_filter));                   │                                   sizeof(struct virtchnl_vlan_filter));                  
                        more = true;                                                     │                          more = true;                                                    
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                vvfl_v2 = kzalloc(len, GFP_ATOMIC);                                      │                  vvfl_v2 = kzalloc(len, GFP_ATOMIC);                                     
                if (!vvfl_v2) {                                                          │                  if (!vvfl_v2) {                                                         
                        spin_unlock_bh(&adapter->mac_vlan_list_lock);                    │                          spin_unlock_bh(&adapter->mac_vlan_list_lock);                   
                        return;                                                          │                          return;                                                         
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                vvfl_v2->vport_id = adapter->vsi_res->vsi_id;                            │                  vvfl_v2->vport_id = adapter->vsi_res->vsi_id;                           
                vvfl_v2->num_elements = count;                                           │                  vvfl_v2->num_elements = count;                                          
                list_for_each_entry(f, &adapter->vlan_filter_list, list) {               │                  list_for_each_entry_safe(f, ftmp, &adapter->vlan_filter_list, list) {   
                        if (f->add) {                                                    │                          if (f->remove) {                                                
                                struct virtchnl_vlan_supported_caps *filtering_support = │                                  struct virtchnl_vlan_supported_caps *filtering_support =
                                        &adapter->vlan_v2_caps.filtering.filtering_suppo │                                          &adapter->vlan_v2_caps.filtering.filtering_suppo
                                struct virtchnl_vlan *vlan;                              │                                  struct virtchnl_vlan *vlan;                             
                                                                                         │                                                                                          
                                /* give priority over outer if it's enabled */           │                                  /* give priority over outer if it's enabled */          
                                if (filtering_support->outer)                            │                                  if (filtering_support->outer)                           
                                        vlan = &vvfl_v2->filters[i].outer;               │                                          vlan = &vvfl_v2->filters[i].outer;              
                                else                                                     │                                  else                                                    
                                        vlan = &vvfl_v2->filters[i].inner;               │                                          vlan = &vvfl_v2->filters[i].inner;              
                                                                                         │                                                                                          
                                vlan->tci = f->vlan.vid;                                 │                                  vlan->tci = f->vlan.vid;                                
                                vlan->tpid = f->vlan.tpid;                               │                                  vlan->tpid = f->vlan.tpid;                              
                                                                                         │                                                                                          
                                                                                         │                                  list_del(&f->list);                                     
                                                                                         │                                  kfree(f);                                               
                                i++;                                                     │                                  i++;                                                    
                                f->add = false;                                          │                                                                                          
                                if (i == count)                                          │                                  if (i == count)                                         
                                        break;                                           │                                          break;                                          
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (!more)                                                               │                  if (!more)                                                              
                        adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_VLAN_FILTER;           │                          adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_VLAN_FILTER;          
                                                                                         │                                                                                          
                spin_unlock_bh(&adapter->mac_vlan_list_lock);                            │                  spin_unlock_bh(&adapter->mac_vlan_list_lock);                           
                                                                                         │                                                                                          
                iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_VLAN_V2,                       │                  iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_VLAN_V2,                      
                                 (u8 *)vvfl_v2, len);                                    │                                   (u8 *)vvfl_v2, len);                                   
                kfree(vvfl_v2);                                                          │                  kfree(vvfl_v2);                                                         
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/farch.c:1664                                      │ linux/drivers/net/ethernet/sfc/farch.c:1730                                              
                                                                                         │                                                                                          
        ef4_oword_t temp;                                                                │          efx_oword_t temp;                                                               
                                                                                         │                                                                                          
        /* Set positions of descriptor caches in SRAM. */                                │          /* Set positions of descriptor caches in SRAM. */                               
        EF4_POPULATE_OWORD_1(temp, FRF_AZ_SRM_TX_DC_BASE_ADR, efx->tx_dc_base);          │          EFX_POPULATE_OWORD_1(temp, FRF_AZ_SRM_TX_DC_BASE_ADR, efx->tx_dc_base);         
        ef4_writeo(efx, &temp, FR_AZ_SRM_TX_DC_CFG);                                     │          efx_writeo(efx, &temp, FR_AZ_SRM_TX_DC_CFG);                                    
        EF4_POPULATE_OWORD_1(temp, FRF_AZ_SRM_RX_DC_BASE_ADR, efx->rx_dc_base);          │          EFX_POPULATE_OWORD_1(temp, FRF_AZ_SRM_RX_DC_BASE_ADR, efx->rx_dc_base);         
        ef4_writeo(efx, &temp, FR_AZ_SRM_RX_DC_CFG);                                     │          efx_writeo(efx, &temp, FR_AZ_SRM_RX_DC_CFG);                                    
                                                                                         │                                                                                          
        /* Set TX descriptor cache size. */                                              │          /* Set TX descriptor cache size. */                                             
        BUILD_BUG_ON(TX_DC_ENTRIES != (8 << TX_DC_ENTRIES_ORDER));                       │          BUILD_BUG_ON(TX_DC_ENTRIES != (8 << TX_DC_ENTRIES_ORDER));                      
        EF4_POPULATE_OWORD_1(temp, FRF_AZ_TX_DC_SIZE, TX_DC_ENTRIES_ORDER);              │          EFX_POPULATE_OWORD_1(temp, FRF_AZ_TX_DC_SIZE, TX_DC_ENTRIES_ORDER);             
        ef4_writeo(efx, &temp, FR_AZ_TX_DC_CFG);                                         │          efx_writeo(efx, &temp, FR_AZ_TX_DC_CFG);                                        
                                                                                         │                                                                                          
        /* Set RX descriptor cache size.  Set low watermark to size-8, as                │          /* Set RX descriptor cache size.  Set low watermark to size-8, as               
         * this allows most efficient prefetching.                                       │           * this allows most efficient prefetching.                                      
         */                                                                              │           */                                                                             
        BUILD_BUG_ON(RX_DC_ENTRIES != (8 << RX_DC_ENTRIES_ORDER));                       │          BUILD_BUG_ON(RX_DC_ENTRIES != (8 << RX_DC_ENTRIES_ORDER));                      
        EF4_POPULATE_OWORD_1(temp, FRF_AZ_RX_DC_SIZE, RX_DC_ENTRIES_ORDER);              │          EFX_POPULATE_OWORD_1(temp, FRF_AZ_RX_DC_SIZE, RX_DC_ENTRIES_ORDER);             
        ef4_writeo(efx, &temp, FR_AZ_RX_DC_CFG);                                         │          efx_writeo(efx, &temp, FR_AZ_RX_DC_CFG);                                        
        EF4_POPULATE_OWORD_1(temp, FRF_AZ_RX_DC_PF_LWM, RX_DC_ENTRIES - 8);              │          EFX_POPULATE_OWORD_1(temp, FRF_AZ_RX_DC_PF_LWM, RX_DC_ENTRIES - 8);             
        ef4_writeo(efx, &temp, FR_AZ_RX_DC_PF_WM);                                       │          efx_writeo(efx, &temp, FR_AZ_RX_DC_PF_WM);                                      
                                                                                         │                                                                                          
        /* Program INT_KER address */                                                    │          /* Program INT_KER address */                                                   
        EF4_POPULATE_OWORD_2(temp,                                                       │          EFX_POPULATE_OWORD_2(temp,                                                      
                             FRF_AZ_NORM_INT_VEC_DIS_KER,                                │                               FRF_AZ_NORM_INT_VEC_DIS_KER,                               
                             EF4_INT_MODE_USE_MSI(efx),                                  │                               EFX_INT_MODE_USE_MSI(efx),                                 
                             FRF_AZ_INT_ADR_KER, efx->irq_status.dma_addr);              │                               FRF_AZ_INT_ADR_KER, efx->irq_status.dma_addr);             
        ef4_writeo(efx, &temp, FR_AZ_INT_ADR_KER);                                       │          efx_writeo(efx, &temp, FR_AZ_INT_ADR_KER);                                      
                                                                                         │                                                                                          
        /* Use a valid MSI-X vector */                                                   │          if (EFX_WORKAROUND_17213(efx) && !EFX_INT_MODE_USE_MSI(efx))                    
        efx->irq_level = 0;                                                              │                  /* Use an interrupt level unused by event queues */                     
                                                                                         │                  efx->irq_level = 0x1f;                                                  
                                                                                         │          else                                                                            
                                                                                         │                  /* Use a valid MSI-X vector */                                          
                                                                                         │                  efx->irq_level = 0;                                                     
                                                                                         │                                                                                          
        /* Enable all the genuinely fatal interrupts.  (They are still                   │          /* Enable all the genuinely fatal interrupts.  (They are still                  
         * masked by the overall interrupt mask, controlled by                           │           * masked by the overall interrupt mask, controlled by                          
         * falcon_interrupts()).                                                         │           * falcon_interrupts()).                                                        
         *                                                                               │           *                                                                              
         * Note: All other fatal interrupts are enabled                                  │           * Note: All other fatal interrupts are enabled                                 
         */                                                                              │           */                                                                             
        EF4_POPULATE_OWORD_3(temp,                                                       │          EFX_POPULATE_OWORD_3(temp,                                                      
                             FRF_AZ_ILL_ADR_INT_KER_EN, 1,                               │                               FRF_AZ_ILL_ADR_INT_KER_EN, 1,                              
                             FRF_AZ_RBUF_OWN_INT_KER_EN, 1,                              │                               FRF_AZ_RBUF_OWN_INT_KER_EN, 1,                             
                             FRF_AZ_TBUF_OWN_INT_KER_EN, 1);                             │                               FRF_AZ_TBUF_OWN_INT_KER_EN, 1);                            
        EF4_INVERT_OWORD(temp);                                                          │          EFX_SET_OWORD_FIELD(temp, FRF_CZ_SRAM_PERR_INT_P_KER_EN, 1);                    
        ef4_writeo(efx, &temp, FR_AZ_FATAL_INTR_KER);                                    │          EFX_INVERT_OWORD(temp);                                                         
                                                                                         │          efx_writeo(efx, &temp, FR_AZ_FATAL_INTR_KER);                                   
                                                                                         │                                                                                          
        /* Disable the ugly timer-based TX DMA backoff and allow TX DMA to be            │          /* Disable the ugly timer-based TX DMA backoff and allow TX DMA to be           
         * controlled by the RX FIFO fill level. Set arbitration to one pkt/Q.           │           * controlled by the RX FIFO fill level. Set arbitration to one pkt/Q.          
         */                                                                              │           */                                                                             
        ef4_reado(efx, &temp, FR_AZ_TX_RESERVED);                                        │          efx_reado(efx, &temp, FR_AZ_TX_RESERVED);                                       
        EF4_SET_OWORD_FIELD(temp, FRF_AZ_TX_RX_SPACER, 0xfe);                            │          EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_RX_SPACER, 0xfe);                           
        EF4_SET_OWORD_FIELD(temp, FRF_AZ_TX_RX_SPACER_EN, 1);                            │          EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_RX_SPACER_EN, 1);                           
        EF4_SET_OWORD_FIELD(temp, FRF_AZ_TX_ONE_PKT_PER_Q, 1);                           │          EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_ONE_PKT_PER_Q, 1);                          
        EF4_SET_OWORD_FIELD(temp, FRF_AZ_TX_PUSH_EN, 1);                                 │          EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_PUSH_EN, 1);                                
        EF4_SET_OWORD_FIELD(temp, FRF_AZ_TX_DIS_NON_IP_EV, 1);                           │          EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_DIS_NON_IP_EV, 1);                          
        /* Enable SW_EV to inherit in char driver - assume harmless here */              │          /* Enable SW_EV to inherit in char driver - assume harmless here */             
        EF4_SET_OWORD_FIELD(temp, FRF_AZ_TX_SOFT_EVT_EN, 1);                             │          EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_SOFT_EVT_EN, 1);                            
        /* Prefetch threshold 2 => fetch when descriptor cache half empty */             │          /* Prefetch threshold 2 => fetch when descriptor cache half empty */            
        EF4_SET_OWORD_FIELD(temp, FRF_AZ_TX_PREF_THRESHOLD, 2);                          │          EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_PREF_THRESHOLD, 2);                         
        /* Disable hardware watchdog which can misfire */                                │          /* Disable hardware watchdog which can misfire */                               
        EF4_SET_OWORD_FIELD(temp, FRF_AZ_TX_PREF_WD_TMR, 0x3fffff);                      │          EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_PREF_WD_TMR, 0x3fffff);                     
        /* Squash TX of packets of 16 bytes or less */                                   │          /* Squash TX of packets of 16 bytes or less */                                  
        if (ef4_nic_rev(efx) >= EF4_REV_FALCON_B0)                                       │          EFX_SET_OWORD_FIELD(temp, FRF_BZ_TX_FLUSH_MIN_LEN_EN, 1);                       
                EF4_SET_OWORD_FIELD(temp, FRF_BZ_TX_FLUSH_MIN_LEN_EN, 1);                │          efx_writeo(efx, &temp, FR_AZ_TX_RESERVED);                                      
        ef4_writeo(efx, &temp, FR_AZ_TX_RESERVED);                                       │                                                                                          
                                                                                         │          EFX_POPULATE_OWORD_4(temp,                                                      
        if (ef4_nic_rev(efx) >= EF4_REV_FALCON_B0) {                                     │                               /* Default values */                                       
                EF4_POPULATE_OWORD_4(temp,                                               │                               FRF_BZ_TX_PACE_SB_NOT_AF, 0x15,                            
                                     /* Default values */                                │                               FRF_BZ_TX_PACE_SB_AF, 0xb,                                 
                                     FRF_BZ_TX_PACE_SB_NOT_AF, 0x15,                     │                               FRF_BZ_TX_PACE_FB_BASE, 0,                                 
                                     FRF_BZ_TX_PACE_SB_AF, 0xb,                          │                               /* Allow large pace values in the fast bin. */             
                                     FRF_BZ_TX_PACE_FB_BASE, 0,                          │                               FRF_BZ_TX_PACE_BIN_TH,                                     
                                     /* Allow large pace values in the                   │                               FFE_BZ_TX_PACE_RESERVED);                                  
                                      * fast bin. */                                     │          efx_writeo(efx, &temp, FR_BZ_TX_PACE);                                          
                                     FRF_BZ_TX_PACE_BIN_TH,                              │                                                                                          
                                     FFE_BZ_TX_PACE_RESERVED);                           │                                                                                          
                ef4_writeo(efx, &temp, FR_BZ_TX_PACE);                                   │                                                                                          
        }                                                                                │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:971                                              │ linux/drivers/net/ethernet/sfc/falcon/farch.c:980                                        
                                                                                         │                                                                                          
        unsigned int rx_ev_desc_ptr, rx_ev_byte_cnt;                                     │          unsigned int rx_ev_desc_ptr, rx_ev_byte_cnt;                                    
        unsigned int rx_ev_hdr_type, rx_ev_mcast_pkt;                                    │          unsigned int rx_ev_hdr_type, rx_ev_mcast_pkt;                                   
        unsigned expected_ptr;                                                           │          unsigned expected_ptr;                                                          
        bool rx_ev_pkt_ok, rx_ev_sop, rx_ev_cont;                                        │          bool rx_ev_pkt_ok, rx_ev_sop, rx_ev_cont;                                       
        u16 flags;                                                                       │          u16 flags;                                                                      
        struct efx_rx_queue *rx_queue;                                                   │          struct ef4_rx_queue *rx_queue;                                                  
        struct efx_nic *efx = channel->efx;                                              │          struct ef4_nic *efx = channel->efx;                                             
                                                                                         │                                                                                          
        if (unlikely(READ_ONCE(efx->reset_pending)))                                     │          if (unlikely(READ_ONCE(efx->reset_pending)))                                    
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        rx_ev_cont = EFX_QWORD_FIELD(*event, FSF_AZ_RX_EV_JUMBO_CONT);                   │          rx_ev_cont = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_JUMBO_CONT);                  
        rx_ev_sop = EFX_QWORD_FIELD(*event, FSF_AZ_RX_EV_SOP);                           │          rx_ev_sop = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_SOP);                          
        WARN_ON(EFX_QWORD_FIELD(*event, FSF_AZ_RX_EV_Q_LABEL) !=                         │          WARN_ON(EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_Q_LABEL) !=                        
                channel->channel);                                                       │                  channel->channel);                                                      
                                                                                         │                                                                                          
        rx_queue = efx_channel_get_rx_queue(channel);                                    │          rx_queue = ef4_channel_get_rx_queue(channel);                                   
                                                                                         │                                                                                          
        rx_ev_desc_ptr = EFX_QWORD_FIELD(*event, FSF_AZ_RX_EV_DESC_PTR);                 │          rx_ev_desc_ptr = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_DESC_PTR);                
        expected_ptr = ((rx_queue->removed_count + rx_queue->scatter_n) &                │          expected_ptr = ((rx_queue->removed_count + rx_queue->scatter_n) &               
                        rx_queue->ptr_mask);                                             │                          rx_queue->ptr_mask);                                            
                                                                                         │                                                                                          
        /* Check for partial drops and other errors */                                   │          /* Check for partial drops and other errors */                                  
        if (unlikely(rx_ev_desc_ptr != expected_ptr) ||                                  │          if (unlikely(rx_ev_desc_ptr != expected_ptr) ||                                 
            unlikely(rx_ev_sop != (rx_queue->scatter_n == 0))) {                         │              unlikely(rx_ev_sop != (rx_queue->scatter_n == 0))) {                        
                if (rx_ev_desc_ptr != expected_ptr &&                                    │                  if (rx_ev_desc_ptr != expected_ptr &&                                   
                    !efx_farch_handle_rx_bad_index(rx_queue, rx_ev_desc_ptr))            │                      !ef4_farch_handle_rx_bad_index(rx_queue, rx_ev_desc_ptr))           
                        return;                                                          │                          return;                                                         
                                                                                         │                                                                                          
                /* Discard all pending fragments */                                      │                  /* Discard all pending fragments */                                     
                if (rx_queue->scatter_n) {                                               │                  if (rx_queue->scatter_n) {                                              
                        efx_rx_packet(                                                   │                          ef4_rx_packet(                                                  
                                rx_queue,                                                │                                  rx_queue,                                               
                                rx_queue->removed_count & rx_queue->ptr_mask,            │                                  rx_queue->removed_count & rx_queue->ptr_mask,           
                                rx_queue->scatter_n, 0, EFX_RX_PKT_DISCARD);             │                                  rx_queue->scatter_n, 0, EF4_RX_PKT_DISCARD);            
                        rx_queue->removed_count += rx_queue->scatter_n;                  │                          rx_queue->removed_count += rx_queue->scatter_n;                 
                        rx_queue->scatter_n = 0;                                         │                          rx_queue->scatter_n = 0;                                        
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* Return if there is no new fragment */                                 │                  /* Return if there is no new fragment */                                
                if (rx_ev_desc_ptr != expected_ptr)                                      │                  if (rx_ev_desc_ptr != expected_ptr)                                     
                        return;                                                          │                          return;                                                         
                                                                                         │                                                                                          
                /* Discard new fragment if not SOP */                                    │                  /* Discard new fragment if not SOP */                                   
                if (!rx_ev_sop) {                                                        │                  if (!rx_ev_sop) {                                                       
                        efx_rx_packet(                                                   │                          ef4_rx_packet(                                                  
                                rx_queue,                                                │                                  rx_queue,                                               
                                rx_queue->removed_count & rx_queue->ptr_mask,            │                                  rx_queue->removed_count & rx_queue->ptr_mask,           
                                1, 0, EFX_RX_PKT_DISCARD);                               │                                  1, 0, EF4_RX_PKT_DISCARD);                              
                        ++rx_queue->removed_count;                                       │                          ++rx_queue->removed_count;                                      
                        return;                                                          │                          return;                                                         
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ++rx_queue->scatter_n;                                                           │          ++rx_queue->scatter_n;                                                          
        if (rx_ev_cont)                                                                  │          if (rx_ev_cont)                                                                 
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        rx_ev_byte_cnt = EFX_QWORD_FIELD(*event, FSF_AZ_RX_EV_BYTE_CNT);                 │          rx_ev_byte_cnt = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_BYTE_CNT);                
        rx_ev_pkt_ok = EFX_QWORD_FIELD(*event, FSF_AZ_RX_EV_PKT_OK);                     │          rx_ev_pkt_ok = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_PKT_OK);                    
        rx_ev_hdr_type = EFX_QWORD_FIELD(*event, FSF_AZ_RX_EV_HDR_TYPE);                 │          rx_ev_hdr_type = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_HDR_TYPE);                
                                                                                         │                                                                                          
        if (likely(rx_ev_pkt_ok)) {                                                      │          if (likely(rx_ev_pkt_ok)) {                                                     
                /* If packet is marked as OK then we can rely on the                     │                  /* If packet is marked as OK then we can rely on the                    
                 * hardware checksum and classification.                                 │                   * hardware checksum and classification.                                
                 */                                                                      │                   */                                                                     
                flags = 0;                                                               │                  flags = 0;                                                              
                switch (rx_ev_hdr_type) {                                                │                  switch (rx_ev_hdr_type) {                                               
                case FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_TCP:                                   │                  case FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_TCP:                                  
                        flags |= EFX_RX_PKT_TCP;                                         │                          flags |= EF4_RX_PKT_TCP;                                        
                        fallthrough;                                                     │                          fallthrough;                                                    
                case FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_UDP:                                   │                  case FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_UDP:                                  
                        flags |= EFX_RX_PKT_CSUMMED;                                     │                          flags |= EF4_RX_PKT_CSUMMED;                                    
                        fallthrough;                                                     │                          fallthrough;                                                    
                case FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_OTHER:                                 │                  case FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_OTHER:                                
                case FSE_AZ_RX_EV_HDR_TYPE_OTHER:                                        │                  case FSE_AZ_RX_EV_HDR_TYPE_OTHER:                                       
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
        } else {                                                                         │          } else {                                                                        
                flags = efx_farch_handle_rx_not_ok(rx_queue, event);                     │                  flags = ef4_farch_handle_rx_not_ok(rx_queue, event);                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Detect multicast packets that didn't match the filter */                      │          /* Detect multicast packets that didn't match the filter */                     
        rx_ev_mcast_pkt = EFX_QWORD_FIELD(*event, FSF_AZ_RX_EV_MCAST_PKT);               │          rx_ev_mcast_pkt = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_MCAST_PKT);              
        if (rx_ev_mcast_pkt) {                                                           │          if (rx_ev_mcast_pkt) {                                                          
                unsigned int rx_ev_mcast_hash_match =                                    │                  unsigned int rx_ev_mcast_hash_match =                                   
                        EFX_QWORD_FIELD(*event, FSF_AZ_RX_EV_MCAST_HASH_MATCH);          │                          EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_MCAST_HASH_MATCH);         
                                                                                         │                                                                                          
                if (unlikely(!rx_ev_mcast_hash_match)) {                                 │                  if (unlikely(!rx_ev_mcast_hash_match)) {                                
                        ++channel->n_rx_mcast_mismatch;                                  │                          ++channel->n_rx_mcast_mismatch;                                 
                        flags |= EFX_RX_PKT_DISCARD;                                     │                          flags |= EF4_RX_PKT_DISCARD;                                    
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        channel->irq_mod_score += 2;                                                     │          channel->irq_mod_score += 2;                                                    
                                                                                         │                                                                                          
        /* Handle received packet */                                                     │          /* Handle received packet */                                                    
        efx_rx_packet(rx_queue,                                                          │          ef4_rx_packet(rx_queue,                                                         
                      rx_queue->removed_count & rx_queue->ptr_mask,                      │                        rx_queue->removed_count & rx_queue->ptr_mask,                     
                      rx_queue->scatter_n, rx_ev_byte_cnt, flags);                       │                        rx_queue->scatter_n, rx_ev_byte_cnt, flags);                      
        rx_queue->removed_count += rx_queue->scatter_n;                                  │          rx_queue->removed_count += rx_queue->scatter_n;                                 
        rx_queue->scatter_n = 0;                                                         │          rx_queue->scatter_n = 0;                                                        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_ethtool.c:589                                  │ linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:883                                   
                                                                                         │                                                                                          
        struct igc_adapter *adapter = netdev_priv(netdev);                               │          struct igb_adapter *adapter = netdev_priv(netdev);                              
        struct igc_ring *temp_ring;                                                      │          struct igb_ring *temp_ring;                                                     
        u16 new_rx_count, new_tx_count;                                                  │                                                                                          
        int i, err = 0;                                                                  │          int i, err = 0;                                                                 
                                                                                         │          u16 new_rx_count, new_tx_count;                                                 
                                                                                         │                                                                                          
        if (ring->rx_mini_pending || ring->rx_jumbo_pending)                             │          if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))                        
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        new_rx_count = min_t(u32, ring->rx_pending, IGC_MAX_RXD);                        │          new_rx_count = min_t(u32, ring->rx_pending, IGB_MAX_RXD);                       
        new_rx_count = max_t(u16, new_rx_count, IGC_MIN_RXD);                            │          new_rx_count = max_t(u16, new_rx_count, IGB_MIN_RXD);                           
        new_rx_count = ALIGN(new_rx_count, REQ_RX_DESCRIPTOR_MULTIPLE);                  │          new_rx_count = ALIGN(new_rx_count, REQ_RX_DESCRIPTOR_MULTIPLE);                 
                                                                                         │                                                                                          
        new_tx_count = min_t(u32, ring->tx_pending, IGC_MAX_TXD);                        │          new_tx_count = min_t(u32, ring->tx_pending, IGB_MAX_TXD);                       
        new_tx_count = max_t(u16, new_tx_count, IGC_MIN_TXD);                            │          new_tx_count = max_t(u16, new_tx_count, IGB_MIN_TXD);                           
        new_tx_count = ALIGN(new_tx_count, REQ_TX_DESCRIPTOR_MULTIPLE);                  │          new_tx_count = ALIGN(new_tx_count, REQ_TX_DESCRIPTOR_MULTIPLE);                 
                                                                                         │                                                                                          
        if (new_tx_count == adapter->tx_ring_count &&                                    │          if ((new_tx_count == adapter->tx_ring_count) &&                                 
            new_rx_count == adapter->rx_ring_count) {                                    │              (new_rx_count == adapter->rx_ring_count)) {                                 
                /* nothing to do */                                                      │                  /* nothing to do */                                                     
                return 0;                                                                │                  return 0;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        while (test_and_set_bit(__IGC_RESETTING, &adapter->state))                       │          while (test_and_set_bit(__IGB_RESETTING, &adapter->state))                      
                usleep_range(1000, 2000);                                                │                  usleep_range(1000, 2000);                                               
                                                                                         │                                                                                          
        if (!netif_running(adapter->netdev)) {                                           │          if (!netif_running(adapter->netdev)) {                                          
                for (i = 0; i < adapter->num_tx_queues; i++)                             │                  for (i = 0; i < adapter->num_tx_queues; i++)                            
                        adapter->tx_ring[i]->count = new_tx_count;                       │                          adapter->tx_ring[i]->count = new_tx_count;                      
                for (i = 0; i < adapter->num_rx_queues; i++)                             │                  for (i = 0; i < adapter->num_rx_queues; i++)                            
                        adapter->rx_ring[i]->count = new_rx_count;                       │                          adapter->rx_ring[i]->count = new_rx_count;                      
                adapter->tx_ring_count = new_tx_count;                                   │                  adapter->tx_ring_count = new_tx_count;                                  
                adapter->rx_ring_count = new_rx_count;                                   │                  adapter->rx_ring_count = new_rx_count;                                  
                goto clear_reset;                                                        │                  goto clear_reset;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (adapter->num_tx_queues > adapter->num_rx_queues)                             │          if (adapter->num_tx_queues > adapter->num_rx_queues)                            
                temp_ring = vmalloc(array_size(sizeof(struct igc_ring),                  │                  temp_ring = vmalloc(array_size(sizeof(struct igb_ring),                 
                                               adapter->num_tx_queues));                 │                                                 adapter->num_tx_queues));                
        else                                                                             │          else                                                                            
                temp_ring = vmalloc(array_size(sizeof(struct igc_ring),                  │                  temp_ring = vmalloc(array_size(sizeof(struct igb_ring),                 
                                               adapter->num_rx_queues));                 │                                                 adapter->num_rx_queues));                
                                                                                         │                                                                                          
        if (!temp_ring) {                                                                │          if (!temp_ring) {                                                               
                err = -ENOMEM;                                                           │                  err = -ENOMEM;                                                          
                goto clear_reset;                                                        │                  goto clear_reset;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        igc_down(adapter);                                                               │          igb_down(adapter);                                                              
                                                                                         │                                                                                          
        /* We can't just free everything and then setup again,                           │          /* We can't just free everything and then setup again,                          
         * because the ISRs in MSI-X mode get passed pointers                            │           * because the ISRs in MSI-X mode get passed pointers                           
         * to the Tx and Rx ring structs.                                                │           * to the Tx and Rx ring structs.                                               
         */                                                                              │           */                                                                             
        if (new_tx_count != adapter->tx_ring_count) {                                    │          if (new_tx_count != adapter->tx_ring_count) {                                   
                for (i = 0; i < adapter->num_tx_queues; i++) {                           │                  for (i = 0; i < adapter->num_tx_queues; i++) {                          
                        memcpy(&temp_ring[i], adapter->tx_ring[i],                       │                          memcpy(&temp_ring[i], adapter->tx_ring[i],                      
                               sizeof(struct igc_ring));                                 │                                 sizeof(struct igb_ring));                                
                                                                                         │                                                                                          
                        temp_ring[i].count = new_tx_count;                               │                          temp_ring[i].count = new_tx_count;                              
                        err = igc_setup_tx_resources(&temp_ring[i]);                     │                          err = igb_setup_tx_resources(&temp_ring[i]);                    
                        if (err) {                                                       │                          if (err) {                                                      
                                while (i) {                                              │                                  while (i) {                                             
                                        i--;                                             │                                          i--;                                            
                                        igc_free_tx_resources(&temp_ring[i]);            │                                          igb_free_tx_resources(&temp_ring[i]);           
                                }                                                        │                                  }                                                       
                                goto err_setup;                                          │                                  goto err_setup;                                         
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                for (i = 0; i < adapter->num_tx_queues; i++) {                           │                  for (i = 0; i < adapter->num_tx_queues; i++) {                          
                        igc_free_tx_resources(adapter->tx_ring[i]);                      │                          igb_free_tx_resources(adapter->tx_ring[i]);                     
                                                                                         │                                                                                          
                        memcpy(adapter->tx_ring[i], &temp_ring[i],                       │                          memcpy(adapter->tx_ring[i], &temp_ring[i],                      
                               sizeof(struct igc_ring));                                 │                                 sizeof(struct igb_ring));                                
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                adapter->tx_ring_count = new_tx_count;                                   │                  adapter->tx_ring_count = new_tx_count;                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (new_rx_count != adapter->rx_ring_count) {                                    │          if (new_rx_count != adapter->rx_ring_count) {                                   
                for (i = 0; i < adapter->num_rx_queues; i++) {                           │                  for (i = 0; i < adapter->num_rx_queues; i++) {                          
                        memcpy(&temp_ring[i], adapter->rx_ring[i],                       │                          memcpy(&temp_ring[i], adapter->rx_ring[i],                      
                               sizeof(struct igc_ring));                                 │                                 sizeof(struct igb_ring));                                
                                                                                         │                                                                                          
                        temp_ring[i].count = new_rx_count;                               │                          temp_ring[i].count = new_rx_count;                              
                        err = igc_setup_rx_resources(&temp_ring[i]);                     │                          err = igb_setup_rx_resources(&temp_ring[i]);                    
                        if (err) {                                                       │                          if (err) {                                                      
                                while (i) {                                              │                                  while (i) {                                             
                                        i--;                                             │                                          i--;                                            
                                        igc_free_rx_resources(&temp_ring[i]);            │                                          igb_free_rx_resources(&temp_ring[i]);           
                                }                                                        │                                  }                                                       
                                goto err_setup;                                          │                                  goto err_setup;                                         
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                for (i = 0; i < adapter->num_rx_queues; i++) {                           │                  for (i = 0; i < adapter->num_rx_queues; i++) {                          
                        igc_free_rx_resources(adapter->rx_ring[i]);                      │                          igb_free_rx_resources(adapter->rx_ring[i]);                     
                                                                                         │                                                                                          
                        memcpy(adapter->rx_ring[i], &temp_ring[i],                       │                          memcpy(adapter->rx_ring[i], &temp_ring[i],                      
                               sizeof(struct igc_ring));                                 │                                 sizeof(struct igb_ring));                                
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                adapter->rx_ring_count = new_rx_count;                                   │                  adapter->rx_ring_count = new_rx_count;                                  
        }                                                                                │          }                                                                               
err_setup:                                                                               │  err_setup:                                                                              
        igc_up(adapter);                                                                 │          igb_up(adapter);                                                                
        vfree(temp_ring);                                                                │          vfree(temp_ring);                                                               
clear_reset:                                                                             │  clear_reset:                                                                            
        clear_bit(__IGC_RESETTING, &adapter->state);                                     │          clear_bit(__IGB_RESETTING, &adapter->state);                                    
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/nic.c:192                                         │ linux/drivers/net/ethernet/sfc/nic.c:200                                                 
                                                                                         │                                                                                          
        REGISTER_AZ(ADR_REGION),                                                         │          REGISTER_AZ(ADR_REGION),                                                        
        REGISTER_AZ(INT_EN_KER),                                                         │          REGISTER_AZ(INT_EN_KER),                                                        
        REGISTER_BZ(INT_EN_CHAR),                                                        │          REGISTER_BZ(INT_EN_CHAR),                                                       
        REGISTER_AZ(INT_ADR_KER),                                                        │          REGISTER_AZ(INT_ADR_KER),                                                       
        REGISTER_BZ(INT_ADR_CHAR),                                                       │          REGISTER_BZ(INT_ADR_CHAR),                                                      
        /* INT_ACK_KER is WO */                                                          │          /* INT_ACK_KER is WO */                                                         
        /* INT_ISR0 is RC */                                                             │          /* INT_ISR0 is RC */                                                            
        REGISTER_AZ(HW_INIT),                                                            │          REGISTER_AZ(HW_INIT),                                                           
        REGISTER_CZ(USR_EV_CFG),                                                         │          REGISTER_CZ(USR_EV_CFG),                                                        
        REGISTER_AB(EE_SPI_HCMD),                                                        │          REGISTER_AB(EE_SPI_HCMD),                                                       
        REGISTER_AB(EE_SPI_HADR),                                                        │          REGISTER_AB(EE_SPI_HADR),                                                       
        REGISTER_AB(EE_SPI_HDATA),                                                       │          REGISTER_AB(EE_SPI_HDATA),                                                      
        REGISTER_AB(EE_BASE_PAGE),                                                       │          REGISTER_AB(EE_BASE_PAGE),                                                      
        REGISTER_AB(EE_VPD_CFG0),                                                        │          REGISTER_AB(EE_VPD_CFG0),                                                       
        /* EE_VPD_SW_CNTL and EE_VPD_SW_DATA are not used */                             │          /* EE_VPD_SW_CNTL and EE_VPD_SW_DATA are not used */                            
        /* PMBX_DBG_IADDR and PBMX_DBG_IDATA are indirect */                             │          /* PMBX_DBG_IADDR and PBMX_DBG_IDATA are indirect */                            
        /* PCIE_CORE_INDIRECT is indirect */                                             │          /* PCIE_CORE_INDIRECT is indirect */                                            
        REGISTER_AB(NIC_STAT),                                                           │          REGISTER_AB(NIC_STAT),                                                          
        REGISTER_AB(GPIO_CTL),                                                           │          REGISTER_AB(GPIO_CTL),                                                          
        REGISTER_AB(GLB_CTL),                                                            │          REGISTER_AB(GLB_CTL),                                                           
        /* FATAL_INTR_KER and FATAL_INTR_CHAR are partly RC */                           │          /* FATAL_INTR_KER and FATAL_INTR_CHAR are partly RC */                          
        REGISTER_BZ(DP_CTRL),                                                            │          REGISTER_BZ(DP_CTRL),                                                           
        REGISTER_AZ(MEM_STAT),                                                           │          REGISTER_AZ(MEM_STAT),                                                          
        REGISTER_AZ(CS_DEBUG),                                                           │          REGISTER_AZ(CS_DEBUG),                                                          
        REGISTER_AZ(ALTERA_BUILD),                                                       │          REGISTER_AZ(ALTERA_BUILD),                                                      
        REGISTER_AZ(CSR_SPARE),                                                          │          REGISTER_AZ(CSR_SPARE),                                                         
        REGISTER_AB(PCIE_SD_CTL0123),                                                    │          REGISTER_AB(PCIE_SD_CTL0123),                                                   
        REGISTER_AB(PCIE_SD_CTL45),                                                      │          REGISTER_AB(PCIE_SD_CTL45),                                                     
        REGISTER_AB(PCIE_PCS_CTL_STAT),                                                  │          REGISTER_AB(PCIE_PCS_CTL_STAT),                                                 
        /* DEBUG_DATA_OUT is not used */                                                 │          /* DEBUG_DATA_OUT is not used */                                                
        /* DRV_EV is WO */                                                               │          /* DRV_EV is WO */                                                              
        REGISTER_AZ(EVQ_CTL),                                                            │          REGISTER_AZ(EVQ_CTL),                                                           
        REGISTER_AZ(EVQ_CNT1),                                                           │          REGISTER_AZ(EVQ_CNT1),                                                          
        REGISTER_AZ(EVQ_CNT2),                                                           │          REGISTER_AZ(EVQ_CNT2),                                                          
        REGISTER_AZ(BUF_TBL_CFG),                                                        │          REGISTER_AZ(BUF_TBL_CFG),                                                       
        REGISTER_AZ(SRM_RX_DC_CFG),                                                      │          REGISTER_AZ(SRM_RX_DC_CFG),                                                     
        REGISTER_AZ(SRM_TX_DC_CFG),                                                      │          REGISTER_AZ(SRM_TX_DC_CFG),                                                     
        REGISTER_AZ(SRM_CFG),                                                            │          REGISTER_AZ(SRM_CFG),                                                           
        /* BUF_TBL_UPD is WO */                                                          │          /* BUF_TBL_UPD is WO */                                                         
        REGISTER_AZ(SRM_UPD_EVQ),                                                        │          REGISTER_AZ(SRM_UPD_EVQ),                                                       
        REGISTER_AZ(SRAM_PARITY),                                                        │          REGISTER_AZ(SRAM_PARITY),                                                       
        REGISTER_AZ(RX_CFG),                                                             │          REGISTER_AZ(RX_CFG),                                                            
        REGISTER_BZ(RX_FILTER_CTL),                                                      │          REGISTER_BZ(RX_FILTER_CTL),                                                     
        /* RX_FLUSH_DESCQ is WO */                                                       │          /* RX_FLUSH_DESCQ is WO */                                                      
        REGISTER_AZ(RX_DC_CFG),                                                          │          REGISTER_AZ(RX_DC_CFG),                                                         
        REGISTER_AZ(RX_DC_PF_WM),                                                        │          REGISTER_AZ(RX_DC_PF_WM),                                                       
        REGISTER_BZ(RX_RSS_TKEY),                                                        │          REGISTER_BZ(RX_RSS_TKEY),                                                       
        /* RX_NODESC_DROP is RC */                                                       │          /* RX_NODESC_DROP is RC */                                                      
        REGISTER_AA(RX_SELF_RST),                                                        │          REGISTER_AA(RX_SELF_RST),                                                       
        /* RX_DEBUG, RX_PUSH_DROP are not used */                                        │          /* RX_DEBUG, RX_PUSH_DROP are not used */                                       
        REGISTER_CZ(RX_RSS_IPV6_REG1),                                                   │          REGISTER_CZ(RX_RSS_IPV6_REG1),                                                  
        REGISTER_CZ(RX_RSS_IPV6_REG2),                                                   │          REGISTER_CZ(RX_RSS_IPV6_REG2),                                                  
        REGISTER_CZ(RX_RSS_IPV6_REG3),                                                   │          REGISTER_CZ(RX_RSS_IPV6_REG3),                                                  
        /* TX_FLUSH_DESCQ is WO */                                                       │          /* TX_FLUSH_DESCQ is WO */                                                      
        REGISTER_AZ(TX_DC_CFG),                                                          │          REGISTER_AZ(TX_DC_CFG),                                                         
        REGISTER_AA(TX_CHKSM_CFG),                                                       │          REGISTER_AA(TX_CHKSM_CFG),                                                      
        REGISTER_AZ(TX_CFG),                                                             │          REGISTER_AZ(TX_CFG),                                                            
        /* TX_PUSH_DROP is not used */                                                   │          /* TX_PUSH_DROP is not used */                                                  
        REGISTER_AZ(TX_RESERVED),                                                        │          REGISTER_AZ(TX_RESERVED),                                                       
        REGISTER_BZ(TX_PACE),                                                            │          REGISTER_BZ(TX_PACE),                                                           
        /* TX_PACE_DROP_QID is RC */                                                     │          /* TX_PACE_DROP_QID is RC */                                                    
        REGISTER_BB(TX_VLAN),                                                            │          REGISTER_BB(TX_VLAN),                                                           
        REGISTER_BZ(TX_IPFIL_PORTEN),                                                    │          REGISTER_BZ(TX_IPFIL_PORTEN),                                                   
        REGISTER_AB(MD_TXD),                                                             │          REGISTER_AB(MD_TXD),                                                            
        REGISTER_AB(MD_RXD),                                                             │          REGISTER_AB(MD_RXD),                                                            
        REGISTER_AB(MD_CS),                                                              │          REGISTER_AB(MD_CS),                                                             
        REGISTER_AB(MD_PHY_ADR),                                                         │          REGISTER_AB(MD_PHY_ADR),                                                        
        REGISTER_AB(MD_ID),                                                              │          REGISTER_AB(MD_ID),                                                             
        /* MD_STAT is RC */                                                              │          /* MD_STAT is RC */                                                             
        REGISTER_AB(MAC_STAT_DMA),                                                       │          REGISTER_AB(MAC_STAT_DMA),                                                      
        REGISTER_AB(MAC_CTRL),                                                           │          REGISTER_AB(MAC_CTRL),                                                          
        REGISTER_BB(GEN_MODE),                                                           │          REGISTER_BB(GEN_MODE),                                                          
        REGISTER_AB(MAC_MC_HASH_REG0),                                                   │          REGISTER_AB(MAC_MC_HASH_REG0),                                                  
        REGISTER_AB(MAC_MC_HASH_REG1),                                                   │          REGISTER_AB(MAC_MC_HASH_REG1),                                                  
        REGISTER_AB(GM_CFG1),                                                            │          REGISTER_AB(GM_CFG1),                                                           
        REGISTER_AB(GM_CFG2),                                                            │          REGISTER_AB(GM_CFG2),                                                           
        /* GM_IPG and GM_HD are not used */                                              │          /* GM_IPG and GM_HD are not used */                                             
        REGISTER_AB(GM_MAX_FLEN),                                                        │          REGISTER_AB(GM_MAX_FLEN),                                                       
        /* GM_TEST is not used */                                                        │          /* GM_TEST is not used */                                                       
        REGISTER_AB(GM_ADR1),                                                            │          REGISTER_AB(GM_ADR1),                                                           
        REGISTER_AB(GM_ADR2),                                                            │          REGISTER_AB(GM_ADR2),                                                           
        REGISTER_AB(GMF_CFG0),                                                           │          REGISTER_AB(GMF_CFG0),                                                          
        REGISTER_AB(GMF_CFG1),                                                           │          REGISTER_AB(GMF_CFG1),                                                          
        REGISTER_AB(GMF_CFG2),                                                           │          REGISTER_AB(GMF_CFG2),                                                          
        REGISTER_AB(GMF_CFG3),                                                           │          REGISTER_AB(GMF_CFG3),                                                          
        REGISTER_AB(GMF_CFG4),                                                           │          REGISTER_AB(GMF_CFG4),                                                          
        REGISTER_AB(GMF_CFG5),                                                           │          REGISTER_AB(GMF_CFG5),                                                          
        REGISTER_BB(TX_SRC_MAC_CTL),                                                     │          REGISTER_BB(TX_SRC_MAC_CTL),                                                    
        REGISTER_AB(XM_ADR_LO),                                                          │          REGISTER_AB(XM_ADR_LO),                                                         
        REGISTER_AB(XM_ADR_HI),                                                          │          REGISTER_AB(XM_ADR_HI),                                                         
        REGISTER_AB(XM_GLB_CFG),                                                         │          REGISTER_AB(XM_GLB_CFG),                                                        
        REGISTER_AB(XM_TX_CFG),                                                          │          REGISTER_AB(XM_TX_CFG),                                                         
        REGISTER_AB(XM_RX_CFG),                                                          │          REGISTER_AB(XM_RX_CFG),                                                         
        REGISTER_AB(XM_MGT_INT_MASK),                                                    │          REGISTER_AB(XM_MGT_INT_MASK),                                                   
        REGISTER_AB(XM_FC),                                                              │          REGISTER_AB(XM_FC),                                                             
        REGISTER_AB(XM_PAUSE_TIME),                                                      │          REGISTER_AB(XM_PAUSE_TIME),                                                     
        REGISTER_AB(XM_TX_PARAM),                                                        │          REGISTER_AB(XM_TX_PARAM),                                                       
        REGISTER_AB(XM_RX_PARAM),                                                        │          REGISTER_AB(XM_RX_PARAM),                                                       
        /* XM_MGT_INT_MSK (note no 'A') is RC */                                         │          /* XM_MGT_INT_MSK (note no 'A') is RC */                                        
        REGISTER_AB(XX_PWR_RST),                                                         │          REGISTER_AB(XX_PWR_RST),                                                        
        REGISTER_AB(XX_SD_CTL),                                                          │          REGISTER_AB(XX_SD_CTL),                                                         
        REGISTER_AB(XX_TXDRV_CTL),                                                       │          REGISTER_AB(XX_TXDRV_CTL),                                                      
        /* XX_PRBS_CTL, XX_PRBS_CHK and XX_PRBS_ERR are not used */                      │          /* XX_PRBS_CTL, XX_PRBS_CHK and XX_PRBS_ERR are not used */                     
        /* XX_CORE_STAT is partly RC */                                                  │          /* XX_CORE_STAT is partly RC */                                                 
                                                                                         │          REGISTER_DZ(BIU_HW_REV_ID),                                                     
                                                                                         │          REGISTER_DZ(MC_DB_LWRD),                                                        
                                                                                         │          REGISTER_DZ(MC_DB_HWRD),                                                        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/ti/cpsw_new.c:283                                            │ linux/drivers/net/ethernet/ti/cpsw.c:345                                                 
                                                                                         │                                                                                          
        struct page *new_page, *page = token;                                            │          struct page             *new_page, *page = token;                               
        void *pa = page_address(page);                                                   │          void                    *pa = page_address(page);                               
        int headroom = CPSW_HEADROOM_NA;                                                 │          struct cpsw_meta_xdp    *xmeta = pa + CPSW_XMETA_OFFSET;                        
        struct cpsw_meta_xdp *xmeta;                                                     │          struct cpsw_common      *cpsw = ndev_to_cpsw(xmeta->ndev);                      
        struct cpsw_common *cpsw;                                                        │          int                     pkt_size = cpsw->rx_packet_max;                         
        struct net_device *ndev;                                                         │          int                     ret = 0, port, ch = xmeta->ch;                          
        int port, ch, pkt_size;                                                          │          int                     headroom = CPSW_HEADROOM_NA;                            
        struct cpsw_priv *priv;                                                          │          struct net_device       *ndev = xmeta->ndev;                                    
        struct page_pool *pool;                                                          │          struct cpsw_priv        *priv;                                                  
        struct sk_buff *skb;                                                             │          struct page_pool        *pool;                                                  
        struct xdp_buff xdp;                                                             │          struct sk_buff          *skb;                                                   
        int ret = 0;                                                                     │          struct xdp_buff         xdp;                                                    
        dma_addr_t dma;                                                                  │          dma_addr_t              dma;                                                    
                                                                                         │                                                                                          
        xmeta = pa + CPSW_XMETA_OFFSET;                                                  │                                                                                          
        cpsw = ndev_to_cpsw(xmeta->ndev);                                                │                                                                                          
        ndev = xmeta->ndev;                                                              │                                                                                          
        pkt_size = cpsw->rx_packet_max;                                                  │                                                                                          
        ch = xmeta->ch;                                                                  │                                                                                          
                                                                                         │                                                                                          
        if (status >= 0) {                                                               │          if (cpsw->data.dual_emac && status >= 0) {                                      
                port = CPDMA_RX_SOURCE_PORT(status);                                     │                  port = CPDMA_RX_SOURCE_PORT(status);                                    
                if (port)                                                                │                  if (port)                                                               
                        ndev = cpsw->slaves[--port].ndev;                                │                          ndev = cpsw->slaves[--port].ndev;                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        priv = netdev_priv(ndev);                                                        │          priv = netdev_priv(ndev);                                                       
        pool = cpsw->page_pool[ch];                                                      │          pool = cpsw->page_pool[ch];                                                     
                                                                                         │                                                                                          
        if (unlikely(status < 0) || unlikely(!netif_running(ndev))) {                    │          if (unlikely(status < 0) || unlikely(!netif_running(ndev))) {                   
                /* In dual emac mode check for all interfaces */                         │                  /* In dual emac mode check for all interfaces */                        
                if (cpsw->usage_count && status >= 0) {                                  │                  if (cpsw->data.dual_emac && cpsw->usage_count &&                        
                                                                                         │                      (status >= 0)) {                                                    
                        /* The packet received is for the interface which                │                          /* The packet received is for the interface which               
                         * is already down and the other interface is up                 │                           * is already down and the other interface is up                
                         * and running, instead of freeing which results                 │                           * and running, instead of freeing which results                
                         * in reducing of the number of rx descriptor in                 │                           * in reducing of the number of rx descriptor in                
                         * DMA engine, requeue page back to cpdma.                       │                           * DMA engine, requeue page back to cpdma.                      
                         */                                                              │                           */                                                             
                        new_page = page;                                                 │                          new_page = page;                                                
                        goto requeue;                                                    │                          goto requeue;                                                   
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* the interface is going down, pages are purged */                      │                  /* the interface is going down, pages are purged */                     
                page_pool_recycle_direct(pool, page);                                    │                  page_pool_recycle_direct(pool, page);                                   
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        new_page = page_pool_dev_alloc_pages(pool);                                      │          new_page = page_pool_dev_alloc_pages(pool);                                     
        if (unlikely(!new_page)) {                                                       │          if (unlikely(!new_page)) {                                                      
                new_page = page;                                                         │                  new_page = page;                                                        
                ndev->stats.rx_dropped++;                                                │                  ndev->stats.rx_dropped++;                                               
                goto requeue;                                                            │                  goto requeue;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (priv->xdp_prog) {                                                            │          if (priv->xdp_prog) {                                                           
                int size = len;                                                          │                  int size = len;                                                         
                                                                                         │                                                                                          
                xdp_init_buff(&xdp, PAGE_SIZE, &priv->xdp_rxq[ch]);                      │                  xdp_init_buff(&xdp, PAGE_SIZE, &priv->xdp_rxq[ch]);                     
                if (status & CPDMA_RX_VLAN_ENCAP) {                                      │                  if (status & CPDMA_RX_VLAN_ENCAP) {                                     
                        headroom += CPSW_RX_VLAN_ENCAP_HDR_SIZE;                         │                          headroom += CPSW_RX_VLAN_ENCAP_HDR_SIZE;                        
                        size -= CPSW_RX_VLAN_ENCAP_HDR_SIZE;                             │                          size -= CPSW_RX_VLAN_ENCAP_HDR_SIZE;                            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                xdp_prepare_buff(&xdp, pa, headroom, size, false);                       │                  xdp_prepare_buff(&xdp, pa, headroom, size, false);                      
                                                                                         │                                                                                          
                ret = cpsw_run_xdp(priv, ch, &xdp, page, priv->emac_port, &len);         │                  port = priv->emac_port + cpsw->data.dual_emac;                          
                                                                                         │                  ret = cpsw_run_xdp(priv, ch, &xdp, page, port, &len);                   
                if (ret != CPSW_XDP_PASS)                                                │                  if (ret != CPSW_XDP_PASS)                                               
                        goto requeue;                                                    │                          goto requeue;                                                   
                                                                                         │                                                                                          
                headroom = xdp.data - xdp.data_hard_start;                               │                  headroom = xdp.data - xdp.data_hard_start;                              
                                                                                         │                                                                                          
                /* XDP prog can modify vlan tag, so can't use encap header */            │                  /* XDP prog can modify vlan tag, so can't use encap header */           
                status &= ~CPDMA_RX_VLAN_ENCAP;                                          │                  status &= ~CPDMA_RX_VLAN_ENCAP;                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* pass skb to netstack if no XDP prog or returned XDP_PASS */                   │          /* pass skb to netstack if no XDP prog or returned XDP_PASS */                  
        skb = build_skb(pa, cpsw_rxbuf_total_len(pkt_size));                             │          skb = build_skb(pa, cpsw_rxbuf_total_len(pkt_size));                            
        if (!skb) {                                                                      │          if (!skb) {                                                                     
                ndev->stats.rx_dropped++;                                                │                  ndev->stats.rx_dropped++;                                               
                page_pool_recycle_direct(pool, page);                                    │                  page_pool_recycle_direct(pool, page);                                   
                goto requeue;                                                            │                  goto requeue;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        skb->offload_fwd_mark = priv->offload_fwd_mark;                                  │                                                                                          
        skb_reserve(skb, headroom);                                                      │          skb_reserve(skb, headroom);                                                     
        skb_put(skb, len);                                                               │          skb_put(skb, len);                                                              
        skb->dev = ndev;                                                                 │          skb->dev = ndev;                                                                
        if (status & CPDMA_RX_VLAN_ENCAP)                                                │          if (status & CPDMA_RX_VLAN_ENCAP)                                               
                cpsw_rx_vlan_encap(skb);                                                 │                  cpsw_rx_vlan_encap(skb);                                                
        if (priv->rx_ts_enabled)                                                         │          if (priv->rx_ts_enabled)                                                        
                cpts_rx_timestamp(cpsw->cpts, skb);                                      │                  cpts_rx_timestamp(cpsw->cpts, skb);                                     
        skb->protocol = eth_type_trans(skb, ndev);                                       │          skb->protocol = eth_type_trans(skb, ndev);                                      
                                                                                         │                                                                                          
        /* mark skb for recycling */                                                     │          /* mark skb for recycling */                                                    
        skb_mark_for_recycle(skb);                                                       │          skb_mark_for_recycle(skb);                                                      
        netif_receive_skb(skb);                                                          │          netif_receive_skb(skb);                                                         
                                                                                         │                                                                                          
        ndev->stats.rx_bytes += len;                                                     │          ndev->stats.rx_bytes += len;                                                    
        ndev->stats.rx_packets++;                                                        │          ndev->stats.rx_packets++;                                                       
                                                                                         │                                                                                          
requeue:                                                                                 │  requeue:                                                                                
        xmeta = page_address(new_page) + CPSW_XMETA_OFFSET;                              │          xmeta = page_address(new_page) + CPSW_XMETA_OFFSET;                             
        xmeta->ndev = ndev;                                                              │          xmeta->ndev = ndev;                                                             
        xmeta->ch = ch;                                                                  │          xmeta->ch = ch;                                                                 
                                                                                         │                                                                                          
        dma = page_pool_get_dma_addr(new_page) + CPSW_HEADROOM_NA;                       │          dma = page_pool_get_dma_addr(new_page) + CPSW_HEADROOM_NA;                      
        ret = cpdma_chan_submit_mapped(cpsw->rxv[ch].ch, new_page, dma,                  │          ret = cpdma_chan_submit_mapped(cpsw->rxv[ch].ch, new_page, dma,                 
                                       pkt_size, 0);                                     │                                         pkt_size, 0);                                    
        if (ret < 0) {                                                                   │          if (ret < 0) {                                                                  
                WARN_ON(ret == -ENOMEM);                                                 │                  WARN_ON(ret == -ENOMEM);                                                
                page_pool_recycle_direct(pool, new_page);                                │                  page_pool_recycle_direct(pool, new_page);                               
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/fm10k/fm10k_pf.c:1194                                  │ linux/drivers/net/ethernet/intel/fm10k/fm10k_iov.c:35                                    
                                                                                         │                                                                                          
        struct fm10k_vf_info *vf_info = (struct fm10k_vf_info *)mbx;                     │          struct fm10k_vf_info *vf_info = (struct fm10k_vf_info *)mbx;                    
                                                                                         │          struct fm10k_intfc *interface = hw->back;                                       
        u8 mac[ETH_ALEN];                                                                │          u8 mac[ETH_ALEN];                                                               
        u32 *result;                                                                     │          u32 *result;                                                                    
        int err = 0;                                                                     │          int err = 0;                                                                    
        bool set;                                                                        │          bool set;                                                                       
        u16 vlan;                                                                        │          u16 vlan;                                                                       
        u32 vid;                                                                         │          u32 vid;                                                                        
                                                                                         │                                                                                          
        /* we shouldn't be updating rules on a disabled interface */                     │          /* we shouldn't be updating rules on a disabled interface */                    
        if (!FM10K_VF_FLAG_ENABLED(vf_info))                                             │          if (!FM10K_VF_FLAG_ENABLED(vf_info))                                            
                err = FM10K_ERR_PARAM;                                                   │                  err = FM10K_ERR_PARAM;                                                  
                                                                                         │                                                                                          
        if (!err && !!results[FM10K_MAC_VLAN_MSG_VLAN]) {                                │          if (!err && !!results[FM10K_MAC_VLAN_MSG_VLAN]) {                               
                result = results[FM10K_MAC_VLAN_MSG_VLAN];                               │                  result = results[FM10K_MAC_VLAN_MSG_VLAN];                              
                                                                                         │                                                                                          
                /* record VLAN id requested */                                           │                  /* record VLAN id requested */                                          
                err = fm10k_tlv_attr_get_u32(result, &vid);                              │                  err = fm10k_tlv_attr_get_u32(result, &vid);                             
                if (err)                                                                 │                  if (err)                                                                
                        return err;                                                      │                          return err;                                                     
                                                                                         │                                                                                          
                set = !(vid & FM10K_VLAN_CLEAR);                                         │                  set = !(vid & FM10K_VLAN_CLEAR);                                        
                vid &= ~FM10K_VLAN_CLEAR;                                                │                  vid &= ~FM10K_VLAN_CLEAR;                                               
                                                                                         │                                                                                          
                /* if the length field has been set, this is a multi-bit                 │                  /* if the length field has been set, this is a multi-bit                
                 * update request. For multi-bit requests, simply disallow               │                   * update request. For multi-bit requests, simply disallow              
                 * them when the pf_vid has been set. In this case, the PF               │                   * them when the pf_vid has been set. In this case, the PF              
                 * should have already cleared the VLAN_TABLE, and if we                 │                   * should have already cleared the VLAN_TABLE, and if we                
                 * allowed them, it could allow a rogue VF to receive traffic            │                   * allowed them, it could allow a rogue VF to receive traffic           
                 * on a VLAN it was not assigned. In the single-bit case, we             │                   * on a VLAN it was not assigned. In the single-bit case, we            
                 * need to modify requests for VLAN 0 to use the default PF or           │                   * need to modify requests for VLAN 0 to use the default PF or          
                 * SW vid when assigned.                                                 │                   * SW vid when assigned.                                                
                 */                                                                      │                   */                                                                     
                                                                                         │                                                                                          
                if (vid >> 16) {                                                         │                  if (vid >> 16) {                                                        
                        /* prevent multi-bit requests when PF has                        │                          /* prevent multi-bit requests when PF has                       
                         * administratively set the VLAN for this VF                     │                           * administratively set the VLAN for this VF                    
                         */                                                              │                           */                                                             
                        if (vf_info->pf_vid)                                             │                          if (vf_info->pf_vid)                                            
                                return FM10K_ERR_PARAM;                                  │                                  return FM10K_ERR_PARAM;                                 
                } else {                                                                 │                  } else {                                                                
                        err = fm10k_iov_select_vid(vf_info, (u16)vid);                   │                          err = fm10k_iov_select_vid(vf_info, (u16)vid);                  
                        if (err < 0)                                                     │                          if (err < 0)                                                    
                                return err;                                              │                                  return err;                                             
                                                                                         │                                                                                          
                        vid = err;                                                       │                          vid = err;                                                      
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* update VSI info for VF in regards to VLAN table */                    │                  /* update VSI info for VF in regards to VLAN table */                   
                err = hw->mac.ops.update_vlan(hw, vid, vf_info->vsi, set);               │                  err = hw->mac.ops.update_vlan(hw, vid, vf_info->vsi, set);              
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!err && !!results[FM10K_MAC_VLAN_MSG_MAC]) {                                 │          if (!err && !!results[FM10K_MAC_VLAN_MSG_MAC]) {                                
                result = results[FM10K_MAC_VLAN_MSG_MAC];                                │                  result = results[FM10K_MAC_VLAN_MSG_MAC];                               
                                                                                         │                                                                                          
                /* record unicast MAC address requested */                               │                  /* record unicast MAC address requested */                              
                err = fm10k_tlv_attr_get_mac_vlan(result, mac, &vlan);                   │                  err = fm10k_tlv_attr_get_mac_vlan(result, mac, &vlan);                  
                if (err)                                                                 │                  if (err)                                                                
                        return err;                                                      │                          return err;                                                     
                                                                                         │                                                                                          
                /* block attempts to set MAC for a locked device */                      │                  /* block attempts to set MAC for a locked device */                     
                if (is_valid_ether_addr(vf_info->mac) &&                                 │                  if (is_valid_ether_addr(vf_info->mac) &&                                
                    !ether_addr_equal(mac, vf_info->mac))                                │                      !ether_addr_equal(mac, vf_info->mac))                               
                        return FM10K_ERR_PARAM;                                          │                          return FM10K_ERR_PARAM;                                         
                                                                                         │                                                                                          
                set = !(vlan & FM10K_VLAN_CLEAR);                                        │                  set = !(vlan & FM10K_VLAN_CLEAR);                                       
                vlan &= ~FM10K_VLAN_CLEAR;                                               │                  vlan &= ~FM10K_VLAN_CLEAR;                                              
                                                                                         │                                                                                          
                err = fm10k_iov_select_vid(vf_info, vlan);                               │                  err = fm10k_iov_select_vid(vf_info, vlan);                              
                if (err < 0)                                                             │                  if (err < 0)                                                            
                        return err;                                                      │                          return err;                                                     
                                                                                         │                                                                                          
                vlan = (u16)err;                                                         │                  vlan = (u16)err;                                                        
                                                                                         │                                                                                          
                /* notify switch of request for new unicast address */                   │                  /* Add this request to the MAC/VLAN queue */                            
                err = hw->mac.ops.update_uc_addr(hw, vf_info->glort,                     │                  err = fm10k_queue_mac_request(interface, vf_info->glort,                
                                                 mac, vlan, set, 0);                     │                                                mac, vlan, set);                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!err && !!results[FM10K_MAC_VLAN_MSG_MULTICAST]) {                           │          if (!err && !!results[FM10K_MAC_VLAN_MSG_MULTICAST]) {                          
                result = results[FM10K_MAC_VLAN_MSG_MULTICAST];                          │                  result = results[FM10K_MAC_VLAN_MSG_MULTICAST];                         
                                                                                         │                                                                                          
                /* record multicast MAC address requested */                             │                  /* record multicast MAC address requested */                            
                err = fm10k_tlv_attr_get_mac_vlan(result, mac, &vlan);                   │                  err = fm10k_tlv_attr_get_mac_vlan(result, mac, &vlan);                  
                if (err)                                                                 │                  if (err)                                                                
                        return err;                                                      │                          return err;                                                     
                                                                                         │                                                                                          
                /* verify that the VF is allowed to request multicast */                 │                  /* verify that the VF is allowed to request multicast */                
                if (!(vf_info->vf_flags & FM10K_VF_FLAG_MULTI_ENABLED))                  │                  if (!(vf_info->vf_flags & FM10K_VF_FLAG_MULTI_ENABLED))                 
                        return FM10K_ERR_PARAM;                                          │                          return FM10K_ERR_PARAM;                                         
                                                                                         │                                                                                          
                set = !(vlan & FM10K_VLAN_CLEAR);                                        │                  set = !(vlan & FM10K_VLAN_CLEAR);                                       
                vlan &= ~FM10K_VLAN_CLEAR;                                               │                  vlan &= ~FM10K_VLAN_CLEAR;                                              
                                                                                         │                                                                                          
                err = fm10k_iov_select_vid(vf_info, vlan);                               │                  err = fm10k_iov_select_vid(vf_info, vlan);                              
                if (err < 0)                                                             │                  if (err < 0)                                                            
                        return err;                                                      │                          return err;                                                     
                                                                                         │                                                                                          
                vlan = (u16)err;                                                         │                  vlan = (u16)err;                                                        
                                                                                         │                                                                                          
                /* notify switch of request for new multicast address */                 │                  /* Add this request to the MAC/VLAN queue */                            
                err = hw->mac.ops.update_mc_addr(hw, vf_info->glort,                     │                  err = fm10k_queue_mac_request(interface, vf_info->glort,                
                                                 mac, vlan, set);                        │                                                mac, vlan, set);                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/sky2.h:1677                                          │ linux/drivers/net/ethernet/marvell/skge.h:1664                                           
                                                                                         │                                                                                          
        GM_RXF_UC_OK    = GM_MIB_CNT_BASE + 0,  /* Unicast Frames Received OK */         │          GM_RXF_UC_OK  = GM_MIB_CNT_BASE + 0,    /* Unicast Frames Received OK */        
        GM_RXF_BC_OK    = GM_MIB_CNT_BASE + 8,  /* Broadcast Frames Received OK */       │          GM_RXF_BC_OK    = GM_MIB_CNT_BASE + 8,  /* Broadcast Frames Received OK */      
        GM_RXF_MPAUSE   = GM_MIB_CNT_BASE + 16, /* Pause MAC Ctrl Frames Received */     │          GM_RXF_MPAUSE   = GM_MIB_CNT_BASE + 16, /* Pause MAC Ctrl Frames Received */    
        GM_RXF_MC_OK    = GM_MIB_CNT_BASE + 24, /* Multicast Frames Received OK */       │          GM_RXF_MC_OK    = GM_MIB_CNT_BASE + 24, /* Multicast Frames Received OK */      
        GM_RXF_FCS_ERR  = GM_MIB_CNT_BASE + 32, /* Rx Frame Check Seq. Error */          │          GM_RXF_FCS_ERR  = GM_MIB_CNT_BASE + 32, /* Rx Frame Check Seq. Error */         
                                                                                         │          /* GM_MIB_CNT_BASE + 40:        reserved */                                     
        GM_RXO_OK_LO    = GM_MIB_CNT_BASE + 48, /* Octets Received OK Low */             │          GM_RXO_OK_LO    = GM_MIB_CNT_BASE + 48, /* Octets Received OK Low */            
        GM_RXO_OK_HI    = GM_MIB_CNT_BASE + 56, /* Octets Received OK High */            │          GM_RXO_OK_HI    = GM_MIB_CNT_BASE + 56, /* Octets Received OK High */           
        GM_RXO_ERR_LO   = GM_MIB_CNT_BASE + 64, /* Octets Received Invalid Low */        │          GM_RXO_ERR_LO   = GM_MIB_CNT_BASE + 64, /* Octets Received Invalid Low */       
        GM_RXO_ERR_HI   = GM_MIB_CNT_BASE + 72, /* Octets Received Invalid High */       │          GM_RXO_ERR_HI   = GM_MIB_CNT_BASE + 72, /* Octets Received Invalid High */      
        GM_RXF_SHT      = GM_MIB_CNT_BASE + 80, /* Frames <64 Byte Received OK */        │          GM_RXF_SHT      = GM_MIB_CNT_BASE + 80, /* Frames <64 Byte Received OK */       
        GM_RXE_FRAG     = GM_MIB_CNT_BASE + 88, /* Frames <64 Byte Received with FCS Err │          GM_RXE_FRAG     = GM_MIB_CNT_BASE + 88, /* Frames <64 Byte Received with FCS Err
        GM_RXF_64B      = GM_MIB_CNT_BASE + 96, /* 64 Byte Rx Frame */                   │          GM_RXF_64B      = GM_MIB_CNT_BASE + 96, /* 64 Byte Rx Frame */                  
        GM_RXF_127B     = GM_MIB_CNT_BASE + 104,/* 65-127 Byte Rx Frame */               │          GM_RXF_127B     = GM_MIB_CNT_BASE + 104,        /* 65-127 Byte Rx Frame */      
        GM_RXF_255B     = GM_MIB_CNT_BASE + 112,/* 128-255 Byte Rx Frame */              │          GM_RXF_255B     = GM_MIB_CNT_BASE + 112,        /* 128-255 Byte Rx Frame */     
        GM_RXF_511B     = GM_MIB_CNT_BASE + 120,/* 256-511 Byte Rx Frame */              │          GM_RXF_511B     = GM_MIB_CNT_BASE + 120,        /* 256-511 Byte Rx Frame */     
        GM_RXF_1023B    = GM_MIB_CNT_BASE + 128,/* 512-1023 Byte Rx Frame */             │          GM_RXF_1023B    = GM_MIB_CNT_BASE + 128,        /* 512-1023 Byte Rx Frame */    
        GM_RXF_1518B    = GM_MIB_CNT_BASE + 136,/* 1024-1518 Byte Rx Frame */            │          GM_RXF_1518B    = GM_MIB_CNT_BASE + 136,        /* 1024-1518 Byte Rx Frame */   
        GM_RXF_MAX_SZ   = GM_MIB_CNT_BASE + 144,/* 1519-MaxSize Byte Rx Frame */         │          GM_RXF_MAX_SZ   = GM_MIB_CNT_BASE + 144,        /* 1519-MaxSize Byte Rx Frame */
        GM_RXF_LNG_ERR  = GM_MIB_CNT_BASE + 152,/* Rx Frame too Long Error */            │          GM_RXF_LNG_ERR  = GM_MIB_CNT_BASE + 152,        /* Rx Frame too Long Error */   
        GM_RXF_JAB_PKT  = GM_MIB_CNT_BASE + 160,/* Rx Jabber Packet Frame */             │          GM_RXF_JAB_PKT  = GM_MIB_CNT_BASE + 160,        /* Rx Jabber Packet Frame */    
                                                                                         │          /* GM_MIB_CNT_BASE + 168:       reserved */                                     
        GM_RXE_FIFO_OV  = GM_MIB_CNT_BASE + 176,/* Rx FIFO overflow Event */             │          GM_RXE_FIFO_OV  = GM_MIB_CNT_BASE + 176,        /* Rx FIFO overflow Event */    
        GM_TXF_UC_OK    = GM_MIB_CNT_BASE + 192,/* Unicast Frames Xmitted OK */          │          /* GM_MIB_CNT_BASE + 184:       reserved */                                     
        GM_TXF_BC_OK    = GM_MIB_CNT_BASE + 200,/* Broadcast Frames Xmitted OK */        │          GM_TXF_UC_OK    = GM_MIB_CNT_BASE + 192,        /* Unicast Frames Xmitted OK */ 
        GM_TXF_MPAUSE   = GM_MIB_CNT_BASE + 208,/* Pause MAC Ctrl Frames Xmitted */      │          GM_TXF_BC_OK    = GM_MIB_CNT_BASE + 200,        /* Broadcast Frames Xmitted OK *
        GM_TXF_MC_OK    = GM_MIB_CNT_BASE + 216,/* Multicast Frames Xmitted OK */        │          GM_TXF_MPAUSE   = GM_MIB_CNT_BASE + 208,        /* Pause MAC Ctrl Frames Xmitted
        GM_TXO_OK_LO    = GM_MIB_CNT_BASE + 224,/* Octets Transmitted OK Low */          │          GM_TXF_MC_OK    = GM_MIB_CNT_BASE + 216,        /* Multicast Frames Xmitted OK *
        GM_TXO_OK_HI    = GM_MIB_CNT_BASE + 232,/* Octets Transmitted OK High */         │          GM_TXO_OK_LO    = GM_MIB_CNT_BASE + 224,        /* Octets Transmitted OK Low */ 
        GM_TXF_64B      = GM_MIB_CNT_BASE + 240,/* 64 Byte Tx Frame */                   │          GM_TXO_OK_HI    = GM_MIB_CNT_BASE + 232,        /* Octets Transmitted OK High */
        GM_TXF_127B     = GM_MIB_CNT_BASE + 248,/* 65-127 Byte Tx Frame */               │          GM_TXF_64B      = GM_MIB_CNT_BASE + 240,        /* 64 Byte Tx Frame */          
        GM_TXF_255B     = GM_MIB_CNT_BASE + 256,/* 128-255 Byte Tx Frame */              │          GM_TXF_127B     = GM_MIB_CNT_BASE + 248,        /* 65-127 Byte Tx Frame */      
        GM_TXF_511B     = GM_MIB_CNT_BASE + 264,/* 256-511 Byte Tx Frame */              │          GM_TXF_255B     = GM_MIB_CNT_BASE + 256,        /* 128-255 Byte Tx Frame */     
        GM_TXF_1023B    = GM_MIB_CNT_BASE + 272,/* 512-1023 Byte Tx Frame */             │          GM_TXF_511B     = GM_MIB_CNT_BASE + 264,        /* 256-511 Byte Tx Frame */     
        GM_TXF_1518B    = GM_MIB_CNT_BASE + 280,/* 1024-1518 Byte Tx Frame */            │          GM_TXF_1023B    = GM_MIB_CNT_BASE + 272,        /* 512-1023 Byte Tx Frame */    
        GM_TXF_MAX_SZ   = GM_MIB_CNT_BASE + 288,/* 1519-MaxSize Byte Tx Frame */         │          GM_TXF_1518B    = GM_MIB_CNT_BASE + 280,        /* 1024-1518 Byte Tx Frame */   
                                                                                         │          GM_TXF_MAX_SZ   = GM_MIB_CNT_BASE + 288,        /* 1519-MaxSize Byte Tx Frame */
                                                                                         │                                                                                          
        GM_TXF_COL      = GM_MIB_CNT_BASE + 304,/* Tx Collision */                       │          GM_TXF_COL      = GM_MIB_CNT_BASE + 304,        /* Tx Collision */              
        GM_TXF_LAT_COL  = GM_MIB_CNT_BASE + 312,/* Tx Late Collision */                  │          GM_TXF_LAT_COL  = GM_MIB_CNT_BASE + 312,        /* Tx Late Collision */         
        GM_TXF_ABO_COL  = GM_MIB_CNT_BASE + 320,/* Tx aborted due to Exces. Col. */      │          GM_TXF_ABO_COL  = GM_MIB_CNT_BASE + 320,        /* Tx aborted due to Exces. Col.
        GM_TXF_MUL_COL  = GM_MIB_CNT_BASE + 328,/* Tx Multiple Collision */              │          GM_TXF_MUL_COL  = GM_MIB_CNT_BASE + 328,        /* Tx Multiple Collision */     
        GM_TXF_SNG_COL  = GM_MIB_CNT_BASE + 336,/* Tx Single Collision */                │          GM_TXF_SNG_COL  = GM_MIB_CNT_BASE + 336,        /* Tx Single Collision */       
        GM_TXE_FIFO_UR  = GM_MIB_CNT_BASE + 344,/* Tx FIFO Underrun Event */             │          GM_TXE_FIFO_UR  = GM_MIB_CNT_BASE + 344,        /* Tx FIFO Underrun Event */    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/ef100_nic.c:799                                          │ linux/drivers/net/ethernet/sfc/ef100_nic.c:713                                           
                                                                                         │                                                                                          
        .revision = EFX_REV_EF100,                                                       │          .revision = EFX_REV_EF100,                                                      
        .is_vf = true,                                                                   │          .is_vf = false,                                                                 
        .probe = ef100_probe_vf,                                                         │          .probe = ef100_probe_pf,                                                        
        .offload_features = EF100_OFFLOAD_FEATURES,                                      │          .offload_features = EF100_OFFLOAD_FEATURES,                                     
        .mcdi_max_ver = 2,                                                               │          .mcdi_max_ver = 2,                                                              
        .mcdi_request = ef100_mcdi_request,                                              │          .mcdi_request = ef100_mcdi_request,                                             
        .mcdi_poll_response = ef100_mcdi_poll_response,                                  │          .mcdi_poll_response = ef100_mcdi_poll_response,                                 
        .mcdi_read_response = ef100_mcdi_read_response,                                  │          .mcdi_read_response = ef100_mcdi_read_response,                                 
        .mcdi_poll_reboot = ef100_mcdi_poll_reboot,                                      │          .mcdi_poll_reboot = ef100_mcdi_poll_reboot,                                     
        .mcdi_reboot_detected = ef100_mcdi_reboot_detected,                              │          .mcdi_reboot_detected = ef100_mcdi_reboot_detected,                             
        .irq_enable_master = efx_port_dummy_op_void,                                     │          .irq_enable_master = efx_port_dummy_op_void,                                    
        .irq_test_generate = efx_ef100_irq_test_generate,                                │          .irq_test_generate = efx_ef100_irq_test_generate,                               
        .irq_disable_non_ev = efx_port_dummy_op_void,                                    │          .irq_disable_non_ev = efx_port_dummy_op_void,                                   
        .push_irq_moderation = efx_channel_dummy_op_void,                                │          .push_irq_moderation = efx_channel_dummy_op_void,                               
        .min_interrupt_mode = EFX_INT_MODE_MSIX,                                         │          .min_interrupt_mode = EFX_INT_MODE_MSIX,                                        
        .map_reset_reason = ef100_map_reset_reason,                                      │          .map_reset_reason = ef100_map_reset_reason,                                     
        .map_reset_flags = ef100_map_reset_flags,                                        │          .map_reset_flags = ef100_map_reset_flags,                                       
        .reset = ef100_reset,                                                            │          .reset = ef100_reset,                                                           
                                                                                         │                                                                                          
        .check_caps = ef100_check_caps,                                                  │          .check_caps = ef100_check_caps,                                                 
                                                                                         │                                                                                          
        .ev_probe = ef100_ev_probe,                                                      │          .ev_probe = ef100_ev_probe,                                                     
        .ev_init = ef100_ev_init,                                                        │          .ev_init = ef100_ev_init,                                                       
        .ev_fini = efx_mcdi_ev_fini,                                                     │          .ev_fini = efx_mcdi_ev_fini,                                                    
        .ev_remove = efx_mcdi_ev_remove,                                                 │          .ev_remove = efx_mcdi_ev_remove,                                                
        .irq_handle_msi = ef100_msi_interrupt,                                           │          .irq_handle_msi = ef100_msi_interrupt,                                          
        .ev_process = ef100_ev_process,                                                  │          .ev_process = ef100_ev_process,                                                 
        .ev_read_ack = ef100_ev_read_ack,                                                │          .ev_read_ack = ef100_ev_read_ack,                                               
        .ev_test_generate = efx_ef100_ev_test_generate,                                  │          .ev_test_generate = efx_ef100_ev_test_generate,                                 
        .tx_probe = ef100_tx_probe,                                                      │          .tx_probe = ef100_tx_probe,                                                     
        .tx_init = ef100_tx_init,                                                        │          .tx_init = ef100_tx_init,                                                       
        .tx_write = ef100_tx_write,                                                      │          .tx_write = ef100_tx_write,                                                     
        .tx_enqueue = ef100_enqueue_skb,                                                 │          .tx_enqueue = ef100_enqueue_skb,                                                
        .rx_probe = efx_mcdi_rx_probe,                                                   │          .rx_probe = efx_mcdi_rx_probe,                                                  
        .rx_init = efx_mcdi_rx_init,                                                     │          .rx_init = efx_mcdi_rx_init,                                                    
        .rx_remove = efx_mcdi_rx_remove,                                                 │          .rx_remove = efx_mcdi_rx_remove,                                                
        .rx_write = ef100_rx_write,                                                      │          .rx_write = ef100_rx_write,                                                     
        .rx_packet = __ef100_rx_packet,                                                  │          .rx_packet = __ef100_rx_packet,                                                 
        .rx_buf_hash_valid = ef100_rx_buf_hash_valid,                                    │          .rx_buf_hash_valid = ef100_rx_buf_hash_valid,                                   
        .fini_dmaq = efx_fini_dmaq,                                                      │          .fini_dmaq = efx_fini_dmaq,                                                     
        .max_rx_ip_filters = EFX_MCDI_FILTER_TBL_ROWS,                                   │          .max_rx_ip_filters = EFX_MCDI_FILTER_TBL_ROWS,                                  
        .filter_table_probe = ef100_filter_table_up,                                     │          .filter_table_probe = ef100_filter_table_up,                                    
        .filter_table_restore = efx_mcdi_filter_table_restore,                           │          .filter_table_restore = efx_mcdi_filter_table_restore,                          
        .filter_table_remove = ef100_filter_table_down,                                  │          .filter_table_remove = ef100_filter_table_down,                                 
        .filter_insert = efx_mcdi_filter_insert,                                         │          .filter_insert = efx_mcdi_filter_insert,                                        
        .filter_remove_safe = efx_mcdi_filter_remove_safe,                               │          .filter_remove_safe = efx_mcdi_filter_remove_safe,                              
        .filter_get_safe = efx_mcdi_filter_get_safe,                                     │          .filter_get_safe = efx_mcdi_filter_get_safe,                                    
        .filter_clear_rx = efx_mcdi_filter_clear_rx,                                     │          .filter_clear_rx = efx_mcdi_filter_clear_rx,                                    
        .filter_count_rx_used = efx_mcdi_filter_count_rx_used,                           │          .filter_count_rx_used = efx_mcdi_filter_count_rx_used,                          
        .filter_get_rx_id_limit = efx_mcdi_filter_get_rx_id_limit,                       │          .filter_get_rx_id_limit = efx_mcdi_filter_get_rx_id_limit,                      
        .filter_get_rx_ids = efx_mcdi_filter_get_rx_ids,                                 │          .filter_get_rx_ids = efx_mcdi_filter_get_rx_ids,                                
#ifdef CONFIG_RFS_ACCEL                                                                  │  #ifdef CONFIG_RFS_ACCEL                                                                 
        .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one,                         │          .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one,                        
#endif                                                                                   │  #endif                                                                                  
                                                                                         │                                                                                          
                                                                                         │          .get_phys_port_id = efx_ef100_get_phys_port_id,                                 
                                                                                         │                                                                                          
        .rx_prefix_size = ESE_GZ_RX_PKT_PREFIX_LEN,                                      │          .rx_prefix_size = ESE_GZ_RX_PKT_PREFIX_LEN,                                     
        .rx_hash_offset = ESF_GZ_RX_PREFIX_RSS_HASH_LBN / 8,                             │          .rx_hash_offset = ESF_GZ_RX_PREFIX_RSS_HASH_LBN / 8,                            
        .rx_ts_offset = ESF_GZ_RX_PREFIX_PARTIAL_TSTAMP_LBN / 8,                         │          .rx_ts_offset = ESF_GZ_RX_PREFIX_PARTIAL_TSTAMP_LBN / 8,                        
        .rx_hash_key_size = 40,                                                          │          .rx_hash_key_size = 40,                                                         
        .rx_pull_rss_config = efx_mcdi_rx_pull_rss_config,                               │          .rx_pull_rss_config = efx_mcdi_rx_pull_rss_config,                              
        .rx_push_rss_config = efx_mcdi_pf_rx_push_rss_config,                            │          .rx_push_rss_config = efx_mcdi_pf_rx_push_rss_config,                           
                                                                                         │          .rx_push_rss_context_config = efx_mcdi_rx_push_rss_context_config,              
                                                                                         │          .rx_pull_rss_context_config = efx_mcdi_rx_pull_rss_context_config,              
        .rx_restore_rss_contexts = efx_mcdi_rx_restore_rss_contexts,                     │          .rx_restore_rss_contexts = efx_mcdi_rx_restore_rss_contexts,                    
        .rx_recycle_ring_size = efx_ef100_recycle_ring_size,                             │          .rx_recycle_ring_size = efx_ef100_recycle_ring_size,                            
                                                                                         │                                                                                          
        .reconfigure_mac = ef100_reconfigure_mac,                                        │          .reconfigure_mac = ef100_reconfigure_mac,                                       
                                                                                         │          .reconfigure_port = efx_mcdi_port_reconfigure,                                  
        .test_nvram = efx_new_mcdi_nvram_test_all,                                       │          .test_nvram = efx_new_mcdi_nvram_test_all,                                      
        .describe_stats = ef100_describe_stats,                                          │          .describe_stats = ef100_describe_stats,                                         
        .start_stats = efx_mcdi_mac_start_stats,                                         │          .start_stats = efx_mcdi_mac_start_stats,                                        
        .update_stats = ef100_update_stats,                                              │          .update_stats = ef100_update_stats,                                             
        .pull_stats = efx_mcdi_mac_pull_stats,                                           │          .pull_stats = efx_mcdi_mac_pull_stats,                                          
        .stop_stats = efx_mcdi_mac_stop_stats,                                           │          .stop_stats = efx_mcdi_mac_stop_stats,                                          
                                                                                         │                                                                                          
                                                                                         │          /* Per-type bar/size configuration not used on ef100. Location of               
                                                                                         │           * registers is defined by extended capabilities.                               
                                                                                         │           */                                                                             
        .mem_bar = NULL,                                                                 │          .mem_bar = NULL,                                                                
        .mem_map_size = NULL,                                                            │          .mem_map_size = NULL,                                                           
                                                                                         │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7996                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8065                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK            0x3                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK   0x3                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT   0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT  0                                       
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF4_MASK            0x3                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4_MASK   0x3                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF4_SHIFT   2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4_SHIFT  2                                       
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF5_MASK            0x3                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5_MASK   0x3                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF5_SHIFT   4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5_SHIFT  4                                       
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF6_MASK            0x3                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK   0x3                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF6_SHIFT   6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT  6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK  0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 3                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT        3                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_MASK  0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_MASK 0x1                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_SHIFT 4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_SHIFT        4                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_MASK  0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_MASK 0x1                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_SHIFT 5                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_SHIFT        5                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_MASK  0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1                                     
#define USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_SHIFT 6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT        6                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       7                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      7                               
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       0                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      0                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       1                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      1                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       2                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      2                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       3                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      3                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK        0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK       0x1                             
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT       4                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT      4                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK        0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK       0x1                             
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT       5                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT      5                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK        0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK       0x1                             
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT       6                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT      6                               
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK        0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK       0x1                             
#define USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT       7                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:2033                                             │ linux/drivers/net/ethernet/sfc/falcon/farch.c:1965                                       
                                                                                         │                                                                                          
        bool is_full = false;                                                            │          bool is_full = false;                                                           
                                                                                         │                                                                                          
        if ((gen_spec->flags & EFX_FILTER_FLAG_RX_RSS) && gen_spec->rss_context)         │          if ((gen_spec->flags & EF4_FILTER_FLAG_RX_RSS) &&                               
                                                                                         │              gen_spec->rss_context != EF4_FILTER_RSS_CONTEXT_DEFAULT)                    
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        spec->priority = gen_spec->priority;                                             │          spec->priority = gen_spec->priority;                                            
        spec->flags = gen_spec->flags;                                                   │          spec->flags = gen_spec->flags;                                                  
        spec->dmaq_id = gen_spec->dmaq_id;                                               │          spec->dmaq_id = gen_spec->dmaq_id;                                              
                                                                                         │                                                                                          
        switch (gen_spec->match_flags) {                                                 │          switch (gen_spec->match_flags) {                                                
        case (EFX_FILTER_MATCH_ETHER_TYPE | EFX_FILTER_MATCH_IP_PROTO |                  │          case (EF4_FILTER_MATCH_ETHER_TYPE | EF4_FILTER_MATCH_IP_PROTO |                 
              EFX_FILTER_MATCH_LOC_HOST | EFX_FILTER_MATCH_LOC_PORT |                    │                EF4_FILTER_MATCH_LOC_HOST | EF4_FILTER_MATCH_LOC_PORT |                   
              EFX_FILTER_MATCH_REM_HOST | EFX_FILTER_MATCH_REM_PORT):                    │                EF4_FILTER_MATCH_REM_HOST | EF4_FILTER_MATCH_REM_PORT):                   
                is_full = true;                                                          │                  is_full = true;                                                         
                fallthrough;                                                             │                  fallthrough;                                                            
        case (EFX_FILTER_MATCH_ETHER_TYPE | EFX_FILTER_MATCH_IP_PROTO |                  │          case (EF4_FILTER_MATCH_ETHER_TYPE | EF4_FILTER_MATCH_IP_PROTO |                 
              EFX_FILTER_MATCH_LOC_HOST | EFX_FILTER_MATCH_LOC_PORT): {                  │                EF4_FILTER_MATCH_LOC_HOST | EF4_FILTER_MATCH_LOC_PORT): {                 
                __be32 rhost, host1, host2;                                              │                  __be32 rhost, host1, host2;                                             
                __be16 rport, port1, port2;                                              │                  __be16 rport, port1, port2;                                             
                                                                                         │                                                                                          
                EFX_WARN_ON_PARANOID(!(gen_spec->flags & EFX_FILTER_FLAG_RX));           │                  EF4_BUG_ON_PARANOID(!(gen_spec->flags & EF4_FILTER_FLAG_RX));           
                                                                                         │                                                                                          
                if (gen_spec->ether_type != htons(ETH_P_IP))                             │                  if (gen_spec->ether_type != htons(ETH_P_IP))                            
                        return -EPROTONOSUPPORT;                                         │                          return -EPROTONOSUPPORT;                                        
                if (gen_spec->loc_port == 0 ||                                           │                  if (gen_spec->loc_port == 0 ||                                          
                    (is_full && gen_spec->rem_port == 0))                                │                      (is_full && gen_spec->rem_port == 0))                               
                        return -EADDRNOTAVAIL;                                           │                          return -EADDRNOTAVAIL;                                          
                switch (gen_spec->ip_proto) {                                            │                  switch (gen_spec->ip_proto) {                                           
                case IPPROTO_TCP:                                                        │                  case IPPROTO_TCP:                                                       
                        spec->type = (is_full ? EFX_FARCH_FILTER_TCP_FULL :              │                          spec->type = (is_full ? EF4_FARCH_FILTER_TCP_FULL :             
                                      EFX_FARCH_FILTER_TCP_WILD);                        │                                        EF4_FARCH_FILTER_TCP_WILD);                       
                        break;                                                           │                          break;                                                          
                case IPPROTO_UDP:                                                        │                  case IPPROTO_UDP:                                                       
                        spec->type = (is_full ? EFX_FARCH_FILTER_UDP_FULL :              │                          spec->type = (is_full ? EF4_FARCH_FILTER_UDP_FULL :             
                                      EFX_FARCH_FILTER_UDP_WILD);                        │                                        EF4_FARCH_FILTER_UDP_WILD);                       
                        break;                                                           │                          break;                                                          
                default:                                                                 │                  default:                                                                
                        return -EPROTONOSUPPORT;                                         │                          return -EPROTONOSUPPORT;                                        
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* Filter is constructed in terms of source and destination,             │                  /* Filter is constructed in terms of source and destination,            
                 * with the odd wrinkle that the ports are swapped in a UDP              │                   * with the odd wrinkle that the ports are swapped in a UDP             
                 * wildcard filter.  We need to convert from local and remote            │                   * wildcard filter.  We need to convert from local and remote           
                 * (= zero for wildcard) addresses.                                      │                   * (= zero for wildcard) addresses.                                     
                 */                                                                      │                   */                                                                     
                rhost = is_full ? gen_spec->rem_host[0] : 0;                             │                  rhost = is_full ? gen_spec->rem_host[0] : 0;                            
                rport = is_full ? gen_spec->rem_port : 0;                                │                  rport = is_full ? gen_spec->rem_port : 0;                               
                host1 = rhost;                                                           │                  host1 = rhost;                                                          
                host2 = gen_spec->loc_host[0];                                           │                  host2 = gen_spec->loc_host[0];                                          
                if (!is_full && gen_spec->ip_proto == IPPROTO_UDP) {                     │                  if (!is_full && gen_spec->ip_proto == IPPROTO_UDP) {                    
                        port1 = gen_spec->loc_port;                                      │                          port1 = gen_spec->loc_port;                                     
                        port2 = rport;                                                   │                          port2 = rport;                                                  
                } else {                                                                 │                  } else {                                                                
                        port1 = rport;                                                   │                          port1 = rport;                                                  
                        port2 = gen_spec->loc_port;                                      │                          port2 = gen_spec->loc_port;                                     
                }                                                                        │                  }                                                                       
                spec->data[0] = ntohl(host1) << 16 | ntohs(port1);                       │                  spec->data[0] = ntohl(host1) << 16 | ntohs(port1);                      
                spec->data[1] = ntohs(port2) << 16 | ntohl(host1) >> 16;                 │                  spec->data[1] = ntohs(port2) << 16 | ntohl(host1) >> 16;                
                spec->data[2] = ntohl(host2);                                            │                  spec->data[2] = ntohl(host2);                                           
                                                                                         │                                                                                          
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        case EFX_FILTER_MATCH_LOC_MAC | EFX_FILTER_MATCH_OUTER_VID:                      │          case EF4_FILTER_MATCH_LOC_MAC | EF4_FILTER_MATCH_OUTER_VID:                     
                is_full = true;                                                          │                  is_full = true;                                                         
                fallthrough;                                                             │                  fallthrough;                                                            
        case EFX_FILTER_MATCH_LOC_MAC:                                                   │          case EF4_FILTER_MATCH_LOC_MAC:                                                  
                spec->type = (is_full ? EFX_FARCH_FILTER_MAC_FULL :                      │                  spec->type = (is_full ? EF4_FARCH_FILTER_MAC_FULL :                     
                              EFX_FARCH_FILTER_MAC_WILD);                                │                                EF4_FARCH_FILTER_MAC_WILD);                               
                spec->data[0] = is_full ? ntohs(gen_spec->outer_vid) : 0;                │                  spec->data[0] = is_full ? ntohs(gen_spec->outer_vid) : 0;               
                spec->data[1] = (gen_spec->loc_mac[2] << 24 |                            │                  spec->data[1] = (gen_spec->loc_mac[2] << 24 |                           
                                 gen_spec->loc_mac[3] << 16 |                            │                                   gen_spec->loc_mac[3] << 16 |                           
                                 gen_spec->loc_mac[4] << 8 |                             │                                   gen_spec->loc_mac[4] << 8 |                            
                                 gen_spec->loc_mac[5]);                                  │                                   gen_spec->loc_mac[5]);                                 
                spec->data[2] = (gen_spec->loc_mac[0] << 8 |                             │                  spec->data[2] = (gen_spec->loc_mac[0] << 8 |                            
                                 gen_spec->loc_mac[1]);                                  │                                   gen_spec->loc_mac[1]);                                 
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case EFX_FILTER_MATCH_LOC_MAC_IG:                                                │          case EF4_FILTER_MATCH_LOC_MAC_IG:                                               
                spec->type = (is_multicast_ether_addr(gen_spec->loc_mac) ?               │                  spec->type = (is_multicast_ether_addr(gen_spec->loc_mac) ?              
                              EFX_FARCH_FILTER_MC_DEF :                                  │                                EF4_FARCH_FILTER_MC_DEF :                                 
                              EFX_FARCH_FILTER_UC_DEF);                                  │                                EF4_FARCH_FILTER_UC_DEF);                                 
                memset(spec->data, 0, sizeof(spec->data)); /* ensure equality */         │                  memset(spec->data, 0, sizeof(spec->data)); /* ensure equality */        
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        default:                                                                         │          default:                                                                        
                return -EPROTONOSUPPORT;                                                 │                  return -EPROTONOSUPPORT;                                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/octeon_device.c:310                          │ linux/drivers/net/ethernet/cavium/liquidio/octeon_device.c:36                            
                                                                                         │                                                                                          
        .card_type                              = LIO_210NV,                             │          .card_type                              = LIO_210SV,                            
        .card_name                              = LIO_210NV_NAME,                        │          .card_name                              = LIO_210SV_NAME,                       
                                                                                         │                                                                                          
        /** IQ attributes */                                                             │          /** IQ attributes */                                                            
                                                                                         │                                                                                          
        .iq                                     = {                                      │          .iq                                     = {                                     
                .max_iqs                        = CN6XXX_CFG_IO_QUEUES,                  │                  .max_iqs                        = CN6XXX_CFG_IO_QUEUES,                 
                .pending_list_size              =                                        │                  .pending_list_size              =                                       
                        (CN6XXX_MAX_IQ_DESCRIPTORS * CN6XXX_CFG_IO_QUEUES),              │                          (CN6XXX_MAX_IQ_DESCRIPTORS * CN6XXX_CFG_IO_QUEUES),             
                .instr_type                     = OCTEON_64BYTE_INSTR,                   │                  .instr_type                     = OCTEON_64BYTE_INSTR,                  
                .db_min                         = CN6XXX_DB_MIN,                         │                  .db_min                         = CN6XXX_DB_MIN,                        
                .db_timeout                     = CN6XXX_DB_TIMEOUT,                     │                  .db_timeout                     = CN6XXX_DB_TIMEOUT,                    
        }                                                                                │          }                                                                               
        ,                                                                                │          ,                                                                               
                                                                                         │                                                                                          
        /** OQ attributes */                                                             │          /** OQ attributes */                                                            
        .oq                                     = {                                      │          .oq                                     = {                                     
                .max_oqs                        = CN6XXX_CFG_IO_QUEUES,                  │                  .max_oqs                        = CN6XXX_CFG_IO_QUEUES,                 
                .refill_threshold               = CN6XXX_OQ_REFIL_THRESHOLD,             │                  .refill_threshold               = CN6XXX_OQ_REFIL_THRESHOLD,            
                .oq_intr_pkt                    = CN6XXX_OQ_INTR_PKT,                    │                  .oq_intr_pkt                    = CN6XXX_OQ_INTR_PKT,                   
                .oq_intr_time                   = CN6XXX_OQ_INTR_TIME,                   │                  .oq_intr_time                   = CN6XXX_OQ_INTR_TIME,                  
                .pkts_per_intr                  = CN6XXX_OQ_PKTSPER_INTR,                │                  .pkts_per_intr                  = CN6XXX_OQ_PKTSPER_INTR,               
        }                                                                                │          }                                                                               
        ,                                                                                │          ,                                                                               
                                                                                         │                                                                                          
        .num_nic_ports                  = DEFAULT_NUM_NIC_PORTS_68XX_210NV,              │          .num_nic_ports                          = DEFAULT_NUM_NIC_PORTS_66XX,           
        .num_def_rx_descs               = CN6XXX_MAX_OQ_DESCRIPTORS,                     │          .num_def_rx_descs                       = CN6XXX_MAX_OQ_DESCRIPTORS,            
        .num_def_tx_descs               = CN6XXX_MAX_IQ_DESCRIPTORS,                     │          .num_def_tx_descs                       = CN6XXX_MAX_IQ_DESCRIPTORS,            
        .def_rx_buf_size                = CN6XXX_OQ_BUF_SIZE,                            │          .def_rx_buf_size                        = CN6XXX_OQ_BUF_SIZE,                   
                                                                                         │                                                                                          
                                                                                         │          /* For ethernet interface 0:  Port cfg Attributes */                            
        .nic_if_cfg[0] = {                                                               │          .nic_if_cfg[0] = {                                                              
                /* Max Txqs: Half for each of the two ports :max_iq/2 */                 │                  /* Max Txqs: Half for each of the two ports :max_iq/2 */                
                .max_txqs                       = MAX_TXQS_PER_INTF,                     │                  .max_txqs                       = MAX_TXQS_PER_INTF,                    
                                                                                         │                                                                                          
                /* Actual configured value. Range could be: 1...max_txqs */              │                  /* Actual configured value. Range could be: 1...max_txqs */             
                .num_txqs                       = DEF_TXQS_PER_INTF,                     │                  .num_txqs                       = DEF_TXQS_PER_INTF,                    
                                                                                         │                                                                                          
                /* Max Rxqs: Half for each of the two ports :max_oq/2  */                │                  /* Max Rxqs: Half for each of the two ports :max_oq/2  */               
                .max_rxqs                       = MAX_RXQS_PER_INTF,                     │                  .max_rxqs                       = MAX_RXQS_PER_INTF,                    
                                                                                         │                                                                                          
                /* Actual configured value. Range could be: 1...max_rxqs */              │                  /* Actual configured value. Range could be: 1...max_rxqs */             
                .num_rxqs                       = DEF_RXQS_PER_INTF,                     │                  .num_rxqs                       = DEF_RXQS_PER_INTF,                    
                                                                                         │                                                                                          
                /* Num of desc for rx rings */                                           │                  /* Num of desc for rx rings */                                          
                .num_rx_descs                   = CN6XXX_MAX_OQ_DESCRIPTORS,             │                  .num_rx_descs                   = CN6XXX_MAX_OQ_DESCRIPTORS,            
                                                                                         │                                                                                          
                /* Num of desc for tx rings */                                           │                  /* Num of desc for tx rings */                                          
                .num_tx_descs                   = CN6XXX_MAX_IQ_DESCRIPTORS,             │                  .num_tx_descs                   = CN6XXX_MAX_IQ_DESCRIPTORS,            
                                                                                         │                                                                                          
                /* SKB size, We need not change buf size even for Jumbo frames.          │                  /* SKB size, We need not change buf size even for Jumbo frames.         
                 * Octeon can send jumbo frames in 4 consecutive descriptors,            │                   * Octeon can send jumbo frames in 4 consecutive descriptors,           
                 */                                                                      │                   */                                                                     
                .rx_buf_size                    = CN6XXX_OQ_BUF_SIZE,                    │                  .rx_buf_size                    = CN6XXX_OQ_BUF_SIZE,                   
                                                                                         │                                                                                          
                .base_queue                     = BASE_QUEUE_NOT_REQUESTED,              │                  .base_queue                     = BASE_QUEUE_NOT_REQUESTED,             
                                                                                         │                                                                                          
                .gmx_port_id                    = 0,                                     │                  .gmx_port_id                    = 0,                                    
        },                                                                               │          },                                                                              
                                                                                         │                                                                                          
        .nic_if_cfg[1] = {                                                               │          .nic_if_cfg[1] = {                                                              
                /* Max Txqs: Half for each of the two ports :max_iq/2 */                 │                  /* Max Txqs: Half for each of the two ports :max_iq/2 */                
                .max_txqs                       = MAX_TXQS_PER_INTF,                     │                  .max_txqs                       = MAX_TXQS_PER_INTF,                    
                                                                                         │                                                                                          
                /* Actual configured value. Range could be: 1...max_txqs */              │                  /* Actual configured value. Range could be: 1...max_txqs */             
                .num_txqs                       = DEF_TXQS_PER_INTF,                     │                  .num_txqs                       = DEF_TXQS_PER_INTF,                    
                                                                                         │                                                                                          
                /* Max Rxqs: Half for each of the two ports :max_oq/2  */                │                  /* Max Rxqs: Half for each of the two ports :max_oq/2  */               
                .max_rxqs                       = MAX_RXQS_PER_INTF,                     │                  .max_rxqs                       = MAX_RXQS_PER_INTF,                    
                                                                                         │                                                                                          
                /* Actual configured value. Range could be: 1...max_rxqs */              │                  /* Actual configured value. Range could be: 1...max_rxqs */             
                .num_rxqs                       = DEF_RXQS_PER_INTF,                     │                  .num_rxqs                       = DEF_RXQS_PER_INTF,                    
                                                                                         │                                                                                          
                /* Num of desc for rx rings */                                           │                  /* Num of desc for rx rings */                                          
                .num_rx_descs                   = CN6XXX_MAX_OQ_DESCRIPTORS,             │                  .num_rx_descs                   = CN6XXX_MAX_OQ_DESCRIPTORS,            
                                                                                         │                                                                                          
                /* Num of desc for tx rings */                                           │                  /* Num of desc for tx rings */                                          
                .num_tx_descs                   = CN6XXX_MAX_IQ_DESCRIPTORS,             │                  .num_tx_descs                   = CN6XXX_MAX_IQ_DESCRIPTORS,            
                                                                                         │                                                                                          
                /* SKB size, We need not change buf size even for Jumbo frames.          │                  /* SKB size, We need not change buf size even for Jumbo frames.         
                 * Octeon can send jumbo frames in 4 consecutive descriptors,            │                   * Octeon can send jumbo frames in 4 consecutive descriptors,           
                 */                                                                      │                   */                                                                     
                .rx_buf_size                    = CN6XXX_OQ_BUF_SIZE,                    │                  .rx_buf_size                    = CN6XXX_OQ_BUF_SIZE,                   
                                                                                         │                                                                                          
                .base_queue                     = BASE_QUEUE_NOT_REQUESTED,              │                  .base_queue                     = BASE_QUEUE_NOT_REQUESTED,             
                                                                                         │                                                                                          
                .gmx_port_id                    = 1,                                     │                  .gmx_port_id                    = 1,                                    
        },                                                                               │          },                                                                              
                                                                                         │                                                                                          
        /** Miscellaneous attributes */                                                  │          /** Miscellaneous attributes */                                                 
        .misc                                   = {                                      │          .misc                                   = {                                     
                /* Host driver link query interval */                                    │                  /* Host driver link query interval */                                   
                .oct_link_query_interval        = 100,                                   │                  .oct_link_query_interval        = 100,                                  
                                                                                         │                                                                                          
                /* Octeon link query interval */                                         │                  /* Octeon link query interval */                                        
                .host_link_query_interval       = 500,                                   │                  .host_link_query_interval       = 500,                                  
                                                                                         │                                                                                          
                .enable_sli_oq_bp               = 0,                                     │                  .enable_sli_oq_bp               = 0,                                    
                                                                                         │                                                                                          
                /* Control queue group */                                                │                  /* Control queue group */                                               
                .ctrlq_grp                      = 1,                                     │                  .ctrlq_grp                      = 1,                                    
        }                                                                                │          }                                                                               
        ,                                                                                │          ,                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:1934                                             │ linux/drivers/net/ethernet/sfc/falcon/farch.c:1866                                       
                                                                                         │                                                                                          
        struct efx_farch_filter_state *state = efx->filter_state;                        │          struct ef4_farch_filter_state *state = efx->filter_state;                       
        struct efx_farch_filter_table *table;                                            │          struct ef4_farch_filter_table *table;                                           
        efx_oword_t filter_ctl;                                                          │          ef4_oword_t filter_ctl;                                                         
                                                                                         │                                                                                          
        efx_reado(efx, &filter_ctl, FR_BZ_RX_FILTER_CTL);                                │          ef4_reado(efx, &filter_ctl, FR_BZ_RX_FILTER_CTL);                               
                                                                                         │                                                                                          
        table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP];                             │          table = &state->table[EF4_FARCH_FILTER_TABLE_RX_IP];                            
        EFX_SET_OWORD_FIELD(filter_ctl, FRF_BZ_TCP_FULL_SRCH_LIMIT,                      │          EF4_SET_OWORD_FIELD(filter_ctl, FRF_BZ_TCP_FULL_SRCH_LIMIT,                     
                            table->search_limit[EFX_FARCH_FILTER_TCP_FULL] +             │                              table->search_limit[EF4_FARCH_FILTER_TCP_FULL] +            
                            EFX_FARCH_FILTER_CTL_SRCH_FUDGE_FULL);                       │                              EF4_FARCH_FILTER_CTL_SRCH_FUDGE_FULL);                      
        EFX_SET_OWORD_FIELD(filter_ctl, FRF_BZ_TCP_WILD_SRCH_LIMIT,                      │          EF4_SET_OWORD_FIELD(filter_ctl, FRF_BZ_TCP_WILD_SRCH_LIMIT,                     
                            table->search_limit[EFX_FARCH_FILTER_TCP_WILD] +             │                              table->search_limit[EF4_FARCH_FILTER_TCP_WILD] +            
                            EFX_FARCH_FILTER_CTL_SRCH_FUDGE_WILD);                       │                              EF4_FARCH_FILTER_CTL_SRCH_FUDGE_WILD);                      
        EFX_SET_OWORD_FIELD(filter_ctl, FRF_BZ_UDP_FULL_SRCH_LIMIT,                      │          EF4_SET_OWORD_FIELD(filter_ctl, FRF_BZ_UDP_FULL_SRCH_LIMIT,                     
                            table->search_limit[EFX_FARCH_FILTER_UDP_FULL] +             │                              table->search_limit[EF4_FARCH_FILTER_UDP_FULL] +            
                            EFX_FARCH_FILTER_CTL_SRCH_FUDGE_FULL);                       │                              EF4_FARCH_FILTER_CTL_SRCH_FUDGE_FULL);                      
        EFX_SET_OWORD_FIELD(filter_ctl, FRF_BZ_UDP_WILD_SRCH_LIMIT,                      │          EF4_SET_OWORD_FIELD(filter_ctl, FRF_BZ_UDP_WILD_SRCH_LIMIT,                     
                            table->search_limit[EFX_FARCH_FILTER_UDP_WILD] +             │                              table->search_limit[EF4_FARCH_FILTER_UDP_WILD] +            
                            EFX_FARCH_FILTER_CTL_SRCH_FUDGE_WILD);                       │                              EF4_FARCH_FILTER_CTL_SRCH_FUDGE_WILD);                      
                                                                                         │                                                                                          
        table = &state->table[EFX_FARCH_FILTER_TABLE_RX_MAC];                            │          table = &state->table[EF4_FARCH_FILTER_TABLE_RX_MAC];                           
        if (table->size) {                                                               │          if (table->size) {                                                              
                EFX_SET_OWORD_FIELD(                                                     │                  EF4_SET_OWORD_FIELD(                                                    
                        filter_ctl, FRF_CZ_ETHERNET_FULL_SEARCH_LIMIT,                   │                          filter_ctl, FRF_CZ_ETHERNET_FULL_SEARCH_LIMIT,                  
                        table->search_limit[EFX_FARCH_FILTER_MAC_FULL] +                 │                          table->search_limit[EF4_FARCH_FILTER_MAC_FULL] +                
                        EFX_FARCH_FILTER_CTL_SRCH_FUDGE_FULL);                           │                          EF4_FARCH_FILTER_CTL_SRCH_FUDGE_FULL);                          
                EFX_SET_OWORD_FIELD(                                                     │                  EF4_SET_OWORD_FIELD(                                                    
                        filter_ctl, FRF_CZ_ETHERNET_WILDCARD_SEARCH_LIMIT,               │                          filter_ctl, FRF_CZ_ETHERNET_WILDCARD_SEARCH_LIMIT,              
                        table->search_limit[EFX_FARCH_FILTER_MAC_WILD] +                 │                          table->search_limit[EF4_FARCH_FILTER_MAC_WILD] +                
                        EFX_FARCH_FILTER_CTL_SRCH_FUDGE_WILD);                           │                          EF4_FARCH_FILTER_CTL_SRCH_FUDGE_WILD);                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF];                            │          table = &state->table[EF4_FARCH_FILTER_TABLE_RX_DEF];                           
        if (table->size) {                                                               │          if (table->size) {                                                              
                EFX_SET_OWORD_FIELD(                                                     │                  EF4_SET_OWORD_FIELD(                                                    
                        filter_ctl, FRF_CZ_UNICAST_NOMATCH_Q_ID,                         │                          filter_ctl, FRF_CZ_UNICAST_NOMATCH_Q_ID,                        
                        table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].dmaq_id);             │                          table->spec[EF4_FARCH_FILTER_INDEX_UC_DEF].dmaq_id);            
                EFX_SET_OWORD_FIELD(                                                     │                  EF4_SET_OWORD_FIELD(                                                    
                        filter_ctl, FRF_CZ_UNICAST_NOMATCH_RSS_ENABLED,                  │                          filter_ctl, FRF_CZ_UNICAST_NOMATCH_RSS_ENABLED,                 
                        !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags &            │                          !!(table->spec[EF4_FARCH_FILTER_INDEX_UC_DEF].flags &           
                           EFX_FILTER_FLAG_RX_RSS));                                     │                             EF4_FILTER_FLAG_RX_RSS));                                    
                EFX_SET_OWORD_FIELD(                                                     │                  EF4_SET_OWORD_FIELD(                                                    
                        filter_ctl, FRF_CZ_MULTICAST_NOMATCH_Q_ID,                       │                          filter_ctl, FRF_CZ_MULTICAST_NOMATCH_Q_ID,                      
                        table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].dmaq_id);             │                          table->spec[EF4_FARCH_FILTER_INDEX_MC_DEF].dmaq_id);            
                EFX_SET_OWORD_FIELD(                                                     │                  EF4_SET_OWORD_FIELD(                                                    
                        filter_ctl, FRF_CZ_MULTICAST_NOMATCH_RSS_ENABLED,                │                          filter_ctl, FRF_CZ_MULTICAST_NOMATCH_RSS_ENABLED,               
                        !!(table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags &            │                          !!(table->spec[EF4_FARCH_FILTER_INDEX_MC_DEF].flags &           
                           EFX_FILTER_FLAG_RX_RSS));                                     │                             EF4_FILTER_FLAG_RX_RSS));                                    
                                                                                         │                                                                                          
                /* There is a single bit to enable RX scatter for all                    │                  /* There is a single bit to enable RX scatter for all                   
                 * unmatched packets.  Only set it if scatter is                         │                   * unmatched packets.  Only set it if scatter is                        
                 * enabled in both filter specs.                                         │                   * enabled in both filter specs.                                        
                 */                                                                      │                   */                                                                     
                EFX_SET_OWORD_FIELD(                                                     │                  EF4_SET_OWORD_FIELD(                                                    
                        filter_ctl, FRF_BZ_SCATTER_ENBL_NO_MATCH_Q,                      │                          filter_ctl, FRF_BZ_SCATTER_ENBL_NO_MATCH_Q,                     
                        !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags &            │                          !!(table->spec[EF4_FARCH_FILTER_INDEX_UC_DEF].flags &           
                           table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags &            │                             table->spec[EF4_FARCH_FILTER_INDEX_MC_DEF].flags &           
                           EFX_FILTER_FLAG_RX_SCATTER));                                 │                             EF4_FILTER_FLAG_RX_SCATTER));                                
        } else {                                                                         │          } else if (ef4_nic_rev(efx) >= EF4_REV_FALCON_B0) {                             
                /* We don't expose 'default' filters because unmatched                   │                  /* We don't expose 'default' filters because unmatched                  
                 * packets always go to the queue number found in the                    │                   * packets always go to the queue number found in the                   
                 * RSS table.  But we still need to set the RX scatter                   │                   * RSS table.  But we still need to set the RX scatter                  
                 * bit here.                                                             │                   * bit here.                                                            
                 */                                                                      │                   */                                                                     
                EFX_SET_OWORD_FIELD(                                                     │                  EF4_SET_OWORD_FIELD(                                                    
                        filter_ctl, FRF_BZ_SCATTER_ENBL_NO_MATCH_Q,                      │                          filter_ctl, FRF_BZ_SCATTER_ENBL_NO_MATCH_Q,                     
                        efx->rx_scatter);                                                │                          efx->rx_scatter);                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        efx_writeo(efx, &filter_ctl, FR_BZ_RX_FILTER_CTL);                               │          ef4_writeo(efx, &filter_ctl, FR_BZ_RX_FILTER_CTL);                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c:1104                    │ linux/drivers/net/ethernet/aquantia/atlantic/hw_atl2/hw_atl2.c:667                       
                                                                                         │                                                                                          
        unsigned int i = 0U;                                                             │          unsigned int i = 0U;                                                            
        u32 itr_tx = 2U;                                                                 │          u32 itr_tx = 2U;                                                                
        u32 itr_rx = 2U;                                                                 │          u32 itr_rx = 2U;                                                                
                                                                                         │                                                                                          
        switch (self->aq_nic_cfg->itr) {                                                 │          switch (self->aq_nic_cfg->itr) {                                                
        case  AQ_CFG_INTERRUPT_MODERATION_ON:                                            │          case  AQ_CFG_INTERRUPT_MODERATION_ON:                                           
        case  AQ_CFG_INTERRUPT_MODERATION_AUTO:                                          │          case  AQ_CFG_INTERRUPT_MODERATION_AUTO:                                         
                hw_atl_tdm_tx_desc_wr_wb_irq_en_set(self, 0U);                           │                  hw_atl_tdm_tx_desc_wr_wb_irq_en_set(self, 0U);                          
                hw_atl_tdm_tdm_intr_moder_en_set(self, 1U);                              │                  hw_atl_tdm_tdm_intr_moder_en_set(self, 1U);                             
                hw_atl_rdm_rx_desc_wr_wb_irq_en_set(self, 0U);                           │                  hw_atl_rdm_rx_desc_wr_wb_irq_en_set(self, 0U);                          
                hw_atl_rdm_rdm_intr_moder_en_set(self, 1U);                              │                  hw_atl_rdm_rdm_intr_moder_en_set(self, 1U);                             
                                                                                         │                                                                                          
                if (self->aq_nic_cfg->itr == AQ_CFG_INTERRUPT_MODERATION_ON) {           │                  if (self->aq_nic_cfg->itr == AQ_CFG_INTERRUPT_MODERATION_ON) {          
                        /* HW timers are in 2us units */                                 │                          /* HW timers are in 2us units */                                
                        int tx_max_timer = self->aq_nic_cfg->tx_itr / 2;                 │                          int tx_max_timer = self->aq_nic_cfg->tx_itr / 2;                
                        int tx_min_timer = tx_max_timer / 2;                             │                          int tx_min_timer = tx_max_timer / 2;                            
                                                                                         │                                                                                          
                        int rx_max_timer = self->aq_nic_cfg->rx_itr / 2;                 │                          int rx_max_timer = self->aq_nic_cfg->rx_itr / 2;                
                        int rx_min_timer = rx_max_timer / 2;                             │                          int rx_min_timer = rx_max_timer / 2;                            
                                                                                         │                                                                                          
                        tx_max_timer = min(HW_ATL_INTR_MODER_MAX, tx_max_timer);         │                          tx_max_timer = min(HW_ATL2_INTR_MODER_MAX,                      
                        tx_min_timer = min(HW_ATL_INTR_MODER_MIN, tx_min_timer);         │                                             tx_max_timer);                               
                        rx_max_timer = min(HW_ATL_INTR_MODER_MAX, rx_max_timer);         │                          tx_min_timer = min(HW_ATL2_INTR_MODER_MIN,                      
                        rx_min_timer = min(HW_ATL_INTR_MODER_MIN, rx_min_timer);         │                                             tx_min_timer);                               
                                                                                         │                          rx_max_timer = min(HW_ATL2_INTR_MODER_MAX,                      
                                                                                         │                                             rx_max_timer);                               
                                                                                         │                          rx_min_timer = min(HW_ATL2_INTR_MODER_MIN,                      
                                                                                         │                                             rx_min_timer);                               
                                                                                         │                                                                                          
                        itr_tx |= tx_min_timer << 0x8U;                                  │                          itr_tx |= tx_min_timer << 0x8U;                                 
                        itr_tx |= tx_max_timer << 0x10U;                                 │                          itr_tx |= tx_max_timer << 0x10U;                                
                        itr_rx |= rx_min_timer << 0x8U;                                  │                          itr_rx |= rx_min_timer << 0x8U;                                 
                        itr_rx |= rx_max_timer << 0x10U;                                 │                          itr_rx |= rx_max_timer << 0x10U;                                
                } else {                                                                 │                  } else {                                                                
                        static unsigned int hw_atl_b0_timers_table_tx_[][2] = {          │                          static unsigned int hw_atl2_timers_table_tx_[][2] = {           
                                {0xfU, 0xffU}, /* 10Gbit */                              │                                  {0xfU, 0xffU}, /* 10Gbit */                             
                                {0xfU, 0x1ffU}, /* 5Gbit */                              │                                  {0xfU, 0x1ffU}, /* 5Gbit */                             
                                {0xfU, 0x1ffU}, /* 5Gbit 5GS */                          │                                  {0xfU, 0x1ffU}, /* 5Gbit 5GS */                         
                                {0xfU, 0x1ffU}, /* 2.5Gbit */                            │                                  {0xfU, 0x1ffU}, /* 2.5Gbit */                           
                                {0xfU, 0x1ffU}, /* 1Gbit */                              │                                  {0xfU, 0x1ffU}, /* 1Gbit */                             
                                {0xfU, 0x1ffU}, /* 100Mbit */                            │                                  {0xfU, 0x1ffU}, /* 100Mbit */                           
                        };                                                               │                          };                                                              
                                                                                         │                          static unsigned int hw_atl2_timers_table_rx_[][2] = {           
                        static unsigned int hw_atl_b0_timers_table_rx_[][2] = {          │                                                                                          
                                {0x6U, 0x38U},/* 10Gbit */                               │                                  {0x6U, 0x38U},/* 10Gbit */                              
                                {0xCU, 0x70U},/* 5Gbit */                                │                                  {0xCU, 0x70U},/* 5Gbit */                               
                                {0xCU, 0x70U},/* 5Gbit 5GS */                            │                                  {0xCU, 0x70U},/* 5Gbit 5GS */                           
                                {0x18U, 0xE0U},/* 2.5Gbit */                             │                                  {0x18U, 0xE0U},/* 2.5Gbit */                            
                                {0x30U, 0x80U},/* 1Gbit */                               │                                  {0x30U, 0x80U},/* 1Gbit */                              
                                {0x4U, 0x50U},/* 100Mbit */                              │                                  {0x4U, 0x50U},/* 100Mbit */                             
                        };                                                               │                          };                                                              
                                                                                         │                          unsigned int mbps = self->aq_link_status.mbps;                  
                                                                                         │                          unsigned int speed_index;                                       
                                                                                         │                                                                                          
                        unsigned int speed_index =                                       │                          speed_index = hw_atl_utils_mbps_2_speed_index(mbps);            
                                        hw_atl_utils_mbps_2_speed_index(                 │                                                                                          
                                                self->aq_link_status.mbps);              │                                                                                          
                                                                                         │                                                                                          
                        /* Update user visible ITR settings */                           │                          /* Update user visible ITR settings */                          
                        self->aq_nic_cfg->tx_itr = hw_atl_b0_timers_table_tx_            │                          self->aq_nic_cfg->tx_itr = hw_atl2_timers_table_tx_             
                                                        [speed_index][1] * 2;            │                                                          [speed_index][1] * 2;           
                        self->aq_nic_cfg->rx_itr = hw_atl_b0_timers_table_rx_            │                          self->aq_nic_cfg->rx_itr = hw_atl2_timers_table_rx_             
                                                        [speed_index][1] * 2;            │                                                          [speed_index][1] * 2;           
                                                                                         │                                                                                          
                        itr_tx |= hw_atl_b0_timers_table_tx_                             │                          itr_tx |= hw_atl2_timers_table_tx_                              
                                                [speed_index][0] << 0x8U;                │                                                  [speed_index][0] << 0x8U;               
                        itr_tx |= hw_atl_b0_timers_table_tx_                             │                          itr_tx |= hw_atl2_timers_table_tx_                              
                                                [speed_index][1] << 0x10U;               │                                                  [speed_index][1] << 0x10U;              
                                                                                         │                                                                                          
                        itr_rx |= hw_atl_b0_timers_table_rx_                             │                          itr_rx |= hw_atl2_timers_table_rx_                              
                                                [speed_index][0] << 0x8U;                │                                                  [speed_index][0] << 0x8U;               
                        itr_rx |= hw_atl_b0_timers_table_rx_                             │                          itr_rx |= hw_atl2_timers_table_rx_                              
                                                [speed_index][1] << 0x10U;               │                                                  [speed_index][1] << 0x10U;              
                }                                                                        │                  }                                                                       
                break;                                                                   │                  break;                                                                  
        case AQ_CFG_INTERRUPT_MODERATION_OFF:                                            │          case AQ_CFG_INTERRUPT_MODERATION_OFF:                                           
                hw_atl_tdm_tx_desc_wr_wb_irq_en_set(self, 1U);                           │                  hw_atl_tdm_tx_desc_wr_wb_irq_en_set(self, 1U);                          
                hw_atl_tdm_tdm_intr_moder_en_set(self, 0U);                              │                  hw_atl_tdm_tdm_intr_moder_en_set(self, 0U);                             
                hw_atl_rdm_rx_desc_wr_wb_irq_en_set(self, 1U);                           │                  hw_atl_rdm_rx_desc_wr_wb_irq_en_set(self, 1U);                          
                hw_atl_rdm_rdm_intr_moder_en_set(self, 0U);                              │                  hw_atl_rdm_rdm_intr_moder_en_set(self, 0U);                             
                itr_tx = 0U;                                                             │                  itr_tx = 0U;                                                            
                itr_rx = 0U;                                                             │                  itr_rx = 0U;                                                            
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (i = HW_ATL_B0_RINGS_MAX; i--;) {                                            │          for (i = HW_ATL2_RINGS_MAX; i--;) {                                             
                hw_atl_reg_tx_intr_moder_ctrl_set(self, itr_tx, i);                      │                  hw_atl2_reg_tx_intr_moder_ctrl_set(self, itr_tx, i);                    
                hw_atl_reg_rx_intr_moder_ctrl_set(self, itr_rx, i);                      │                  hw_atl_reg_rx_intr_moder_ctrl_set(self, itr_rx, i);                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return aq_hw_err_from_flags(self);                                               │          return aq_hw_err_from_flags(self);                                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c:342                           │ linux/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c:610                            
                                                                                         │                                                                                          
        int max_encap_size = MLX5_CAP_ESW(priv->mdev, max_encap_header_size);            │          int max_encap_size = MLX5_CAP_ESW(priv->mdev, max_encap_header_size);           
        const struct ip_tunnel_key *tun_key = &e->tun_info->key;                         │          const struct ip_tunnel_key *tun_key = &e->tun_info->key;                        
        struct mlx5_pkt_reformat_params reformat_params;                                 │          struct mlx5_pkt_reformat_params reformat_params;                                
        TC_TUN_ROUTE_ATTR_INIT(attr);                                                    │          TC_TUN_ROUTE_ATTR_INIT(attr);                                                   
        int ipv4_encap_size;                                                             │          struct ipv6hdr *ip6h;                                                           
                                                                                         │          int ipv6_encap_size;                                                            
        char *encap_header;                                                              │          char *encap_header;                                                             
        struct iphdr *ip;                                                                │                                                                                          
        u8 nud_state;                                                                    │          u8 nud_state;                                                                   
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        /* add the IP fields */                                                          │                                                                                          
        attr.fl.fl4.flowi4_tos = tun_key->tos & ~INET_ECN_MASK;                          │                                                                                          
        attr.fl.fl4.daddr = tun_key->u.ipv4.dst;                                         │                                                                                          
        attr.fl.fl4.saddr = tun_key->u.ipv4.src;                                         │                                                                                          
        attr.ttl = tun_key->ttl;                                                         │          attr.ttl = tun_key->ttl;                                                        
                                                                                         │                                                                                          
        err = mlx5e_route_lookup_ipv4_get(priv, mirred_dev, &attr);                      │          attr.fl.fl6.flowlabel = ip6_make_flowinfo(RT_TOS(tun_key->tos), tun_key->label);
                                                                                         │          attr.fl.fl6.daddr = tun_key->u.ipv6.dst;                                        
                                                                                         │          attr.fl.fl6.saddr = tun_key->u.ipv6.src;                                        
                                                                                         │                                                                                          
                                                                                         │          err = mlx5e_route_lookup_ipv6_get(priv, mirred_dev, &attr);                     
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        ipv4_encap_size =                                                                │          ipv6_encap_size =                                                               
                (is_vlan_dev(attr.route_dev) ? VLAN_ETH_HLEN : ETH_HLEN) +               │                  (is_vlan_dev(attr.route_dev) ? VLAN_ETH_HLEN : ETH_HLEN) +              
                sizeof(struct iphdr) +                                                   │                  sizeof(struct ipv6hdr) +                                                
                e->tunnel->calc_hlen(e);                                                 │                  e->tunnel->calc_hlen(e);                                                
                                                                                         │                                                                                          
        if (max_encap_size < ipv4_encap_size) {                                          │          if (max_encap_size < ipv6_encap_size) {                                         
                mlx5_core_warn(priv->mdev, "encap size %d too big, max supported is %d\n │                  mlx5_core_warn(priv->mdev, "encap size %d too big, max supported is %d\n
                               ipv4_encap_size, max_encap_size);                         │                                 ipv6_encap_size, max_encap_size);                        
                err = -EOPNOTSUPP;                                                       │                  err = -EOPNOTSUPP;                                                      
                goto release_neigh;                                                      │                  goto release_neigh;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        encap_header = kzalloc(ipv4_encap_size, GFP_KERNEL);                             │          encap_header = kzalloc(ipv6_encap_size, GFP_KERNEL);                            
        if (!encap_header) {                                                             │          if (!encap_header) {                                                            
                err = -ENOMEM;                                                           │                  err = -ENOMEM;                                                          
                goto release_neigh;                                                      │                  goto release_neigh;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        e->route_dev_ifindex = attr.route_dev->ifindex;                                  │          e->route_dev_ifindex = attr.route_dev->ifindex;                                 
                                                                                         │                                                                                          
        read_lock_bh(&attr.n->lock);                                                     │          read_lock_bh(&attr.n->lock);                                                    
        nud_state = attr.n->nud_state;                                                   │          nud_state = attr.n->nud_state;                                                  
        ether_addr_copy(e->h_dest, attr.n->ha);                                          │          ether_addr_copy(e->h_dest, attr.n->ha);                                         
        WRITE_ONCE(e->nhe->neigh_dev, attr.n->dev);                                      │          WRITE_ONCE(e->nhe->neigh_dev, attr.n->dev);                                     
        read_unlock_bh(&attr.n->lock);                                                   │          read_unlock_bh(&attr.n->lock);                                                  
                                                                                         │                                                                                          
        /* add ethernet header */                                                        │          /* add ethernet header */                                                       
        ip = (struct iphdr *)gen_eth_tnl_hdr(encap_header, attr.route_dev, e,            │          ip6h = (struct ipv6hdr *)gen_eth_tnl_hdr(encap_header, attr.route_dev, e,       
                                             ETH_P_IP);                                  │                                                   ETH_P_IPV6);                           
                                                                                         │                                                                                          
        /* add ip header */                                                              │          /* add ip header */                                                             
        ip->tos = tun_key->tos;                                                          │          ip6_flow_hdr(ip6h, tun_key->tos, 0);                                            
        ip->version = 0x4;                                                               │          /* the HW fills up ipv6 payload len */                                          
        ip->ihl = 0x5;                                                                   │          ip6h->hop_limit   = attr.ttl;                                                   
        ip->ttl = attr.ttl;                                                              │          ip6h->daddr       = attr.fl.fl6.daddr;                                          
        ip->daddr = attr.fl.fl4.daddr;                                                   │          ip6h->saddr       = attr.fl.fl6.saddr;                                          
        ip->saddr = attr.fl.fl4.saddr;                                                   │                                                                                          
                                                                                         │                                                                                          
        /* add tunneling protocol header */                                              │          /* add tunneling protocol header */                                             
        err = mlx5e_gen_ip_tunnel_header((char *)ip + sizeof(struct iphdr),              │          err = mlx5e_gen_ip_tunnel_header((char *)ip6h + sizeof(struct ipv6hdr),         
                                         &ip->protocol, e);                              │                                           &ip6h->nexthdr, e);                            
        if (err)                                                                         │          if (err)                                                                        
                goto free_encap;                                                         │                  goto free_encap;                                                        
                                                                                         │                                                                                          
        e->encap_size = ipv4_encap_size;                                                 │          e->encap_size = ipv6_encap_size;                                                
        kfree(e->encap_header);                                                          │          kfree(e->encap_header);                                                         
        e->encap_header = encap_header;                                                  │          e->encap_header = encap_header;                                                 
                                                                                         │                                                                                          
        if (!(nud_state & NUD_VALID)) {                                                  │          if (!(nud_state & NUD_VALID)) {                                                 
                neigh_event_send(attr.n, NULL);                                          │                  neigh_event_send(attr.n, NULL);                                         
                /* the encap entry will be made valid on neigh update event              │                  /* the encap entry will be made valid on neigh update event             
                 * and not used before that.                                             │                   * and not used before that.                                            
                 */                                                                      │                   */                                                                     
                goto release_neigh;                                                      │                  goto release_neigh;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        memset(&reformat_params, 0, sizeof(reformat_params));                            │          memset(&reformat_params, 0, sizeof(reformat_params));                           
        reformat_params.type = e->reformat_type;                                         │          reformat_params.type = e->reformat_type;                                        
        reformat_params.size = ipv4_encap_size;                                          │          reformat_params.size = ipv6_encap_size;                                         
        reformat_params.data = encap_header;                                             │          reformat_params.data = encap_header;                                            
        e->pkt_reformat = mlx5_packet_reformat_alloc(priv->mdev, &reformat_params,       │          e->pkt_reformat = mlx5_packet_reformat_alloc(priv->mdev, &reformat_params,      
                                                     MLX5_FLOW_NAMESPACE_FDB);           │                                                       MLX5_FLOW_NAMESPACE_FDB);          
        if (IS_ERR(e->pkt_reformat)) {                                                   │          if (IS_ERR(e->pkt_reformat)) {                                                  
                err = PTR_ERR(e->pkt_reformat);                                          │                  err = PTR_ERR(e->pkt_reformat);                                         
                goto free_encap;                                                         │                  goto free_encap;                                                        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        e->flags |= MLX5_ENCAP_ENTRY_VALID;                                              │          e->flags |= MLX5_ENCAP_ENTRY_VALID;                                             
        mlx5e_rep_queue_neigh_stats_work(netdev_priv(attr.out_dev));                     │          mlx5e_rep_queue_neigh_stats_work(netdev_priv(attr.out_dev));                    
        mlx5e_route_lookup_ipv4_put(&attr);                                              │          mlx5e_route_lookup_ipv6_put(&attr);                                             
        return err;                                                                      │          return err;                                                                     
                                                                                         │                                                                                          
free_encap:                                                                              │  free_encap:                                                                             
        kfree(encap_header);                                                             │          kfree(encap_header);                                                            
release_neigh:                                                                           │  release_neigh:                                                                          
        mlx5e_route_lookup_ipv4_put(&attr);                                              │          mlx5e_route_lookup_ipv6_put(&attr);                                             
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10739                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8065                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define USTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_ISCSI_CONN_AG_CTX_CF3_MASK       0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK   0x3                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF3_SHIFT      0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT  0                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF4_MASK       0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4_MASK   0x3                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT      2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4_SHIFT  2                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF5_MASK       0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5_MASK   0x3                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT      4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5_SHIFT  4                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF6_MASK       0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK   0x3                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT      6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT  6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define USTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define USTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define USTORM_ISCSI_CONN_AG_CTX_CF3EN_MASK             0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF3EN_SHIFT            3                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT        3                               
#define USTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK             0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_MASK 0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT            4                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_SHIFT        4                               
#define USTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK             0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_MASK 0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT            5                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_SHIFT        5                               
#define USTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK             0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT            6                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT        6                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  7                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      7                               
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      0                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  1                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      1                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      2                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  3                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      3                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK       0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT  4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT      4                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK       0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT  5                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT      5                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK       0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT  6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT      6                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK   0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK       0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT  7                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10739                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7996                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define USTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define USTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define USTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define USTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_ISCSI_CONN_AG_CTX_CF3_MASK       0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK            0x3                             
#define USTORM_ISCSI_CONN_AG_CTX_CF3_SHIFT      0                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT   0                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF4_MASK       0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4_MASK            0x3                             
#define USTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT      2                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4_SHIFT   2                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF5_MASK       0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5_MASK            0x3                             
#define USTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT      4                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5_SHIFT   4                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF6_MASK       0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6_MASK            0x3                             
#define USTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT      6                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6_SHIFT   6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF3EN_MASK             0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK  0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF3EN_SHIFT            3                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 3                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK             0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_MASK  0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT            4                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_SHIFT 4                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK             0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_MASK  0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT            5                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_SHIFT 5                                       
#define USTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK             0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_MASK  0x1                                     
#define USTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT            6                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_SHIFT 6                                       
#define USTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  7                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       7                               
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  0                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       0                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  1                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       1                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  2                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       2                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  3                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       3                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK   0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK        0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT  4                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT       4                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK   0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK        0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT  5                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT       5                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK   0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK        0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT  6                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT       6                               
#define USTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK   0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK        0x1                             
#define USTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT  7                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT       7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/rx.c:123                                                 │ linux/drivers/net/ethernet/sfc/falcon/rx.c:532                                           
                                                                                         │                                                                                          
        struct efx_nic *efx = rx_queue->efx;                                             │          struct ef4_nic *efx = rx_queue->efx;                                            
        struct efx_channel *channel = efx_rx_queue_channel(rx_queue);                    │          struct ef4_channel *channel = ef4_rx_queue_channel(rx_queue);                   
        struct efx_rx_buffer *rx_buf;                                                    │          struct ef4_rx_buffer *rx_buf;                                                   
                                                                                         │                                                                                          
        rx_queue->rx_packets++;                                                          │          rx_queue->rx_packets++;                                                         
                                                                                         │                                                                                          
        rx_buf = efx_rx_buffer(rx_queue, index);                                         │          rx_buf = ef4_rx_buffer(rx_queue, index);                                        
        rx_buf->flags |= flags;                                                          │          rx_buf->flags |= flags;                                                         
                                                                                         │                                                                                          
        /* Validate the number of fragments and completed length */                      │          /* Validate the number of fragments and completed length */                     
        if (n_frags == 1) {                                                              │          if (n_frags == 1) {                                                             
                if (!(flags & EFX_RX_PKT_PREFIX_LEN))                                    │                  if (!(flags & EF4_RX_PKT_PREFIX_LEN))                                   
                        efx_rx_packet__check_len(rx_queue, rx_buf, len);                 │                          ef4_rx_packet__check_len(rx_queue, rx_buf, len);                
        } else if (unlikely(n_frags > EFX_RX_MAX_FRAGS) ||                               │          } else if (unlikely(n_frags > EF4_RX_MAX_FRAGS) ||                              
                   unlikely(len <= (n_frags - 1) * efx->rx_dma_len) ||                   │                     unlikely(len <= (n_frags - 1) * efx->rx_dma_len) ||                  
                   unlikely(len > n_frags * efx->rx_dma_len) ||                          │                     unlikely(len > n_frags * efx->rx_dma_len) ||                         
                   unlikely(!efx->rx_scatter)) {                                         │                     unlikely(!efx->rx_scatter)) {                                        
                /* If this isn't an explicit discard request, either                     │                  /* If this isn't an explicit discard request, either                    
                 * the hardware or the driver is broken.                                 │                   * the hardware or the driver is broken.                                
                 */                                                                      │                   */                                                                     
                WARN_ON(!(len == 0 && rx_buf->flags & EFX_RX_PKT_DISCARD));              │                  WARN_ON(!(len == 0 && rx_buf->flags & EF4_RX_PKT_DISCARD));             
                rx_buf->flags |= EFX_RX_PKT_DISCARD;                                     │                  rx_buf->flags |= EF4_RX_PKT_DISCARD;                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        netif_vdbg(efx, rx_status, efx->net_dev,                                         │          netif_vdbg(efx, rx_status, efx->net_dev,                                        
                   "RX queue %d received ids %x-%x len %d %s%s\n",                       │                     "RX queue %d received ids %x-%x len %d %s%s\n",                      
                   efx_rx_queue_index(rx_queue), index,                                  │                     ef4_rx_queue_index(rx_queue), index,                                 
                   (index + n_frags - 1) & rx_queue->ptr_mask, len,                      │                     (index + n_frags - 1) & rx_queue->ptr_mask, len,                     
                   (rx_buf->flags & EFX_RX_PKT_CSUMMED) ? " [SUMMED]" : "",              │                     (rx_buf->flags & EF4_RX_PKT_CSUMMED) ? " [SUMMED]" : "",             
                   (rx_buf->flags & EFX_RX_PKT_DISCARD) ? " [DISCARD]" : "");            │                     (rx_buf->flags & EF4_RX_PKT_DISCARD) ? " [DISCARD]" : "");           
                                                                                         │                                                                                          
        /* Discard packet, if instructed to do so.  Process the                          │          /* Discard packet, if instructed to do so.  Process the                         
         * previous receive first.                                                       │           * previous receive first.                                                      
         */                                                                              │           */                                                                             
        if (unlikely(rx_buf->flags & EFX_RX_PKT_DISCARD)) {                              │          if (unlikely(rx_buf->flags & EF4_RX_PKT_DISCARD)) {                             
                efx_rx_flush_packet(channel);                                            │                  ef4_rx_flush_packet(channel);                                           
                efx_discard_rx_packet(channel, rx_buf, n_frags);                         │                  ef4_discard_rx_packet(channel, rx_buf, n_frags);                        
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (n_frags == 1 && !(flags & EFX_RX_PKT_PREFIX_LEN))                            │          if (n_frags == 1 && !(flags & EF4_RX_PKT_PREFIX_LEN))                           
                rx_buf->len = len;                                                       │                  rx_buf->len = len;                                                      
                                                                                         │                                                                                          
        /* Release and/or sync the DMA mapping - assumes all RX buffers                  │          /* Release and/or sync the DMA mapping - assumes all RX buffers                 
         * consumed in-order per RX queue.                                               │           * consumed in-order per RX queue.                                              
         */                                                                              │           */                                                                             
        efx_sync_rx_buffer(efx, rx_buf, rx_buf->len);                                    │          ef4_sync_rx_buffer(efx, rx_buf, rx_buf->len);                                   
                                                                                         │                                                                                          
        /* Prefetch nice and early so data will (hopefully) be in cache by               │          /* Prefetch nice and early so data will (hopefully) be in cache by              
         * the time we look at it.                                                       │           * the time we look at it.                                                      
         */                                                                              │           */                                                                             
        prefetch(efx_rx_buf_va(rx_buf));                                                 │          prefetch(ef4_rx_buf_va(rx_buf));                                                
                                                                                         │                                                                                          
        rx_buf->page_offset += efx->rx_prefix_size;                                      │          rx_buf->page_offset += efx->rx_prefix_size;                                     
        rx_buf->len -= efx->rx_prefix_size;                                              │          rx_buf->len -= efx->rx_prefix_size;                                             
                                                                                         │                                                                                          
        if (n_frags > 1) {                                                               │          if (n_frags > 1) {                                                              
                /* Release/sync DMA mapping for additional fragments.                    │                  /* Release/sync DMA mapping for additional fragments.                   
                 * Fix length for last fragment.                                         │                   * Fix length for last fragment.                                        
                 */                                                                      │                   */                                                                     
                unsigned int tail_frags = n_frags - 1;                                   │                  unsigned int tail_frags = n_frags - 1;                                  
                                                                                         │                                                                                          
                for (;;) {                                                               │                  for (;;) {                                                              
                        rx_buf = efx_rx_buf_next(rx_queue, rx_buf);                      │                          rx_buf = ef4_rx_buf_next(rx_queue, rx_buf);                     
                        if (--tail_frags == 0)                                           │                          if (--tail_frags == 0)                                          
                                break;                                                   │                                  break;                                                  
                        efx_sync_rx_buffer(efx, rx_buf, efx->rx_dma_len);                │                          ef4_sync_rx_buffer(efx, rx_buf, efx->rx_dma_len);               
                }                                                                        │                  }                                                                       
                rx_buf->len = len - (n_frags - 1) * efx->rx_dma_len;                     │                  rx_buf->len = len - (n_frags - 1) * efx->rx_dma_len;                    
                efx_sync_rx_buffer(efx, rx_buf, rx_buf->len);                            │                  ef4_sync_rx_buffer(efx, rx_buf, rx_buf->len);                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* All fragments have been DMA-synced, so recycle pages. */                      │          /* All fragments have been DMA-synced, so recycle pages. */                     
        rx_buf = efx_rx_buffer(rx_queue, index);                                         │          rx_buf = ef4_rx_buffer(rx_queue, index);                                        
        efx_recycle_rx_pages(channel, rx_buf, n_frags);                                  │          ef4_recycle_rx_pages(channel, rx_buf, n_frags);                                 
                                                                                         │                                                                                          
        /* Pipeline receives so that we give time for packet headers to be               │          /* Pipeline receives so that we give time for packet headers to be              
         * prefetched into cache.                                                        │           * prefetched into cache.                                                       
         */                                                                              │           */                                                                             
        efx_rx_flush_packet(channel);                                                    │          ef4_rx_flush_packet(channel);                                                   
        channel->rx_pkt_n_frags = n_frags;                                               │          channel->rx_pkt_n_frags = n_frags;                                              
        channel->rx_pkt_index = index;                                                   │          channel->rx_pkt_index = index;                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/selftest.c:283                                           │ linux/drivers/net/ethernet/sfc/falcon/selftest.c:285                                     
                                                                                         │                                                                                          
        struct efx_loopback_state *state = efx->loopback_selftest;                       │          struct ef4_loopback_state *state = efx->loopback_selftest;                      
        struct efx_loopback_payload *received;                                           │          struct ef4_loopback_payload *received;                                          
        struct efx_loopback_payload *payload;                                            │          struct ef4_loopback_payload *payload;                                           
                                                                                         │                                                                                          
        BUG_ON(!buf_ptr);                                                                │          BUG_ON(!buf_ptr);                                                               
                                                                                         │                                                                                          
        /* If we are just flushing, then drop the packet */                              │          /* If we are just flushing, then drop the packet */                             
        if ((state == NULL) || state->flush)                                             │          if ((state == NULL) || state->flush)                                            
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        payload = &state->payload;                                                       │          payload = &state->payload;                                                      
                                                                                         │                                                                                          
        received = (struct efx_loopback_payload *) buf_ptr;                              │          received = (struct ef4_loopback_payload *) buf_ptr;                             
        received->ip.saddr = payload->ip.saddr;                                          │          received->ip.saddr = payload->ip.saddr;                                         
        if (state->offload_csum)                                                         │          if (state->offload_csum)                                                        
                received->ip.check = payload->ip.check;                                  │                  received->ip.check = payload->ip.check;                                 
                                                                                         │                                                                                          
        /* Check that header exists */                                                   │          /* Check that header exists */                                                  
        if (pkt_len < sizeof(received->header)) {                                        │          if (pkt_len < sizeof(received->header)) {                                       
                netif_err(efx, drv, efx->net_dev,                                        │                  netif_err(efx, drv, efx->net_dev,                                       
                          "saw runt RX packet (length %d) in %s loopback "               │                            "saw runt RX packet (length %d) in %s loopback "              
                          "test\n", pkt_len, LOOPBACK_MODE(efx));                        │                            "test\n", pkt_len, LOOPBACK_MODE(efx));                       
                goto err;                                                                │                  goto err;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Check that the ethernet header exists */                                      │          /* Check that the ethernet header exists */                                     
        if (memcmp(&received->header, &payload->header, ETH_HLEN) != 0) {                │          if (memcmp(&received->header, &payload->header, ETH_HLEN) != 0) {               
                netif_err(efx, drv, efx->net_dev,                                        │                  netif_err(efx, drv, efx->net_dev,                                       
                          "saw non-loopback RX packet in %s loopback test\n",            │                            "saw non-loopback RX packet in %s loopback test\n",           
                          LOOPBACK_MODE(efx));                                           │                            LOOPBACK_MODE(efx));                                          
                goto err;                                                                │                  goto err;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Check packet length */                                                        │          /* Check packet length */                                                       
        if (pkt_len != sizeof(*payload)) {                                               │          if (pkt_len != sizeof(*payload)) {                                              
                netif_err(efx, drv, efx->net_dev,                                        │                  netif_err(efx, drv, efx->net_dev,                                       
                          "saw incorrect RX packet length %d (wanted %d) in "            │                            "saw incorrect RX packet length %d (wanted %d) in "           
                          "%s loopback test\n", pkt_len, (int)sizeof(*payload),          │                            "%s loopback test\n", pkt_len, (int)sizeof(*payload),         
                          LOOPBACK_MODE(efx));                                           │                            LOOPBACK_MODE(efx));                                          
                goto err;                                                                │                  goto err;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Check that IP header matches */                                               │          /* Check that IP header matches */                                              
        if (memcmp(&received->ip, &payload->ip, sizeof(payload->ip)) != 0) {             │          if (memcmp(&received->ip, &payload->ip, sizeof(payload->ip)) != 0) {            
                netif_err(efx, drv, efx->net_dev,                                        │                  netif_err(efx, drv, efx->net_dev,                                       
                          "saw corrupted IP header in %s loopback test\n",               │                            "saw corrupted IP header in %s loopback test\n",              
                          LOOPBACK_MODE(efx));                                           │                            LOOPBACK_MODE(efx));                                          
                goto err;                                                                │                  goto err;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Check that msg and padding matches */                                         │          /* Check that msg and padding matches */                                        
        if (memcmp(&received->msg, &payload->msg, sizeof(received->msg)) != 0) {         │          if (memcmp(&received->msg, &payload->msg, sizeof(received->msg)) != 0) {        
                netif_err(efx, drv, efx->net_dev,                                        │                  netif_err(efx, drv, efx->net_dev,                                       
                          "saw corrupted RX packet in %s loopback test\n",               │                            "saw corrupted RX packet in %s loopback test\n",              
                          LOOPBACK_MODE(efx));                                           │                            LOOPBACK_MODE(efx));                                          
                goto err;                                                                │                  goto err;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Check that iteration matches */                                               │          /* Check that iteration matches */                                              
        if (received->iteration != payload->iteration) {                                 │          if (received->iteration != payload->iteration) {                                
                netif_err(efx, drv, efx->net_dev,                                        │                  netif_err(efx, drv, efx->net_dev,                                       
                          "saw RX packet from iteration %d (wanted %d) in "              │                            "saw RX packet from iteration %d (wanted %d) in "             
                          "%s loopback test\n", ntohs(received->iteration),              │                            "%s loopback test\n", ntohs(received->iteration),             
                          ntohs(payload->iteration), LOOPBACK_MODE(efx));                │                            ntohs(payload->iteration), LOOPBACK_MODE(efx));               
                goto err;                                                                │                  goto err;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Increase correct RX count */                                                  │          /* Increase correct RX count */                                                 
        netif_vdbg(efx, drv, efx->net_dev,                                               │          netif_vdbg(efx, drv, efx->net_dev,                                              
                   "got loopback RX in %s loopback test\n", LOOPBACK_MODE(efx));         │                     "got loopback RX in %s loopback test\n", LOOPBACK_MODE(efx));        
                                                                                         │                                                                                          
        atomic_inc(&state->rx_good);                                                     │          atomic_inc(&state->rx_good);                                                    
        return;                                                                          │          return;                                                                         
                                                                                         │                                                                                          
 err:                                                                                    │   err:                                                                                   
#ifdef DEBUG                                                                             │  #ifdef DEBUG                                                                            
        if (atomic_read(&state->rx_bad) == 0) {                                          │          if (atomic_read(&state->rx_bad) == 0) {                                         
                netif_err(efx, drv, efx->net_dev, "received packet:\n");                 │                  netif_err(efx, drv, efx->net_dev, "received packet:\n");                
                print_hex_dump(KERN_ERR, "", DUMP_PREFIX_OFFSET, 0x10, 1,                │                  print_hex_dump(KERN_ERR, "", DUMP_PREFIX_OFFSET, 0x10, 1,               
                               buf_ptr, pkt_len, 0);                                     │                                 buf_ptr, pkt_len, 0);                                    
                netif_err(efx, drv, efx->net_dev, "expected packet:\n");                 │                  netif_err(efx, drv, efx->net_dev, "expected packet:\n");                
                print_hex_dump(KERN_ERR, "", DUMP_PREFIX_OFFSET, 0x10, 1,                │                  print_hex_dump(KERN_ERR, "", DUMP_PREFIX_OFFSET, 0x10, 1,               
                               &state->payload, sizeof(state->payload), 0);              │                                 &state->payload, sizeof(state->payload), 0);             
        }                                                                                │          }                                                                               
#endif                                                                                   │  #endif                                                                                  
        atomic_inc(&state->rx_bad);                                                      │          atomic_inc(&state->rx_bad);                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:798                                     │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8065                                     
                                                                                         │                                                                                          
        u8 reserved;                                                                     │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define USTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define USTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define USTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define USTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_CORE_CONN_AG_CTX_CF3_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK   0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF3_SHIFT       0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT  0                                       
#define USTORM_CORE_CONN_AG_CTX_CF4_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4_MASK   0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF4_SHIFT       2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4_SHIFT  2                                       
#define USTORM_CORE_CONN_AG_CTX_CF5_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5_MASK   0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF5_SHIFT       4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5_SHIFT  4                                       
#define USTORM_CORE_CONN_AG_CTX_CF6_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK   0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF6_SHIFT       6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT  6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define USTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define USTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define USTORM_CORE_CONN_AG_CTX_CF3EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT             3                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT        3                               
#define USTORM_CORE_CONN_AG_CTX_CF4EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_MASK 0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT             4                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_SHIFT        4                               
#define USTORM_CORE_CONN_AG_CTX_CF5EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_MASK 0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT             5                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_SHIFT        5                               
#define USTORM_CORE_CONN_AG_CTX_CF6EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT             6                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT        6                               
#define USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   7                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      7                               
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      0                               
#define USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   1                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      1                               
#define USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      2                               
#define USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   3                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      3                               
#define USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK       0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT   4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT      4                               
#define USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK       0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT   5                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT      5                               
#define USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK       0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT   6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT      6                               
#define USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK       0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT   7                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 rx_producers;                                                             │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:798                                     │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7996                                     
                                                                                         │                                                                                          
        u8 reserved;                                                                     │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define USTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define USTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define USTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define USTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define USTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define USTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define USTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_CORE_CONN_AG_CTX_CF3_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK            0x3                             
#define USTORM_CORE_CONN_AG_CTX_CF3_SHIFT       0                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT   0                                       
#define USTORM_CORE_CONN_AG_CTX_CF4_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4_MASK            0x3                             
#define USTORM_CORE_CONN_AG_CTX_CF4_SHIFT       2                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4_SHIFT   2                                       
#define USTORM_CORE_CONN_AG_CTX_CF5_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5_MASK            0x3                             
#define USTORM_CORE_CONN_AG_CTX_CF5_SHIFT       4                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5_SHIFT   4                                       
#define USTORM_CORE_CONN_AG_CTX_CF6_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6_MASK            0x3                             
#define USTORM_CORE_CONN_AG_CTX_CF6_SHIFT       6                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6_SHIFT   6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define USTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define USTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define USTORM_CORE_CONN_AG_CTX_CF3EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK  0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT             3                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 3                                       
#define USTORM_CORE_CONN_AG_CTX_CF4EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_MASK  0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT             4                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_SHIFT 4                                       
#define USTORM_CORE_CONN_AG_CTX_CF5EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_MASK  0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT             5                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_SHIFT 5                                       
#define USTORM_CORE_CONN_AG_CTX_CF6EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_MASK  0x1                                     
#define USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT             6                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_SHIFT 6                                       
#define USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   7                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       7                               
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   0                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       0                               
#define USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   1                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       1                               
#define USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   2                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       2                               
#define USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   3                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       3                               
#define USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK        0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT   4                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT       4                               
#define USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK        0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT   5                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT       5                               
#define USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK        0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT   6                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT       6                               
#define USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK        0x1                             
#define USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT   7                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT       7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 rx_producers;                                                             │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:798                                     │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10739                                    
                                                                                         │                                                                                          
        u8 reserved;                                                                     │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define USTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define USTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define USTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define USTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define USTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define USTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                       
#define USTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                       
#define USTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_CORE_CONN_AG_CTX_CF3_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF3_MASK       0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF3_SHIFT       0                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF3_SHIFT      0                                       
#define USTORM_CORE_CONN_AG_CTX_CF4_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF4_MASK       0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF4_SHIFT       2                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT      2                                       
#define USTORM_CORE_CONN_AG_CTX_CF5_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF5_MASK       0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF5_SHIFT       4                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT      4                                       
#define USTORM_CORE_CONN_AG_CTX_CF6_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF6_MASK       0x3                                     
#define USTORM_CORE_CONN_AG_CTX_CF6_SHIFT       6                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT      6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define USTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define USTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define USTORM_CORE_CONN_AG_CTX_CF3EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF3EN_MASK             0x1                             
#define USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT             3                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF3EN_SHIFT            3                               
#define USTORM_CORE_CONN_AG_CTX_CF4EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK             0x1                             
#define USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT             4                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT            4                               
#define USTORM_CORE_CONN_AG_CTX_CF5EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK             0x1                             
#define USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT             5                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT            5                               
#define USTORM_CORE_CONN_AG_CTX_CF6EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK             0x1                             
#define USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT             6                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT            6                               
#define USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   7                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  7                                       
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   0                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  0                                       
#define USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   1                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  1                                       
#define USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   2                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  2                                       
#define USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   3                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  3                                       
#define USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT   4                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT  4                                       
#define USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT   5                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT  5                                       
#define USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT   6                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT  6                                       
#define USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK   0x1                                     
#define USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT   7                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT  7                                       
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 rx_producers;                                                             │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10086                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8065                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define USTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define USTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define USTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define USTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_CF3_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK   0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF3_SHIFT       0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT  0                                       
#define USTORM_FCOE_CONN_AG_CTX_CF4_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4_MASK   0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF4_SHIFT       2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4_SHIFT  2                                       
#define USTORM_FCOE_CONN_AG_CTX_CF5_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5_MASK   0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF5_SHIFT       4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5_SHIFT  4                                       
#define USTORM_FCOE_CONN_AG_CTX_CF6_MASK        0x3                                      │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK   0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF6_SHIFT       6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT  6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define USTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define USTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define USTORM_FCOE_CONN_AG_CTX_CF3EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT             3                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT        3                               
#define USTORM_FCOE_CONN_AG_CTX_CF4EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_MASK 0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT             4                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_SHIFT        4                               
#define USTORM_FCOE_CONN_AG_CTX_CF5EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_MASK 0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT             5                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_SHIFT        5                               
#define USTORM_FCOE_CONN_AG_CTX_CF6EN_MASK              0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT             6                                │  #define USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT        6                               
#define USTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   7                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      7                               
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   0                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      0                               
#define USTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   1                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      1                               
#define USTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   2                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      2                               
#define USTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   3                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      3                               
#define USTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK       0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT   4                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT      4                               
#define USTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK       0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT   5                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT      5                               
#define USTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK       0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT   6                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT      6                               
#define USTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK            0x1                              │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK       0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT   7                                        │  #define USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10086                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7996                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define USTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define USTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define USTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define USTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define USTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define USTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define USTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_CF3_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK            0x3                             
#define USTORM_FCOE_CONN_AG_CTX_CF3_SHIFT       0                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT   0                                       
#define USTORM_FCOE_CONN_AG_CTX_CF4_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4_MASK            0x3                             
#define USTORM_FCOE_CONN_AG_CTX_CF4_SHIFT       2                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4_SHIFT   2                                       
#define USTORM_FCOE_CONN_AG_CTX_CF5_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5_MASK            0x3                             
#define USTORM_FCOE_CONN_AG_CTX_CF5_SHIFT       4                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5_SHIFT   4                                       
#define USTORM_FCOE_CONN_AG_CTX_CF6_MASK        0x3                                      │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6_MASK            0x3                             
#define USTORM_FCOE_CONN_AG_CTX_CF6_SHIFT       6                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6_SHIFT   6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define USTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define USTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define USTORM_FCOE_CONN_AG_CTX_CF3EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK  0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT             3                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 3                                       
#define USTORM_FCOE_CONN_AG_CTX_CF4EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_MASK  0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT             4                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_SHIFT 4                                       
#define USTORM_FCOE_CONN_AG_CTX_CF5EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_MASK  0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT             5                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_SHIFT 5                                       
#define USTORM_FCOE_CONN_AG_CTX_CF6EN_MASK              0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_MASK  0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT             6                                │  #define USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_SHIFT 6                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   7                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       7                               
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   0                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       0                               
#define USTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   1                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       1                               
#define USTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   2                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       2                               
#define USTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   3                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       3                               
#define USTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK        0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT   4                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT       4                               
#define USTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK        0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT   5                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT       5                               
#define USTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK        0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT   6                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT       6                               
#define USTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK            0x1                              │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK        0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT   7                                        │  #define USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT       7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10086                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10739                                    
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define USTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define USTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define USTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define USTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define USTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define USTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                       
#define USTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                       
#define USTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_CF3_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF3_MASK       0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF3_SHIFT       0                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF3_SHIFT      0                                       
#define USTORM_FCOE_CONN_AG_CTX_CF4_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF4_MASK       0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF4_SHIFT       2                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT      2                                       
#define USTORM_FCOE_CONN_AG_CTX_CF5_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF5_MASK       0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF5_SHIFT       4                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT      4                                       
#define USTORM_FCOE_CONN_AG_CTX_CF6_MASK        0x3                                      │  #define USTORM_ISCSI_CONN_AG_CTX_CF6_MASK       0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF6_SHIFT       6                                        │  #define USTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT      6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define USTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define USTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define USTORM_FCOE_CONN_AG_CTX_CF3EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF3EN_MASK             0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT             3                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF3EN_SHIFT            3                               
#define USTORM_FCOE_CONN_AG_CTX_CF4EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK             0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT             4                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT            4                               
#define USTORM_FCOE_CONN_AG_CTX_CF5EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK             0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT             5                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT            5                               
#define USTORM_FCOE_CONN_AG_CTX_CF6EN_MASK              0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK             0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT             6                                │  #define USTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT            6                               
#define USTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   7                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  7                                       
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   0                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  0                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   1                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  1                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   2                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  2                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   3                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  3                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT   4                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT  4                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT   5                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT  5                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT   6                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT  6                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK            0x1                              │  #define USTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK   0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT   7                                        │  #define USTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT  7                                       
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10086                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:798                                      
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 reserved;                                                                    
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define USTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                       
#define USTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define USTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                     
#define USTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                       
#define USTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define USTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define USTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                       
#define USTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define USTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define USTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                       
#define USTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define USTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define USTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_CF3_MASK        0x3                                      │  #define USTORM_CORE_CONN_AG_CTX_CF3_MASK        0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF3_SHIFT       0                                        │  #define USTORM_CORE_CONN_AG_CTX_CF3_SHIFT       0                                       
#define USTORM_FCOE_CONN_AG_CTX_CF4_MASK        0x3                                      │  #define USTORM_CORE_CONN_AG_CTX_CF4_MASK        0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF4_SHIFT       2                                        │  #define USTORM_CORE_CONN_AG_CTX_CF4_SHIFT       2                                       
#define USTORM_FCOE_CONN_AG_CTX_CF5_MASK        0x3                                      │  #define USTORM_CORE_CONN_AG_CTX_CF5_MASK        0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF5_SHIFT       4                                        │  #define USTORM_CORE_CONN_AG_CTX_CF5_SHIFT       4                                       
#define USTORM_FCOE_CONN_AG_CTX_CF6_MASK        0x3                                      │  #define USTORM_CORE_CONN_AG_CTX_CF6_MASK        0x3                                     
#define USTORM_FCOE_CONN_AG_CTX_CF6_SHIFT       6                                        │  #define USTORM_CORE_CONN_AG_CTX_CF6_SHIFT       6                                       
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define USTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                               
#define USTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define USTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                               
#define USTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define USTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                               
#define USTORM_FCOE_CONN_AG_CTX_CF3EN_MASK              0x1                              │  #define USTORM_CORE_CONN_AG_CTX_CF3EN_MASK              0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT             3                                │  #define USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT             3                               
#define USTORM_FCOE_CONN_AG_CTX_CF4EN_MASK              0x1                              │  #define USTORM_CORE_CONN_AG_CTX_CF4EN_MASK              0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT             4                                │  #define USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT             4                               
#define USTORM_FCOE_CONN_AG_CTX_CF5EN_MASK              0x1                              │  #define USTORM_CORE_CONN_AG_CTX_CF5EN_MASK              0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT             5                                │  #define USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT             5                               
#define USTORM_FCOE_CONN_AG_CTX_CF6EN_MASK              0x1                              │  #define USTORM_CORE_CONN_AG_CTX_CF6EN_MASK              0x1                             
#define USTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT             6                                │  #define USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT             6                               
#define USTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   7                                        │  #define USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   7                                       
        u8 flags3;                                                                       │          u8 flags3;                                                                      
#define USTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   0                                        │  #define USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   0                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   1                                        │  #define USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   1                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   2                                        │  #define USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   2                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   3                                        │  #define USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   3                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK            0x1                              │  #define USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK            0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT   4                                        │  #define USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT   4                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK            0x1                              │  #define USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK            0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT   5                                        │  #define USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT   5                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK            0x1                              │  #define USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK            0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT   6                                        │  #define USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT   6                                       
#define USTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK            0x1                              │  #define USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK            0x1                             
#define USTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT   7                                        │  #define USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT   7                                       
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 rx_producers;                                                            
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4/sge.c:2027                                     │ linux/drivers/net/ethernet/chelsio/cxgb4vf/sge.c:1378                                    
                                                                                         │                                                                                          
                /* Write the skb's Scatter/Gather list into the TX Packet CPL            │                  /*                                                                      
                                                                                         │                   * Write the skb's Scatter/Gather list into the TX Packet CPL           
                 * message and retain a pointer to the skb so we can free it             │                   * message and retain a pointer to the skb so we can free it            
                 * later when its DMA completes.  (We store the skb pointer              │                   * later when its DMA completes.  (We store the skb pointer             
                 * in the Software Descriptor corresponding to the last TX               │                   * in the Software Descriptor corresponding to the last TX              
                 * Descriptor used by the Work Request.)                                 │                   * Descriptor used by the Work Request.)                                
                 *                                                                       │                   *                                                                      
                 * The retained skb will be freed when the corresponding TX              │                   * The retained skb will be freed when the corresponding TX             
                 * Descriptors are reclaimed after their DMAs complete.                  │                   * Descriptors are reclaimed after their DMAs complete.                 
                 * However, this could take quite a while since, in general,             │                   * However, this could take quite a while since, in general,            
                 * the hardware is set up to be lazy about sending DMA                   │                   * the hardware is set up to be lazy about sending DMA                  
                 * completion notifications to us and we mostly perform TX               │                   * completion notifications to us and we mostly perform TX              
                 * reclaims in the transmit routine.                                     │                   * reclaims in the transmit routine.                                    
                 *                                                                       │                   *                                                                      
                 * This is good for performamce but means that we rely on new            │                   * This is good for performamce but means that we rely on new           
                 * TX packets arriving to run the destructors of completed               │                   * TX packets arriving to run the destructors of completed              
                 * packets, which open up space in their sockets' send queues.           │                   * packets, which open up space in their sockets' send queues.          
                 * Sometimes we do not get such new packets causing TX to                │                   * Sometimes we do not get such new packets causing TX to               
                 * stall.  A single UDP transmitter is a good example of this            │                   * stall.  A single UDP transmitter is a good example of this           
                 * situation.  We have a clean up timer that periodically                │                   * situation.  We have a clean up timer that periodically               
                 * reclaims completed packets but it doesn't run often enough            │                   * reclaims completed packets but it doesn't run often enough           
                 * (nor do we want it to) to prevent lengthy stalls.  A                  │                   * (nor do we want it to) to prevent lengthy stalls.  A                 
                 * solution to this problem is to run the destructor early,              │                   * solution to this problem is to run the destructor early,             
                 * after the packet is queued but before it's DMAd.  A con is            │                   * after the packet is queued but before it's DMAd.  A con is           
                 * that we lie to socket memory accounting, but the amount of            │                   * that we lie to socket memory accounting, but the amount of           
                 * extra memory is reasonable (limited by the number of TX               │                   * extra memory is reasonable (limited by the number of TX              
                 * descriptors), the packets do actually get freed quickly by            │                   * descriptors), the packets do actually get freed quickly by           
                 * new packets almost always, and for protocols like TCP that            │                   * new packets almost always, and for protocols like TCP that           
                 * wait for acks to really free up the data the extra memory             │                   * wait for acks to really free up the data the extra memory            
                 * is even less.  On the positive side we run the destructors            │                   * is even less.  On the positive side we run the destructors           
                 * on the sending CPU rather than on a potentially different             │                   * on the sending CPU rather than on a potentially different            
                 * completing CPU, usually a good thing.                                 │                   * completing CPU, usually a good thing.                                
                 *                                                                       │                   *                                                                      
                 * Run the destructor before telling the DMA engine about the            │                   * Run the destructor before telling the DMA engine about the           
                 * packet to make sure it doesn't complete and get freed                 │                   * packet to make sure it doesn't complete and get freed                
                 * prematurely.                                                          │                   * prematurely.                                                         
                 */                                                                      │                   */                                                                     
                struct ulptx_sgl *sgl = (struct ulptx_sgl *)(cpl + 1);                   │                  struct ulptx_sgl *sgl = (struct ulptx_sgl *)(cpl + 1);                  
                struct sge_txq *tq = &txq->q;                                            │                  struct sge_txq *tq = &txq->q;                                           
                                                                                         │                  int last_desc;                                                          
                                                                                         │                                                                                          
                /* If the Work Request header was an exact multiple of our TX            │                  /*                                                                      
                                                                                         │                   * If the Work Request header was an exact multiple of our TX           
                 * Descriptor length, then it's possible that the starting SGL           │                   * Descriptor length, then it's possible that the starting SGL          
                 * pointer lines up exactly with the end of our TX Descriptor            │                   * pointer lines up exactly with the end of our TX Descriptor           
                 * ring.  If that's the case, wrap around to the beginning               │                   * ring.  If that's the case, wrap around to the beginning              
                 * here ...                                                              │                   * here ...                                                             
                 */                                                                      │                   */                                                                     
                if (unlikely((void *)sgl == (void *)tq->stat)) {                         │                  if (unlikely((void *)sgl == (void *)tq->stat)) {                        
                        sgl = (void *)tq->desc;                                          │                          sgl = (void *)tq->desc;                                         
                        end = (void *)((void *)tq->desc +                                │                          end = ((void *)tq->desc + ((void *)end - (void *)tq->stat));    
                                       ((void *)end - (void *)tq->stat));                │                                                                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                cxgb4_write_sgl(skb, tq, sgl, end, 0, sgl_sdesc->addr);                  │                  write_sgl(skb, tq, sgl, end, 0, addr);                                  
                skb_orphan(skb);                                                         │                  skb_orphan(skb);                                                        
                sgl_sdesc->skb = skb;                                                    │                                                                                          
                                                                                         │                  last_desc = tq->pidx + ndesc - 1;                                       
                                                                                         │                  if (last_desc >= tq->size)                                              
                                                                                         │                          last_desc -= tq->size;                                          
                                                                                         │                  tq->sdesc[last_desc].skb = skb;                                         
                                                                                         │                  tq->sdesc[last_desc].sgl = sgl;                                         
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:5887                                    │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:7980                                 
                                                                                         │                                                                                          
        u32 vlan_macip_lens, type_tucmd, mss_l4len_idx;                                  │          u32 vlan_macip_lens, type_tucmd, mss_l4len_idx;                                 
        struct sk_buff *skb = first->skb;                                                │          struct sk_buff *skb = first->skb;                                               
        union {                                                                          │          union {                                                                         
                struct iphdr *v4;                                                        │                  struct iphdr *v4;                                                       
                struct ipv6hdr *v6;                                                      │                  struct ipv6hdr *v6;                                                     
                unsigned char *hdr;                                                      │                  unsigned char *hdr;                                                     
        } ip;                                                                            │          } ip;                                                                           
        union {                                                                          │          union {                                                                         
                struct tcphdr *tcp;                                                      │                  struct tcphdr *tcp;                                                     
                struct udphdr *udp;                                                      │                  struct udphdr *udp;                                                     
                unsigned char *hdr;                                                      │                  unsigned char *hdr;                                                     
        } l4;                                                                            │          } l4;                                                                           
        u32 paylen, l4_offset;                                                           │          u32 paylen, l4_offset;                                                          
                                                                                         │          u32 fceof_saidx = 0;                                                            
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (skb->ip_summed != CHECKSUM_PARTIAL)                                          │          if (skb->ip_summed != CHECKSUM_PARTIAL)                                         
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        if (!skb_is_gso(skb))                                                            │          if (!skb_is_gso(skb))                                                           
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        err = skb_cow_head(skb, 0);                                                      │          err = skb_cow_head(skb, 0);                                                     
        if (err < 0)                                                                     │          if (err < 0)                                                                    
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        ip.hdr = skb_network_header(skb);                                                │          if (eth_p_mpls(first->protocol))                                                
                                                                                         │                  ip.hdr = skb_inner_network_header(skb);                                 
                                                                                         │          else                                                                            
                                                                                         │                  ip.hdr = skb_network_header(skb);                                       
        l4.hdr = skb_checksum_start(skb);                                                │          l4.hdr = skb_checksum_start(skb);                                               
                                                                                         │                                                                                          
        /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */                                          │          /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */                                         
        type_tucmd = (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4) ?                      │          type_tucmd = (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4) ?                     
                      E1000_ADVTXD_TUCMD_L4T_UDP : E1000_ADVTXD_TUCMD_L4T_TCP;           │                        IXGBE_ADVTXD_TUCMD_L4T_UDP : IXGBE_ADVTXD_TUCMD_L4T_TCP;          
                                                                                         │                                                                                          
        /* initialize outer IP header fields */                                          │          /* initialize outer IP header fields */                                         
        if (ip.v4->version == 4) {                                                       │          if (ip.v4->version == 4) {                                                      
                unsigned char *csum_start = skb_checksum_start(skb);                     │                  unsigned char *csum_start = skb_checksum_start(skb);                    
                unsigned char *trans_start = ip.hdr + (ip.v4->ihl * 4);                  │                  unsigned char *trans_start = ip.hdr + (ip.v4->ihl * 4);                 
                                                                                         │                  int len = csum_start - trans_start;                                     
                                                                                         │                                                                                          
                /* IP header will have to cancel out any data that                       │                  /* IP header will have to cancel out any data that                      
                 * is not a part of the outer IP header                                  │                   * is not a part of the outer IP header, so set to                      
                                                                                         │                   * a reverse csum if needed, else init check to 0.                      
                 */                                                                      │                   */                                                                     
                ip.v4->check = csum_fold(csum_partial(trans_start,                       │                  ip.v4->check = (skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL) ?          
                                                      csum_start - trans_start,          │                                             csum_fold(csum_partial(trans_start,          
                                                      0));                               │                                                                    len, 0)) : 0;         
                type_tucmd |= E1000_ADVTXD_TUCMD_IPV4;                                   │                  type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4;                                  
                                                                                         │                                                                                          
                ip.v4->tot_len = 0;                                                      │                  ip.v4->tot_len = 0;                                                     
                first->tx_flags |= IGB_TX_FLAGS_TSO |                                    │                  first->tx_flags |= IXGBE_TX_FLAGS_TSO |                                 
                                   IGB_TX_FLAGS_CSUM |                                   │                                     IXGBE_TX_FLAGS_CSUM |                                
                                   IGB_TX_FLAGS_IPV4;                                    │                                     IXGBE_TX_FLAGS_IPV4;                                 
        } else {                                                                         │          } else {                                                                        
                ip.v6->payload_len = 0;                                                  │                  ip.v6->payload_len = 0;                                                 
                first->tx_flags |= IGB_TX_FLAGS_TSO |                                    │                  first->tx_flags |= IXGBE_TX_FLAGS_TSO |                                 
                                   IGB_TX_FLAGS_CSUM;                                    │                                     IXGBE_TX_FLAGS_CSUM;                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* determine offset of inner transport header */                                 │          /* determine offset of inner transport header */                                
        l4_offset = l4.hdr - skb->data;                                                  │          l4_offset = l4.hdr - skb->data;                                                 
                                                                                         │                                                                                          
        /* remove payload length from inner checksum */                                  │          /* remove payload length from inner checksum */                                 
        paylen = skb->len - l4_offset;                                                   │          paylen = skb->len - l4_offset;                                                  
        if (type_tucmd & E1000_ADVTXD_TUCMD_L4T_TCP) {                                   │                                                                                          
                                                                                         │          if (type_tucmd & IXGBE_ADVTXD_TUCMD_L4T_TCP) {                                  
                /* compute length of segmentation header */                              │                  /* compute length of segmentation header */                             
                *hdr_len = (l4.tcp->doff * 4) + l4_offset;                               │                  *hdr_len = (l4.tcp->doff * 4) + l4_offset;                              
                csum_replace_by_diff(&l4.tcp->check,                                     │                  csum_replace_by_diff(&l4.tcp->check,                                    
                        (__force __wsum)htonl(paylen));                                  │                                       (__force __wsum)htonl(paylen));                    
        } else {                                                                         │          } else {                                                                        
                /* compute length of segmentation header */                              │                  /* compute length of segmentation header */                             
                *hdr_len = sizeof(*l4.udp) + l4_offset;                                  │                  *hdr_len = sizeof(*l4.udp) + l4_offset;                                 
                csum_replace_by_diff(&l4.udp->check,                                     │                  csum_replace_by_diff(&l4.udp->check,                                    
                                     (__force __wsum)htonl(paylen));                     │                                       (__force __wsum)htonl(paylen));                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* update gso size and bytecount with header size */                             │          /* update gso size and bytecount with header size */                            
        first->gso_segs = skb_shinfo(skb)->gso_segs;                                     │          first->gso_segs = skb_shinfo(skb)->gso_segs;                                    
        first->bytecount += (first->gso_segs - 1) * *hdr_len;                            │          first->bytecount += (first->gso_segs - 1) * *hdr_len;                           
                                                                                         │                                                                                          
        /* MSS L4LEN IDX */                                                              │          /* mss_l4len_id: use 0 as index for TSO */                                      
        mss_l4len_idx = (*hdr_len - l4_offset) << E1000_ADVTXD_L4LEN_SHIFT;              │          mss_l4len_idx = (*hdr_len - l4_offset) << IXGBE_ADVTXD_L4LEN_SHIFT;             
        mss_l4len_idx |= skb_shinfo(skb)->gso_size << E1000_ADVTXD_MSS_SHIFT;            │          mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT;           
                                                                                         │                                                                                          
                                                                                         │          fceof_saidx |= itd->sa_idx;                                                     
                                                                                         │          type_tucmd |= itd->flags | itd->trailer_len;                                    
                                                                                         │                                                                                          
        /* VLAN MACLEN IPLEN */                                                          │          /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */                                
        vlan_macip_lens = l4.hdr - ip.hdr;                                               │          vlan_macip_lens = l4.hdr - ip.hdr;                                              
        vlan_macip_lens |= (ip.hdr - skb->data) << E1000_ADVTXD_MACLEN_SHIFT;            │          vlan_macip_lens |= (ip.hdr - skb->data) << IXGBE_ADVTXD_MACLEN_SHIFT;           
        vlan_macip_lens |= first->tx_flags & IGB_TX_FLAGS_VLAN_MASK;                     │          vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;                  
                                                                                         │                                                                                          
        igb_tx_ctxtdesc(tx_ring, first, vlan_macip_lens,                                 │          ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, fceof_saidx, type_tucmd,            
                        type_tucmd, mss_l4len_idx);                                      │                            mss_l4len_idx);                                               
                                                                                         │                                                                                          
        return 1;                                                                        │          return 1;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/neterion/vxge/vxge-config.c:3230                             │ linux/drivers/net/ethernet/neterion/vxge/vxge-config.c:3104                              
                                                                                         │                                                                                          
        enum vxge_hw_status status = VXGE_HW_OK;                                         │          enum vxge_hw_status status = VXGE_HW_OK;                                        
                                                                                         │                                                                                          
        if ((hldev == NULL) || (hldev->magic != VXGE_HW_DEVICE_MAGIC)) {                 │          if ((hldev == NULL) || (hldev->magic != VXGE_HW_DEVICE_MAGIC)) {                
                status = VXGE_HW_ERR_INVALID_DEVICE;                                     │                  status = VXGE_HW_ERR_INVALID_DEVICE;                                    
                goto exit;                                                               │                  goto exit;                                                              
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        switch (type) {                                                                  │          switch (type) {                                                                 
        case vxge_hw_mgmt_reg_type_legacy:                                               │          case vxge_hw_mgmt_reg_type_legacy:                                              
                if (offset > sizeof(struct vxge_hw_legacy_reg) - 8) {                    │                  if (offset > sizeof(struct vxge_hw_legacy_reg) - 8) {                   
                        status = VXGE_HW_ERR_INVALID_OFFSET;                             │                          status = VXGE_HW_ERR_INVALID_OFFSET;                            
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                writeq(value, (void __iomem *)hldev->legacy_reg + offset);               │                  *value = readq((void __iomem *)hldev->legacy_reg + offset);             
                break;                                                                   │                  break;                                                                  
        case vxge_hw_mgmt_reg_type_toc:                                                  │          case vxge_hw_mgmt_reg_type_toc:                                                 
                if (offset > sizeof(struct vxge_hw_toc_reg) - 8) {                       │                  if (offset > sizeof(struct vxge_hw_toc_reg) - 8) {                      
                        status = VXGE_HW_ERR_INVALID_OFFSET;                             │                          status = VXGE_HW_ERR_INVALID_OFFSET;                            
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                writeq(value, (void __iomem *)hldev->toc_reg + offset);                  │                  *value = readq((void __iomem *)hldev->toc_reg + offset);                
                break;                                                                   │                  break;                                                                  
        case vxge_hw_mgmt_reg_type_common:                                               │          case vxge_hw_mgmt_reg_type_common:                                              
                if (offset > sizeof(struct vxge_hw_common_reg) - 8) {                    │                  if (offset > sizeof(struct vxge_hw_common_reg) - 8) {                   
                        status = VXGE_HW_ERR_INVALID_OFFSET;                             │                          status = VXGE_HW_ERR_INVALID_OFFSET;                            
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                writeq(value, (void __iomem *)hldev->common_reg + offset);               │                  *value = readq((void __iomem *)hldev->common_reg + offset);             
                break;                                                                   │                  break;                                                                  
        case vxge_hw_mgmt_reg_type_mrpcim:                                               │          case vxge_hw_mgmt_reg_type_mrpcim:                                              
                if (!(hldev->access_rights &                                             │                  if (!(hldev->access_rights &                                            
                        VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM)) {                           │                          VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM)) {                          
                        status = VXGE_HW_ERR_PRIVILEGED_OPERATION;                       │                          status = VXGE_HW_ERR_PRIVILEGED_OPERATION;                      
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                if (offset > sizeof(struct vxge_hw_mrpcim_reg) - 8) {                    │                  if (offset > sizeof(struct vxge_hw_mrpcim_reg) - 8) {                   
                        status = VXGE_HW_ERR_INVALID_OFFSET;                             │                          status = VXGE_HW_ERR_INVALID_OFFSET;                            
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                writeq(value, (void __iomem *)hldev->mrpcim_reg + offset);               │                  *value = readq((void __iomem *)hldev->mrpcim_reg + offset);             
                break;                                                                   │                  break;                                                                  
        case vxge_hw_mgmt_reg_type_srpcim:                                               │          case vxge_hw_mgmt_reg_type_srpcim:                                              
                if (!(hldev->access_rights &                                             │                  if (!(hldev->access_rights &                                            
                        VXGE_HW_DEVICE_ACCESS_RIGHT_SRPCIM)) {                           │                          VXGE_HW_DEVICE_ACCESS_RIGHT_SRPCIM)) {                          
                        status = VXGE_HW_ERR_PRIVILEGED_OPERATION;                       │                          status = VXGE_HW_ERR_PRIVILEGED_OPERATION;                      
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                if (index > VXGE_HW_TITAN_SRPCIM_REG_SPACES - 1) {                       │                  if (index > VXGE_HW_TITAN_SRPCIM_REG_SPACES - 1) {                      
                        status = VXGE_HW_ERR_INVALID_INDEX;                              │                          status = VXGE_HW_ERR_INVALID_INDEX;                             
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                if (offset > sizeof(struct vxge_hw_srpcim_reg) - 8) {                    │                  if (offset > sizeof(struct vxge_hw_srpcim_reg) - 8) {                   
                        status = VXGE_HW_ERR_INVALID_OFFSET;                             │                          status = VXGE_HW_ERR_INVALID_OFFSET;                            
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                writeq(value, (void __iomem *)hldev->srpcim_reg[index] +                 │                  *value = readq((void __iomem *)hldev->srpcim_reg[index] +               
                        offset);                                                         │                                  offset);                                                
                                                                                         │                                                                                          
                break;                                                                   │                  break;                                                                  
        case vxge_hw_mgmt_reg_type_vpmgmt:                                               │          case vxge_hw_mgmt_reg_type_vpmgmt:                                              
                if ((index > VXGE_HW_TITAN_VPMGMT_REG_SPACES - 1) ||                     │                  if ((index > VXGE_HW_TITAN_VPMGMT_REG_SPACES - 1) ||                    
                        (!(hldev->vpath_assignments & vxge_mBIT(index)))) {              │                          (!(hldev->vpath_assignments & vxge_mBIT(index)))) {             
                        status = VXGE_HW_ERR_INVALID_INDEX;                              │                          status = VXGE_HW_ERR_INVALID_INDEX;                             
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                if (offset > sizeof(struct vxge_hw_vpmgmt_reg) - 8) {                    │                  if (offset > sizeof(struct vxge_hw_vpmgmt_reg) - 8) {                   
                        status = VXGE_HW_ERR_INVALID_OFFSET;                             │                          status = VXGE_HW_ERR_INVALID_OFFSET;                            
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                writeq(value, (void __iomem *)hldev->vpmgmt_reg[index] +                 │                  *value = readq((void __iomem *)hldev->vpmgmt_reg[index] +               
                        offset);                                                         │                                  offset);                                                
                break;                                                                   │                  break;                                                                  
        case vxge_hw_mgmt_reg_type_vpath:                                                │          case vxge_hw_mgmt_reg_type_vpath:                                               
                if ((index > VXGE_HW_TITAN_VPATH_REG_SPACES-1) ||                        │                  if ((index > VXGE_HW_TITAN_VPATH_REG_SPACES - 1) ||                     
                        (!(hldev->vpath_assignments & vxge_mBIT(index)))) {              │                          (!(hldev->vpath_assignments & vxge_mBIT(index)))) {             
                        status = VXGE_HW_ERR_INVALID_INDEX;                              │                          status = VXGE_HW_ERR_INVALID_INDEX;                             
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                                                                                         │                  if (index > VXGE_HW_TITAN_VPATH_REG_SPACES - 1) {                       
                                                                                         │                          status = VXGE_HW_ERR_INVALID_INDEX;                             
                                                                                         │                          break;                                                          
                                                                                         │                  }                                                                       
                if (offset > sizeof(struct vxge_hw_vpath_reg) - 8) {                     │                  if (offset > sizeof(struct vxge_hw_vpath_reg) - 8) {                    
                        status = VXGE_HW_ERR_INVALID_OFFSET;                             │                          status = VXGE_HW_ERR_INVALID_OFFSET;                            
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                writeq(value, (void __iomem *)hldev->vpath_reg[index] +                  │                  *value = readq((void __iomem *)hldev->vpath_reg[index] +                
                        offset);                                                         │                                  offset);                                                
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                status = VXGE_HW_ERR_INVALID_TYPE;                                       │                  status = VXGE_HW_ERR_INVALID_TYPE;                                      
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
exit:                                                                                    │  exit:                                                                                   
        return status;                                                                   │          return status;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:2143                                      │ linux/drivers/net/ethernet/intel/igb/e1000_phy.c:2123                                    
                                                                                         │                                                                                          
        e_dbg("Running IGP 3 PHY init script\n");                                        │          hw_dbg("Running IGP 3 PHY init script\n");                                      
                                                                                         │                                                                                          
        /* PHY init IGP 3 */                                                             │          /* PHY init IGP 3 */                                                            
        /* Enable rise/fall, 10-mode work in class-A */                                  │          /* Enable rise/fall, 10-mode work in class-A */                                 
        e1e_wphy(hw, 0x2F5B, 0x9018);                                                    │          hw->phy.ops.write_reg(hw, 0x2F5B, 0x9018);                                      
        /* Remove all caps from Replica path filter */                                   │          /* Remove all caps from Replica path filter */                                  
        e1e_wphy(hw, 0x2F52, 0x0000);                                                    │          hw->phy.ops.write_reg(hw, 0x2F52, 0x0000);                                      
        /* Bias trimming for ADC, AFE and Driver (Default) */                            │          /* Bias trimming for ADC, AFE and Driver (Default) */                           
        e1e_wphy(hw, 0x2FB1, 0x8B24);                                                    │          hw->phy.ops.write_reg(hw, 0x2FB1, 0x8B24);                                      
        /* Increase Hybrid poly bias */                                                  │          /* Increase Hybrid poly bias */                                                 
        e1e_wphy(hw, 0x2FB2, 0xF8F0);                                                    │          hw->phy.ops.write_reg(hw, 0x2FB2, 0xF8F0);                                      
        /* Add 4% to Tx amplitude in Gig mode */                                         │          /* Add 4% to TX amplitude in Giga mode */                                       
        e1e_wphy(hw, 0x2010, 0x10B0);                                                    │          hw->phy.ops.write_reg(hw, 0x2010, 0x10B0);                                      
        /* Disable trimming (TTT) */                                                     │          /* Disable trimming (TTT) */                                                    
        e1e_wphy(hw, 0x2011, 0x0000);                                                    │          hw->phy.ops.write_reg(hw, 0x2011, 0x0000);                                      
        /* Poly DC correction to 94.6% + 2% for all channels */                          │          /* Poly DC correction to 94.6% + 2% for all channels */                         
        e1e_wphy(hw, 0x20DD, 0x249A);                                                    │          hw->phy.ops.write_reg(hw, 0x20DD, 0x249A);                                      
        /* ABS DC correction to 95.9% */                                                 │          /* ABS DC correction to 95.9% */                                                
        e1e_wphy(hw, 0x20DE, 0x00D3);                                                    │          hw->phy.ops.write_reg(hw, 0x20DE, 0x00D3);                                      
        /* BG temp curve trim */                                                         │          /* BG temp curve trim */                                                        
        e1e_wphy(hw, 0x28B4, 0x04CE);                                                    │          hw->phy.ops.write_reg(hw, 0x28B4, 0x04CE);                                      
        /* Increasing ADC OPAMP stage 1 currents to max */                               │          /* Increasing ADC OPAMP stage 1 currents to max */                              
        e1e_wphy(hw, 0x2F70, 0x29E4);                                                    │          hw->phy.ops.write_reg(hw, 0x2F70, 0x29E4);                                      
        /* Force 1000 ( required for enabling PHY regs configuration) */                 │          /* Force 1000 ( required for enabling PHY regs configuration) */                
        e1e_wphy(hw, 0x0000, 0x0140);                                                    │          hw->phy.ops.write_reg(hw, 0x0000, 0x0140);                                      
        /* Set upd_freq to 6 */                                                          │          /* Set upd_freq to 6 */                                                         
        e1e_wphy(hw, 0x1F30, 0x1606);                                                    │          hw->phy.ops.write_reg(hw, 0x1F30, 0x1606);                                      
        /* Disable NPDFE */                                                              │          /* Disable NPDFE */                                                             
        e1e_wphy(hw, 0x1F31, 0xB814);                                                    │          hw->phy.ops.write_reg(hw, 0x1F31, 0xB814);                                      
        /* Disable adaptive fixed FFE (Default) */                                       │          /* Disable adaptive fixed FFE (Default) */                                      
        e1e_wphy(hw, 0x1F35, 0x002A);                                                    │          hw->phy.ops.write_reg(hw, 0x1F35, 0x002A);                                      
        /* Enable FFE hysteresis */                                                      │          /* Enable FFE hysteresis */                                                     
        e1e_wphy(hw, 0x1F3E, 0x0067);                                                    │          hw->phy.ops.write_reg(hw, 0x1F3E, 0x0067);                                      
        /* Fixed FFE for short cable lengths */                                          │          /* Fixed FFE for short cable lengths */                                         
        e1e_wphy(hw, 0x1F54, 0x0065);                                                    │          hw->phy.ops.write_reg(hw, 0x1F54, 0x0065);                                      
        /* Fixed FFE for medium cable lengths */                                         │          /* Fixed FFE for medium cable lengths */                                        
        e1e_wphy(hw, 0x1F55, 0x002A);                                                    │          hw->phy.ops.write_reg(hw, 0x1F55, 0x002A);                                      
        /* Fixed FFE for long cable lengths */                                           │          /* Fixed FFE for long cable lengths */                                          
        e1e_wphy(hw, 0x1F56, 0x002A);                                                    │          hw->phy.ops.write_reg(hw, 0x1F56, 0x002A);                                      
        /* Enable Adaptive Clip Threshold */                                             │          /* Enable Adaptive Clip Threshold */                                            
        e1e_wphy(hw, 0x1F72, 0x3FB0);                                                    │          hw->phy.ops.write_reg(hw, 0x1F72, 0x3FB0);                                      
        /* AHT reset limit to 1 */                                                       │          /* AHT reset limit to 1 */                                                      
        e1e_wphy(hw, 0x1F76, 0xC0FF);                                                    │          hw->phy.ops.write_reg(hw, 0x1F76, 0xC0FF);                                      
        /* Set AHT master delay to 127 msec */                                           │          /* Set AHT master delay to 127 msec */                                          
        e1e_wphy(hw, 0x1F77, 0x1DEC);                                                    │          hw->phy.ops.write_reg(hw, 0x1F77, 0x1DEC);                                      
        /* Set scan bits for AHT */                                                      │          /* Set scan bits for AHT */                                                     
        e1e_wphy(hw, 0x1F78, 0xF9EF);                                                    │          hw->phy.ops.write_reg(hw, 0x1F78, 0xF9EF);                                      
        /* Set AHT Preset bits */                                                        │          /* Set AHT Preset bits */                                                       
        e1e_wphy(hw, 0x1F79, 0x0210);                                                    │          hw->phy.ops.write_reg(hw, 0x1F79, 0x0210);                                      
        /* Change integ_factor of channel A to 3 */                                      │          /* Change integ_factor of channel A to 3 */                                     
        e1e_wphy(hw, 0x1895, 0x0003);                                                    │          hw->phy.ops.write_reg(hw, 0x1895, 0x0003);                                      
        /* Change prop_factor of channels BCD to 8 */                                    │          /* Change prop_factor of channels BCD to 8 */                                   
        e1e_wphy(hw, 0x1796, 0x0008);                                                    │          hw->phy.ops.write_reg(hw, 0x1796, 0x0008);                                      
        /* Change cg_icount + enable integbp for channels BCD */                         │          /* Change cg_icount + enable integbp for channels BCD */                        
        e1e_wphy(hw, 0x1798, 0xD008);                                                    │          hw->phy.ops.write_reg(hw, 0x1798, 0xD008);                                      
        /* Change cg_icount + enable integbp + change prop_factor_master                 │          /* Change cg_icount + enable integbp + change prop_factor_master                
         * to 8 for channel A                                                            │           * to 8 for channel A                                                           
         */                                                                              │           */                                                                             
        e1e_wphy(hw, 0x1898, 0xD918);                                                    │          hw->phy.ops.write_reg(hw, 0x1898, 0xD918);                                      
        /* Disable AHT in Slave mode on channel A */                                     │          /* Disable AHT in Slave mode on channel A */                                    
        e1e_wphy(hw, 0x187A, 0x0800);                                                    │          hw->phy.ops.write_reg(hw, 0x187A, 0x0800);                                      
        /* Enable LPLU and disable AN to 1000 in non-D0a states,                         │          /* Enable LPLU and disable AN to 1000 in non-D0a states,                        
         * Enable SPD+B2B                                                                │           * Enable SPD+B2B                                                               
         */                                                                              │           */                                                                             
        e1e_wphy(hw, 0x0019, 0x008D);                                                    │          hw->phy.ops.write_reg(hw, 0x0019, 0x008D);                                      
        /* Enable restart AN on an1000_dis change */                                     │          /* Enable restart AN on an1000_dis change */                                    
        e1e_wphy(hw, 0x001B, 0x2080);                                                    │          hw->phy.ops.write_reg(hw, 0x001B, 0x2080);                                      
        /* Enable wh_fifo read clock in 10/100 modes */                                  │          /* Enable wh_fifo read clock in 10/100 modes */                                 
        e1e_wphy(hw, 0x0014, 0x0045);                                                    │          hw->phy.ops.write_reg(hw, 0x0014, 0x0045);                                      
        /* Restart AN, Speed selection is 1000 */                                        │          /* Restart AN, Speed selection is 1000 */                                       
        e1e_wphy(hw, 0x0000, 0x1340);                                                    │          hw->phy.ops.write_reg(hw, 0x0000, 0x1340);                                      
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/nvm.c:413                                       │ linux/drivers/net/ethernet/intel/igb/e1000_nvm.c:487                                     
                                                                                         │                                                                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        u16 nvm_data;                                                                    │          u16 nvm_data;                                                                   
        u16 pba_ptr;                                                                     │          u16 pointer;                                                                    
        u16 offset;                                                                      │          u16 offset;                                                                     
        u16 length;                                                                      │          u16 length;                                                                     
                                                                                         │                                                                                          
        if (pba_num == NULL) {                                                           │          if (part_num == NULL) {                                                         
                e_dbg("PBA string buffer was null\n");                                   │                  hw_dbg("PBA string buffer was null\n");                                 
                return -E1000_ERR_INVALID_ARGUMENT;                                      │                  ret_val = E1000_ERR_INVALID_ARGUMENT;                                   
                                                                                         │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret_val = e1000_read_nvm(hw, NVM_PBA_OFFSET_0, 1, &nvm_data);                    │          ret_val = hw->nvm.ops.read(hw, NVM_PBA_OFFSET_0, 1, &nvm_data);                 
        if (ret_val) {                                                                   │          if (ret_val) {                                                                  
                e_dbg("NVM Read Error\n");                                               │                  hw_dbg("NVM Read Error\n");                                             
                return ret_val;                                                          │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret_val = e1000_read_nvm(hw, NVM_PBA_OFFSET_1, 1, &pba_ptr);                     │          ret_val = hw->nvm.ops.read(hw, NVM_PBA_OFFSET_1, 1, &pointer);                  
        if (ret_val) {                                                                   │          if (ret_val) {                                                                  
                e_dbg("NVM Read Error\n");                                               │                  hw_dbg("NVM Read Error\n");                                             
                return ret_val;                                                          │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* if nvm_data is not ptr guard the PBA must be in legacy format which           │          /* if nvm_data is not ptr guard the PBA must be in legacy format which          
         * means pba_ptr is actually our second data word for the PBA number             │           * means pointer is actually our second data word for the PBA number            
         * and we can decode it into an ascii string                                     │           * and we can decode it into an ascii string                                    
         */                                                                              │           */                                                                             
        if (nvm_data != NVM_PBA_PTR_GUARD) {                                             │          if (nvm_data != NVM_PBA_PTR_GUARD) {                                            
                e_dbg("NVM PBA number is not stored as string\n");                       │                  hw_dbg("NVM PBA number is not stored as string\n");                     
                                                                                         │                                                                                          
                /* make sure callers buffer is big enough to store the PBA */            │                  /* we will need 11 characters to store the PBA */                       
                if (pba_num_size < E1000_PBANUM_LENGTH) {                                │                  if (part_num_size < 11) {                                               
                        e_dbg("PBA string buffer too small\n");                          │                          hw_dbg("PBA string buffer too small\n");                        
                        return E1000_ERR_NO_SPACE;                                       │                          return E1000_ERR_NO_SPACE;                                      
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* extract hex string from data and pba_ptr */                           │                  /* extract hex string from data and pointer */                          
                pba_num[0] = (nvm_data >> 12) & 0xF;                                     │                  part_num[0] = (nvm_data >> 12) & 0xF;                                   
                pba_num[1] = (nvm_data >> 8) & 0xF;                                      │                  part_num[1] = (nvm_data >> 8) & 0xF;                                    
                pba_num[2] = (nvm_data >> 4) & 0xF;                                      │                  part_num[2] = (nvm_data >> 4) & 0xF;                                    
                pba_num[3] = nvm_data & 0xF;                                             │                  part_num[3] = nvm_data & 0xF;                                           
                pba_num[4] = (pba_ptr >> 12) & 0xF;                                      │                  part_num[4] = (pointer >> 12) & 0xF;                                    
                pba_num[5] = (pba_ptr >> 8) & 0xF;                                       │                  part_num[5] = (pointer >> 8) & 0xF;                                     
                pba_num[6] = '-';                                                        │                  part_num[6] = '-';                                                      
                pba_num[7] = 0;                                                          │                  part_num[7] = 0;                                                        
                pba_num[8] = (pba_ptr >> 4) & 0xF;                                       │                  part_num[8] = (pointer >> 4) & 0xF;                                     
                pba_num[9] = pba_ptr & 0xF;                                              │                  part_num[9] = pointer & 0xF;                                            
                                                                                         │                                                                                          
                /* put a null character on the end of our string */                      │                  /* put a null character on the end of our string */                     
                pba_num[10] = '\0';                                                      │                  part_num[10] = '\0';                                                    
                                                                                         │                                                                                          
                /* switch all the data but the '-' to hex char */                        │                  /* switch all the data but the '-' to hex char */                       
                for (offset = 0; offset < 10; offset++) {                                │                  for (offset = 0; offset < 10; offset++) {                               
                        if (pba_num[offset] < 0xA)                                       │                          if (part_num[offset] < 0xA)                                     
                                pba_num[offset] += '0';                                  │                                  part_num[offset] += '0';                                
                        else if (pba_num[offset] < 0x10)                                 │                          else if (part_num[offset] < 0x10)                               
                                pba_num[offset] += 'A' - 0xA;                            │                                  part_num[offset] += 'A' - 0xA;                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                return 0;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret_val = e1000_read_nvm(hw, pba_ptr, 1, &length);                               │          ret_val = hw->nvm.ops.read(hw, pointer, 1, &length);                            
        if (ret_val) {                                                                   │          if (ret_val) {                                                                  
                e_dbg("NVM Read Error\n");                                               │                  hw_dbg("NVM Read Error\n");                                             
                return ret_val;                                                          │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (length == 0xFFFF || length == 0) {                                           │          if (length == 0xFFFF || length == 0) {                                          
                e_dbg("NVM PBA number section invalid length\n");                        │                  hw_dbg("NVM PBA number section invalid length\n");                      
                return -E1000_ERR_NVM_PBA_SECTION;                                       │                  ret_val = E1000_ERR_NVM_PBA_SECTION;                                    
        }                                                                                │                  goto out;                                                               
        /* check if pba_num buffer is big enough */                                      │          }                                                                               
        if (pba_num_size < (((u32)length * 2) - 1)) {                                    │          /* check if part_num buffer is big enough */                                    
                e_dbg("PBA string buffer too small\n");                                  │          if (part_num_size < (((u32)length * 2) - 1)) {                                  
                return -E1000_ERR_NO_SPACE;                                              │                  hw_dbg("PBA string buffer too small\n");                                
                                                                                         │                  ret_val = E1000_ERR_NO_SPACE;                                           
                                                                                         │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* trim pba length from start of string */                                       │          /* trim pba length from start of string */                                      
        pba_ptr++;                                                                       │          pointer++;                                                                      
        length--;                                                                        │          length--;                                                                       
                                                                                         │                                                                                          
        for (offset = 0; offset < length; offset++) {                                    │          for (offset = 0; offset < length; offset++) {                                   
                ret_val = e1000_read_nvm(hw, pba_ptr + offset, 1, &nvm_data);            │                  ret_val = hw->nvm.ops.read(hw, pointer + offset, 1, &nvm_data);         
                if (ret_val) {                                                           │                  if (ret_val) {                                                          
                        e_dbg("NVM Read Error\n");                                       │                          hw_dbg("NVM Read Error\n");                                     
                        return ret_val;                                                  │                          goto out;                                                       
                }                                                                        │                  }                                                                       
                pba_num[offset * 2] = (u8)(nvm_data >> 8);                               │                  part_num[offset * 2] = (u8)(nvm_data >> 8);                             
                pba_num[(offset * 2) + 1] = (u8)(nvm_data & 0xFF);                       │                  part_num[(offset * 2) + 1] = (u8)(nvm_data & 0xFF);                     
        }                                                                                │          }                                                                               
        pba_num[offset * 2] = '\0';                                                      │          part_num[offset * 2] = '\0';                                                    
                                                                                         │                                                                                          
        return 0;                                                                        │  out:                                                                                    
                                                                                         │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_main.c:1324                                    │ linux/drivers/net/ethernet/intel/igb/igb_main.c:5887                                     
                                                                                         │                                                                                          
        u32 vlan_macip_lens, type_tucmd, mss_l4len_idx;                                  │          u32 vlan_macip_lens, type_tucmd, mss_l4len_idx;                                 
        struct sk_buff *skb = first->skb;                                                │          struct sk_buff *skb = first->skb;                                               
        union {                                                                          │          union {                                                                         
                struct iphdr *v4;                                                        │                  struct iphdr *v4;                                                       
                struct ipv6hdr *v6;                                                      │                  struct ipv6hdr *v6;                                                     
                unsigned char *hdr;                                                      │                  unsigned char *hdr;                                                     
        } ip;                                                                            │          } ip;                                                                           
        union {                                                                          │          union {                                                                         
                struct tcphdr *tcp;                                                      │                  struct tcphdr *tcp;                                                     
                struct udphdr *udp;                                                      │                  struct udphdr *udp;                                                     
                unsigned char *hdr;                                                      │                  unsigned char *hdr;                                                     
        } l4;                                                                            │          } l4;                                                                           
        u32 paylen, l4_offset;                                                           │          u32 paylen, l4_offset;                                                          
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (skb->ip_summed != CHECKSUM_PARTIAL)                                          │          if (skb->ip_summed != CHECKSUM_PARTIAL)                                         
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        if (!skb_is_gso(skb))                                                            │          if (!skb_is_gso(skb))                                                           
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        err = skb_cow_head(skb, 0);                                                      │          err = skb_cow_head(skb, 0);                                                     
        if (err < 0)                                                                     │          if (err < 0)                                                                    
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        ip.hdr = skb_network_header(skb);                                                │          ip.hdr = skb_network_header(skb);                                               
        l4.hdr = skb_checksum_start(skb);                                                │          l4.hdr = skb_checksum_start(skb);                                               
                                                                                         │                                                                                          
        /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */                                          │          /* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */                                         
        type_tucmd = IGC_ADVTXD_TUCMD_L4T_TCP;                                           │          type_tucmd = (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4) ?                     
                                                                                         │                        E1000_ADVTXD_TUCMD_L4T_UDP : E1000_ADVTXD_TUCMD_L4T_TCP;          
                                                                                         │                                                                                          
        /* initialize outer IP header fields */                                          │          /* initialize outer IP header fields */                                         
        if (ip.v4->version == 4) {                                                       │          if (ip.v4->version == 4) {                                                      
                unsigned char *csum_start = skb_checksum_start(skb);                     │                  unsigned char *csum_start = skb_checksum_start(skb);                    
                unsigned char *trans_start = ip.hdr + (ip.v4->ihl * 4);                  │                  unsigned char *trans_start = ip.hdr + (ip.v4->ihl * 4);                 
                                                                                         │                                                                                          
                /* IP header will have to cancel out any data that                       │                  /* IP header will have to cancel out any data that                      
                 * is not a part of the outer IP header                                  │                   * is not a part of the outer IP header                                 
                 */                                                                      │                   */                                                                     
                ip.v4->check = csum_fold(csum_partial(trans_start,                       │                  ip.v4->check = csum_fold(csum_partial(trans_start,                      
                                                      csum_start - trans_start,          │                                                        csum_start - trans_start,         
                                                      0));                               │                                                        0));                              
                type_tucmd |= IGC_ADVTXD_TUCMD_IPV4;                                     │                  type_tucmd |= E1000_ADVTXD_TUCMD_IPV4;                                  
                                                                                         │                                                                                          
                ip.v4->tot_len = 0;                                                      │                  ip.v4->tot_len = 0;                                                     
                first->tx_flags |= IGC_TX_FLAGS_TSO |                                    │                  first->tx_flags |= IGB_TX_FLAGS_TSO |                                   
                                   IGC_TX_FLAGS_CSUM |                                   │                                     IGB_TX_FLAGS_CSUM |                                  
                                   IGC_TX_FLAGS_IPV4;                                    │                                     IGB_TX_FLAGS_IPV4;                                   
        } else {                                                                         │          } else {                                                                        
                ip.v6->payload_len = 0;                                                  │                  ip.v6->payload_len = 0;                                                 
                first->tx_flags |= IGC_TX_FLAGS_TSO |                                    │                  first->tx_flags |= IGB_TX_FLAGS_TSO |                                   
                                   IGC_TX_FLAGS_CSUM;                                    │                                     IGB_TX_FLAGS_CSUM;                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* determine offset of inner transport header */                                 │          /* determine offset of inner transport header */                                
        l4_offset = l4.hdr - skb->data;                                                  │          l4_offset = l4.hdr - skb->data;                                                 
                                                                                         │                                                                                          
        /* remove payload length from inner checksum */                                  │          /* remove payload length from inner checksum */                                 
        paylen = skb->len - l4_offset;                                                   │          paylen = skb->len - l4_offset;                                                  
        if (type_tucmd & IGC_ADVTXD_TUCMD_L4T_TCP) {                                     │          if (type_tucmd & E1000_ADVTXD_TUCMD_L4T_TCP) {                                  
                /* compute length of segmentation header */                              │                  /* compute length of segmentation header */                             
                *hdr_len = (l4.tcp->doff * 4) + l4_offset;                               │                  *hdr_len = (l4.tcp->doff * 4) + l4_offset;                              
                csum_replace_by_diff(&l4.tcp->check,                                     │                  csum_replace_by_diff(&l4.tcp->check,                                    
                                     (__force __wsum)htonl(paylen));                     │                          (__force __wsum)htonl(paylen));                                 
        } else {                                                                         │          } else {                                                                        
                /* compute length of segmentation header */                              │                  /* compute length of segmentation header */                             
                *hdr_len = sizeof(*l4.udp) + l4_offset;                                  │                  *hdr_len = sizeof(*l4.udp) + l4_offset;                                 
                csum_replace_by_diff(&l4.udp->check,                                     │                  csum_replace_by_diff(&l4.udp->check,                                    
                                     (__force __wsum)htonl(paylen));                     │                                       (__force __wsum)htonl(paylen));                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* update gso size and bytecount with header size */                             │          /* update gso size and bytecount with header size */                            
        first->gso_segs = skb_shinfo(skb)->gso_segs;                                     │          first->gso_segs = skb_shinfo(skb)->gso_segs;                                    
        first->bytecount += (first->gso_segs - 1) * *hdr_len;                            │          first->bytecount += (first->gso_segs - 1) * *hdr_len;                           
                                                                                         │                                                                                          
        /* MSS L4LEN IDX */                                                              │          /* MSS L4LEN IDX */                                                             
        mss_l4len_idx = (*hdr_len - l4_offset) << IGC_ADVTXD_L4LEN_SHIFT;                │          mss_l4len_idx = (*hdr_len - l4_offset) << E1000_ADVTXD_L4LEN_SHIFT;             
        mss_l4len_idx |= skb_shinfo(skb)->gso_size << IGC_ADVTXD_MSS_SHIFT;              │          mss_l4len_idx |= skb_shinfo(skb)->gso_size << E1000_ADVTXD_MSS_SHIFT;           
                                                                                         │                                                                                          
        /* VLAN MACLEN IPLEN */                                                          │          /* VLAN MACLEN IPLEN */                                                         
        vlan_macip_lens = l4.hdr - ip.hdr;                                               │          vlan_macip_lens = l4.hdr - ip.hdr;                                              
        vlan_macip_lens |= (ip.hdr - skb->data) << IGC_ADVTXD_MACLEN_SHIFT;              │          vlan_macip_lens |= (ip.hdr - skb->data) << E1000_ADVTXD_MACLEN_SHIFT;           
        vlan_macip_lens |= first->tx_flags & IGC_TX_FLAGS_VLAN_MASK;                     │          vlan_macip_lens |= first->tx_flags & IGB_TX_FLAGS_VLAN_MASK;                    
                                                                                         │                                                                                          
        igc_tx_ctxtdesc(tx_ring, first, vlan_macip_lens,                                 │          igb_tx_ctxtdesc(tx_ring, first, vlan_macip_lens,                                
                        type_tucmd, mss_l4len_idx);                                      │                          type_tucmd, mss_l4len_idx);                                     
                                                                                         │                                                                                          
        return 1;                                                                        │          return 1;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:2129                                             │ linux/drivers/net/ethernet/sfc/falcon/farch.c:2062                                       
                                                                                         │                                                                                          
        bool is_full = false;                                                            │          bool is_full = false;                                                           
                                                                                         │                                                                                          
        /* *gen_spec should be completely initialised, to be consistent                  │          /* *gen_spec should be completely initialised, to be consistent                 
         * with efx_filter_init_{rx,tx}() and in case we want to copy                    │           * with ef4_filter_init_{rx,tx}() and in case we want to copy                   
         * it back to userland.                                                          │           * it back to userland.                                                         
         */                                                                              │           */                                                                             
        memset(gen_spec, 0, sizeof(*gen_spec));                                          │          memset(gen_spec, 0, sizeof(*gen_spec));                                         
                                                                                         │                                                                                          
        gen_spec->priority = spec->priority;                                             │          gen_spec->priority = spec->priority;                                            
        gen_spec->flags = spec->flags;                                                   │          gen_spec->flags = spec->flags;                                                  
        gen_spec->dmaq_id = spec->dmaq_id;                                               │          gen_spec->dmaq_id = spec->dmaq_id;                                              
                                                                                         │                                                                                          
        switch (spec->type) {                                                            │          switch (spec->type) {                                                           
        case EFX_FARCH_FILTER_TCP_FULL:                                                  │          case EF4_FARCH_FILTER_TCP_FULL:                                                 
        case EFX_FARCH_FILTER_UDP_FULL:                                                  │          case EF4_FARCH_FILTER_UDP_FULL:                                                 
                is_full = true;                                                          │                  is_full = true;                                                         
                fallthrough;                                                             │                  fallthrough;                                                            
        case EFX_FARCH_FILTER_TCP_WILD:                                                  │          case EF4_FARCH_FILTER_TCP_WILD:                                                 
        case EFX_FARCH_FILTER_UDP_WILD: {                                                │          case EF4_FARCH_FILTER_UDP_WILD: {                                               
                __be32 host1, host2;                                                     │                  __be32 host1, host2;                                                    
                __be16 port1, port2;                                                     │                  __be16 port1, port2;                                                    
                                                                                         │                                                                                          
                gen_spec->match_flags =                                                  │                  gen_spec->match_flags =                                                 
                        EFX_FILTER_MATCH_ETHER_TYPE |                                    │                          EF4_FILTER_MATCH_ETHER_TYPE |                                   
                        EFX_FILTER_MATCH_IP_PROTO |                                      │                          EF4_FILTER_MATCH_IP_PROTO |                                     
                        EFX_FILTER_MATCH_LOC_HOST | EFX_FILTER_MATCH_LOC_PORT;           │                          EF4_FILTER_MATCH_LOC_HOST | EF4_FILTER_MATCH_LOC_PORT;          
                if (is_full)                                                             │                  if (is_full)                                                            
                        gen_spec->match_flags |= (EFX_FILTER_MATCH_REM_HOST |            │                          gen_spec->match_flags |= (EF4_FILTER_MATCH_REM_HOST |           
                                                  EFX_FILTER_MATCH_REM_PORT);            │                                                    EF4_FILTER_MATCH_REM_PORT);           
                gen_spec->ether_type = htons(ETH_P_IP);                                  │                  gen_spec->ether_type = htons(ETH_P_IP);                                 
                gen_spec->ip_proto =                                                     │                  gen_spec->ip_proto =                                                    
                        (spec->type == EFX_FARCH_FILTER_TCP_FULL ||                      │                          (spec->type == EF4_FARCH_FILTER_TCP_FULL ||                     
                         spec->type == EFX_FARCH_FILTER_TCP_WILD) ?                      │                           spec->type == EF4_FARCH_FILTER_TCP_WILD) ?                     
                        IPPROTO_TCP : IPPROTO_UDP;                                       │                          IPPROTO_TCP : IPPROTO_UDP;                                      
                                                                                         │                                                                                          
                host1 = htonl(spec->data[0] >> 16 | spec->data[1] << 16);                │                  host1 = htonl(spec->data[0] >> 16 | spec->data[1] << 16);               
                port1 = htons(spec->data[0]);                                            │                  port1 = htons(spec->data[0]);                                           
                host2 = htonl(spec->data[2]);                                            │                  host2 = htonl(spec->data[2]);                                           
                port2 = htons(spec->data[1] >> 16);                                      │                  port2 = htons(spec->data[1] >> 16);                                     
                if (spec->flags & EFX_FILTER_FLAG_TX) {                                  │                  if (spec->flags & EF4_FILTER_FLAG_TX) {                                 
                        gen_spec->loc_host[0] = host1;                                   │                          gen_spec->loc_host[0] = host1;                                  
                        gen_spec->rem_host[0] = host2;                                   │                          gen_spec->rem_host[0] = host2;                                  
                } else {                                                                 │                  } else {                                                                
                        gen_spec->loc_host[0] = host2;                                   │                          gen_spec->loc_host[0] = host2;                                  
                        gen_spec->rem_host[0] = host1;                                   │                          gen_spec->rem_host[0] = host1;                                  
                }                                                                        │                  }                                                                       
                if (!!(gen_spec->flags & EFX_FILTER_FLAG_TX) ^                           │                  if (!!(gen_spec->flags & EF4_FILTER_FLAG_TX) ^                          
                    (!is_full && gen_spec->ip_proto == IPPROTO_UDP)) {                   │                      (!is_full && gen_spec->ip_proto == IPPROTO_UDP)) {                  
                        gen_spec->loc_port = port1;                                      │                          gen_spec->loc_port = port1;                                     
                        gen_spec->rem_port = port2;                                      │                          gen_spec->rem_port = port2;                                     
                } else {                                                                 │                  } else {                                                                
                        gen_spec->loc_port = port2;                                      │                          gen_spec->loc_port = port2;                                     
                        gen_spec->rem_port = port1;                                      │                          gen_spec->rem_port = port1;                                     
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        case EFX_FARCH_FILTER_MAC_FULL:                                                  │          case EF4_FARCH_FILTER_MAC_FULL:                                                 
                is_full = true;                                                          │                  is_full = true;                                                         
                fallthrough;                                                             │                  fallthrough;                                                            
        case EFX_FARCH_FILTER_MAC_WILD:                                                  │          case EF4_FARCH_FILTER_MAC_WILD:                                                 
                gen_spec->match_flags = EFX_FILTER_MATCH_LOC_MAC;                        │                  gen_spec->match_flags = EF4_FILTER_MATCH_LOC_MAC;                       
                if (is_full)                                                             │                  if (is_full)                                                            
                        gen_spec->match_flags |= EFX_FILTER_MATCH_OUTER_VID;             │                          gen_spec->match_flags |= EF4_FILTER_MATCH_OUTER_VID;            
                gen_spec->loc_mac[0] = spec->data[2] >> 8;                               │                  gen_spec->loc_mac[0] = spec->data[2] >> 8;                              
                gen_spec->loc_mac[1] = spec->data[2];                                    │                  gen_spec->loc_mac[1] = spec->data[2];                                   
                gen_spec->loc_mac[2] = spec->data[1] >> 24;                              │                  gen_spec->loc_mac[2] = spec->data[1] >> 24;                             
                gen_spec->loc_mac[3] = spec->data[1] >> 16;                              │                  gen_spec->loc_mac[3] = spec->data[1] >> 16;                             
                gen_spec->loc_mac[4] = spec->data[1] >> 8;                               │                  gen_spec->loc_mac[4] = spec->data[1] >> 8;                              
                gen_spec->loc_mac[5] = spec->data[1];                                    │                  gen_spec->loc_mac[5] = spec->data[1];                                   
                gen_spec->outer_vid = htons(spec->data[0]);                              │                  gen_spec->outer_vid = htons(spec->data[0]);                             
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case EFX_FARCH_FILTER_UC_DEF:                                                    │          case EF4_FARCH_FILTER_UC_DEF:                                                   
        case EFX_FARCH_FILTER_MC_DEF:                                                    │          case EF4_FARCH_FILTER_MC_DEF:                                                   
                gen_spec->match_flags = EFX_FILTER_MATCH_LOC_MAC_IG;                     │                  gen_spec->match_flags = EF4_FILTER_MATCH_LOC_MAC_IG;                    
                gen_spec->loc_mac[0] = spec->type == EFX_FARCH_FILTER_MC_DEF;            │                  gen_spec->loc_mac[0] = spec->type == EF4_FARCH_FILTER_MC_DEF;           
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        default:                                                                         │          default:                                                                        
                WARN_ON(1);                                                              │                  WARN_ON(1);                                                             
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_ethtool.c:1102                                 │ linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:2583                                  
                                                                                         │                                                                                          
        u32 flags = adapter->flags;                                                      │          u32 flags = adapter->flags;                                                     
                                                                                         │                                                                                          
        /* RSS does not support anything other than hashing                              │          /* RSS does not support anything other than hashing                             
         * to queues on src and dst IPs and ports                                        │           * to queues on src and dst IPs and ports                                       
         */                                                                              │           */                                                                             
        if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST |                                      │          if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST |                                     
                          RXH_L4_B_0_1 | RXH_L4_B_2_3))                                  │                            RXH_L4_B_0_1 | RXH_L4_B_2_3))                                 
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        switch (nfc->flow_type) {                                                        │          switch (nfc->flow_type) {                                                       
        case TCP_V4_FLOW:                                                                │          case TCP_V4_FLOW:                                                               
        case TCP_V6_FLOW:                                                                │          case TCP_V6_FLOW:                                                               
                if (!(nfc->data & RXH_IP_SRC) ||                                         │                  if (!(nfc->data & RXH_IP_SRC) ||                                        
                    !(nfc->data & RXH_IP_DST) ||                                         │                      !(nfc->data & RXH_IP_DST) ||                                        
                    !(nfc->data & RXH_L4_B_0_1) ||                                       │                      !(nfc->data & RXH_L4_B_0_1) ||                                      
                    !(nfc->data & RXH_L4_B_2_3))                                         │                      !(nfc->data & RXH_L4_B_2_3))                                        
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
                break;                                                                   │                  break;                                                                  
        case UDP_V4_FLOW:                                                                │          case UDP_V4_FLOW:                                                               
                if (!(nfc->data & RXH_IP_SRC) ||                                         │                  if (!(nfc->data & RXH_IP_SRC) ||                                        
                    !(nfc->data & RXH_IP_DST))                                           │                      !(nfc->data & RXH_IP_DST))                                          
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
                switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {                     │                  switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {                    
                case 0:                                                                  │                  case 0:                                                                 
                        flags &= ~IGC_FLAG_RSS_FIELD_IPV4_UDP;                           │                          flags &= ~IGB_FLAG_RSS_FIELD_IPV4_UDP;                          
                        break;                                                           │                          break;                                                          
                case (RXH_L4_B_0_1 | RXH_L4_B_2_3):                                      │                  case (RXH_L4_B_0_1 | RXH_L4_B_2_3):                                     
                        flags |= IGC_FLAG_RSS_FIELD_IPV4_UDP;                            │                          flags |= IGB_FLAG_RSS_FIELD_IPV4_UDP;                           
                        break;                                                           │                          break;                                                          
                default:                                                                 │                  default:                                                                
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
                }                                                                        │                  }                                                                       
                break;                                                                   │                  break;                                                                  
        case UDP_V6_FLOW:                                                                │          case UDP_V6_FLOW:                                                               
                if (!(nfc->data & RXH_IP_SRC) ||                                         │                  if (!(nfc->data & RXH_IP_SRC) ||                                        
                    !(nfc->data & RXH_IP_DST))                                           │                      !(nfc->data & RXH_IP_DST))                                          
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
                switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {                     │                  switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {                    
                case 0:                                                                  │                  case 0:                                                                 
                        flags &= ~IGC_FLAG_RSS_FIELD_IPV6_UDP;                           │                          flags &= ~IGB_FLAG_RSS_FIELD_IPV6_UDP;                          
                        break;                                                           │                          break;                                                          
                case (RXH_L4_B_0_1 | RXH_L4_B_2_3):                                      │                  case (RXH_L4_B_0_1 | RXH_L4_B_2_3):                                     
                        flags |= IGC_FLAG_RSS_FIELD_IPV6_UDP;                            │                          flags |= IGB_FLAG_RSS_FIELD_IPV6_UDP;                           
                        break;                                                           │                          break;                                                          
                default:                                                                 │                  default:                                                                
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
                }                                                                        │                  }                                                                       
                break;                                                                   │                  break;                                                                  
        case AH_ESP_V4_FLOW:                                                             │          case AH_ESP_V4_FLOW:                                                            
        case AH_V4_FLOW:                                                                 │          case AH_V4_FLOW:                                                                
        case ESP_V4_FLOW:                                                                │          case ESP_V4_FLOW:                                                               
        case SCTP_V4_FLOW:                                                               │          case SCTP_V4_FLOW:                                                              
        case AH_ESP_V6_FLOW:                                                             │          case AH_ESP_V6_FLOW:                                                            
        case AH_V6_FLOW:                                                                 │          case AH_V6_FLOW:                                                                
        case ESP_V6_FLOW:                                                                │          case ESP_V6_FLOW:                                                               
        case SCTP_V6_FLOW:                                                               │          case SCTP_V6_FLOW:                                                              
                if (!(nfc->data & RXH_IP_SRC) ||                                         │                  if (!(nfc->data & RXH_IP_SRC) ||                                        
                    !(nfc->data & RXH_IP_DST) ||                                         │                      !(nfc->data & RXH_IP_DST) ||                                        
                    (nfc->data & RXH_L4_B_0_1) ||                                        │                      (nfc->data & RXH_L4_B_0_1) ||                                       
                    (nfc->data & RXH_L4_B_2_3))                                          │                      (nfc->data & RXH_L4_B_2_3))                                         
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* if we changed something we need to update flags */                            │          /* if we changed something we need to update flags */                           
        if (flags != adapter->flags) {                                                   │          if (flags != adapter->flags) {                                                  
                struct igc_hw *hw = &adapter->hw;                                        │                  struct e1000_hw *hw = &adapter->hw;                                     
                u32 mrqc = rd32(IGC_MRQC);                                               │                  u32 mrqc = rd32(E1000_MRQC);                                            
                                                                                         │                                                                                          
                if ((flags & UDP_RSS_FLAGS) &&                                           │                  if ((flags & UDP_RSS_FLAGS) &&                                          
                    !(adapter->flags & UDP_RSS_FLAGS))                                   │                      !(adapter->flags & UDP_RSS_FLAGS))                                  
                        netdev_err(adapter->netdev,                                      │                          dev_err(&adapter->pdev->dev,                                    
                                   "Enabling UDP RSS: fragmented packets may arrive out  │                                  "enabling UDP RSS: fragmented packets may arrive out of 
                                                                                         │                                                                                          
                adapter->flags = flags;                                                  │                  adapter->flags = flags;                                                 
                                                                                         │                                                                                          
                /* Perform hash on these packet types */                                 │                  /* Perform hash on these packet types */                                
                mrqc |= IGC_MRQC_RSS_FIELD_IPV4 |                                        │                  mrqc |= E1000_MRQC_RSS_FIELD_IPV4 |                                     
                        IGC_MRQC_RSS_FIELD_IPV4_TCP |                                    │                          E1000_MRQC_RSS_FIELD_IPV4_TCP |                                 
                        IGC_MRQC_RSS_FIELD_IPV6 |                                        │                          E1000_MRQC_RSS_FIELD_IPV6 |                                     
                        IGC_MRQC_RSS_FIELD_IPV6_TCP;                                     │                          E1000_MRQC_RSS_FIELD_IPV6_TCP;                                  
                                                                                         │                                                                                          
                mrqc &= ~(IGC_MRQC_RSS_FIELD_IPV4_UDP |                                  │                  mrqc &= ~(E1000_MRQC_RSS_FIELD_IPV4_UDP |                               
                          IGC_MRQC_RSS_FIELD_IPV6_UDP);                                  │                            E1000_MRQC_RSS_FIELD_IPV6_UDP);                               
                                                                                         │                                                                                          
                if (flags & IGC_FLAG_RSS_FIELD_IPV4_UDP)                                 │                  if (flags & IGB_FLAG_RSS_FIELD_IPV4_UDP)                                
                        mrqc |= IGC_MRQC_RSS_FIELD_IPV4_UDP;                             │                          mrqc |= E1000_MRQC_RSS_FIELD_IPV4_UDP;                          
                                                                                         │                                                                                          
                if (flags & IGC_FLAG_RSS_FIELD_IPV6_UDP)                                 │                  if (flags & IGB_FLAG_RSS_FIELD_IPV6_UDP)                                
                        mrqc |= IGC_MRQC_RSS_FIELD_IPV6_UDP;                             │                          mrqc |= E1000_MRQC_RSS_FIELD_IPV6_UDP;                          
                                                                                         │                                                                                          
                wr32(IGC_MRQC, mrqc);                                                    │                  wr32(E1000_MRQC, mrqc);                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:1238                      │ linux/drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:595                        
                                                                                         │                                                                                          
        struct rvu_npa_health_reporters *rvu_reporters;                                  │          struct rvu_nix_health_reporters *rvu_reporters;                                 
        struct rvu_npa_event_ctx *npa_event_context;                                     │          struct rvu_nix_event_ctx *nix_event_context;                                    
        struct rvu *rvu = rvu_dl->rvu;                                                   │          struct rvu *rvu = rvu_dl->rvu;                                                  
                                                                                         │                                                                                          
        rvu_reporters = kzalloc(sizeof(*rvu_reporters), GFP_KERNEL);                     │          rvu_reporters = kzalloc(sizeof(*rvu_reporters), GFP_KERNEL);                    
        if (!rvu_reporters)                                                              │          if (!rvu_reporters)                                                             
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        rvu_dl->rvu_npa_health_reporter = rvu_reporters;                                 │          rvu_dl->rvu_nix_health_reporter = rvu_reporters;                                
        npa_event_context = kzalloc(sizeof(*npa_event_context), GFP_KERNEL);             │          nix_event_context = kzalloc(sizeof(*nix_event_context), GFP_KERNEL);            
        if (!npa_event_context)                                                          │          if (!nix_event_context)                                                         
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        rvu_reporters->npa_event_ctx = npa_event_context;                                │          rvu_reporters->nix_event_ctx = nix_event_context;                               
        rvu_reporters->rvu_hw_npa_intr_reporter =                                        │          rvu_reporters->rvu_hw_nix_intr_reporter =                                       
                devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_npa_intr_reporter_ops │                  devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_nix_intr_reporter_ops
        if (IS_ERR(rvu_reporters->rvu_hw_npa_intr_reporter)) {                           │          if (IS_ERR(rvu_reporters->rvu_hw_nix_intr_reporter)) {                          
                dev_warn(rvu->dev, "Failed to create hw_npa_intr reporter, err=%ld\n",   │                  dev_warn(rvu->dev, "Failed to create hw_nix_intr reporter, err=%ld\n",  
                         PTR_ERR(rvu_reporters->rvu_hw_npa_intr_reporter));              │                           PTR_ERR(rvu_reporters->rvu_hw_nix_intr_reporter));             
                return PTR_ERR(rvu_reporters->rvu_hw_npa_intr_reporter);                 │                  return PTR_ERR(rvu_reporters->rvu_hw_nix_intr_reporter);                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        rvu_reporters->rvu_hw_npa_gen_reporter =                                         │          rvu_reporters->rvu_hw_nix_gen_reporter =                                        
                devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_npa_gen_reporter_ops, │                  devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_nix_gen_reporter_ops,
        if (IS_ERR(rvu_reporters->rvu_hw_npa_gen_reporter)) {                            │          if (IS_ERR(rvu_reporters->rvu_hw_nix_gen_reporter)) {                           
                dev_warn(rvu->dev, "Failed to create hw_npa_gen reporter, err=%ld\n",    │                  dev_warn(rvu->dev, "Failed to create hw_nix_gen reporter, err=%ld\n",   
                         PTR_ERR(rvu_reporters->rvu_hw_npa_gen_reporter));               │                           PTR_ERR(rvu_reporters->rvu_hw_nix_gen_reporter));              
                return PTR_ERR(rvu_reporters->rvu_hw_npa_gen_reporter);                  │                  return PTR_ERR(rvu_reporters->rvu_hw_nix_gen_reporter);                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        rvu_reporters->rvu_hw_npa_err_reporter =                                         │          rvu_reporters->rvu_hw_nix_err_reporter =                                        
                devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_npa_err_reporter_ops, │                  devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_nix_err_reporter_ops,
        if (IS_ERR(rvu_reporters->rvu_hw_npa_err_reporter)) {                            │          if (IS_ERR(rvu_reporters->rvu_hw_nix_err_reporter)) {                           
                dev_warn(rvu->dev, "Failed to create hw_npa_err reporter, err=%ld\n",    │                  dev_warn(rvu->dev, "Failed to create hw_nix_err reporter, err=%ld\n",   
                         PTR_ERR(rvu_reporters->rvu_hw_npa_err_reporter));               │                           PTR_ERR(rvu_reporters->rvu_hw_nix_err_reporter));              
                return PTR_ERR(rvu_reporters->rvu_hw_npa_err_reporter);                  │                  return PTR_ERR(rvu_reporters->rvu_hw_nix_err_reporter);                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        rvu_reporters->rvu_hw_npa_ras_reporter =                                         │          rvu_reporters->rvu_hw_nix_ras_reporter =                                        
                devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_npa_ras_reporter_ops, │                  devlink_health_reporter_create(rvu_dl->dl, &rvu_hw_nix_ras_reporter_ops,
        if (IS_ERR(rvu_reporters->rvu_hw_npa_ras_reporter)) {                            │          if (IS_ERR(rvu_reporters->rvu_hw_nix_ras_reporter)) {                           
                dev_warn(rvu->dev, "Failed to create hw_npa_ras reporter, err=%ld\n",    │                  dev_warn(rvu->dev, "Failed to create hw_nix_ras reporter, err=%ld\n",   
                         PTR_ERR(rvu_reporters->rvu_hw_npa_ras_reporter));               │                           PTR_ERR(rvu_reporters->rvu_hw_nix_ras_reporter));              
                return PTR_ERR(rvu_reporters->rvu_hw_npa_ras_reporter);                  │                  return PTR_ERR(rvu_reporters->rvu_hw_nix_ras_reporter);                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        rvu_dl->devlink_wq = create_workqueue("rvu_devlink_wq");                         │          rvu_dl->devlink_wq = create_workqueue("rvu_devlink_wq");                        
        if (!rvu_dl->devlink_wq)                                                         │          if (!rvu_dl->devlink_wq)                                                        
                goto err;                                                                │                  goto err;                                                               
                                                                                         │                                                                                          
        INIT_WORK(&rvu_reporters->intr_work, rvu_npa_intr_work);                         │          INIT_WORK(&rvu_reporters->intr_work, rvu_nix_intr_work);                        
        INIT_WORK(&rvu_reporters->err_work, rvu_npa_err_work);                           │          INIT_WORK(&rvu_reporters->gen_work, rvu_nix_gen_work);                          
        INIT_WORK(&rvu_reporters->gen_work, rvu_npa_gen_work);                           │          INIT_WORK(&rvu_reporters->err_work, rvu_nix_err_work);                          
        INIT_WORK(&rvu_reporters->ras_work, rvu_npa_ras_work);                           │          INIT_WORK(&rvu_reporters->ras_work, rvu_nix_ras_work);                          
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
err:                                                                                     │  err:                                                                                    
        rvu_npa_health_reporters_destroy(rvu_dl);                                        │          rvu_nix_health_reporters_destroy(rvu_dl);                                       
        return -ENOMEM;                                                                  │          return -ENOMEM;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:1055                                 │ linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:1141                                  
                                                                                         │                                                                                          
        { E1000_FCAL,      0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_FCAL,      0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_FCAH,      0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },            │          { E1000_FCAH,      0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },           
        { E1000_FCT,       0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },            │          { E1000_FCT,       0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },           
        { E1000_VET,       0x100, 1,  PATTERN_TEST, 0xFFFF0000, 0xFFFF0000 },            │          { E1000_VET,       0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_RDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_RDBAL(0),  0x100, 4, PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            
        { E1000_RDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_RDBAH(0),  0x100, 4, PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            
        { E1000_RDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFF80, 0x000FFFFF },            │          { E1000_RDLEN(0),  0x100, 4, PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            
        { E1000_RDBAL(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_RDBAL(4),  0x40, 12, PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            
        { E1000_RDBAH(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_RDBAH(4),  0x40, 12, PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            
        { E1000_RDLEN(4),  0x40,  4,  PATTERN_TEST, 0x000FFF80, 0x000FFFFF },            │          { E1000_RDLEN(4),  0x40, 12, PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            
        /* RDH is read-only for i350, only test RDT. */                                  │          /* Enable all RX queues before testing. */                                      
                                                                                         │          { E1000_RXDCTL(0), 0x100, 4, WRITE_NO_TEST, 0,                                  
                                                                                         │            E1000_RXDCTL_QUEUE_ENABLE },                                                  
                                                                                         │          { E1000_RXDCTL(4), 0x40, 12, WRITE_NO_TEST, 0,                                  
                                                                                         │            E1000_RXDCTL_QUEUE_ENABLE },                                                  
                                                                                         │          /* RDH is read-only for 82576, only test RDT. */                                
        { E1000_RDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_RDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
        { E1000_RDT(4),    0x40,  4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_RDT(4),    0x40, 12,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
                                                                                         │          { E1000_RXDCTL(0), 0x100, 4,  WRITE_NO_TEST, 0, 0 },                            
                                                                                         │          { E1000_RXDCTL(4), 0x40, 12,  WRITE_NO_TEST, 0, 0 },                            
        { E1000_FCRTH,     0x100, 1,  PATTERN_TEST, 0x0000FFF0, 0x0000FFF0 },            │          { E1000_FCRTH,     0x100, 1,  PATTERN_TEST, 0x0000FFF0, 0x0000FFF0 },           
        { E1000_FCTTV,     0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_FCTTV,     0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
        { E1000_TIPG,      0x100, 1,  PATTERN_TEST, 0x3FFFFFFF, 0x3FFFFFFF },            │          { E1000_TIPG,      0x100, 1,  PATTERN_TEST, 0x3FFFFFFF, 0x3FFFFFFF },           
        { E1000_TDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_TDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },           
        { E1000_TDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_TDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_TDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFF80, 0x000FFFFF },            │          { E1000_TDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },           
        { E1000_TDBAL(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_TDBAL(4),  0x40, 12,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },           
        { E1000_TDBAH(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_TDBAH(4),  0x40, 12,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_TDLEN(4),  0x40,  4,  PATTERN_TEST, 0x000FFF80, 0x000FFFFF },            │          { E1000_TDLEN(4),  0x40, 12,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },           
        { E1000_TDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │                                                                                          
        { E1000_TDT(4),    0x40,  4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │                                                                                          
        { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },           │          { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },          
        { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0x003FFFFB },           │          { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0x003FFFFB },          
        { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0xFFFFFFFF },           │          { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0xFFFFFFFF },          
        { E1000_TCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },           │          { E1000_TCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },          
        { E1000_RA,        0, 16, TABLE64_TEST_LO,                                       │          { E1000_RA,        0, 16, TABLE64_TEST_LO, 0xFFFFFFFF, 0xFFFFFFFF },            
                                                0xFFFFFFFF, 0xFFFFFFFF },                │          { E1000_RA,        0, 16, TABLE64_TEST_HI, 0x83FFFFFF, 0xFFFFFFFF },            
        { E1000_RA,        0, 16, TABLE64_TEST_HI,                                       │          { E1000_RA2,       0, 8, TABLE64_TEST_LO, 0xFFFFFFFF, 0xFFFFFFFF },             
                                                0xC3FFFFFF, 0xFFFFFFFF },                │          { E1000_RA2,       0, 8, TABLE64_TEST_HI, 0x83FFFFFF, 0xFFFFFFFF },             
        { E1000_RA2,       0, 16, TABLE64_TEST_LO,                                       │          { E1000_MTA,       0, 128, TABLE32_TEST, 0xFFFFFFFF, 0xFFFFFFFF },              
                                                0xFFFFFFFF, 0xFFFFFFFF },                │                                                                                          
        { E1000_RA2,       0, 16, TABLE64_TEST_HI,                                       │                                                                                          
                                                0xC3FFFFFF, 0xFFFFFFFF },                │                                                                                          
        { E1000_MTA,       0, 128, TABLE32_TEST,                                         │                                                                                          
                                                0xFFFFFFFF, 0xFFFFFFFF },                │                                                                                          
        { 0, 0, 0, 0 }                                                                   │          { 0, 0, 0, 0 }                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:1098                                 │ linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:1141                                  
                                                                                         │                                                                                          
        { E1000_FCAL,      0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_FCAL,      0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_FCAH,      0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },            │          { E1000_FCAH,      0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },           
        { E1000_FCT,       0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },            │          { E1000_FCT,       0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },           
        { E1000_VET,       0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_VET,       0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_RDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_RDBAL(0),  0x100, 4, PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            
        { E1000_RDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_RDBAH(0),  0x100, 4, PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            
        { E1000_RDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            │          { E1000_RDLEN(0),  0x100, 4, PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            
        { E1000_RDBAL(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_RDBAL(4),  0x40, 12, PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            
        { E1000_RDBAH(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_RDBAH(4),  0x40, 12, PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            
        { E1000_RDLEN(4),  0x40,  4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            │          { E1000_RDLEN(4),  0x40, 12, PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            
        /* RDH is read-only for 82580, only test RDT. */                                 │          /* Enable all RX queues before testing. */                                      
                                                                                         │          { E1000_RXDCTL(0), 0x100, 4, WRITE_NO_TEST, 0,                                  
                                                                                         │            E1000_RXDCTL_QUEUE_ENABLE },                                                  
                                                                                         │          { E1000_RXDCTL(4), 0x40, 12, WRITE_NO_TEST, 0,                                  
                                                                                         │            E1000_RXDCTL_QUEUE_ENABLE },                                                  
                                                                                         │          /* RDH is read-only for 82576, only test RDT. */                                
        { E1000_RDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_RDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
        { E1000_RDT(4),    0x40,  4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_RDT(4),    0x40, 12,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
                                                                                         │          { E1000_RXDCTL(0), 0x100, 4,  WRITE_NO_TEST, 0, 0 },                            
                                                                                         │          { E1000_RXDCTL(4), 0x40, 12,  WRITE_NO_TEST, 0, 0 },                            
        { E1000_FCRTH,     0x100, 1,  PATTERN_TEST, 0x0000FFF0, 0x0000FFF0 },            │          { E1000_FCRTH,     0x100, 1,  PATTERN_TEST, 0x0000FFF0, 0x0000FFF0 },           
        { E1000_FCTTV,     0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_FCTTV,     0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
        { E1000_TIPG,      0x100, 1,  PATTERN_TEST, 0x3FFFFFFF, 0x3FFFFFFF },            │          { E1000_TIPG,      0x100, 1,  PATTERN_TEST, 0x3FFFFFFF, 0x3FFFFFFF },           
        { E1000_TDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_TDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },           
        { E1000_TDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_TDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_TDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            │          { E1000_TDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },           
        { E1000_TDBAL(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_TDBAL(4),  0x40, 12,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },           
        { E1000_TDBAH(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_TDBAH(4),  0x40, 12,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_TDLEN(4),  0x40,  4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            │          { E1000_TDLEN(4),  0x40, 12,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },           
        { E1000_TDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │                                                                                          
        { E1000_TDT(4),    0x40,  4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │                                                                                          
        { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },           │          { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },          
        { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0x003FFFFB },           │          { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0x003FFFFB },          
        { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0xFFFFFFFF },           │          { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0xFFFFFFFF },          
        { E1000_TCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },           │          { E1000_TCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },          
        { E1000_RA,        0, 16, TABLE64_TEST_LO,                                       │          { E1000_RA,        0, 16, TABLE64_TEST_LO, 0xFFFFFFFF, 0xFFFFFFFF },            
                                                0xFFFFFFFF, 0xFFFFFFFF },                │          { E1000_RA,        0, 16, TABLE64_TEST_HI, 0x83FFFFFF, 0xFFFFFFFF },            
        { E1000_RA,        0, 16, TABLE64_TEST_HI,                                       │          { E1000_RA2,       0, 8, TABLE64_TEST_LO, 0xFFFFFFFF, 0xFFFFFFFF },             
                                                0x83FFFFFF, 0xFFFFFFFF },                │          { E1000_RA2,       0, 8, TABLE64_TEST_HI, 0x83FFFFFF, 0xFFFFFFFF },             
        { E1000_RA2,       0, 8, TABLE64_TEST_LO,                                        │          { E1000_MTA,       0, 128, TABLE32_TEST, 0xFFFFFFFF, 0xFFFFFFFF },              
                                                0xFFFFFFFF, 0xFFFFFFFF },                │                                                                                          
        { E1000_RA2,       0, 8, TABLE64_TEST_HI,                                        │                                                                                          
                                                0x83FFFFFF, 0xFFFFFFFF },                │                                                                                          
        { E1000_MTA,       0, 128, TABLE32_TEST,                                         │                                                                                          
                                                0xFFFFFFFF, 0xFFFFFFFF },                │                                                                                          
        { 0, 0, 0, 0 }                                                                   │          { 0, 0, 0, 0 }                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:1098                                 │ linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:1055                                  
                                                                                         │                                                                                          
        { E1000_FCAL,      0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_FCAL,      0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_FCAH,      0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },            │          { E1000_FCAH,      0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },           
        { E1000_FCT,       0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },            │          { E1000_FCT,       0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0xFFFFFFFF },           
        { E1000_VET,       0x100, 1,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_VET,       0x100, 1,  PATTERN_TEST, 0xFFFF0000, 0xFFFF0000 },           
        { E1000_RDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_RDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },           
        { E1000_RDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_RDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_RDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            │          { E1000_RDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFF80, 0x000FFFFF },           
        { E1000_RDBAL(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_RDBAL(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },           
        { E1000_RDBAH(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_RDBAH(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_RDLEN(4),  0x40,  4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            │          { E1000_RDLEN(4),  0x40,  4,  PATTERN_TEST, 0x000FFF80, 0x000FFFFF },           
        /* RDH is read-only for 82580, only test RDT. */                                 │          /* RDH is read-only for i350, only test RDT. */                                 
        { E1000_RDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_RDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
        { E1000_RDT(4),    0x40,  4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_RDT(4),    0x40,  4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
        { E1000_FCRTH,     0x100, 1,  PATTERN_TEST, 0x0000FFF0, 0x0000FFF0 },            │          { E1000_FCRTH,     0x100, 1,  PATTERN_TEST, 0x0000FFF0, 0x0000FFF0 },           
        { E1000_FCTTV,     0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_FCTTV,     0x100, 1,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
        { E1000_TIPG,      0x100, 1,  PATTERN_TEST, 0x3FFFFFFF, 0x3FFFFFFF },            │          { E1000_TIPG,      0x100, 1,  PATTERN_TEST, 0x3FFFFFFF, 0x3FFFFFFF },           
        { E1000_TDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_TDBAL(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },           
        { E1000_TDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_TDBAH(0),  0x100, 4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_TDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            │          { E1000_TDLEN(0),  0x100, 4,  PATTERN_TEST, 0x000FFF80, 0x000FFFFF },           
        { E1000_TDBAL(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },            │          { E1000_TDBAL(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFF80, 0xFFFFFFFF },           
        { E1000_TDBAH(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },            │          { E1000_TDBAH(4),  0x40,  4,  PATTERN_TEST, 0xFFFFFFFF, 0xFFFFFFFF },           
        { E1000_TDLEN(4),  0x40,  4,  PATTERN_TEST, 0x000FFFF0, 0x000FFFFF },            │          { E1000_TDLEN(4),  0x40,  4,  PATTERN_TEST, 0x000FFF80, 0x000FFFFF },           
        { E1000_TDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_TDT(0),    0x100, 4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
        { E1000_TDT(4),    0x40,  4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },            │          { E1000_TDT(4),    0x40,  4,  PATTERN_TEST, 0x0000FFFF, 0x0000FFFF },           
        { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },           │          { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },          
        { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0x003FFFFB },           │          { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0x003FFFFB },          
        { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0xFFFFFFFF },           │          { E1000_RCTL,      0x100, 1,  SET_READ_TEST, 0x04CFB0FE, 0xFFFFFFFF },          
        { E1000_TCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },           │          { E1000_TCTL,      0x100, 1,  SET_READ_TEST, 0xFFFFFFFF, 0x00000000 },          
        { E1000_RA,        0, 16, TABLE64_TEST_LO,                                       │          { E1000_RA,        0, 16, TABLE64_TEST_LO,                                      
                                                0xFFFFFFFF, 0xFFFFFFFF },                │                                                  0xFFFFFFFF, 0xFFFFFFFF },               
        { E1000_RA,        0, 16, TABLE64_TEST_HI,                                       │          { E1000_RA,        0, 16, TABLE64_TEST_HI,                                      
                                                0x83FFFFFF, 0xFFFFFFFF },                │                                                  0xC3FFFFFF, 0xFFFFFFFF },               
        { E1000_RA2,       0, 8, TABLE64_TEST_LO,                                        │          { E1000_RA2,       0, 16, TABLE64_TEST_LO,                                      
                                                0xFFFFFFFF, 0xFFFFFFFF },                │                                                  0xFFFFFFFF, 0xFFFFFFFF },               
        { E1000_RA2,       0, 8, TABLE64_TEST_HI,                                        │          { E1000_RA2,       0, 16, TABLE64_TEST_HI,                                      
                                                0x83FFFFFF, 0xFFFFFFFF },                │                                                  0xC3FFFFFF, 0xFFFFFFFF },               
        { E1000_MTA,       0, 128, TABLE32_TEST,                                         │          { E1000_MTA,       0, 128, TABLE32_TEST,                                        
                                                0xFFFFFFFF, 0xFFFFFFFF },                │                                                  0xFFFFFFFF, 0xFFFFFFFF },               
        { 0, 0, 0, 0 }                                                                   │          { 0, 0, 0, 0 }                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/selftest.c:175                                           │ linux/drivers/net/ethernet/sfc/falcon/selftest.c:174                                     
                                                                                         │                                                                                          
        struct efx_channel *channel;                                                     │          struct ef4_channel *channel;                                                    
        unsigned int read_ptr[EFX_MAX_CHANNELS];                                         │          unsigned int read_ptr[EF4_MAX_CHANNELS];                                        
        unsigned long napi_ran = 0, dma_pend = 0, int_pend = 0;                          │          unsigned long napi_ran = 0, dma_pend = 0, int_pend = 0;                         
        unsigned long timeout, wait;                                                     │          unsigned long timeout, wait;                                                    
                                                                                         │                                                                                          
        BUILD_BUG_ON(EFX_MAX_CHANNELS > BITS_PER_LONG);                                  │          BUILD_BUG_ON(EF4_MAX_CHANNELS > BITS_PER_LONG);                                 
                                                                                         │                                                                                          
        efx_for_each_channel(channel, efx) {                                             │          ef4_for_each_channel(channel, efx) {                                            
                read_ptr[channel->channel] = channel->eventq_read_ptr;                   │                  read_ptr[channel->channel] = channel->eventq_read_ptr;                  
                set_bit(channel->channel, &dma_pend);                                    │                  set_bit(channel->channel, &dma_pend);                                   
                set_bit(channel->channel, &int_pend);                                    │                  set_bit(channel->channel, &int_pend);                                   
                efx_nic_event_test_start(channel);                                       │                  ef4_nic_event_test_start(channel);                                      
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        timeout = jiffies + IRQ_TIMEOUT;                                                 │          timeout = jiffies + IRQ_TIMEOUT;                                                
        wait = 1;                                                                        │          wait = 1;                                                                       
                                                                                         │                                                                                          
        /* Wait for arrival of interrupts.  NAPI processing may or may                   │          /* Wait for arrival of interrupts.  NAPI processing may or may                  
         * not complete in time, but we can cope in any case.                            │           * not complete in time, but we can cope in any case.                           
         */                                                                              │           */                                                                             
        do {                                                                             │          do {                                                                            
                schedule_timeout_uninterruptible(wait);                                  │                  schedule_timeout_uninterruptible(wait);                                 
                                                                                         │                                                                                          
                efx_for_each_channel(channel, efx) {                                     │                  ef4_for_each_channel(channel, efx) {                                    
                        efx_stop_eventq(channel);                                        │                          ef4_stop_eventq(channel);                                       
                        if (channel->eventq_read_ptr !=                                  │                          if (channel->eventq_read_ptr !=                                 
                            read_ptr[channel->channel]) {                                │                              read_ptr[channel->channel]) {                               
                                set_bit(channel->channel, &napi_ran);                    │                                  set_bit(channel->channel, &napi_ran);                   
                                clear_bit(channel->channel, &dma_pend);                  │                                  clear_bit(channel->channel, &dma_pend);                 
                                clear_bit(channel->channel, &int_pend);                  │                                  clear_bit(channel->channel, &int_pend);                 
                        } else {                                                         │                          } else {                                                        
                                if (efx_nic_event_present(channel))                      │                                  if (ef4_nic_event_present(channel))                     
                                        clear_bit(channel->channel, &dma_pend);          │                                          clear_bit(channel->channel, &dma_pend);         
                                if (efx_nic_event_test_irq_cpu(channel) >= 0)            │                                  if (ef4_nic_event_test_irq_cpu(channel) >= 0)           
                                        clear_bit(channel->channel, &int_pend);          │                                          clear_bit(channel->channel, &int_pend);         
                        }                                                                │                          }                                                               
                        efx_start_eventq(channel);                                       │                          ef4_start_eventq(channel);                                      
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                wait *= 2;                                                               │                  wait *= 2;                                                              
        } while ((dma_pend || int_pend) && time_before(jiffies, timeout));               │          } while ((dma_pend || int_pend) && time_before(jiffies, timeout));              
                                                                                         │                                                                                          
        efx_for_each_channel(channel, efx) {                                             │          ef4_for_each_channel(channel, efx) {                                            
                bool dma_seen = !test_bit(channel->channel, &dma_pend);                  │                  bool dma_seen = !test_bit(channel->channel, &dma_pend);                 
                bool int_seen = !test_bit(channel->channel, &int_pend);                  │                  bool int_seen = !test_bit(channel->channel, &int_pend);                 
                                                                                         │                                                                                          
                tests->eventq_dma[channel->channel] = dma_seen ? 1 : -1;                 │                  tests->eventq_dma[channel->channel] = dma_seen ? 1 : -1;                
                tests->eventq_int[channel->channel] = int_seen ? 1 : -1;                 │                  tests->eventq_int[channel->channel] = int_seen ? 1 : -1;                
                                                                                         │                                                                                          
                if (dma_seen && int_seen) {                                              │                  if (dma_seen && int_seen) {                                             
                        netif_dbg(efx, drv, efx->net_dev,                                │                          netif_dbg(efx, drv, efx->net_dev,                               
                                  "channel %d event queue passed (with%s NAPI)\n",       │                                    "channel %d event queue passed (with%s NAPI)\n",      
                                  channel->channel,                                      │                                    channel->channel,                                     
                                  test_bit(channel->channel, &napi_ran) ?                │                                    test_bit(channel->channel, &napi_ran) ?               
                                  "" : "out");                                           │                                    "" : "out");                                          
                } else {                                                                 │                  } else {                                                                
                        /* Report failure and whether either interrupt or DMA            │                          /* Report failure and whether either interrupt or DMA           
                         * worked                                                        │                           * worked                                                       
                         */                                                              │                           */                                                             
                        netif_err(efx, drv, efx->net_dev,                                │                          netif_err(efx, drv, efx->net_dev,                               
                                  "channel %d timed out waiting for event queue\n",      │                                    "channel %d timed out waiting for event queue\n",     
                                  channel->channel);                                     │                                    channel->channel);                                    
                        if (int_seen)                                                    │                          if (int_seen)                                                   
                                netif_err(efx, drv, efx->net_dev,                        │                                  netif_err(efx, drv, efx->net_dev,                       
                                          "channel %d saw interrupt "                    │                                            "channel %d saw interrupt "                   
                                          "during event queue test\n",                   │                                            "during event queue test\n",                  
                                          channel->channel);                             │                                            channel->channel);                            
                        if (dma_seen)                                                    │                          if (dma_seen)                                                   
                                netif_err(efx, drv, efx->net_dev,                        │                                  netif_err(efx, drv, efx->net_dev,                       
                                          "channel %d event was generated, but "         │                                            "channel %d event was generated, but "        
                                          "failed to trigger an interrupt\n",            │                                            "failed to trigger an interrupt\n",           
                                          channel->channel);                             │                                            channel->channel);                            
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return (dma_pend || int_pend) ? -ETIMEDOUT : 0;                                  │          return (dma_pend || int_pend) ? -ETIMEDOUT : 0;                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/emulex/benet/be_main.c:466                                   │ linux/drivers/net/ethernet/emulex/benet/be_main.c:512                                    
                                                                                         │                                                                                          
        struct be_hw_stats_v1 *hw_stats = hw_stats_from_cmd(adapter);                    │          struct be_hw_stats_v2 *hw_stats = hw_stats_from_cmd(adapter);                   
        struct be_pmem_stats *pmem_sts = &hw_stats->pmem;                                │          struct be_pmem_stats *pmem_sts = &hw_stats->pmem;                               
        struct be_rxf_stats_v1 *rxf_stats = &hw_stats->rxf;                              │          struct be_rxf_stats_v2 *rxf_stats = &hw_stats->rxf;                             
        struct be_port_rxf_stats_v1 *port_stats =                                        │          struct be_port_rxf_stats_v2 *port_stats =                                       
                                        &rxf_stats->port[adapter->port_num];             │                                          &rxf_stats->port[adapter->port_num];            
        struct be_drv_stats *drvs = &adapter->drv_stats;                                 │          struct be_drv_stats *drvs = &adapter->drv_stats;                                
                                                                                         │                                                                                          
        be_dws_le_to_cpu(hw_stats, sizeof(*hw_stats));                                   │          be_dws_le_to_cpu(hw_stats, sizeof(*hw_stats));                                  
        drvs->pmem_fifo_overflow_drop = port_stats->pmem_fifo_overflow_drop;             │          drvs->pmem_fifo_overflow_drop = port_stats->pmem_fifo_overflow_drop;            
        drvs->rx_priority_pause_frames = port_stats->rx_priority_pause_frames;           │          drvs->rx_priority_pause_frames = port_stats->rx_priority_pause_frames;          
        drvs->rx_pause_frames = port_stats->rx_pause_frames;                             │          drvs->rx_pause_frames = port_stats->rx_pause_frames;                            
        drvs->rx_crc_errors = port_stats->rx_crc_errors;                                 │          drvs->rx_crc_errors = port_stats->rx_crc_errors;                                
        drvs->rx_control_frames = port_stats->rx_control_frames;                         │          drvs->rx_control_frames = port_stats->rx_control_frames;                        
        drvs->rx_in_range_errors = port_stats->rx_in_range_errors;                       │          drvs->rx_in_range_errors = port_stats->rx_in_range_errors;                      
        drvs->rx_frame_too_long = port_stats->rx_frame_too_long;                         │          drvs->rx_frame_too_long = port_stats->rx_frame_too_long;                        
        drvs->rx_dropped_runt = port_stats->rx_dropped_runt;                             │          drvs->rx_dropped_runt = port_stats->rx_dropped_runt;                            
        drvs->rx_ip_checksum_errs = port_stats->rx_ip_checksum_errs;                     │          drvs->rx_ip_checksum_errs = port_stats->rx_ip_checksum_errs;                    
        drvs->rx_tcp_checksum_errs = port_stats->rx_tcp_checksum_errs;                   │          drvs->rx_tcp_checksum_errs = port_stats->rx_tcp_checksum_errs;                  
        drvs->rx_udp_checksum_errs = port_stats->rx_udp_checksum_errs;                   │          drvs->rx_udp_checksum_errs = port_stats->rx_udp_checksum_errs;                  
        drvs->rx_dropped_tcp_length = port_stats->rx_dropped_tcp_length;                 │          drvs->rx_dropped_tcp_length = port_stats->rx_dropped_tcp_length;                
        drvs->rx_dropped_too_small = port_stats->rx_dropped_too_small;                   │          drvs->rx_dropped_too_small = port_stats->rx_dropped_too_small;                  
        drvs->rx_dropped_too_short = port_stats->rx_dropped_too_short;                   │          drvs->rx_dropped_too_short = port_stats->rx_dropped_too_short;                  
        drvs->rx_out_range_errors = port_stats->rx_out_range_errors;                     │          drvs->rx_out_range_errors = port_stats->rx_out_range_errors;                    
        drvs->rx_dropped_header_too_small =                                              │          drvs->rx_dropped_header_too_small =                                             
                port_stats->rx_dropped_header_too_small;                                 │                  port_stats->rx_dropped_header_too_small;                                
        drvs->rx_input_fifo_overflow_drop =                                              │          drvs->rx_input_fifo_overflow_drop =                                             
                port_stats->rx_input_fifo_overflow_drop;                                 │                  port_stats->rx_input_fifo_overflow_drop;                                
        drvs->rx_address_filtered = port_stats->rx_address_filtered;                     │          drvs->rx_address_filtered = port_stats->rx_address_filtered;                    
        drvs->rx_alignment_symbol_errors =                                               │          drvs->rx_alignment_symbol_errors =                                              
                port_stats->rx_alignment_symbol_errors;                                  │                  port_stats->rx_alignment_symbol_errors;                                 
        drvs->rxpp_fifo_overflow_drop = port_stats->rxpp_fifo_overflow_drop;             │          drvs->rxpp_fifo_overflow_drop = port_stats->rxpp_fifo_overflow_drop;            
        drvs->tx_pauseframes = port_stats->tx_pauseframes;                               │          drvs->tx_pauseframes = port_stats->tx_pauseframes;                              
        drvs->tx_controlframes = port_stats->tx_controlframes;                           │          drvs->tx_controlframes = port_stats->tx_controlframes;                          
        drvs->tx_priority_pauseframes = port_stats->tx_priority_pauseframes;             │          drvs->tx_priority_pauseframes = port_stats->tx_priority_pauseframes;            
        drvs->jabber_events = port_stats->jabber_events;                                 │          drvs->jabber_events = port_stats->jabber_events;                                
        drvs->rx_drops_no_pbuf = rxf_stats->rx_drops_no_pbuf;                            │          drvs->rx_drops_no_pbuf = rxf_stats->rx_drops_no_pbuf;                           
        drvs->rx_drops_no_erx_descr = rxf_stats->rx_drops_no_erx_descr;                  │          drvs->rx_drops_no_erx_descr = rxf_stats->rx_drops_no_erx_descr;                 
        drvs->forwarded_packets = rxf_stats->forwarded_packets;                          │          drvs->forwarded_packets = rxf_stats->forwarded_packets;                         
        drvs->rx_drops_mtu = rxf_stats->rx_drops_mtu;                                    │          drvs->rx_drops_mtu = rxf_stats->rx_drops_mtu;                                   
        drvs->rx_drops_no_tpre_descr = rxf_stats->rx_drops_no_tpre_descr;                │          drvs->rx_drops_no_tpre_descr = rxf_stats->rx_drops_no_tpre_descr;               
        drvs->rx_drops_too_many_frags = rxf_stats->rx_drops_too_many_frags;              │          drvs->rx_drops_too_many_frags = rxf_stats->rx_drops_too_many_frags;             
        adapter->drv_stats.eth_red_drops = pmem_sts->eth_red_drops;                      │          adapter->drv_stats.eth_red_drops = pmem_sts->eth_red_drops;                     
                                                                                         │          if (be_roce_supported(adapter)) {                                               
                                                                                         │                  drvs->rx_roce_bytes_lsd = port_stats->roce_bytes_received_lsd;          
                                                                                         │                  drvs->rx_roce_bytes_msd = port_stats->roce_bytes_received_msd;          
                                                                                         │                  drvs->rx_roce_frames = port_stats->roce_frames_received;                
                                                                                         │                  drvs->roce_drops_crc = port_stats->roce_drops_crc;                      
                                                                                         │                  drvs->roce_drops_payload_len =                                          
                                                                                         │                          port_stats->roce_drops_payload_len;                             
                                                                                         │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c:1070                               │ linux/drivers/net/ethernet/intel/ixgbevf/ipsec.c:460                                     
                                                                                         │                                                                                          
        struct ixgbe_adapter *adapter = netdev_priv(tx_ring->netdev);                    │          struct ixgbevf_adapter *adapter = netdev_priv(tx_ring->netdev);                 
        struct ixgbe_ipsec *ipsec = adapter->ipsec;                                      │          struct ixgbevf_ipsec *ipsec = adapter->ipsec;                                   
        struct xfrm_state *xs;                                                           │          struct xfrm_state *xs;                                                          
        struct sec_path *sp;                                                             │          struct sec_path *sp;                                                            
        struct tx_sa *tsa;                                                               │          struct tx_sa *tsa;                                                              
                                                                                         │          u16 sa_idx;                                                                     
                                                                                         │                                                                                          
        sp = skb_sec_path(first->skb);                                                   │          sp = skb_sec_path(first->skb);                                                  
        if (unlikely(!sp->len)) {                                                        │          if (unlikely(!sp->len)) {                                                       
                netdev_err(tx_ring->netdev, "%s: no xfrm state len = %d\n",              │                  netdev_err(tx_ring->netdev, "%s: no xfrm state len = %d\n",             
                           __func__, sp->len);                                           │                             __func__, sp->len);                                          
                return 0;                                                                │                  return 0;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        xs = xfrm_input_state(first->skb);                                               │          xs = xfrm_input_state(first->skb);                                              
        if (unlikely(!xs)) {                                                             │          if (unlikely(!xs)) {                                                            
                netdev_err(tx_ring->netdev, "%s: no xfrm_input_state() xs = %p\n",       │                  netdev_err(tx_ring->netdev, "%s: no xfrm_input_state() xs = %p\n",      
                           __func__, xs);                                                │                             __func__, xs);                                               
                return 0;                                                                │                  return 0;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        itd->sa_idx = xs->xso.offload_handle - IXGBE_IPSEC_BASE_TX_INDEX;                │          sa_idx = xs->xso.offload_handle - IXGBE_IPSEC_BASE_TX_INDEX;                    
        if (unlikely(itd->sa_idx >= IXGBE_IPSEC_MAX_SA_COUNT)) {                         │          if (unlikely(sa_idx >= IXGBE_IPSEC_MAX_SA_COUNT)) {                             
                netdev_err(tx_ring->netdev, "%s: bad sa_idx=%d handle=%lu\n",            │                  netdev_err(tx_ring->netdev, "%s: bad sa_idx=%d handle=%lu\n",           
                           __func__, itd->sa_idx, xs->xso.offload_handle);               │                             __func__, sa_idx, xs->xso.offload_handle);                   
                return 0;                                                                │                  return 0;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        tsa = &ipsec->tx_tbl[itd->sa_idx];                                               │          tsa = &ipsec->tx_tbl[sa_idx];                                                   
        if (unlikely(!tsa->used)) {                                                      │          if (unlikely(!tsa->used)) {                                                     
                netdev_err(tx_ring->netdev, "%s: unused sa_idx=%d\n",                    │                  netdev_err(tx_ring->netdev, "%s: unused sa_idx=%d\n",                   
                           __func__, itd->sa_idx);                                       │                             __func__, sa_idx);                                           
                return 0;                                                                │                  return 0;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        first->tx_flags |= IXGBE_TX_FLAGS_IPSEC | IXGBE_TX_FLAGS_CC;                     │          itd->pfsa = tsa->pfsa - IXGBE_IPSEC_BASE_TX_INDEX;                              
                                                                                         │                                                                                          
        if (xs->id.proto == IPPROTO_ESP) {                                               │          first->tx_flags |= IXGBE_TX_FLAGS_IPSEC | IXGBE_TX_FLAGS_CSUM;                  
                                                                                         │                                                                                          
                                                                                         │          if (xs->id.proto == IPPROTO_ESP) {                                              
                itd->flags |= IXGBE_ADVTXD_TUCMD_IPSEC_TYPE_ESP |                        │                  itd->flags |= IXGBE_ADVTXD_TUCMD_IPSEC_TYPE_ESP |                       
                              IXGBE_ADVTXD_TUCMD_L4T_TCP;                                │                                IXGBE_ADVTXD_TUCMD_L4T_TCP;                               
                if (first->protocol == htons(ETH_P_IP))                                  │                  if (first->protocol == htons(ETH_P_IP))                                 
                        itd->flags |= IXGBE_ADVTXD_TUCMD_IPV4;                           │                          itd->flags |= IXGBE_ADVTXD_TUCMD_IPV4;                          
                                                                                         │                                                                                          
                /* The actual trailer length is authlen (16 bytes) plus                  │                  /* The actual trailer length is authlen (16 bytes) plus                 
                 * 2 bytes for the proto and the padlen values, plus                     │                   * 2 bytes for the proto and the padlen values, plus                    
                 * padlen bytes of padding.  This ends up not the same                   │                   * padlen bytes of padding.  This ends up not the same                  
                 * as the static value found in xs->props.trailer_len (21).              │                   * as the static value found in xs->props.trailer_len (21).             
                 *                                                                       │                   *                                                                      
                 * ... but if we're doing GSO, don't bother as the stack                 │                   * ... but if we're doing GSO, don't bother as the stack                
                 * doesn't add a trailer for those.                                      │                   * doesn't add a trailer for those.                                     
                 */                                                                      │                   */                                                                     
                if (!skb_is_gso(first->skb)) {                                           │                  if (!skb_is_gso(first->skb)) {                                          
                        /* The "correct" way to get the auth length would be             │                          /* The "correct" way to get the auth length would be            
                         * to use                                                        │                           * to use                                                       
                         *    authlen = crypto_aead_authsize(xs->data);                  │                           *    authlen = crypto_aead_authsize(xs->data);                 
                         * but since we know we only have one size to worry              │                           * but since we know we only have one size to worry             
                         * about * we can let the compiler use the constant              │                           * about * we can let the compiler use the constant             
                         * and save us a few CPU cycles.                                 │                           * and save us a few CPU cycles.                                
                         */                                                              │                           */                                                             
                        const int authlen = IXGBE_IPSEC_AUTH_BITS / 8;                   │                          const int authlen = IXGBE_IPSEC_AUTH_BITS / 8;                  
                        struct sk_buff *skb = first->skb;                                │                          struct sk_buff *skb = first->skb;                               
                        u8 padlen;                                                       │                          u8 padlen;                                                      
                        int ret;                                                         │                          int ret;                                                        
                                                                                         │                                                                                          
                        ret = skb_copy_bits(skb, skb->len - (authlen + 2),               │                          ret = skb_copy_bits(skb, skb->len - (authlen + 2),              
                                            &padlen, 1);                                 │                                              &padlen, 1);                                
                        if (unlikely(ret))                                               │                          if (unlikely(ret))                                              
                                return 0;                                                │                                  return 0;                                               
                        itd->trailer_len = authlen + 2 + padlen;                         │                          itd->trailer_len = authlen + 2 + padlen;                        
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
        if (tsa->encrypt)                                                                │          if (tsa->encrypt)                                                               
                itd->flags |= IXGBE_ADVTXD_TUCMD_IPSEC_ENCRYPT_EN;                       │                  itd->flags |= IXGBE_ADVTXD_TUCMD_IPSEC_ENCRYPT_EN;                      
                                                                                         │                                                                                          
        return 1;                                                                        │          return 1;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/farch.c:1184                                      │ linux/drivers/net/ethernet/sfc/farch.c:1175                                              
                                                                                         │                                                                                          
        struct ef4_nic *efx = channel->efx;                                              │          struct efx_nic *efx = channel->efx;                                             
        unsigned int ev_sub_code;                                                        │          unsigned int ev_sub_code;                                                       
        unsigned int ev_sub_data;                                                        │          unsigned int ev_sub_data;                                                       
                                                                                         │                                                                                          
        ev_sub_code = EF4_QWORD_FIELD(*event, FSF_AZ_DRIVER_EV_SUBCODE);                 │          ev_sub_code = EFX_QWORD_FIELD(*event, FSF_AZ_DRIVER_EV_SUBCODE);                
        ev_sub_data = EF4_QWORD_FIELD(*event, FSF_AZ_DRIVER_EV_SUBDATA);                 │          ev_sub_data = EFX_QWORD_FIELD(*event, FSF_AZ_DRIVER_EV_SUBDATA);                
                                                                                         │                                                                                          
        switch (ev_sub_code) {                                                           │          switch (ev_sub_code) {                                                          
        case FSE_AZ_TX_DESCQ_FLS_DONE_EV:                                                │          case FSE_AZ_TX_DESCQ_FLS_DONE_EV:                                               
                netif_vdbg(efx, hw, efx->net_dev, "channel %d TXQ %d flushed\n",         │                  netif_vdbg(efx, hw, efx->net_dev, "channel %d TXQ %d flushed\n",        
                           channel->channel, ev_sub_data);                               │                             channel->channel, ev_sub_data);                              
                ef4_farch_handle_tx_flush_done(efx, event);                              │                  efx_farch_handle_tx_flush_done(efx, event);                             
                                                                                         │  #ifdef CONFIG_SFC_SRIOV                                                                 
                                                                                         │                  efx_siena_sriov_tx_flush_done(efx, event);                              
                                                                                         │  #endif                                                                                  
                break;                                                                   │                  break;                                                                  
        case FSE_AZ_RX_DESCQ_FLS_DONE_EV:                                                │          case FSE_AZ_RX_DESCQ_FLS_DONE_EV:                                               
                netif_vdbg(efx, hw, efx->net_dev, "channel %d RXQ %d flushed\n",         │                  netif_vdbg(efx, hw, efx->net_dev, "channel %d RXQ %d flushed\n",        
                           channel->channel, ev_sub_data);                               │                             channel->channel, ev_sub_data);                              
                ef4_farch_handle_rx_flush_done(efx, event);                              │                  efx_farch_handle_rx_flush_done(efx, event);                             
                                                                                         │  #ifdef CONFIG_SFC_SRIOV                                                                 
                                                                                         │                  efx_siena_sriov_rx_flush_done(efx, event);                              
                                                                                         │  #endif                                                                                  
                break;                                                                   │                  break;                                                                  
        case FSE_AZ_EVQ_INIT_DONE_EV:                                                    │          case FSE_AZ_EVQ_INIT_DONE_EV:                                                   
                netif_dbg(efx, hw, efx->net_dev,                                         │                  netif_dbg(efx, hw, efx->net_dev,                                        
                          "channel %d EVQ %d initialised\n",                             │                            "channel %d EVQ %d initialised\n",                            
                          channel->channel, ev_sub_data);                                │                            channel->channel, ev_sub_data);                               
                break;                                                                   │                  break;                                                                  
        case FSE_AZ_SRM_UPD_DONE_EV:                                                     │          case FSE_AZ_SRM_UPD_DONE_EV:                                                    
                netif_vdbg(efx, hw, efx->net_dev,                                        │                  netif_vdbg(efx, hw, efx->net_dev,                                       
                           "channel %d SRAM update done\n", channel->channel);           │                             "channel %d SRAM update done\n", channel->channel);          
                break;                                                                   │                  break;                                                                  
        case FSE_AZ_WAKE_UP_EV:                                                          │          case FSE_AZ_WAKE_UP_EV:                                                         
                netif_vdbg(efx, hw, efx->net_dev,                                        │                  netif_vdbg(efx, hw, efx->net_dev,                                       
                           "channel %d RXQ %d wakeup event\n",                           │                             "channel %d RXQ %d wakeup event\n",                          
                           channel->channel, ev_sub_data);                               │                             channel->channel, ev_sub_data);                              
                break;                                                                   │                  break;                                                                  
        case FSE_AZ_TIMER_EV:                                                            │          case FSE_AZ_TIMER_EV:                                                           
                netif_vdbg(efx, hw, efx->net_dev,                                        │                  netif_vdbg(efx, hw, efx->net_dev,                                       
                           "channel %d RX queue %d timer expired\n",                     │                             "channel %d RX queue %d timer expired\n",                    
                           channel->channel, ev_sub_data);                               │                             channel->channel, ev_sub_data);                              
                break;                                                                   │                  break;                                                                  
        case FSE_AA_RX_RECOVER_EV:                                                       │          case FSE_AA_RX_RECOVER_EV:                                                      
                netif_err(efx, rx_err, efx->net_dev,                                     │                  netif_err(efx, rx_err, efx->net_dev,                                    
                          "channel %d seen DRIVER RX_RESET event. "                      │                            "channel %d seen DRIVER RX_RESET event. "                     
                        "Resetting.\n", channel->channel);                               │                          "Resetting.\n", channel->channel);                              
                atomic_inc(&efx->rx_reset);                                              │                  atomic_inc(&efx->rx_reset);                                             
                ef4_schedule_reset(efx,                                                  │                  efx_schedule_reset(efx, RESET_TYPE_DISABLE);                            
                                   EF4_WORKAROUND_6555(efx) ?                            │                                                                                          
                                   RESET_TYPE_RX_RECOVERY :                              │                                                                                          
                                   RESET_TYPE_DISABLE);                                  │                                                                                          
                break;                                                                   │                  break;                                                                  
        case FSE_BZ_RX_DSC_ERROR_EV:                                                     │          case FSE_BZ_RX_DSC_ERROR_EV:                                                    
                netif_err(efx, rx_err, efx->net_dev,                                     │                  if (ev_sub_data < EFX_VI_BASE) {                                        
                          "RX DMA Q %d reports descriptor fetch error."                  │                          netif_err(efx, rx_err, efx->net_dev,                            
                          " RX Q %d is disabled.\n", ev_sub_data,                        │                                    "RX DMA Q %d reports descriptor fetch error."         
                          ev_sub_data);                                                  │                                    " RX Q %d is disabled.\n", ev_sub_data,               
                ef4_schedule_reset(efx, RESET_TYPE_DMA_ERROR);                           │                                    ev_sub_data);                                         
                                                                                         │                          efx_schedule_reset(efx, RESET_TYPE_DMA_ERROR);                  
                                                                                         │                  }                                                                       
                                                                                         │  #ifdef CONFIG_SFC_SRIOV                                                                 
                                                                                         │                  else                                                                    
                                                                                         │                          efx_siena_sriov_desc_fetch_err(efx, ev_sub_data);               
                                                                                         │  #endif                                                                                  
                break;                                                                   │                  break;                                                                  
        case FSE_BZ_TX_DSC_ERROR_EV:                                                     │          case FSE_BZ_TX_DSC_ERROR_EV:                                                    
                netif_err(efx, tx_err, efx->net_dev,                                     │                  if (ev_sub_data < EFX_VI_BASE) {                                        
                          "TX DMA Q %d reports descriptor fetch error."                  │                          netif_err(efx, tx_err, efx->net_dev,                            
                          " TX Q %d is disabled.\n", ev_sub_data,                        │                                    "TX DMA Q %d reports descriptor fetch error."         
                          ev_sub_data);                                                  │                                    " TX Q %d is disabled.\n", ev_sub_data,               
                ef4_schedule_reset(efx, RESET_TYPE_DMA_ERROR);                           │                                    ev_sub_data);                                         
                                                                                         │                          efx_schedule_reset(efx, RESET_TYPE_DMA_ERROR);                  
                                                                                         │                  }                                                                       
                                                                                         │  #ifdef CONFIG_SFC_SRIOV                                                                 
                                                                                         │                  else                                                                    
                                                                                         │                          efx_siena_sriov_desc_fetch_err(efx, ev_sub_data);               
                                                                                         │  #endif                                                                                  
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                netif_vdbg(efx, hw, efx->net_dev,                                        │                  netif_vdbg(efx, hw, efx->net_dev,                                       
                           "channel %d unknown driver event code %d "                    │                             "channel %d unknown driver event code %d "                   
                           "data %04x\n", channel->channel, ev_sub_code,                 │                             "data %04x\n", channel->channel, ev_sub_code,                
                           ev_sub_data);                                                 │                             ev_sub_data);                                                
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/3com/3c589_cs.c:598                                          │ linux/drivers/net/ethernet/3com/3c574_cs.c:766                                           
                                                                                         │                                                                                          
        struct net_device *dev = (struct net_device *) dev_id;                           │          struct net_device *dev = (struct net_device *) dev_id;                          
        struct el3_private *lp = netdev_priv(dev);                                       │          struct el3_private *lp = netdev_priv(dev);                                      
        unsigned int ioaddr;                                                             │          unsigned int ioaddr;                                                            
        __u16 status;                                                                    │          unsigned status;                                                                
        int i = 0, handled = 1;                                                          │          int work_budget = max_interrupt_work;                                           
                                                                                         │          int handled = 0;                                                                
                                                                                         │                                                                                          
        if (!netif_device_present(dev))                                                  │          if (!netif_device_present(dev))                                                 
                return IRQ_NONE;                                                         │                  return IRQ_NONE;                                                        
                                                                                         │                                                                                          
        ioaddr = dev->base_addr;                                                         │          ioaddr = dev->base_addr;                                                        
                                                                                         │                                                                                          
        netdev_dbg(dev, "interrupt, status %4.4x.\n", inw(ioaddr + EL3_STATUS));         │          pr_debug("%s: interrupt, status %4.4x.\n",                                      
                                                                                         │                    dev->name, inw(ioaddr + EL3_STATUS));                                 
                                                                                         │                                                                                          
        spin_lock(&lp->lock);                                                            │          spin_lock(&lp->window_lock);                                                    
                                                                                         │                                                                                          
        while ((status = inw(ioaddr + EL3_STATUS)) &                                     │          while ((status = inw(ioaddr + EL3_STATUS)) &                                    
        (IntLatch | RxComplete | StatsFull)) {                                           │                     (IntLatch | RxComplete | RxEarly | StatsFull)) {                     
                if ((status & 0xe000) != 0x2000) {                                       │                  if (!netif_device_present(dev) ||                                       
                        netdev_dbg(dev, "interrupt from dead card\n");                   │                          ((status & 0xe000) != 0x2000)) {                                
                        handled = 0;                                                     │                          pr_debug("%s: Interrupt from dead card\n", dev->name);          
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                                                                                         │                  handled = 1;                                                            
                                                                                         │                                                                                          
                if (status & RxComplete)                                                 │                  if (status & RxComplete)                                                
                        el3_rx(dev);                                                     │                          work_budget = el3_rx(dev, work_budget);                         
                                                                                         │                                                                                          
                if (status & TxAvailable) {                                              │                  if (status & TxAvailable) {                                             
                        netdev_dbg(dev, "    TX room bit was handled.\n");               │                          pr_debug("  TX room bit was handled.\n");                       
                        /* There's room in the FIFO for a full-sized packet. */          │                          /* There's room in the FIFO for a full-sized packet. */         
                        outw(AckIntr | TxAvailable, ioaddr + EL3_CMD);                   │                          outw(AckIntr | TxAvailable, ioaddr + EL3_CMD);                  
                        netif_wake_queue(dev);                                           │                          netif_wake_queue(dev);                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (status & TxComplete)                                                 │                  if (status & TxComplete)                                                
                        pop_tx_status(dev);                                              │                          pop_tx_status(dev);                                             
                                                                                         │                                                                                          
                if (status & (AdapterFailure | RxEarly | StatsFull)) {                   │                  if (status & (AdapterFailure | RxEarly | StatsFull)) {                  
                        /* Handle all uncommon interrupts. */                            │                          /* Handle all uncommon interrupts. */                           
                        if (status & StatsFull)         /* Empty statistics. */          │                          if (status & StatsFull)                                         
                                update_stats(dev);                                       │                                  update_stats(dev);                                      
                        if (status & RxEarly) {                                          │                          if (status & RxEarly) {                                         
                                /* Rx early is unused. */                                │                                  work_budget = el3_rx(dev, work_budget);                 
                                el3_rx(dev);                                             │                                                                                          
                                outw(AckIntr | RxEarly, ioaddr + EL3_CMD);               │                                  outw(AckIntr | RxEarly, ioaddr + EL3_CMD);              
                        }                                                                │                          }                                                               
                        if (status & AdapterFailure) {                                   │                          if (status & AdapterFailure) {                                  
                                u16 fifo_diag;                                           │                                  u16 fifo_diag;                                          
                                EL3WINDOW(4);                                            │                                  EL3WINDOW(4);                                           
                                fifo_diag = inw(ioaddr + 4);                             │                                  fifo_diag = inw(ioaddr + Wn4_FIFODiag);                 
                                EL3WINDOW(1);                                            │                                  EL3WINDOW(1);                                           
                                netdev_warn(dev, "adapter failure, FIFO diagnostic regis │                                  netdev_notice(dev, "adapter failure, FIFO diagnostic reg
                            fifo_diag);                                                  │                                                fifo_diag);                               
                                if (fifo_diag & 0x0400) {                                │                                  if (fifo_diag & 0x0400) {                               
                                        /* Tx overrun */                                 │                                          /* Tx overrun */                                
                                        tc589_wait_for_completion(dev, TxReset);         │                                          tc574_wait_for_completion(dev, TxReset);        
                                        outw(TxEnable, ioaddr + EL3_CMD);                │                                          outw(TxEnable, ioaddr + EL3_CMD);               
                                }                                                        │                                  }                                                       
                                if (fifo_diag & 0x2000) {                                │                                  if (fifo_diag & 0x2000) {                               
                                        /* Rx underrun */                                │                                          /* Rx underrun */                               
                                        tc589_wait_for_completion(dev, RxReset);         │                                          tc574_wait_for_completion(dev, RxReset);        
                                        set_rx_mode(dev);                                │                                          set_rx_mode(dev);                               
                                        outw(RxEnable, ioaddr + EL3_CMD);                │                                          outw(RxEnable, ioaddr + EL3_CMD);               
                                }                                                        │                                  }                                                       
                                outw(AckIntr | AdapterFailure, ioaddr + EL3_CMD);        │                                  outw(AckIntr | AdapterFailure, ioaddr + EL3_CMD);       
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                if (++i > 10) {                                                          │                                                                                          
                        netdev_err(dev, "infinite loop in interrupt, status %4.4x.\n",   │                  if (--work_budget < 0) {                                                
                                        status);                                         │                          pr_debug("%s: Too much work in interrupt, "                     
                                                                                         │                                    "status %4.4x.\n", dev->name, status);                
                        /* Clear all interrupts */                                       │                          /* Clear all interrupts */                                      
                        outw(AckIntr | 0xFF, ioaddr + EL3_CMD);                          │                          outw(AckIntr | 0xFF, ioaddr + EL3_CMD);                         
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                /* Acknowledge the IRQ. */                                               │                  /* Acknowledge the IRQ. */                                              
                outw(AckIntr | IntReq | IntLatch, ioaddr + EL3_CMD);                     │                  outw(AckIntr | IntReq | IntLatch, ioaddr + EL3_CMD);                    
        }                                                                                │          }                                                                               
        lp->last_irq = jiffies;                                                          │                                                                                          
        spin_unlock(&lp->lock);                                                          │          pr_debug("%s: exiting interrupt, status %4.4x.\n",                              
        netdev_dbg(dev, "exiting interrupt, status %4.4x.\n",                            │                    dev->name, inw(ioaddr + EL3_STATUS));                                 
                        inw(ioaddr + EL3_STATUS));                                       │                                                                                          
                                                                                         │          spin_unlock(&lp->window_lock);                                                  
        return IRQ_RETVAL(handled);                                                      │          return IRQ_RETVAL(handled);                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v0.c:934                  │ linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v1.c:1131                  
                                                                                         │                                                                                          
        struct mlx5dr_match_spec *spec = inner ? &value->inner : &value->outer;          │          struct mlx5dr_match_spec *spec = inner ? &value->inner : &value->outer;         
        struct mlx5dr_match_misc *misc_spec = &value->misc;                              │          struct mlx5dr_match_misc *misc_spec = &value->misc;                             
                                                                                         │                                                                                          
        DR_STE_SET_TAG(eth_l2_src, tag, first_vlan_id, spec, first_vid);                 │          DR_STE_SET_TAG(eth_l2_src_v1, tag, first_vlan_id, spec, first_vid);             
        DR_STE_SET_TAG(eth_l2_src, tag, first_cfi, spec, first_cfi);                     │          DR_STE_SET_TAG(eth_l2_src_v1, tag, first_cfi, spec, first_cfi);                 
        DR_STE_SET_TAG(eth_l2_src, tag, first_priority, spec, first_prio);               │          DR_STE_SET_TAG(eth_l2_src_v1, tag, first_priority, spec, first_prio);           
        DR_STE_SET_TAG(eth_l2_src, tag, ip_fragmented, spec, frag);                      │          DR_STE_SET_TAG(eth_l2_src_v1, tag, ip_fragmented, spec, frag);                  
        DR_STE_SET_TAG(eth_l2_src, tag, l3_ethertype, spec, ethertype);                  │          DR_STE_SET_TAG(eth_l2_src_v1, tag, l3_ethertype, spec, ethertype);              
                                                                                         │                                                                                          
        if (spec->ip_version) {                                                          │          if (spec->ip_version == IP_VERSION_IPV4) {                                      
                if (spec->ip_version == IP_VERSION_IPV4) {                               │                  MLX5_SET(ste_eth_l2_src_v1, tag, l3_type, STE_IPV4);                    
                        MLX5_SET(ste_eth_l2_src, tag, l3_type, STE_IPV4);                │                  spec->ip_version = 0;                                                   
                        spec->ip_version = 0;                                            │          } else if (spec->ip_version == IP_VERSION_IPV6) {                               
                } else if (spec->ip_version == IP_VERSION_IPV6) {                        │                  MLX5_SET(ste_eth_l2_src_v1, tag, l3_type, STE_IPV6);                    
                        MLX5_SET(ste_eth_l2_src, tag, l3_type, STE_IPV6);                │                  spec->ip_version = 0;                                                   
                        spec->ip_version = 0;                                            │          } else if (spec->ip_version) {                                                  
                } else {                                                                 │                  return -EINVAL;                                                         
                        return -EINVAL;                                                  │                                                                                          
                }                                                                        │                                                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (spec->cvlan_tag) {                                                           │          if (spec->cvlan_tag) {                                                          
                MLX5_SET(ste_eth_l2_src, tag, first_vlan_qualifier, DR_STE_CVLAN);       │                  MLX5_SET(ste_eth_l2_src_v1, tag, first_vlan_qualifier, DR_STE_CVLAN);   
                spec->cvlan_tag = 0;                                                     │                  spec->cvlan_tag = 0;                                                    
        } else if (spec->svlan_tag) {                                                    │          } else if (spec->svlan_tag) {                                                   
                MLX5_SET(ste_eth_l2_src, tag, first_vlan_qualifier, DR_STE_SVLAN);       │                  MLX5_SET(ste_eth_l2_src_v1, tag, first_vlan_qualifier, DR_STE_SVLAN);   
                spec->svlan_tag = 0;                                                     │                  spec->svlan_tag = 0;                                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (inner) {                                                                     │          if (inner) {                                                                    
                if (misc_spec->inner_second_cvlan_tag) {                                 │                  if (misc_spec->inner_second_cvlan_tag) {                                
                        MLX5_SET(ste_eth_l2_src, tag, second_vlan_qualifier, DR_STE_CVLA │                          MLX5_SET(ste_eth_l2_src_v1, tag, second_vlan_qualifier, DR_STE_C
                        misc_spec->inner_second_cvlan_tag = 0;                           │                          misc_spec->inner_second_cvlan_tag = 0;                          
                } else if (misc_spec->inner_second_svlan_tag) {                          │                  } else if (misc_spec->inner_second_svlan_tag) {                         
                        MLX5_SET(ste_eth_l2_src, tag, second_vlan_qualifier, DR_STE_SVLA │                          MLX5_SET(ste_eth_l2_src_v1, tag, second_vlan_qualifier, DR_STE_S
                        misc_spec->inner_second_svlan_tag = 0;                           │                          misc_spec->inner_second_svlan_tag = 0;                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                DR_STE_SET_TAG(eth_l2_src, tag, second_vlan_id, misc_spec, inner_second_ │                  DR_STE_SET_TAG(eth_l2_src_v1, tag, second_vlan_id, misc_spec, inner_seco
                DR_STE_SET_TAG(eth_l2_src, tag, second_cfi, misc_spec, inner_second_cfi) │                  DR_STE_SET_TAG(eth_l2_src_v1, tag, second_cfi, misc_spec, inner_second_c
                DR_STE_SET_TAG(eth_l2_src, tag, second_priority, misc_spec, inner_second │                  DR_STE_SET_TAG(eth_l2_src_v1, tag, second_priority, misc_spec, inner_sec
        } else {                                                                         │          } else {                                                                        
                if (misc_spec->outer_second_cvlan_tag) {                                 │                  if (misc_spec->outer_second_cvlan_tag) {                                
                        MLX5_SET(ste_eth_l2_src, tag, second_vlan_qualifier, DR_STE_CVLA │                          MLX5_SET(ste_eth_l2_src_v1, tag, second_vlan_qualifier, DR_STE_C
                        misc_spec->outer_second_cvlan_tag = 0;                           │                          misc_spec->outer_second_cvlan_tag = 0;                          
                } else if (misc_spec->outer_second_svlan_tag) {                          │                  } else if (misc_spec->outer_second_svlan_tag) {                         
                        MLX5_SET(ste_eth_l2_src, tag, second_vlan_qualifier, DR_STE_SVLA │                          MLX5_SET(ste_eth_l2_src_v1, tag, second_vlan_qualifier, DR_STE_S
                        misc_spec->outer_second_svlan_tag = 0;                           │                          misc_spec->outer_second_svlan_tag = 0;                          
                }                                                                        │                  }                                                                       
                DR_STE_SET_TAG(eth_l2_src, tag, second_vlan_id, misc_spec, outer_second_ │                  DR_STE_SET_TAG(eth_l2_src_v1, tag, second_vlan_id, misc_spec, outer_seco
                DR_STE_SET_TAG(eth_l2_src, tag, second_cfi, misc_spec, outer_second_cfi) │                  DR_STE_SET_TAG(eth_l2_src_v1, tag, second_cfi, misc_spec, outer_second_c
                DR_STE_SET_TAG(eth_l2_src, tag, second_priority, misc_spec, outer_second │                  DR_STE_SET_TAG(eth_l2_src_v1, tag, second_priority, misc_spec, outer_sec
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/skge.h:975                                           │ linux/drivers/net/ethernet/marvell/sky2.h:1137                                           
                                                                                         │                                                                                          
        PHY_MARV_CTRL           = 0x00,/* 16 bit r/w    PHY Control Register */          │          PHY_MARV_CTRL           = 0x00,/* 16 bit r/w    PHY Control Register */         
        PHY_MARV_STAT           = 0x01,/* 16 bit r/o    PHY Status Register */           │          PHY_MARV_STAT           = 0x01,/* 16 bit r/o    PHY Status Register */          
        PHY_MARV_ID0            = 0x02,/* 16 bit r/o    PHY ID0 Register */              │          PHY_MARV_ID0            = 0x02,/* 16 bit r/o    PHY ID0 Register */             
        PHY_MARV_ID1            = 0x03,/* 16 bit r/o    PHY ID1 Register */              │          PHY_MARV_ID1            = 0x03,/* 16 bit r/o    PHY ID1 Register */             
        PHY_MARV_AUNE_ADV       = 0x04,/* 16 bit r/w    Auto-Neg. Advertisement */       │          PHY_MARV_AUNE_ADV       = 0x04,/* 16 bit r/w    Auto-Neg. Advertisement */      
        PHY_MARV_AUNE_LP        = 0x05,/* 16 bit r/o    Link Part Ability Reg */         │          PHY_MARV_AUNE_LP        = 0x05,/* 16 bit r/o    Link Part Ability Reg */        
        PHY_MARV_AUNE_EXP       = 0x06,/* 16 bit r/o    Auto-Neg. Expansion Reg */       │          PHY_MARV_AUNE_EXP       = 0x06,/* 16 bit r/o    Auto-Neg. Expansion Reg */      
        PHY_MARV_NEPG           = 0x07,/* 16 bit r/w    Next Page Register */            │          PHY_MARV_NEPG           = 0x07,/* 16 bit r/w    Next Page Register */           
        PHY_MARV_NEPG_LP        = 0x08,/* 16 bit r/o    Next Page Link Partner */        │          PHY_MARV_NEPG_LP        = 0x08,/* 16 bit r/o    Next Page Link Partner */       
        /* Marvel-specific registers */                                                  │          /* Marvel-specific registers */                                                 
        PHY_MARV_1000T_CTRL     = 0x09,/* 16 bit r/w    1000Base-T Control Reg */        │          PHY_MARV_1000T_CTRL     = 0x09,/* 16 bit r/w    1000Base-T Control Reg */       
        PHY_MARV_1000T_STAT     = 0x0a,/* 16 bit r/o    1000Base-T Status Reg */         │          PHY_MARV_1000T_STAT     = 0x0a,/* 16 bit r/o    1000Base-T Status Reg */        
        PHY_MARV_EXT_STAT       = 0x0f,/* 16 bit r/o    Extended Status Reg */           │          PHY_MARV_EXT_STAT       = 0x0f,/* 16 bit r/o    Extended Status Reg */          
        PHY_MARV_PHY_CTRL       = 0x10,/* 16 bit r/w    PHY Specific Ctrl Reg */         │          PHY_MARV_PHY_CTRL       = 0x10,/* 16 bit r/w    PHY Specific Ctrl Reg */        
        PHY_MARV_PHY_STAT       = 0x11,/* 16 bit r/o    PHY Specific Stat Reg */         │          PHY_MARV_PHY_STAT       = 0x11,/* 16 bit r/o    PHY Specific Stat Reg */        
        PHY_MARV_INT_MASK       = 0x12,/* 16 bit r/w    Interrupt Mask Reg */            │          PHY_MARV_INT_MASK       = 0x12,/* 16 bit r/w    Interrupt Mask Reg */           
        PHY_MARV_INT_STAT       = 0x13,/* 16 bit r/o    Interrupt Status Reg */          │          PHY_MARV_INT_STAT       = 0x13,/* 16 bit r/o    Interrupt Status Reg */         
        PHY_MARV_EXT_CTRL       = 0x14,/* 16 bit r/w    Ext. PHY Specific Ctrl */        │          PHY_MARV_EXT_CTRL       = 0x14,/* 16 bit r/w    Ext. PHY Specific Ctrl */       
        PHY_MARV_RXE_CNT        = 0x15,/* 16 bit r/w    Receive Error Counter */         │          PHY_MARV_RXE_CNT        = 0x15,/* 16 bit r/w    Receive Error Counter */        
        PHY_MARV_EXT_ADR        = 0x16,/* 16 bit r/w    Ext. Ad. for Cable Diag. */      │          PHY_MARV_EXT_ADR        = 0x16,/* 16 bit r/w    Ext. Ad. for Cable Diag. */     
        PHY_MARV_PORT_IRQ       = 0x17,/* 16 bit r/o    Port 0 IRQ (88E1111 only) */     │          PHY_MARV_PORT_IRQ       = 0x17,/* 16 bit r/o    Port 0 IRQ (88E1111 only) */    
        PHY_MARV_LED_CTRL       = 0x18,/* 16 bit r/w    LED Control Reg */               │          PHY_MARV_LED_CTRL       = 0x18,/* 16 bit r/w    LED Control Reg */              
        PHY_MARV_LED_OVER       = 0x19,/* 16 bit r/w    Manual LED Override Reg */       │          PHY_MARV_LED_OVER       = 0x19,/* 16 bit r/w    Manual LED Override Reg */      
        PHY_MARV_EXT_CTRL_2     = 0x1a,/* 16 bit r/w    Ext. PHY Specific Ctrl 2 */      │          PHY_MARV_EXT_CTRL_2     = 0x1a,/* 16 bit r/w    Ext. PHY Specific Ctrl 2 */     
        PHY_MARV_EXT_P_STAT     = 0x1b,/* 16 bit r/w    Ext. PHY Spec. Stat Reg */       │          PHY_MARV_EXT_P_STAT     = 0x1b,/* 16 bit r/w    Ext. PHY Spec. Stat Reg */      
        PHY_MARV_CABLE_DIAG     = 0x1c,/* 16 bit r/o    Cable Diagnostic Reg */          │          PHY_MARV_CABLE_DIAG     = 0x1c,/* 16 bit r/o    Cable Diagnostic Reg */         
        PHY_MARV_PAGE_ADDR      = 0x1d,/* 16 bit r/w    Extended Page Address Reg */     │          PHY_MARV_PAGE_ADDR      = 0x1d,/* 16 bit r/w    Extended Page Address Reg */    
        PHY_MARV_PAGE_DATA      = 0x1e,/* 16 bit r/w    Extended Page Data Reg */        │          PHY_MARV_PAGE_DATA      = 0x1e,/* 16 bit r/w    Extended Page Data Reg */       
                                                                                         │                                                                                          
/* for 10/100 Fast Ethernet PHY (88E3082 only) */                                        │  /* for 10/100 Fast Ethernet PHY (88E3082 only) */                                       
        PHY_MARV_FE_LED_PAR     = 0x16,/* 16 bit r/w    LED Parallel Select Reg. */      │          PHY_MARV_FE_LED_PAR     = 0x16,/* 16 bit r/w    LED Parallel Select Reg. */     
        PHY_MARV_FE_LED_SER     = 0x17,/* 16 bit r/w    LED Stream Select S. LED */      │          PHY_MARV_FE_LED_SER     = 0x17,/* 16 bit r/w    LED Stream Select S. LED */     
        PHY_MARV_FE_VCT_TX      = 0x1a,/* 16 bit r/w    VCT Reg. for TXP/N Pins */       │          PHY_MARV_FE_VCT_TX      = 0x1a,/* 16 bit r/w    VCT Reg. for TXP/N Pins */      
        PHY_MARV_FE_VCT_RX      = 0x1b,/* 16 bit r/o    VCT Reg. for RXP/N Pins */       │          PHY_MARV_FE_VCT_RX      = 0x1b,/* 16 bit r/o    VCT Reg. for RXP/N Pins */      
        PHY_MARV_FE_SPEC_2      = 0x1c,/* 16 bit r/w    Specific Control Reg. 2 */       │          PHY_MARV_FE_SPEC_2      = 0x1c,/* 16 bit r/w    Specific Control Reg. 2 */      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sun/cassini.h:2367                                           │ linux/drivers/net/ethernet/sun/cassini.h:2287                                            
                                                                                         │                                                                                          
        { "packet arrival?", 0xffff, 0x0000, OP_NP,  6, S1_VLAN,  0,                     │          { "packet arrival?", 0xffff, 0x0000, OP_NP,  6, S1_VLAN,  0, S1_PCKT,           
          S1_PCKT,  CL_REG, 0x3ff,  1, 0x0, 0x0000} ,                                    │            CL_REG, 0x3ff, 1, 0x0, 0x0000},                                               
        { "VLAN?", 0xffff, 0x8100, OP_EQ,  1, S1_CFI, 0, S1_8023,                        │          { "VLAN?", 0xffff, 0x8100, OP_EQ,  1, S1_CFI,   0, S1_8023,                     
          IM_CTL, 0x04a,  3, 0x0, 0xffff},                                               │            IM_CTL, 0x00a,  3, 0x0, 0xffff},                                              
        { "CFI?", 0x1000, 0x1000, OP_EQ,  0, S1_CLNP,  1, S1_8023,                       │          { "CFI?", 0x1000, 0x1000, OP_EQ,  0, S3_CLNP,  1, S1_8023,                      
          CL_REG, 0x000,  0, 0x0, 0x0000},                                               │            CL_REG, 0x000,  0, 0x0, 0x0000},                                              
        { "8023?", 0xffff, 0x0600, OP_LT,  1, S1_LLC,   0, S1_IPV4,                      │          { "8023?", 0xffff, 0x0600, OP_LT,  1, S1_LLC,   0, S1_IPV4,                     
          CL_REG, 0x000,  0, 0x0, 0x0000},                                               │            CL_REG, 0x000,  0, 0x0, 0x0000},                                              
        { "LLC?", 0xffff, 0xaaaa, OP_EQ,  1, S1_LLCc,  0, S1_CLNP,                       │          { "LLC?", 0xffff, 0xaaaa, OP_EQ,  1, S1_LLCc,  0, S3_CLNP,                      
          CL_REG, 0x000,  0, 0x0, 0x0000},                                               │            CL_REG, 0x000,  0, 0x0, 0x0000},                                              
        { "LLCc?", 0xff00, 0x0300, OP_EQ,  2, S1_IPV4,  0, S1_CLNP,                      │          { "LLCc?",0xff00, 0x0300, OP_EQ,  2, S1_IPV4,  0, S3_CLNP,                      
          CL_REG, 0x000,  0, 0x0, 0x0000},                                               │            CL_REG, 0x000,  0, 0x0, 0x0000},                                              
        { "IPV4?", 0xffff, 0x0800, OP_EQ,  1, S1_IPV4c, 0, S1_IPV6,                      │          { "IPV4?", 0xffff, 0x0800, OP_EQ,  1, S1_IPV4c, 0, S1_IPV6,                     
          IM_SAP, 0x6AE,  3, 0x0, 0xffff},                                               │            LD_SAP, 0x100,  3, 0x0, 0xffff},                                              
        { "IPV4 cont?", 0xff00, 0x4500, OP_EQ,  3, S1_IPV4F, 0, S1_CLNP,                 │          { "IPV4 cont?", 0xff00, 0x4500, OP_EQ,  3, S1_IPV4F, 0, S3_CLNP,                
          LD_SUM, 0x00a,  1, 0x0, 0x0000},                                               │            LD_SUM, 0x00a,  1, 0x0, 0x0000},                                              
        { "IPV4 frag?", 0x3fff, 0x0000, OP_EQ,  1, S1_TCP44, 0, S1_CLNP,                 │          { "IPV4 frag?", 0x3fff, 0x0000, OP_EQ,  1, S1_TCP44, 0, S3_FRAG,                
          LD_LEN, 0x03e,  1, 0x0, 0xffff},                                               │            LD_LEN, 0x03e,  3, 0x0, 0xffff},                                              
        { "TCP44?", 0x00ff, 0x0006, OP_EQ,  7, S1_TCPSQ, 0, S1_CLNP,                     │          { "TCP44?", 0x00ff, 0x0006, OP_EQ,  7, S3_TCPSQ, 0, S3_CLNP,                    
          LD_FID, 0x182,  3, 0x0, 0xffff}, /* FID IP4&TCP src+dst */                     │            LD_FID, 0x182,  3, 0x0, 0xffff}, /* FID IP4&TCP src+dst */                    
        { "IPV6?", 0xffff, 0x86dd, OP_EQ,  1, S1_IPV6L, 0, S1_CLNP,                      │          { "IPV6?", 0xffff, 0x86dd, OP_EQ,  1, S3_IPV6c, 0, S3_CLNP,                     
          LD_SUM, 0x015,  1, 0x0, 0x0000},                                               │            LD_SUM, 0x015,  1, 0x0, 0x0000},                                              
        { "IPV6 len", 0xf000, 0x6000, OP_EQ,  0, S1_IPV6c, 0, S1_CLNP,                   │          { "IPV6 cont?", 0xf000, 0x6000, OP_EQ,  3, S3_TCP64, 0, S3_CLNP,                
          IM_R1,  0x128,  1, 0x0, 0xffff},                                               │                                                                                          
        { "IPV6 cont?", 0x0000, 0x0000, OP_EQ,  3, S1_TCP64, 0, S1_CLNP,                 │                                                                                          
          LD_FID, 0x484,  1, 0x0, 0xffff}, /* FID IP6&TCP src+dst */                     │            LD_FID, 0x484,  1, 0x0, 0xffff}, /* FID IP6&TCP src+dst */                    
        { "TCP64?", 0xff00, 0x0600, OP_EQ, 18, S1_TCPSQ, 0, S1_CLNP,                     │          { "TCP64?", 0xff00, 0x0600, OP_EQ, 18, S3_TCPSQ, 0, S3_CLNP,                    
          LD_LEN, 0x03f,  1, 0x0, 0xffff},                                               │            LD_LEN, 0x03f,  1, 0x0, 0xffff},                                              
        { "TCP seq",      /* DADDR should point to dest port */                          │          { "TCP seq",    /* DADDR should point to dest port */                           
          0x0000, 0x0000, OP_EQ,  0, S1_TCPFG, 4, S1_TCPFG, LD_SEQ,                      │            0x0000, 0x0000, OP_EQ,  0, S3_TCPFG, 4, S3_TCPFG, LD_SEQ,                     
          0x081,  3, 0x0, 0xffff}, /* Load TCP seq # */                                  │            0x081,  3, 0x0, 0xffff}, /* Load TCP seq # */                                 
        { "TCP control flags", 0x0000, 0x0000, OP_EQ,  0, S1_TCPHL, 0,                   │          { "TCP control flags", 0x0000, 0x0000, OP_EQ,  0, S3_TCPHL, 0,                  
          S1_TCPHL, ST_FLG, 0x045,  3, 0x0, 0x002f}, /* Load TCP flags */                │            S3_TCPHL, ST_FLG, 0x045,  3, 0x0, 0x002f}, /* Load TCP flags */               
        { "TCP length", 0x0000, 0x0000, OP_EQ,  0, S1_TCPHc, 0, S1_TCPHc,                │          { "TCP length", 0x0000, 0x0000, OP_EQ,  0, S3_TCPHc, 0, S3_TCPHc,               
          LD_R1,  0x205,  3, 0xB, 0xf000},                                               │            LD_R1,  0x205,  3, 0xB, 0xf000},                                              
        { "TCP length cont", 0x0000, 0x0000, OP_EQ,  0, S1_PCKT,  0,                     │          { "TCP length cont", 0x0000, 0x0000, OP_EQ,  0, S1_PCKT,  0, S1_PCKT,           
          S1_PCKT,  LD_HDR, 0x0ff,  3, 0x0, 0xffff},                                     │            LD_HDR, 0x0ff,  3, 0x0, 0xffff},                                              
        { "Cleanup", 0x0000, 0x0000, OP_EQ,  0, S1_CLNP2, 0, S1_CLNP2,                   │          { "IP4 Fragment", 0x0000, 0x0000, OP_EQ,  0, S3_FOFF,  0, S3_FOFF,              
          IM_SAP, 0x6AE,  3, 0x0, 0xffff} ,                                              │            LD_FID, 0x103,  3, 0x0, 0xffff}, /* FID IP4 src+dst */                        
        { "Cleanup 2", 0x0000, 0x0000, OP_EQ,  0, S1_PCKT,  0, S1_PCKT,                  │          { "IP4 frag offset", 0x0000, 0x0000, OP_EQ,  0, S3_FOFF,  0, S3_FOFF,           
                                                                                         │            LD_SEQ, 0x040,  1, 0xD, 0xfff8},                                              
                                                                                         │          { "Cleanup", 0x0000, 0x0000, OP_EQ,  0, S1_PCKT,  0, S1_PCKT,                   
          IM_CTL, 0x001,  3, 0x0, 0x0001},                                               │            IM_CTL, 0x001,  3, 0x0, 0x0001},                                              
        { NULL },                                                                        │          { NULL },                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:1333                       │ linux/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:1452                        
                                                                                         │                                                                                          
        struct flow_dissector_key_ipv4_addrs key, mask;                                  │          struct {                                                                        
                                                                                         │                  struct flow_dissector_key_basic bkey;                                   
                                                                                         │                  struct flow_dissector_key_ports key;                                    
                                                                                         │          } __aligned(BITS_PER_LONG / 8) keys;                                            
                                                                                         │          struct {                                                                        
                                                                                         │                  struct flow_dissector_key_basic bmask;                                  
                                                                                         │                  struct flow_dissector_key_ports mask;                                   
                                                                                         │          } __aligned(BITS_PER_LONG / 8) masks;                                           
        unsigned long dummy_cookie = 0xdeadbeef;                                         │          unsigned long dummy_cookie = 0xdeadbeef;                                        
        struct stmmac_packet_attrs attr = { };                                           │          struct stmmac_packet_attrs attr = { };                                          
        struct flow_dissector *dissector;                                                │          struct flow_dissector *dissector;                                               
        struct flow_cls_offload *cls;                                                    │          struct flow_cls_offload *cls;                                                   
        int ret, old_enable = 0;                                                         │          int ret, old_enable = 0;                                                        
        struct flow_rule *rule;                                                          │          struct flow_rule *rule;                                                         
                                                                                         │                                                                                          
        if (!tc_can_offload(priv->dev))                                                  │          if (!tc_can_offload(priv->dev))                                                 
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
        if (!priv->dma_cap.l3l4fnum)                                                     │          if (!priv->dma_cap.l3l4fnum)                                                    
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
        if (priv->rss.enable) {                                                          │          if (priv->rss.enable) {                                                         
                old_enable = priv->rss.enable;                                           │                  old_enable = priv->rss.enable;                                          
                priv->rss.enable = false;                                                │                  priv->rss.enable = false;                                               
                stmmac_rss_configure(priv, priv->hw, NULL,                               │                  stmmac_rss_configure(priv, priv->hw, NULL,                              
                                     priv->plat->rx_queues_to_use);                      │                                       priv->plat->rx_queues_to_use);                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        dissector = kzalloc(sizeof(*dissector), GFP_KERNEL);                             │          dissector = kzalloc(sizeof(*dissector), GFP_KERNEL);                            
        if (!dissector) {                                                                │          if (!dissector) {                                                               
                ret = -ENOMEM;                                                           │                  ret = -ENOMEM;                                                          
                goto cleanup_rss;                                                        │                  goto cleanup_rss;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        dissector->used_keys |= (1 << FLOW_DISSECTOR_KEY_IPV4_ADDRS);                    │          dissector->used_keys |= (1 << FLOW_DISSECTOR_KEY_BASIC);                        
        dissector->offset[FLOW_DISSECTOR_KEY_IPV4_ADDRS] = 0;                            │          dissector->used_keys |= (1 << FLOW_DISSECTOR_KEY_PORTS);                        
                                                                                         │          dissector->offset[FLOW_DISSECTOR_KEY_BASIC] = 0;                                
                                                                                         │          dissector->offset[FLOW_DISSECTOR_KEY_PORTS] = offsetof(typeof(keys), key);      
                                                                                         │                                                                                          
        cls = kzalloc(sizeof(*cls), GFP_KERNEL);                                         │          cls = kzalloc(sizeof(*cls), GFP_KERNEL);                                        
        if (!cls) {                                                                      │          if (!cls) {                                                                     
                ret = -ENOMEM;                                                           │                  ret = -ENOMEM;                                                          
                goto cleanup_dissector;                                                  │                  goto cleanup_dissector;                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        cls->common.chain_index = 0;                                                     │          cls->common.chain_index = 0;                                                    
        cls->command = FLOW_CLS_REPLACE;                                                 │          cls->command = FLOW_CLS_REPLACE;                                                
        cls->cookie = dummy_cookie;                                                      │          cls->cookie = dummy_cookie;                                                     
                                                                                         │                                                                                          
        rule = kzalloc(struct_size(rule, action.entries, 1), GFP_KERNEL);                │          rule = kzalloc(struct_size(rule, action.entries, 1), GFP_KERNEL);               
        if (!rule) {                                                                     │          if (!rule) {                                                                    
                ret = -ENOMEM;                                                           │                  ret = -ENOMEM;                                                          
                goto cleanup_cls;                                                        │                  goto cleanup_cls;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        rule->match.dissector = dissector;                                               │          rule->match.dissector = dissector;                                              
        rule->match.key = (void *)&key;                                                  │          rule->match.key = (void *)&keys;                                                
        rule->match.mask = (void *)&mask;                                                │          rule->match.mask = (void *)&masks;                                              
                                                                                         │                                                                                          
        key.src = htonl(src);                                                            │          keys.bkey.ip_proto = udp ? IPPROTO_UDP : IPPROTO_TCP;                           
        key.dst = htonl(dst);                                                            │          keys.key.src = htons(src);                                                      
        mask.src = src_mask;                                                             │          keys.key.dst = htons(dst);                                                      
        mask.dst = dst_mask;                                                             │          masks.mask.src = src_mask;                                                      
                                                                                         │          masks.mask.dst = dst_mask;                                                      
                                                                                         │                                                                                          
        cls->rule = rule;                                                                │          cls->rule = rule;                                                               
                                                                                         │                                                                                          
        rule->action.entries[0].id = FLOW_ACTION_DROP;                                   │          rule->action.entries[0].id = FLOW_ACTION_DROP;                                  
        rule->action.entries[0].hw_stats = FLOW_ACTION_HW_STATS_ANY;                     │          rule->action.entries[0].hw_stats = FLOW_ACTION_HW_STATS_ANY;                    
        rule->action.num_entries = 1;                                                    │          rule->action.num_entries = 1;                                                   
                                                                                         │                                                                                          
        attr.dst = priv->dev->dev_addr;                                                  │          attr.dst = priv->dev->dev_addr;                                                 
        attr.ip_dst = dst;                                                               │          attr.tcp = !udp;                                                                
        attr.ip_src = src;                                                               │          attr.sport = src;                                                               
                                                                                         │          attr.dport = dst;                                                               
                                                                                         │          attr.ip_dst = 0;                                                                
                                                                                         │                                                                                          
        /* Shall receive packet */                                                       │          /* Shall receive packet */                                                      
        ret = __stmmac_test_loopback(priv, &attr);                                       │          ret = __stmmac_test_loopback(priv, &attr);                                      
        if (ret)                                                                         │          if (ret)                                                                        
                goto cleanup_rule;                                                       │                  goto cleanup_rule;                                                      
                                                                                         │                                                                                          
        ret = stmmac_tc_setup_cls(priv, priv, cls);                                      │          ret = stmmac_tc_setup_cls(priv, priv, cls);                                     
        if (ret)                                                                         │          if (ret)                                                                        
                goto cleanup_rule;                                                       │                  goto cleanup_rule;                                                      
                                                                                         │                                                                                          
        /* Shall NOT receive packet */                                                   │          /* Shall NOT receive packet */                                                  
        ret = __stmmac_test_loopback(priv, &attr);                                       │          ret = __stmmac_test_loopback(priv, &attr);                                      
        ret = ret ? 0 : -EINVAL;                                                         │          ret = ret ? 0 : -EINVAL;                                                        
                                                                                         │                                                                                          
        cls->command = FLOW_CLS_DESTROY;                                                 │          cls->command = FLOW_CLS_DESTROY;                                                
        stmmac_tc_setup_cls(priv, priv, cls);                                            │          stmmac_tc_setup_cls(priv, priv, cls);                                           
cleanup_rule:                                                                            │  cleanup_rule:                                                                           
        kfree(rule);                                                                     │          kfree(rule);                                                                    
cleanup_cls:                                                                             │  cleanup_cls:                                                                            
        kfree(cls);                                                                      │          kfree(cls);                                                                     
cleanup_dissector:                                                                       │  cleanup_dissector:                                                                      
        kfree(dissector);                                                                │          kfree(dissector);                                                               
cleanup_rss:                                                                             │  cleanup_rss:                                                                            
        if (old_enable) {                                                                │          if (old_enable) {                                                               
                priv->rss.enable = old_enable;                                           │                  priv->rss.enable = old_enable;                                          
                stmmac_rss_configure(priv, priv->hw, &priv->rss,                         │                  stmmac_rss_configure(priv, priv->hw, &priv->rss,                        
                                     priv->plat->rx_queues_to_use);                      │                                       priv->plat->rx_queues_to_use);                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c:771                                │ linux/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c:9257                                    
                                                                                         │                                                                                          
        unsigned int page_shift, page_size, qpp_shift, qpp_mask;                         │          unsigned int page_shift, page_size, qpp_shift, qpp_mask;                        
        u64 bar2_page_offset, bar2_qoffset;                                              │          u64 bar2_page_offset, bar2_qoffset;                                             
        unsigned int bar2_qid, bar2_qid_offset, bar2_qinferred;                          │          unsigned int bar2_qid, bar2_qid_offset, bar2_qinferred;                         
                                                                                         │                                                                                          
        /* T4 doesn't support BAR2 SGE Queue registers.                                  │          /* T4 doesn't support BAR2 SGE Queue registers for kernel mode queues */        
         */                                                                              │          if (!user && is_t4(adapter->params.chip))                                       
        if (is_t4(adapter->params.chip))                                                 │                                                                                          
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        /* Get our SGE Page Size parameters.                                             │          /* Get our SGE Page Size parameters.                                            
         */                                                                              │           */                                                                             
        page_shift = adapter->params.sge.sge_vf_hps + 10;                                │          page_shift = adapter->params.sge.hps + 10;                                      
        page_size = 1 << page_shift;                                                     │          page_size = 1 << page_shift;                                                    
                                                                                         │                                                                                          
        /* Get the right Queues per Page parameters for our Queue.                       │          /* Get the right Queues per Page parameters for our Queue.                      
         */                                                                              │           */                                                                             
        qpp_shift = (qtype == T4_BAR2_QTYPE_EGRESS                                       │          qpp_shift = (qtype == T4_BAR2_QTYPE_EGRESS                                      
                     ? adapter->params.sge.sge_vf_eq_qpp                                 │                       ? adapter->params.sge.eq_qpp                                       
                     : adapter->params.sge.sge_vf_iq_qpp);                               │                       : adapter->params.sge.iq_qpp);                                     
        qpp_mask = (1 << qpp_shift) - 1;                                                 │          qpp_mask = (1 << qpp_shift) - 1;                                                
                                                                                         │                                                                                          
        /* Calculate the basics of the BAR2 SGE Queue register area:                     │          /*  Calculate the basics of the BAR2 SGE Queue register area:                   
         *  o The BAR2 page the Queue registers will be in.                              │           *  o The BAR2 page the Queue registers will be in.                             
         *  o The BAR2 Queue ID.                                                         │           *  o The BAR2 Queue ID.                                                        
         *  o The BAR2 Queue ID Offset into the BAR2 page.                               │           *  o The BAR2 Queue ID Offset into the BAR2 page.                              
         */                                                                              │           */                                                                             
        bar2_page_offset = ((u64)(qid >> qpp_shift) << page_shift);                      │          bar2_page_offset = ((u64)(qid >> qpp_shift) << page_shift);                     
        bar2_qid = qid & qpp_mask;                                                       │          bar2_qid = qid & qpp_mask;                                                      
        bar2_qid_offset = bar2_qid * SGE_UDB_SIZE;                                       │          bar2_qid_offset = bar2_qid * SGE_UDB_SIZE;                                      
                                                                                         │                                                                                          
        /* If the BAR2 Queue ID Offset is less than the Page Size, then the              │          /* If the BAR2 Queue ID Offset is less than the Page Size, then the             
         * hardware will infer the Absolute Queue ID simply from the writes to           │           * hardware will infer the Absolute Queue ID simply from the writes to          
         * the BAR2 Queue ID Offset within the BAR2 Page (and we need to use a           │           * the BAR2 Queue ID Offset within the BAR2 Page (and we need to use a          
         * BAR2 Queue ID of 0 for those writes).  Otherwise, we'll simply                │           * BAR2 Queue ID of 0 for those writes).  Otherwise, we'll simply               
         * write to the first BAR2 SGE Queue Area within the BAR2 Page with              │           * write to the first BAR2 SGE Queue Area within the BAR2 Page with             
         * the BAR2 Queue ID and the hardware will infer the Absolute Queue ID           │           * the BAR2 Queue ID and the hardware will infer the Absolute Queue ID          
         * from the BAR2 Page and BAR2 Queue ID.                                         │           * from the BAR2 Page and BAR2 Queue ID.                                        
         *                                                                               │           *                                                                              
         * One important censequence of this is that some BAR2 SGE registers             │           * One important censequence of this is that some BAR2 SGE registers            
         * have a "Queue ID" field and we can write the BAR2 SGE Queue ID                │           * have a "Queue ID" field and we can write the BAR2 SGE Queue ID               
         * there.  But other registers synthesize the SGE Queue ID purely                │           * there.  But other registers synthesize the SGE Queue ID purely               
         * from the writes to the registers -- the Write Combined Doorbell               │           * from the writes to the registers -- the Write Combined Doorbell              
         * Buffer is a good example.  These BAR2 SGE Registers are only                  │           * Buffer is a good example.  These BAR2 SGE Registers are only                 
         * available for those BAR2 SGE Register areas where the SGE Absolute            │           * available for those BAR2 SGE Register areas where the SGE Absolute           
         * Queue ID can be inferred from simple writes.                                  │           * Queue ID can be inferred from simple writes.                                 
         */                                                                              │           */                                                                             
        bar2_qoffset = bar2_page_offset;                                                 │          bar2_qoffset = bar2_page_offset;                                                
        bar2_qinferred = (bar2_qid_offset < page_size);                                  │          bar2_qinferred = (bar2_qid_offset < page_size);                                 
        if (bar2_qinferred) {                                                            │          if (bar2_qinferred) {                                                           
                bar2_qoffset += bar2_qid_offset;                                         │                  bar2_qoffset += bar2_qid_offset;                                        
                bar2_qid = 0;                                                            │                  bar2_qid = 0;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        *pbar2_qoffset = bar2_qoffset;                                                   │          *pbar2_qoffset = bar2_qoffset;                                                  
        *pbar2_qid = bar2_qid;                                                           │          *pbar2_qid = bar2_qid;                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:1513                                             │ linux/drivers/net/ethernet/sfc/falcon/farch.c:1501                                       
                                                                                         │                                                                                          
        struct efx_nic *efx = dev_id;                                                    │          struct ef4_nic *efx = dev_id;                                                   
        bool soft_enabled = READ_ONCE(efx->irq_soft_enabled);                            │          bool soft_enabled = READ_ONCE(efx->irq_soft_enabled);                           
        efx_oword_t *int_ker = efx->irq_status.addr;                                     │          ef4_oword_t *int_ker = efx->irq_status.addr;                                    
        irqreturn_t result = IRQ_NONE;                                                   │          irqreturn_t result = IRQ_NONE;                                                  
        struct efx_channel *channel;                                                     │          struct ef4_channel *channel;                                                    
        efx_dword_t reg;                                                                 │          ef4_dword_t reg;                                                                
        u32 queues;                                                                      │          u32 queues;                                                                     
        int syserr;                                                                      │          int syserr;                                                                     
                                                                                         │                                                                                          
        /* Read the ISR which also ACKs the interrupts */                                │          /* Read the ISR which also ACKs the interrupts */                               
        efx_readd(efx, ®, FR_BZ_INT_ISR0);                                            │          ef4_readd(efx, ®, FR_BZ_INT_ISR0);                                           
        queues = EFX_EXTRACT_DWORD(reg, 0, 31);                                          │          queues = EF4_EXTRACT_DWORD(reg, 0, 31);                                         
                                                                                         │                                                                                          
        /* Legacy interrupts are disabled too late by the EEH kernel                     │          /* Legacy interrupts are disabled too late by the EEH kernel                    
         * code. Disable them earlier.                                                   │           * code. Disable them earlier.                                                  
         * If an EEH error occurred, the read will have returned all ones.               │           * If an EEH error occurred, the read will have returned all ones.              
         */                                                                              │           */                                                                             
        if (EFX_DWORD_IS_ALL_ONES(reg) && efx_try_recovery(efx) &&                       │          if (EF4_DWORD_IS_ALL_ONES(reg) && ef4_try_recovery(efx) &&                      
            !efx->eeh_disabled_legacy_irq) {                                             │              !efx->eeh_disabled_legacy_irq) {                                            
                disable_irq_nosync(efx->legacy_irq);                                     │                  disable_irq_nosync(efx->legacy_irq);                                    
                efx->eeh_disabled_legacy_irq = true;                                     │                  efx->eeh_disabled_legacy_irq = true;                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Handle non-event-queue sources */                                             │          /* Handle non-event-queue sources */                                            
        if (queues & (1U << efx->irq_level) && soft_enabled) {                           │          if (queues & (1U << efx->irq_level) && soft_enabled) {                          
                syserr = EFX_OWORD_FIELD(*int_ker, FSF_AZ_NET_IVEC_FATAL_INT);           │                  syserr = EF4_OWORD_FIELD(*int_ker, FSF_AZ_NET_IVEC_FATAL_INT);          
                if (unlikely(syserr))                                                    │                  if (unlikely(syserr))                                                   
                        return efx_farch_fatal_interrupt(efx);                           │                          return ef4_farch_fatal_interrupt(efx);                          
                efx->last_irq_cpu = raw_smp_processor_id();                              │                  efx->last_irq_cpu = raw_smp_processor_id();                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (queues != 0) {                                                               │          if (queues != 0) {                                                              
                efx->irq_zero_count = 0;                                                 │                  efx->irq_zero_count = 0;                                                
                                                                                         │                                                                                          
                /* Schedule processing of any interrupting queues */                     │                  /* Schedule processing of any interrupting queues */                    
                if (likely(soft_enabled)) {                                              │                  if (likely(soft_enabled)) {                                             
                        efx_for_each_channel(channel, efx) {                             │                          ef4_for_each_channel(channel, efx) {                            
                                if (queues & 1)                                          │                                  if (queues & 1)                                         
                                        efx_schedule_channel_irq(channel);               │                                          ef4_schedule_channel_irq(channel);              
                                queues >>= 1;                                            │                                  queues >>= 1;                                           
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                result = IRQ_HANDLED;                                                    │                  result = IRQ_HANDLED;                                                   
                                                                                         │                                                                                          
        } else {                                                                         │          } else {                                                                        
                efx_qword_t *event;                                                      │                  ef4_qword_t *event;                                                     
                                                                                         │                                                                                          
                /* Legacy ISR read can return zero once (SF bug 15783) */                │                  /* Legacy ISR read can return zero once (SF bug 15783) */               
                                                                                         │                                                                                          
                /* We can't return IRQ_HANDLED more than once on seeing ISR=0            │                  /* We can't return IRQ_HANDLED more than once on seeing ISR=0           
                 * because this might be a shared interrupt. */                          │                   * because this might be a shared interrupt. */                         
                if (efx->irq_zero_count++ == 0)                                          │                  if (efx->irq_zero_count++ == 0)                                         
                        result = IRQ_HANDLED;                                            │                          result = IRQ_HANDLED;                                           
                                                                                         │                                                                                          
                /* Ensure we schedule or rearm all event queues */                       │                  /* Ensure we schedule or rearm all event queues */                      
                if (likely(soft_enabled)) {                                              │                  if (likely(soft_enabled)) {                                             
                        efx_for_each_channel(channel, efx) {                             │                          ef4_for_each_channel(channel, efx) {                            
                                event = efx_event(channel,                               │                                  event = ef4_event(channel,                              
                                                  channel->eventq_read_ptr);             │                                                    channel->eventq_read_ptr);            
                                if (efx_event_present(event))                            │                                  if (ef4_event_present(event))                           
                                        efx_schedule_channel_irq(channel);               │                                          ef4_schedule_channel_irq(channel);              
                                else                                                     │                                  else                                                    
                                        efx_farch_ev_read_ack(channel);                  │                                          ef4_farch_ev_read_ack(channel);                 
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (result == IRQ_HANDLED)                                                       │          if (result == IRQ_HANDLED)                                                      
                netif_vdbg(efx, intr, efx->net_dev,                                      │                  netif_vdbg(efx, intr, efx->net_dev,                                     
                           "IRQ %d on CPU %d status " EFX_DWORD_FMT "\n",                │                             "IRQ %d on CPU %d status " EF4_DWORD_FMT "\n",               
                           irq, raw_smp_processor_id(), EFX_DWORD_VAL(reg));             │                             irq, raw_smp_processor_id(), EF4_DWORD_VAL(reg));            
                                                                                         │                                                                                          
        return result;                                                                   │          return result;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c:399                            │ linux/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c:478                             
                                                                                         │                                                                                          
                reg = DSAF_SBM_BP_CFG_0_XGE_REG_0_REG + 0x80 * i;                        │                  reg = DSAF_SBM_BP_CFG_0_XGE_REG_0_REG + 0x80 * i;                       
                o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                             │                  o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                            
                dsaf_set_field(o_sbm_bp_cfg, DSAF_SBM_CFG0_COM_MAX_BUF_NUM_M,            │                  dsaf_set_field(o_sbm_bp_cfg, DSAFV2_SBM_CFG0_COM_MAX_BUF_NUM_M,         
                               DSAF_SBM_CFG0_COM_MAX_BUF_NUM_S, 512);                    │                                 DSAFV2_SBM_CFG0_COM_MAX_BUF_NUM_S, 256);                 
                dsaf_set_field(o_sbm_bp_cfg, DSAF_SBM_CFG0_VC0_MAX_BUF_NUM_M,            │                  dsaf_set_field(o_sbm_bp_cfg, DSAFV2_SBM_CFG0_VC0_MAX_BUF_NUM_M,         
                               DSAF_SBM_CFG0_VC0_MAX_BUF_NUM_S, 0);                      │                                 DSAFV2_SBM_CFG0_VC0_MAX_BUF_NUM_S, 0);                   
                dsaf_set_field(o_sbm_bp_cfg, DSAF_SBM_CFG0_VC1_MAX_BUF_NUM_M,            │                  dsaf_set_field(o_sbm_bp_cfg, DSAFV2_SBM_CFG0_VC1_MAX_BUF_NUM_M,         
                               DSAF_SBM_CFG0_VC1_MAX_BUF_NUM_S, 0);                      │                                 DSAFV2_SBM_CFG0_VC1_MAX_BUF_NUM_S, 0);                   
                dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                             │                  dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                            
                                                                                         │                                                                                          
                reg = DSAF_SBM_BP_CFG_1_REG_0_REG + 0x80 * i;                            │                  reg = DSAF_SBM_BP_CFG_1_REG_0_REG + 0x80 * i;                           
                o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                             │                  o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                            
                dsaf_set_field(o_sbm_bp_cfg, DSAF_SBM_CFG1_TC4_MAX_BUF_NUM_M,            │                  dsaf_set_field(o_sbm_bp_cfg, DSAFV2_SBM_CFG1_TC4_MAX_BUF_NUM_M,         
                               DSAF_SBM_CFG1_TC4_MAX_BUF_NUM_S, 0);                      │                                 DSAFV2_SBM_CFG1_TC4_MAX_BUF_NUM_S, 0);                   
                dsaf_set_field(o_sbm_bp_cfg, DSAF_SBM_CFG1_TC0_MAX_BUF_NUM_M,            │                  dsaf_set_field(o_sbm_bp_cfg, DSAFV2_SBM_CFG1_TC0_MAX_BUF_NUM_M,         
                               DSAF_SBM_CFG1_TC0_MAX_BUF_NUM_S, 0);                      │                                 DSAFV2_SBM_CFG1_TC0_MAX_BUF_NUM_S, 0);                   
                dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                             │                  dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                            
                                                                                         │                                                                                          
                reg = DSAF_SBM_BP_CFG_2_XGE_REG_0_REG + 0x80 * i;                        │                  reg = DSAF_SBM_BP_CFG_2_XGE_REG_0_REG + 0x80 * i;                       
                o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                             │                  o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                            
                dsaf_set_field(o_sbm_bp_cfg, DSAF_SBM_CFG2_SET_BUF_NUM_M,                │                  dsaf_set_field(o_sbm_bp_cfg, DSAFV2_SBM_CFG2_SET_BUF_NUM_M,             
                               DSAF_SBM_CFG2_SET_BUF_NUM_S, 104);                        │                                 DSAFV2_SBM_CFG2_SET_BUF_NUM_S, 104);                     
                dsaf_set_field(o_sbm_bp_cfg, DSAF_SBM_CFG2_RESET_BUF_NUM_M,              │                  dsaf_set_field(o_sbm_bp_cfg, DSAFV2_SBM_CFG2_RESET_BUF_NUM_M,           
                               DSAF_SBM_CFG2_RESET_BUF_NUM_S, 128);                      │                                 DSAFV2_SBM_CFG2_RESET_BUF_NUM_S, 128);                   
                dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                             │                  dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                            
                                                                                         │                                                                                          
                reg = DSAF_SBM_BP_CFG_3_REG_0_REG + 0x80 * i;                            │                  reg = DSAF_SBM_BP_CFG_3_REG_0_REG + 0x80 * i;                           
                o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                             │                  o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                            
                dsaf_set_field(o_sbm_bp_cfg,                                             │                  dsaf_set_field(o_sbm_bp_cfg,                                            
                               DSAF_SBM_CFG3_SET_BUF_NUM_NO_PFC_M,                       │                                 DSAFV2_SBM_CFG3_SET_BUF_NUM_NO_PFC_M,                    
                               DSAF_SBM_CFG3_SET_BUF_NUM_NO_PFC_S, 110);                 │                                 DSAFV2_SBM_CFG3_SET_BUF_NUM_NO_PFC_S, 55);               
                dsaf_set_field(o_sbm_bp_cfg,                                             │                  dsaf_set_field(o_sbm_bp_cfg,                                            
                               DSAF_SBM_CFG3_RESET_BUF_NUM_NO_PFC_M,                     │                                 DSAFV2_SBM_CFG3_RESET_BUF_NUM_NO_PFC_M,                  
                               DSAF_SBM_CFG3_RESET_BUF_NUM_NO_PFC_S, 160);               │                                 DSAFV2_SBM_CFG3_RESET_BUF_NUM_NO_PFC_S, 110);            
                dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                             │                  dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                            
                                                                                         │                                                                                          
                /* for no enable pfc mode */                                             │                  /* for no enable pfc mode */                                            
                reg = DSAF_SBM_BP_CFG_4_REG_0_REG + 0x80 * i;                            │                  reg = DSAF_SBM_BP_CFG_4_REG_0_REG + 0x80 * i;                           
                o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                             │                  o_sbm_bp_cfg = dsaf_read_dev(dsaf_dev, reg);                            
                dsaf_set_field(o_sbm_bp_cfg,                                             │                  dsaf_set_field(o_sbm_bp_cfg,                                            
                               DSAF_SBM_CFG3_SET_BUF_NUM_NO_PFC_M,                       │                                 DSAFV2_SBM_CFG4_SET_BUF_NUM_NO_PFC_M,                    
                               DSAF_SBM_CFG3_SET_BUF_NUM_NO_PFC_S, 128);                 │                                 DSAFV2_SBM_CFG4_SET_BUF_NUM_NO_PFC_S, 128);              
                dsaf_set_field(o_sbm_bp_cfg,                                             │                  dsaf_set_field(o_sbm_bp_cfg,                                            
                               DSAF_SBM_CFG3_RESET_BUF_NUM_NO_PFC_M,                     │                                 DSAFV2_SBM_CFG4_RESET_BUF_NUM_NO_PFC_M,                  
                               DSAF_SBM_CFG3_RESET_BUF_NUM_NO_PFC_S, 192);               │                                 DSAFV2_SBM_CFG4_RESET_BUF_NUM_NO_PFC_S, 192);            
                dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                             │                  dsaf_write_dev(dsaf_dev, reg, o_sbm_bp_cfg);                            
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:5120                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:5064                                     
                                                                                         │                                                                                          
        u8 reserved;                                                                     │          u8 reserved;                                                                    
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        __le16 icid;                                                                     │          __le16 msem_ctx_upd_seq;                                                        
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK            0xF                      │  #define YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK            0xF                     
#define MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT   0                                │  #define YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT   0                               
#define MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK               0x1                      │  #define YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK               0x1                     
#define MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT              4                        │  #define YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT              4                       
#define MSTORM_RDMA_TASK_AG_CTX_BIT1_MASK                       0x1                      │  #define YSTORM_RDMA_TASK_AG_CTX_BIT1_MASK                       0x1                     
#define MSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT                      5                        │  #define YSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT                      5                       
#define MSTORM_RDMA_TASK_AG_CTX_BIT2_MASK                       0x1                      │  #define YSTORM_RDMA_TASK_AG_CTX_VALID_MASK                      0x1                     
#define MSTORM_RDMA_TASK_AG_CTX_BIT2_SHIFT                      6                        │  #define YSTORM_RDMA_TASK_AG_CTX_VALID_SHIFT                     6                       
#define MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK               0x1                      │  #define YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK               0x1                     
#define MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT              7                        │  #define YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT              7                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_RDMA_TASK_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_RDMA_TASK_AG_CTX_CF0_MASK                0x3                             
#define MSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT       0                                        │  #define YSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT               0                               
#define MSTORM_RDMA_TASK_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_RDMA_TASK_AG_CTX_CF1_MASK                0x3                             
#define MSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT       2                                        │  #define YSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT               2                               
#define MSTORM_RDMA_TASK_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_MASK 0x3                                     
#define MSTORM_RDMA_TASK_AG_CTX_CF2_SHIFT       4                                        │  #define YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_SHIFT        4                               
#define MSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK      0x1                                      │  #define YSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK              0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT     6                                        │  #define YSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT             6                               
#define MSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK      0x1                                      │  #define YSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK              0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT     7                                        │  #define YSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT             7                               
        u8 flags2;                                                                       │          u8 flags2;                                                                      
#define MSTORM_RDMA_TASK_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_RDMA_TASK_AG_CTX_BIT4_MASK               0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_CF2EN_SHIFT             0                                │  #define YSTORM_RDMA_TASK_AG_CTX_BIT4_SHIFT              0                               
#define MSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK            0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT   1                                        │  #define YSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT   1                                       
#define MSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK            0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT   2                                        │  #define YSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT   2                                       
#define MSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK            0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT   3                                        │  #define YSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT   3                                       
#define MSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK            0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT   4                                        │  #define YSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT   4                                       
#define MSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK            0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT   5                                        │  #define YSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT   5                                       
#define MSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK            0x1                              │  #define YSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK            0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT   6                                        │  #define YSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT   6                                       
#define MSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK            0x1                              │  #define YSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK            0x1                             
#define MSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT   7                                        │  #define YSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT   7                                       
        u8 key;                                                                          │          u8 key;                                                                         
        __le32 mw_cnt_or_qp_id;                                                          │          __le32 mw_cnt_or_qp_id;                                                         
        u8 ref_cnt_seq;                                                                  │          u8 ref_cnt_seq;                                                                 
        u8 ctx_upd_seq;                                                                  │          u8 ctx_upd_seq;                                                                 
        __le16 dif_flags;                                                                │          __le16 dif_flags;                                                               
        __le16 tx_ref_count;                                                             │          __le16 tx_ref_count;                                                            
        __le16 last_used_ltid;                                                           │          __le16 last_used_ltid;                                                          
        __le16 parent_mr_lo;                                                             │          __le16 parent_mr_lo;                                                            
        __le16 parent_mr_hi;                                                             │          __le16 parent_mr_hi;                                                            
        __le32 fbo_lo;                                                                   │          __le32 fbo_lo;                                                                  
        __le32 fbo_hi;                                                                   │          __le32 fbo_hi;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_main.c:1417                                    │ linux/drivers/net/ethernet/intel/igb/igb_main.c:6331                                     
                                                                                         │                                                                                          
        u16 count = TXD_USE_COUNT(skb_headlen(skb));                                     │          struct igb_tx_buffer *first;                                                    
        __be16 protocol = vlan_get_protocol(skb);                                        │          int tso;                                                                        
        struct igc_tx_buffer *first;                                                     │                                                                                          
        u32 tx_flags = 0;                                                                │          u32 tx_flags = 0;                                                               
        unsigned short f;                                                                │          unsigned short f;                                                               
                                                                                         │          u16 count = TXD_USE_COUNT(skb_headlen(skb));                                    
                                                                                         │          __be16 protocol = vlan_get_protocol(skb);                                       
        u8 hdr_len = 0;                                                                  │          u8 hdr_len = 0;                                                                 
        int tso = 0;                                                                     │                                                                                          
                                                                                         │                                                                                          
        /* need: 1 descriptor per page * PAGE_SIZE/IGC_MAX_DATA_PER_TXD,                 │          /* need: 1 descriptor per page * PAGE_SIZE/IGB_MAX_DATA_PER_TXD,                
         *      + 1 desc for skb_headlen/IGC_MAX_DATA_PER_TXD,                           │           *       + 1 desc for skb_headlen/IGB_MAX_DATA_PER_TXD,                         
         *      + 2 desc gap to keep tail from touching head,                            │           *       + 2 desc gap to keep tail from touching head,                          
         *      + 1 desc for context descriptor,                                         │           *       + 1 desc for context descriptor,                                       
         * otherwise try next time                                                       │           * otherwise try next time                                                      
         */                                                                              │           */                                                                             
        for (f = 0; f < skb_shinfo(skb)->nr_frags; f++)                                  │          for (f = 0; f < skb_shinfo(skb)->nr_frags; f++)                                 
                count += TXD_USE_COUNT(skb_frag_size(                                    │                  count += TXD_USE_COUNT(skb_frag_size(                                   
                                                &skb_shinfo(skb)->frags[f]));            │                                                  &skb_shinfo(skb)->frags[f]));           
                                                                                         │                                                                                          
        if (igc_maybe_stop_tx(tx_ring, count + 3)) {                                     │          if (igb_maybe_stop_tx(tx_ring, count + 3)) {                                    
                /* this is a hard error */                                               │                  /* this is a hard error */                                              
                return NETDEV_TX_BUSY;                                                   │                  return NETDEV_TX_BUSY;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* record the location of the first descriptor for this packet */                │          /* record the location of the first descriptor for this packet */               
        first = &tx_ring->tx_buffer_info[tx_ring->next_to_use];                          │          first = &tx_ring->tx_buffer_info[tx_ring->next_to_use];                         
        first->type = IGC_TX_BUFFER_TYPE_SKB;                                            │          first->type = IGB_TYPE_SKB;                                                     
        first->skb = skb;                                                                │          first->skb = skb;                                                               
        first->bytecount = skb->len;                                                     │          first->bytecount = skb->len;                                                    
        first->gso_segs = 1;                                                             │          first->gso_segs = 1;                                                            
                                                                                         │                                                                                          
        if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) {                     │          if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) {                    
                struct igc_adapter *adapter = netdev_priv(tx_ring->netdev);              │                  struct igb_adapter *adapter = netdev_priv(tx_ring->netdev);             
                                                                                         │                                                                                          
                /* FIXME: add support for retrieving timestamps from                     │                                                                                          
                 * the other timer registers before skipping the                         │                                                                                          
                 * timestamping request.                                                 │                                                                                          
                 */                                                                      │                                                                                          
                if (adapter->tstamp_config.tx_type == HWTSTAMP_TX_ON &&                  │                  if (adapter->tstamp_config.tx_type == HWTSTAMP_TX_ON &&                 
                    !test_and_set_bit_lock(__IGC_PTP_TX_IN_PROGRESS,                     │                      !test_and_set_bit_lock(__IGB_PTP_TX_IN_PROGRESS,                    
                                           &adapter->state)) {                           │                                             &adapter->state)) {                          
                        skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;                  │                          skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;                 
                        tx_flags |= IGC_TX_FLAGS_TSTAMP;                                 │                          tx_flags |= IGB_TX_FLAGS_TSTAMP;                                
                                                                                         │                                                                                          
                        adapter->ptp_tx_skb = skb_get(skb);                              │                          adapter->ptp_tx_skb = skb_get(skb);                             
                        adapter->ptp_tx_start = jiffies;                                 │                          adapter->ptp_tx_start = jiffies;                                
                                                                                         │                          if (adapter->hw.mac.type == e1000_82576)                        
                                                                                         │                                  schedule_work(&adapter->ptp_tx_work);                   
                } else {                                                                 │                  } else {                                                                
                        adapter->tx_hwtstamp_skipped++;                                  │                          adapter->tx_hwtstamp_skipped++;                                 
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (skb_vlan_tag_present(skb)) {                                                 │          if (skb_vlan_tag_present(skb)) {                                                
                tx_flags |= IGC_TX_FLAGS_VLAN;                                           │                  tx_flags |= IGB_TX_FLAGS_VLAN;                                          
                tx_flags |= (skb_vlan_tag_get(skb) << IGC_TX_FLAGS_VLAN_SHIFT);          │                  tx_flags |= (skb_vlan_tag_get(skb) << IGB_TX_FLAGS_VLAN_SHIFT);         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* record initial flags and protocol */                                          │          /* record initial flags and protocol */                                         
        first->tx_flags = tx_flags;                                                      │          first->tx_flags = tx_flags;                                                     
        first->protocol = protocol;                                                      │          first->protocol = protocol;                                                     
                                                                                         │                                                                                          
        tso = igc_tso(tx_ring, first, &hdr_len);                                         │          tso = igb_tso(tx_ring, first, &hdr_len);                                        
        if (tso < 0)                                                                     │          if (tso < 0)                                                                    
                goto out_drop;                                                           │                  goto out_drop;                                                          
        else if (!tso)                                                                   │          else if (!tso)                                                                  
                igc_tx_csum(tx_ring, first);                                             │                  igb_tx_csum(tx_ring, first);                                            
                                                                                         │                                                                                          
        igc_tx_map(tx_ring, first, hdr_len);                                             │          if (igb_tx_map(tx_ring, first, hdr_len))                                        
                                                                                         │                  goto cleanup_tx_tstamp;                                                 
                                                                                         │                                                                                          
        return NETDEV_TX_OK;                                                             │          return NETDEV_TX_OK;                                                            
                                                                                         │                                                                                          
out_drop:                                                                                │  out_drop:                                                                               
        dev_kfree_skb_any(first->skb);                                                   │          dev_kfree_skb_any(first->skb);                                                  
        first->skb = NULL;                                                               │          first->skb = NULL;                                                              
                                                                                         │  cleanup_tx_tstamp:                                                                      
                                                                                         │          if (unlikely(tx_flags & IGB_TX_FLAGS_TSTAMP)) {                                 
                                                                                         │                  struct igb_adapter *adapter = netdev_priv(tx_ring->netdev);             
                                                                                         │                                                                                          
                                                                                         │                  dev_kfree_skb_any(adapter->ptp_tx_skb);                                 
                                                                                         │                  adapter->ptp_tx_skb = NULL;                                             
                                                                                         │                  if (adapter->hw.mac.type == e1000_82576)                                
                                                                                         │                          cancel_work_sync(&adapter->ptp_tx_work);                        
                                                                                         │                  clear_bit_unlock(__IGB_PTP_TX_IN_PROGRESS, &adapter->state);            
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        return NETDEV_TX_OK;                                                             │          return NETDEV_TX_OK;                                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c:1515                           │ linux/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c:1438                            
                                                                                         │                                                                                          
        int j, ret;                                                                      │          int j, ret;                                                                     
        u32 temp, off_lo, off_hi, addr_hi, data_hi, data_lo;                             │          u32 temp, off_lo, off_hi, addr_hi, data_hi, data_lo;                            
        u64 val;                                                                         │                                                                                          
        void __iomem *mem_crb;                                                           │          void __iomem *mem_crb;                                                          
                                                                                         │                                                                                          
        /* Only 64-bit aligned access */                                                 │          /* Only 64-bit aligned access */                                                
        if (off & 7)                                                                     │          if (off & 7)                                                                    
                return -EIO;                                                             │                  return -EIO;                                                            
                                                                                         │                                                                                          
        /* P2 has different SIU and MIU test agent base addr */                          │          /* P2 has different SIU and MIU test agent base addr */                         
        if (ADDR_IN_RANGE(off, NETXEN_ADDR_QDR_NET,                                      │          if (ADDR_IN_RANGE(off, NETXEN_ADDR_QDR_NET,                                     
                                NETXEN_ADDR_QDR_NET_MAX_P2)) {                           │                                  NETXEN_ADDR_QDR_NET_MAX_P2)) {                          
                mem_crb = pci_base_offset(adapter,                                       │                  mem_crb = pci_base_offset(adapter,                                      
                                NETXEN_CRB_QDR_NET+SIU_TEST_AGT_BASE);                   │                                  NETXEN_CRB_QDR_NET+SIU_TEST_AGT_BASE);                  
                addr_hi = SIU_TEST_AGT_ADDR_HI;                                          │                  addr_hi = SIU_TEST_AGT_ADDR_HI;                                         
                data_lo = SIU_TEST_AGT_RDDATA_LO;                                        │                  data_lo = SIU_TEST_AGT_WRDATA_LO;                                       
                data_hi = SIU_TEST_AGT_RDDATA_HI;                                        │                  data_hi = SIU_TEST_AGT_WRDATA_HI;                                       
                off_lo = off & SIU_TEST_AGT_ADDR_MASK;                                   │                  off_lo = off & SIU_TEST_AGT_ADDR_MASK;                                  
                off_hi = SIU_TEST_AGT_UPPER_ADDR(off);                                   │                  off_hi = SIU_TEST_AGT_UPPER_ADDR(off);                                  
                goto correct;                                                            │                  goto correct;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (ADDR_IN_RANGE(off, NETXEN_ADDR_DDR_NET, NETXEN_ADDR_DDR_NET_MAX)) {          │          if (ADDR_IN_RANGE(off, NETXEN_ADDR_DDR_NET, NETXEN_ADDR_DDR_NET_MAX)) {         
                mem_crb = pci_base_offset(adapter,                                       │                  mem_crb = pci_base_offset(adapter,                                      
                                NETXEN_CRB_DDR_NET+MIU_TEST_AGT_BASE);                   │                                  NETXEN_CRB_DDR_NET+MIU_TEST_AGT_BASE);                  
                addr_hi = MIU_TEST_AGT_ADDR_HI;                                          │                  addr_hi = MIU_TEST_AGT_ADDR_HI;                                         
                data_lo = MIU_TEST_AGT_RDDATA_LO;                                        │                  data_lo = MIU_TEST_AGT_WRDATA_LO;                                       
                data_hi = MIU_TEST_AGT_RDDATA_HI;                                        │                  data_hi = MIU_TEST_AGT_WRDATA_HI;                                       
                off_lo = off & MIU_TEST_AGT_ADDR_MASK;                                   │                  off_lo = off & MIU_TEST_AGT_ADDR_MASK;                                  
                off_hi = 0;                                                              │                  off_hi = 0;                                                             
                goto correct;                                                            │                  goto correct;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (ADDR_IN_RANGE(off, NETXEN_ADDR_OCM0, NETXEN_ADDR_OCM0_MAX) ||                │          if (ADDR_IN_RANGE(off, NETXEN_ADDR_OCM0, NETXEN_ADDR_OCM0_MAX) ||               
                ADDR_IN_RANGE(off, NETXEN_ADDR_OCM1, NETXEN_ADDR_OCM1_MAX)) {            │                  ADDR_IN_RANGE(off, NETXEN_ADDR_OCM1, NETXEN_ADDR_OCM1_MAX)) {           
                if (adapter->ahw.pci_len0 != 0) {                                        │                  if (adapter->ahw.pci_len0 != 0) {                                       
                        return netxen_nic_pci_mem_access_direct(adapter,                 │                          return netxen_nic_pci_mem_access_direct(adapter,                
                                        off, data, 0);                                   │                                          off, &data, 1);                                 
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return -EIO;                                                                     │          return -EIO;                                                                    
                                                                                         │                                                                                          
correct:                                                                                 │  correct:                                                                                
        spin_lock(&adapter->ahw.mem_lock);                                               │          spin_lock(&adapter->ahw.mem_lock);                                              
        netxen_nic_pci_set_crbwindow_128M(adapter, 0);                                   │          netxen_nic_pci_set_crbwindow_128M(adapter, 0);                                  
                                                                                         │                                                                                          
        writel(off_lo, (mem_crb + MIU_TEST_AGT_ADDR_LO));                                │          writel(off_lo, (mem_crb + MIU_TEST_AGT_ADDR_LO));                               
        writel(off_hi, (mem_crb + addr_hi));                                             │          writel(off_hi, (mem_crb + addr_hi));                                            
        writel(TA_CTL_ENABLE, (mem_crb + TEST_AGT_CTRL));                                │          writel(data & 0xffffffff, (mem_crb + data_lo));                                 
        writel((TA_CTL_START|TA_CTL_ENABLE), (mem_crb + TEST_AGT_CTRL));                 │          writel((data >> 32) & 0xffffffff, (mem_crb + data_hi));                         
                                                                                         │          writel((TA_CTL_ENABLE | TA_CTL_WRITE), (mem_crb + TEST_AGT_CTRL));              
                                                                                         │          writel((TA_CTL_START | TA_CTL_ENABLE | TA_CTL_WRITE),                           
                                                                                         │                          (mem_crb + TEST_AGT_CTRL));                                     
                                                                                         │                                                                                          
        for (j = 0; j < MAX_CTL_CHECK; j++) {                                            │          for (j = 0; j < MAX_CTL_CHECK; j++) {                                           
                temp = readl(mem_crb + TEST_AGT_CTRL);                                   │                  temp = readl((mem_crb + TEST_AGT_CTRL));                                
                if ((temp & TA_CTL_BUSY) == 0)                                           │                  if ((temp & TA_CTL_BUSY) == 0)                                          
                        break;                                                           │                          break;                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (j >= MAX_CTL_CHECK) {                                                        │          if (j >= MAX_CTL_CHECK) {                                                       
                if (printk_ratelimit())                                                  │                  if (printk_ratelimit())                                                 
                        dev_err(&adapter->pdev->dev,                                     │                          dev_err(&adapter->pdev->dev,                                    
                                        "failed to read through agent\n");               │                                          "failed to write through agent\n");             
                ret = -EIO;                                                              │                  ret = -EIO;                                                             
        } else {                                                                         │          } else                                                                          
                                                                                         │                                                                                          
                temp = readl(mem_crb + data_hi);                                         │                                                                                          
                val = ((u64)temp << 32);                                                 │                                                                                          
                val |= readl(mem_crb + data_lo);                                         │                                                                                          
                *data = val;                                                             │                                                                                          
                ret = 0;                                                                 │                  ret = 0;                                                                
        }                                                                                │                                                                                          
                                                                                         │                                                                                          
        netxen_nic_pci_set_crbwindow_128M(adapter, NETXEN_WINDOW_ONE);                   │          netxen_nic_pci_set_crbwindow_128M(adapter, NETXEN_WINDOW_ONE);                  
        spin_unlock(&adapter->ahw.mem_lock);                                             │          spin_unlock(&adapter->ahw.mem_lock);                                            
                                                                                         │                                                                                          
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_txrx.c:2125                                    │ linux/drivers/net/ethernet/intel/i40e/i40e_txrx.c:3400                                   
                                                                                         │                                                                                          
        const skb_frag_t *frag, *stale;                                                  │          const skb_frag_t *frag, *stale;                                                 
        int nr_frags, sum;                                                               │          int nr_frags, sum;                                                              
                                                                                         │                                                                                          
        /* no need to check if number of frags is less than 7 */                         │          /* no need to check if number of frags is less than 7 */                        
        nr_frags = skb_shinfo(skb)->nr_frags;                                            │          nr_frags = skb_shinfo(skb)->nr_frags;                                           
        if (nr_frags < (ICE_MAX_BUF_TXD - 1))                                            │          if (nr_frags < (I40E_MAX_BUFFER_TXD - 1))                                       
                return false;                                                            │                  return false;                                                           
                                                                                         │                                                                                          
        /* We need to walk through the list and validate that each group                 │          /* We need to walk through the list and validate that each group                
         * of 6 fragments totals at least gso_size.                                      │           * of 6 fragments totals at least gso_size.                                     
         */                                                                              │           */                                                                             
        nr_frags -= ICE_MAX_BUF_TXD - 2;                                                 │          nr_frags -= I40E_MAX_BUFFER_TXD - 2;                                            
        frag = &skb_shinfo(skb)->frags[0];                                               │          frag = &skb_shinfo(skb)->frags[0];                                              
                                                                                         │                                                                                          
        /* Initialize size to the negative value of gso_size minus 1. We                 │          /* Initialize size to the negative value of gso_size minus 1.  We               
         * use this as the worst case scenario in which the frag ahead                   │           * use this as the worst case scenerio in which the frag ahead                  
         * of us only provides one byte which is why we are limited to 6                 │           * of us only provides one byte which is why we are limited to 6                
         * descriptors for a single transmit as the header and previous                  │           * descriptors for a single transmit as the header and previous                 
         * fragment are already consuming 2 descriptors.                                 │           * fragment are already consuming 2 descriptors.                                
         */                                                                              │           */                                                                             
        sum = 1 - skb_shinfo(skb)->gso_size;                                             │          sum = 1 - skb_shinfo(skb)->gso_size;                                            
                                                                                         │                                                                                          
        /* Add size of frags 0 through 4 to create our initial sum */                    │          /* Add size of frags 0 through 4 to create our initial sum */                   
        sum += skb_frag_size(frag++);                                                    │          sum += skb_frag_size(frag++);                                                   
        sum += skb_frag_size(frag++);                                                    │          sum += skb_frag_size(frag++);                                                   
        sum += skb_frag_size(frag++);                                                    │          sum += skb_frag_size(frag++);                                                   
        sum += skb_frag_size(frag++);                                                    │          sum += skb_frag_size(frag++);                                                   
        sum += skb_frag_size(frag++);                                                    │          sum += skb_frag_size(frag++);                                                   
                                                                                         │                                                                                          
        /* Walk through fragments adding latest fragment, testing it, and                │          /* Walk through fragments adding latest fragment, testing it, and               
         * then removing stale fragments from the sum.                                   │           * then removing stale fragments from the sum.                                  
         */                                                                              │           */                                                                             
        for (stale = &skb_shinfo(skb)->frags[0];; stale++) {                             │          for (stale = &skb_shinfo(skb)->frags[0];; stale++) {                            
                int stale_size = skb_frag_size(stale);                                   │                  int stale_size = skb_frag_size(stale);                                  
                                                                                         │                                                                                          
                sum += skb_frag_size(frag++);                                            │                  sum += skb_frag_size(frag++);                                           
                                                                                         │                                                                                          
                /* The stale fragment may present us with a smaller                      │                  /* The stale fragment may present us with a smaller                     
                 * descriptor than the actual fragment size. To account                  │                   * descriptor than the actual fragment size. To account                 
                 * for that we need to remove all the data on the front and              │                   * for that we need to remove all the data on the front and             
                 * figure out what the remainder would be in the last                    │                   * figure out what the remainder would be in the last                   
                 * descriptor associated with the fragment.                              │                   * descriptor associated with the fragment.                             
                 */                                                                      │                   */                                                                     
                if (stale_size > ICE_MAX_DATA_PER_TXD) {                                 │                  if (stale_size > I40E_MAX_DATA_PER_TXD) {                               
                        int align_pad = -(skb_frag_off(stale)) &                         │                          int align_pad = -(skb_frag_off(stale)) &                        
                                        (ICE_MAX_READ_REQ_SIZE - 1);                     │                                          (I40E_MAX_READ_REQ_SIZE - 1);                   
                                                                                         │                                                                                          
                        sum -= align_pad;                                                │                          sum -= align_pad;                                               
                        stale_size -= align_pad;                                         │                          stale_size -= align_pad;                                        
                                                                                         │                                                                                          
                        do {                                                             │                          do {                                                            
                                sum -= ICE_MAX_DATA_PER_TXD_ALIGNED;                     │                                  sum -= I40E_MAX_DATA_PER_TXD_ALIGNED;                   
                                stale_size -= ICE_MAX_DATA_PER_TXD_ALIGNED;              │                                  stale_size -= I40E_MAX_DATA_PER_TXD_ALIGNED;            
                        } while (stale_size > ICE_MAX_DATA_PER_TXD);                     │                          } while (stale_size > I40E_MAX_DATA_PER_TXD);                   
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* if sum is negative we failed to make sufficient progress */           │                  /* if sum is negative we failed to make sufficient progress */          
                if (sum < 0)                                                             │                  if (sum < 0)                                                            
                        return true;                                                     │                          return true;                                                    
                                                                                         │                                                                                          
                if (!nr_frags--)                                                         │                  if (!nr_frags--)                                                        
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                sum -= stale_size;                                                       │                  sum -= stale_size;                                                      
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return false;                                                                    │          return false;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/selftest.c:691                                    │ linux/drivers/net/ethernet/sfc/selftest.c:689                                            
                                                                                         │                                                                                          
        enum ef4_loopback_mode loopback_mode = efx->loopback_mode;                       │          enum efx_loopback_mode loopback_mode = efx->loopback_mode;                      
        int phy_mode = efx->phy_mode;                                                    │          int phy_mode = efx->phy_mode;                                                   
        int rc_test = 0, rc_reset, rc;                                                   │          int rc_test = 0, rc_reset, rc;                                                  
                                                                                         │                                                                                          
        ef4_selftest_async_cancel(efx);                                                  │          efx_selftest_async_cancel(efx);                                                 
                                                                                         │                                                                                          
        /* Online (i.e. non-disruptive) testing                                          │          /* Online (i.e. non-disruptive) testing                                         
         * This checks interrupt generation, event delivery and PHY presence. */         │           * This checks interrupt generation, event delivery and PHY presence. */        
                                                                                         │                                                                                          
        rc = ef4_test_phy_alive(efx, tests);                                             │          rc = efx_test_phy_alive(efx, tests);                                            
        if (rc && !rc_test)                                                              │          if (rc && !rc_test)                                                             
                rc_test = rc;                                                            │                  rc_test = rc;                                                           
                                                                                         │                                                                                          
        rc = ef4_test_nvram(efx, tests);                                                 │          rc = efx_test_nvram(efx, tests);                                                
        if (rc && !rc_test)                                                              │          if (rc && !rc_test)                                                             
                rc_test = rc;                                                            │                  rc_test = rc;                                                           
                                                                                         │                                                                                          
        rc = ef4_test_interrupts(efx, tests);                                            │          rc = efx_test_interrupts(efx, tests);                                           
        if (rc && !rc_test)                                                              │          if (rc && !rc_test)                                                             
                rc_test = rc;                                                            │                  rc_test = rc;                                                           
                                                                                         │                                                                                          
        rc = ef4_test_eventq_irq(efx, tests);                                            │          rc = efx_test_eventq_irq(efx, tests);                                           
        if (rc && !rc_test)                                                              │          if (rc && !rc_test)                                                             
                rc_test = rc;                                                            │                  rc_test = rc;                                                           
                                                                                         │                                                                                          
        if (rc_test)                                                                     │          if (rc_test)                                                                    
                return rc_test;                                                          │                  return rc_test;                                                         
                                                                                         │                                                                                          
        if (!(flags & ETH_TEST_FL_OFFLINE))                                              │          if (!(flags & ETH_TEST_FL_OFFLINE))                                             
                return ef4_test_phy(efx, tests, flags);                                  │                  return efx_test_phy(efx, tests, flags);                                 
                                                                                         │                                                                                          
        /* Offline (i.e. disruptive) testing                                             │          /* Offline (i.e. disruptive) testing                                            
         * This checks MAC and PHY loopback on the specified port. */                    │           * This checks MAC and PHY loopback on the specified port. */                   
                                                                                         │                                                                                          
        /* Detach the device so the kernel doesn't transmit during the                   │          /* Detach the device so the kernel doesn't transmit during the                  
         * loopback test and the watchdog timeout doesn't fire.                          │           * loopback test and the watchdog timeout doesn't fire.                         
         */                                                                              │           */                                                                             
        ef4_device_detach_sync(efx);                                                     │          efx_device_detach_sync(efx);                                                    
                                                                                         │                                                                                          
        if (efx->type->test_chip) {                                                      │          if (efx->type->test_chip) {                                                     
                rc_reset = efx->type->test_chip(efx, tests);                             │                  rc_reset = efx->type->test_chip(efx, tests);                            
                if (rc_reset) {                                                          │                  if (rc_reset) {                                                         
                        netif_err(efx, hw, efx->net_dev,                                 │                          netif_err(efx, hw, efx->net_dev,                                
                                  "Unable to recover from chip test\n");                 │                                    "Unable to recover from chip test\n");                
                        ef4_schedule_reset(efx, RESET_TYPE_DISABLE);                     │                          efx_schedule_reset(efx, RESET_TYPE_DISABLE);                    
                        return rc_reset;                                                 │                          return rc_reset;                                                
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if ((tests->memory < 0 || tests->registers < 0) && !rc_test)             │                  if ((tests->memory < 0 || tests->registers < 0) && !rc_test)            
                        rc_test = -EIO;                                                  │                          rc_test = -EIO;                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Ensure that the phy is powered and out of loopback                            │          /* Ensure that the phy is powered and out of loopback                           
         * for the bist and loopback tests */                                            │           * for the bist and loopback tests */                                           
        mutex_lock(&efx->mac_lock);                                                      │          mutex_lock(&efx->mac_lock);                                                     
        efx->phy_mode &= ~PHY_MODE_LOW_POWER;                                            │          efx->phy_mode &= ~PHY_MODE_LOW_POWER;                                           
        efx->loopback_mode = LOOPBACK_NONE;                                              │          efx->loopback_mode = LOOPBACK_NONE;                                             
        __ef4_reconfigure_port(efx);                                                     │          __efx_reconfigure_port(efx);                                                    
        mutex_unlock(&efx->mac_lock);                                                    │          mutex_unlock(&efx->mac_lock);                                                   
                                                                                         │                                                                                          
        rc = ef4_test_phy(efx, tests, flags);                                            │          rc = efx_test_phy(efx, tests, flags);                                           
        if (rc && !rc_test)                                                              │          if (rc && !rc_test)                                                             
                rc_test = rc;                                                            │                  rc_test = rc;                                                           
                                                                                         │                                                                                          
        rc = ef4_test_loopbacks(efx, tests, efx->loopback_modes);                        │          rc = efx_test_loopbacks(efx, tests, efx->loopback_modes);                       
        if (rc && !rc_test)                                                              │          if (rc && !rc_test)                                                             
                rc_test = rc;                                                            │                  rc_test = rc;                                                           
                                                                                         │                                                                                          
        /* restore the PHY to the previous state */                                      │          /* restore the PHY to the previous state */                                     
        mutex_lock(&efx->mac_lock);                                                      │          mutex_lock(&efx->mac_lock);                                                     
        efx->phy_mode = phy_mode;                                                        │          efx->phy_mode = phy_mode;                                                       
        efx->loopback_mode = loopback_mode;                                              │          efx->loopback_mode = loopback_mode;                                             
        __ef4_reconfigure_port(efx);                                                     │          __efx_reconfigure_port(efx);                                                    
        mutex_unlock(&efx->mac_lock);                                                    │          mutex_unlock(&efx->mac_lock);                                                   
                                                                                         │                                                                                          
        netif_device_attach(efx->net_dev);                                               │          efx_device_attach_if_not_resetting(efx);                                        
                                                                                         │                                                                                          
        return rc_test;                                                                  │          return rc_test;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/a2065.c:321                                              │ linux/drivers/net/ethernet/amd/7990.c:353                                                
                                                                                         │                                                                                          
        struct lance_private *lp = netdev_priv(dev);                                     │          struct lance_private *lp = netdev_priv(dev);                                    
        volatile struct lance_init_block *ib = lp->init_block;                           │          volatile struct lance_init_block *ib = lp->init_block;                          
        volatile struct lance_regs *ll = lp->ll;                                         │                                                                                          
        volatile struct lance_tx_desc *td;                                               │          volatile struct lance_tx_desc *td;                                              
        int i, j;                                                                        │          int i, j;                                                                       
        int status;                                                                      │          int status;                                                                     
                                                                                         │                                                                                          
                                                                                         │  #ifdef CONFIG_HP300                                                                     
                                                                                         │          blinken_leds(0x80, 0);                                                          
                                                                                         │  #endif                                                                                  
        /* csr0 is 2f3 */                                                                │          /* csr0 is 2f3 */                                                               
        ll->rdp = LE_C0_TINT | LE_C0_INEA;                                               │          WRITERDP(lp, LE_C0_TINT | LE_C0_INEA);                                          
        /* csr0 is 73 */                                                                 │          /* csr0 is 73 */                                                                
                                                                                         │                                                                                          
        j = lp->tx_old;                                                                  │          j = lp->tx_old;                                                                 
        for (i = j; i != lp->tx_new; i = j) {                                            │          for (i = j; i != lp->tx_new; i = j) {                                           
                td = &ib->btx_ring[i];                                                   │                  td = &ib->btx_ring[i];                                                  
                                                                                         │                                                                                          
                /* If we hit a packet not owned by us, stop */                           │                  /* If we hit a packet not owned by us, stop */                          
                if (td->tmd1_bits & LE_T1_OWN)                                           │                  if (td->tmd1_bits & LE_T1_OWN)                                          
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                if (td->tmd1_bits & LE_T1_ERR) {                                         │                  if (td->tmd1_bits & LE_T1_ERR) {                                        
                        status = td->misc;                                               │                          status = td->misc;                                              
                                                                                         │                                                                                          
                        dev->stats.tx_errors++;                                          │                          dev->stats.tx_errors++;                                         
                        if (status & LE_T3_RTY)                                          │                          if (status & LE_T3_RTY)                                         
                                dev->stats.tx_aborted_errors++;                          │                                  dev->stats.tx_aborted_errors++;                         
                        if (status & LE_T3_LCOL)                                         │                          if (status & LE_T3_LCOL)                                        
                                dev->stats.tx_window_errors++;                           │                                  dev->stats.tx_window_errors++;                          
                                                                                         │                                                                                          
                        if (status & LE_T3_CLOS) {                                       │                          if (status & LE_T3_CLOS) {                                      
                                dev->stats.tx_carrier_errors++;                          │                                  dev->stats.tx_carrier_errors++;                         
                                if (lp->auto_select) {                                   │                                  if (lp->auto_select) {                                  
                                        lp->tpe = 1 - lp->tpe;                           │                                          lp->tpe = 1 - lp->tpe;                          
                                        netdev_err(dev, "Carrier Lost, trying %s\n",     │                                          printk("%s: Carrier Lost, trying %s\n",         
                                                   lp->tpe ? "TPE" : "AUI");             │                                                 dev->name,                               
                                                                                         │                                                 lp->tpe ? "TPE" : "AUI");                
                                        /* Stop the lance */                             │                                          /* Stop the lance */                            
                                        ll->rap = LE_CSR0;                               │                                          WRITERAP(lp, LE_CSR0);                          
                                        ll->rdp = LE_C0_STOP;                            │                                          WRITERDP(lp, LE_C0_STOP);                       
                                        lance_init_ring(dev);                            │                                          lance_init_ring(dev);                           
                                        load_csrs(lp);                                   │                                          load_csrs(lp);                                  
                                        init_restart_lance(lp);                          │                                          init_restart_lance(lp);                         
                                        return 0;                                        │                                          return 0;                                       
                                }                                                        │                                  }                                                       
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        /* buffer errors and underflows turn off                         │                          /* buffer errors and underflows turn off the transmitter */     
                         * the transmitter, so restart the adapter                       │                          /* Restart the adapter */                                       
                         */                                                              │                          if (status & (LE_T3_BUF|LE_T3_UFL)) {                           
                        if (status & (LE_T3_BUF | LE_T3_UFL)) {                          │                                                                                          
                                dev->stats.tx_fifo_errors++;                             │                                  dev->stats.tx_fifo_errors++;                            
                                                                                         │                                                                                          
                                netdev_err(dev, "Tx: ERR_BUF|ERR_UFL, restarting\n");    │                                  printk("%s: Tx: ERR_BUF|ERR_UFL, restarting\n",         
                                                                                         │                                         dev->name);                                      
                                /* Stop the lance */                                     │                                  /* Stop the lance */                                    
                                ll->rap = LE_CSR0;                                       │                                  WRITERAP(lp, LE_CSR0);                                  
                                ll->rdp = LE_C0_STOP;                                    │                                  WRITERDP(lp, LE_C0_STOP);                               
                                lance_init_ring(dev);                                    │                                  lance_init_ring(dev);                                   
                                load_csrs(lp);                                           │                                  load_csrs(lp);                                          
                                init_restart_lance(lp);                                  │                                  init_restart_lance(lp);                                 
                                return 0;                                                │                                  return 0;                                               
                        }                                                                │                          }                                                               
                } else if ((td->tmd1_bits & LE_T1_POK) == LE_T1_POK) {                   │                  } else if ((td->tmd1_bits & LE_T1_POK) == LE_T1_POK) {                  
                        /* So we don't count the packet more than once. */               │                          /*                                                              
                                                                                         │                           * So we don't count the packet more than once.                 
                                                                                         │                           */                                                             
                        td->tmd1_bits &= ~(LE_T1_POK);                                   │                          td->tmd1_bits &= ~(LE_T1_POK);                                  
                                                                                         │                                                                                          
                        /* One collision before packet was sent. */                      │                          /* One collision before packet was sent. */                     
                        if (td->tmd1_bits & LE_T1_EONE)                                  │                          if (td->tmd1_bits & LE_T1_EONE)                                 
                                dev->stats.collisions++;                                 │                                  dev->stats.collisions++;                                
                                                                                         │                                                                                          
                        /* More than one collision, be optimistic. */                    │                          /* More than one collision, be optimistic. */                   
                        if (td->tmd1_bits & LE_T1_EMORE)                                 │                          if (td->tmd1_bits & LE_T1_EMORE)                                
                                dev->stats.collisions += 2;                              │                                  dev->stats.collisions += 2;                             
                                                                                         │                                                                                          
                        dev->stats.tx_packets++;                                         │                          dev->stats.tx_packets++;                                        
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                j = (j + 1) & lp->tx_ring_mod_mask;                                      │                  j = (j + 1) & lp->tx_ring_mod_mask;                                     
        }                                                                                │          }                                                                               
        lp->tx_old = j;                                                                  │          lp->tx_old = j;                                                                 
        ll->rdp = LE_C0_TINT | LE_C0_INEA;                                               │          WRITERDP(lp, LE_C0_TINT | LE_C0_INEA);                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/mac.c:247                                       │ linux/drivers/net/ethernet/intel/igb/e1000_mac.c:427                                     
                                                                                         │                                                                                          
        u32 hash_value, hash_mask;                                                       │          u32 hash_value, hash_mask;                                                      
        u8 bit_shift = 0;                                                                │          u8 bit_shift = 0;                                                               
                                                                                         │                                                                                          
        /* Register count multiplied by bits per register */                             │          /* Register count multiplied by bits per register */                            
        hash_mask = (hw->mac.mta_reg_count * 32) - 1;                                    │          hash_mask = (hw->mac.mta_reg_count * 32) - 1;                                   
                                                                                         │                                                                                          
        /* For a mc_filter_type of 0, bit_shift is the number of left-shifts             │          /* For a mc_filter_type of 0, bit_shift is the number of left-shifts            
         * where 0xFF would still fall within the hash mask.                             │           * where 0xFF would still fall within the hash mask.                            
         */                                                                              │           */                                                                             
        while (hash_mask >> bit_shift != 0xFF)                                           │          while (hash_mask >> bit_shift != 0xFF)                                          
                bit_shift++;                                                             │                  bit_shift++;                                                            
                                                                                         │                                                                                          
        /* The portion of the address that is used for the hash table                    │          /* The portion of the address that is used for the hash table                   
         * is determined by the mc_filter_type setting.                                  │           * is determined by the mc_filter_type setting.                                 
         * The algorithm is such that there is a total of 8 bits of shifting.            │           * The algorithm is such that there is a total of 8 bits of shifting.           
         * The bit_shift for a mc_filter_type of 0 represents the number of              │           * The bit_shift for a mc_filter_type of 0 represents the number of             
         * left-shifts where the MSB of mc_addr[5] would still fall within               │           * left-shifts where the MSB of mc_addr[5] would still fall within              
         * the hash_mask.  Case 0 does this exactly.  Since there are a total            │           * the hash_mask.  Case 0 does this exactly.  Since there are a total           
         * of 8 bits of shifting, then mc_addr[4] will shift right the                   │           * of 8 bits of shifting, then mc_addr[4] will shift right the                  
         * remaining number of bits. Thus 8 - bit_shift.  The rest of the                │           * remaining number of bits. Thus 8 - bit_shift.  The rest of the               
         * cases are a variation of this algorithm...essentially raising the             │           * cases are a variation of this algorithm...essentially raising the            
         * number of bits to shift mc_addr[5] left, while still keeping the              │           * number of bits to shift mc_addr[5] left, while still keeping the             
         * 8-bit shifting total.                                                         │           * 8-bit shifting total.                                                        
         *                                                                               │           *                                                                              
         * For example, given the following Destination MAC Address and an               │           * For example, given the following Destination MAC Address and an              
         * mta register count of 128 (thus a 4096-bit vector and 0xFFF mask),            │           * mta register count of 128 (thus a 4096-bit vector and 0xFFF mask),           
         * we can see that the bit_shift for case 0 is 4.  These are the hash            │           * we can see that the bit_shift for case 0 is 4.  These are the hash           
         * values resulting from each mc_filter_type...                                  │           * values resulting from each mc_filter_type...                                 
         * [0] [1] [2] [3] [4] [5]                                                       │           * [0] [1] [2] [3] [4] [5]                                                      
         * 01  AA  00  12  34  56                                                        │           * 01  AA  00  12  34  56                                                       
         * LSB           MSB                                                             │           * LSB                 MSB                                                      
         *                                                                               │           *                                                                              
         * case 0: hash_value = ((0x34 >> 4) | (0x56 << 4)) & 0xFFF = 0x563              │           * case 0: hash_value = ((0x34 >> 4) | (0x56 << 4)) & 0xFFF = 0x563             
         * case 1: hash_value = ((0x34 >> 3) | (0x56 << 5)) & 0xFFF = 0xAC6              │           * case 1: hash_value = ((0x34 >> 3) | (0x56 << 5)) & 0xFFF = 0xAC6             
         * case 2: hash_value = ((0x34 >> 2) | (0x56 << 6)) & 0xFFF = 0x163              │           * case 2: hash_value = ((0x34 >> 2) | (0x56 << 6)) & 0xFFF = 0x163             
         * case 3: hash_value = ((0x34 >> 0) | (0x56 << 8)) & 0xFFF = 0x634              │           * case 3: hash_value = ((0x34 >> 0) | (0x56 << 8)) & 0xFFF = 0x634             
         */                                                                              │           */                                                                             
        switch (hw->mac.mc_filter_type) {                                                │          switch (hw->mac.mc_filter_type) {                                               
        default:                                                                         │          default:                                                                        
        case 0:                                                                          │          case 0:                                                                         
                break;                                                                   │                  break;                                                                  
        case 1:                                                                          │          case 1:                                                                         
                bit_shift += 1;                                                          │                  bit_shift += 1;                                                         
                break;                                                                   │                  break;                                                                  
        case 2:                                                                          │          case 2:                                                                         
                bit_shift += 2;                                                          │                  bit_shift += 2;                                                         
                break;                                                                   │                  break;                                                                  
        case 3:                                                                          │          case 3:                                                                         
                bit_shift += 4;                                                          │                  bit_shift += 4;                                                         
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        hash_value = hash_mask & (((mc_addr[4] >> (8 - bit_shift)) |                     │          hash_value = hash_mask & (((mc_addr[4] >> (8 - bit_shift)) |                    
                                   (((u16)mc_addr[5]) << bit_shift)));                   │                                    (((u16) mc_addr[5]) << bit_shift)));                  
                                                                                         │                                                                                          
        return hash_value;                                                               │          return hash_value;                                                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/en_stats.c:1980                           │ linux/drivers/net/ethernet/mellanox/mlx5/core/en_stats.c:2137                            
                                                                                         │                                                                                          
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, packets) },                       │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, packets) },                  
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, bytes) },                         │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, bytes) },                    
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tso_packets) },                   │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tso_packets) },              
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tso_bytes) },                     │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tso_bytes) },                
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tso_inner_packets) },             │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tso_inner_packets) },        
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tso_inner_bytes) },               │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tso_inner_bytes) },          
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, csum_partial) },                  │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, csum_partial) },             
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, csum_partial_inner) },            │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, csum_partial_inner) },       
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, added_vlan_packets) },            │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, added_vlan_packets) },       
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, nop) },                           │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, nop) },                      
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, mpwqe_blks) },                    │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, mpwqe_blks) },               
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, mpwqe_pkts) },                    │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, mpwqe_pkts) },               
#ifdef CONFIG_MLX5_EN_TLS                                                                │  #ifdef CONFIG_MLX5_EN_TLS                                                               
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tls_encrypted_packets) },         │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tls_encrypted_packets) },    
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tls_encrypted_bytes) },           │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tls_encrypted_bytes) },      
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tls_ooo) },                       │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tls_ooo) },                  
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tls_dump_packets) },              │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tls_dump_packets) },         
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tls_dump_bytes) },                │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tls_dump_bytes) },           
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tls_resync_bytes) },              │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tls_resync_bytes) },         
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tls_skip_no_sync_data) },         │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tls_skip_no_sync_data) },    
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tls_drop_no_sync_data) },         │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tls_drop_no_sync_data) },    
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, tls_drop_bypass_req) },           │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, tls_drop_bypass_req) },      
#endif                                                                                   │  #endif                                                                                  
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, csum_none) },                     │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, csum_none) },                
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, stopped) },                       │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, stopped) },                  
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, dropped) },                       │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, dropped) },                  
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, xmit_more) },                     │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, xmit_more) },                
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, recover) },                       │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, recover) },                  
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, cqes) },                          │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, cqes) },                     
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, wake) },                          │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, wake) },                     
        { MLX5E_DECLARE_TX_STAT(struct mlx5e_sq_stats, cqe_err) },                       │          { MLX5E_DECLARE_QOS_TX_STAT(struct mlx5e_sq_stats, cqe_err) },                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h:606                        │ linux/drivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h:459                         
                                                                                         │                                                                                          
        u64 ena                   : 1;                                                   │          u64 ena                   : 1;                                                  
        u64 qint_idx              : 6;                                                   │          u64 qint_idx              : 6;                                                  
        u64 substream             : 20;                                                  │          u64 substream             : 20;                                                 
        u64 sdp_mcast             : 1;                                                   │          u64 sdp_mcast             : 1;                                                  
        u64 cq                    : 20;                                                  │          u64 cq                    : 20;                                                 
        u64 sqe_way_mask          : 16;                                                  │          u64 sqe_way_mask          : 16;                                                 
        u64 smq                   : 9;                                                   │          u64 smq                   : 10; /* W1 */                                        
        u64 cq_ena                : 1;                                                   │          u64 cq_ena                : 1;                                                  
        u64 xoff                  : 1;                                                   │          u64 xoff                  : 1;                                                  
        u64 sso_ena               : 1;                                                   │          u64 sso_ena               : 1;                                                  
        u64 smq_rr_quantum        : 24;                                                  │          u64 smq_rr_weight         : 14;                                                 
        u64 default_chan          : 12;                                                  │          u64 default_chan          : 12;                                                 
        u64 sqb_count             : 16;                                                  │          u64 sqb_count             : 16;                                                 
        u64 smq_rr_count          : 25;                                                  │          u64 rsvd_120_119          : 2;                                                  
                                                                                         │          u64 smq_rr_count_lb       : 7;                                                  
                                                                                         │          u64 smq_rr_count_ub       : 25; /* W2 */                                        
        u64 sqb_aura              : 20;                                                  │          u64 sqb_aura              : 20;                                                 
        u64 sq_int                : 8;                                                   │          u64 sq_int                : 8;                                                  
        u64 sq_int_ena            : 8;                                                   │          u64 sq_int_ena            : 8;                                                  
        u64 sqe_stype             : 2;                                                   │          u64 sqe_stype             : 2;                                                  
        u64 rsvd_191              : 1;                                                   │          u64 rsvd_191              : 1;                                                  
        u64 max_sqe_size          : 2;                                                   │          u64 max_sqe_size          : 2; /* W3 */                                         
        u64 cq_limit              : 8;                                                   │          u64 cq_limit              : 8;                                                  
        u64 lmt_dis               : 1;                                                   │          u64 lmt_dis               : 1;                                                  
        u64 mnq_dis               : 1;                                                   │          u64 mnq_dis               : 1;                                                  
        u64 smq_next_sq           : 20;                                                  │          u64 smq_next_sq           : 20;                                                 
        u64 smq_lso_segnum        : 8;                                                   │          u64 smq_lso_segnum        : 8;                                                  
        u64 tail_offset           : 6;                                                   │          u64 tail_offset           : 6;                                                  
        u64 smenq_offset          : 6;                                                   │          u64 smenq_offset          : 6;                                                  
        u64 head_offset           : 6;                                                   │          u64 head_offset           : 6;                                                  
        u64 smenq_next_sqb_vld    : 1;                                                   │          u64 smenq_next_sqb_vld    : 1;                                                  
        u64 smq_pend              : 1;                                                   │          u64 smq_pend              : 1;                                                  
        u64 smq_next_sq_vld       : 1;                                                   │          u64 smq_next_sq_vld       : 1;                                                  
        u64 rsvd_255_253          : 3;                                                   │          u64 rsvd_255_253          : 3;                                                  
        u64 next_sqb              : 64;/* W4 */                                          │          u64 next_sqb              : 64; /* W4 */                                        
        u64 tail_sqb              : 64;/* W5 */                                          │          u64 tail_sqb              : 64; /* W5 */                                        
        u64 smenq_sqb             : 64;/* W6 */                                          │          u64 smenq_sqb             : 64; /* W6 */                                        
        u64 smenq_next_sqb        : 64;/* W7 */                                          │          u64 smenq_next_sqb        : 64; /* W7 */                                        
        u64 head_sqb              : 64;/* W8 */                                          │          u64 head_sqb              : 64; /* W8 */                                        
        u64 rsvd_583_576          : 8;                                                   │          u64 rsvd_583_576          : 8;  /* W9 */                                        
        u64 vfi_lso_total         : 18;                                                  │          u64 vfi_lso_total         : 18;                                                 
        u64 vfi_lso_sizem1        : 3;                                                   │          u64 vfi_lso_sizem1        : 3;                                                  
        u64 vfi_lso_sb            : 8;                                                   │          u64 vfi_lso_sb            : 8;                                                  
        u64 vfi_lso_mps           : 14;                                                  │          u64 vfi_lso_mps           : 14;                                                 
        u64 vfi_lso_vlan0_ins_ena : 1;                                                   │          u64 vfi_lso_vlan0_ins_ena : 1;                                                  
        u64 vfi_lso_vlan1_ins_ena : 1;                                                   │          u64 vfi_lso_vlan1_ins_ena : 1;                                                  
        u64 vfi_lso_vld           : 1;                                                   │          u64 vfi_lso_vld           : 1;                                                  
        u64 rsvd_639_630          : 10;                                                  │          u64 rsvd_639_630          : 10;                                                 
        u64 scm_lso_rem           : 18;                                                  │          u64 scm_lso_rem           : 18; /* W10 */                                       
        u64 rsvd_703_658          : 46;                                                  │          u64 rsvd_703_658          : 46;                                                 
        u64 octs                  : 48;                                                  │          u64 octs                  : 48; /* W11 */                                       
        u64 rsvd_767_752          : 16;                                                  │          u64 rsvd_767_752          : 16;                                                 
        u64 pkts                  : 48;                                                  │          u64 pkts                  : 48; /* W12 */                                       
        u64 rsvd_831_816          : 16;                                                  │          u64 rsvd_831_816          : 16;                                                 
        u64 rsvd_895_832          : 64;/* W13 */                                         │          u64 rsvd_895_832          : 64; /* W13 */                                       
        u64 dropped_octs          : 48;                                                  │          u64 dropped_octs          : 48;                                                 
        u64 rsvd_959_944          : 16;                                                  │          u64 rsvd_959_944          : 16;                                                 
        u64 dropped_pkts          : 48;                                                  │          u64 dropped_pkts          : 48;                                                 
        u64 rsvd_1023_1008        : 16;                                                  │          u64 rsvd_1023_1008        : 16;                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:1813                                      │ linux/drivers/net/ethernet/intel/igb/e1000_phy.c:1840                                    
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        s32 ret_val;                                                                     │          s32 ret_val = 0;                                                                
        u16 phy_data, i, agc_value = 0;                                                  │          u16 phy_data, i, agc_value = 0;                                                 
        u16 cur_agc_index, max_agc_index = 0;                                            │          u16 cur_agc_index, max_agc_index = 0;                                           
        u16 min_agc_index = IGP02E1000_CABLE_LENGTH_TABLE_SIZE - 1;                      │          u16 min_agc_index = ARRAY_SIZE(e1000_igp_2_cable_length_table) - 1;             
        static const u16 agc_reg_array[IGP02E1000_PHY_CHANNEL_NUM] = {                   │          static const u16 agc_reg_array[IGP02E1000_PHY_CHANNEL_NUM] = {                  
                IGP02E1000_PHY_AGC_A,                                                    │                  IGP02E1000_PHY_AGC_A,                                                   
                IGP02E1000_PHY_AGC_B,                                                    │                  IGP02E1000_PHY_AGC_B,                                                   
                IGP02E1000_PHY_AGC_C,                                                    │                  IGP02E1000_PHY_AGC_C,                                                   
                IGP02E1000_PHY_AGC_D                                                     │                  IGP02E1000_PHY_AGC_D                                                    
        };                                                                               │          };                                                                              
                                                                                         │                                                                                          
        /* Read the AGC registers for all channels */                                    │          /* Read the AGC registers for all channels */                                   
        for (i = 0; i < IGP02E1000_PHY_CHANNEL_NUM; i++) {                               │          for (i = 0; i < IGP02E1000_PHY_CHANNEL_NUM; i++) {                              
                ret_val = e1e_rphy(hw, agc_reg_array[i], &phy_data);                     │                  ret_val = phy->ops.read_reg(hw, agc_reg_array[i], &phy_data);           
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          goto out;                                                       
                                                                                         │                                                                                          
                /* Getting bits 15:9, which represent the combination of                 │                  /* Getting bits 15:9, which represent the combination of                
                 * coarse and fine gain values.  The result is a number                  │                   * coarse and fine gain values.  The result is a number                 
                 * that can be put into the lookup table to obtain the                   │                   * that can be put into the lookup table to obtain the                  
                 * approximate cable length.                                             │                   * approximate cable length.                                            
                 */                                                                      │                   */                                                                     
                cur_agc_index = ((phy_data >> IGP02E1000_AGC_LENGTH_SHIFT) &             │                  cur_agc_index = (phy_data >> IGP02E1000_AGC_LENGTH_SHIFT) &             
                                 IGP02E1000_AGC_LENGTH_MASK);                            │                                  IGP02E1000_AGC_LENGTH_MASK;                             
                                                                                         │                                                                                          
                /* Array index bound check. */                                           │                  /* Array index bound check. */                                          
                if ((cur_agc_index >= IGP02E1000_CABLE_LENGTH_TABLE_SIZE) ||             │                  if ((cur_agc_index >= ARRAY_SIZE(e1000_igp_2_cable_length_table)) ||    
                    (cur_agc_index == 0))                                                │                      (cur_agc_index == 0)) {                                             
                        return -E1000_ERR_PHY;                                           │                          ret_val = -E1000_ERR_PHY;                                       
                                                                                         │                          goto out;                                                       
                                                                                         │                  }                                                                       
                                                                                         │                                                                                          
                /* Remove min & max AGC values from calculation. */                      │                  /* Remove min & max AGC values from calculation. */                     
                if (e1000_igp_2_cable_length_table[min_agc_index] >                      │                  if (e1000_igp_2_cable_length_table[min_agc_index] >                     
                    e1000_igp_2_cable_length_table[cur_agc_index])                       │                      e1000_igp_2_cable_length_table[cur_agc_index])                      
                        min_agc_index = cur_agc_index;                                   │                          min_agc_index = cur_agc_index;                                  
                if (e1000_igp_2_cable_length_table[max_agc_index] <                      │                  if (e1000_igp_2_cable_length_table[max_agc_index] <                     
                    e1000_igp_2_cable_length_table[cur_agc_index])                       │                      e1000_igp_2_cable_length_table[cur_agc_index])                      
                        max_agc_index = cur_agc_index;                                   │                          max_agc_index = cur_agc_index;                                  
                                                                                         │                                                                                          
                agc_value += e1000_igp_2_cable_length_table[cur_agc_index];              │                  agc_value += e1000_igp_2_cable_length_table[cur_agc_index];             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        agc_value -= (e1000_igp_2_cable_length_table[min_agc_index] +                    │          agc_value -= (e1000_igp_2_cable_length_table[min_agc_index] +                   
                      e1000_igp_2_cable_length_table[max_agc_index]);                    │                        e1000_igp_2_cable_length_table[max_agc_index]);                   
        agc_value /= (IGP02E1000_PHY_CHANNEL_NUM - 2);                                   │          agc_value /= (IGP02E1000_PHY_CHANNEL_NUM - 2);                                  
                                                                                         │                                                                                          
        /* Calculate cable length with the error range of +/- 10 meters. */              │          /* Calculate cable length with the error range of +/- 10 meters. */             
        phy->min_cable_length = (((agc_value - IGP02E1000_AGC_RANGE) > 0) ?              │          phy->min_cable_length = ((agc_value - IGP02E1000_AGC_RANGE) > 0) ?              
                                 (agc_value - IGP02E1000_AGC_RANGE) : 0);                │                                   (agc_value - IGP02E1000_AGC_RANGE) : 0;                
        phy->max_cable_length = agc_value + IGP02E1000_AGC_RANGE;                        │          phy->max_cable_length = agc_value + IGP02E1000_AGC_RANGE;                       
                                                                                         │                                                                                          
        phy->cable_length = (phy->min_cable_length + phy->max_cable_length) / 2;         │          phy->cable_length = (phy->min_cable_length + phy->max_cable_length) / 2;        
                                                                                         │                                                                                          
        return 0;                                                                        │  out:                                                                                    
                                                                                         │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/brocade/bna/bfa_ioc_ct.c:309                                 │ linux/drivers/net/ethernet/brocade/bna/bfa_ioc_ct.c:250                                  
                                                                                         │                                                                                          
        void __iomem *rb;                                                                │          void __iomem *rb;                                                               
        int             port = bfa_ioc_portid(ioc);                                      │          int             pcifn = bfa_ioc_pcifn(ioc);                                     
                                                                                         │                                                                                          
        rb = bfa_ioc_bar0(ioc);                                                          │          rb = bfa_ioc_bar0(ioc);                                                         
                                                                                         │                                                                                          
        ioc->ioc_regs.hfn_mbox = rb + ct2_reg[port].hfn_mbox;                            │          ioc->ioc_regs.hfn_mbox = rb + ct_fnreg[pcifn].hfn_mbox;                         
        ioc->ioc_regs.lpu_mbox = rb + ct2_reg[port].lpu_mbox;                            │          ioc->ioc_regs.lpu_mbox = rb + ct_fnreg[pcifn].lpu_mbox;                         
        ioc->ioc_regs.host_page_num_fn = rb + ct2_reg[port].hfn_pgn;                     │          ioc->ioc_regs.host_page_num_fn = rb + ct_fnreg[pcifn].hfn_pgn;                  
        ioc->ioc_regs.hfn_mbox_cmd = rb + ct2_reg[port].hfn;                             │                                                                                          
        ioc->ioc_regs.lpu_mbox_cmd = rb + ct2_reg[port].lpu;                             │          if (ioc->port_id == 0) {                                                        
        ioc->ioc_regs.lpu_read_stat = rb + ct2_reg[port].lpu_read;                       │                  ioc->ioc_regs.heartbeat = rb + BFA_IOC0_HBEAT_REG;                      
                                                                                         │                  ioc->ioc_regs.ioc_fwstate = rb + BFA_IOC0_STATE_REG;                    
        if (port == 0) {                                                                 │                  ioc->ioc_regs.alt_ioc_fwstate = rb + BFA_IOC1_STATE_REG;                
                ioc->ioc_regs.heartbeat = rb + CT2_BFA_IOC0_HBEAT_REG;                   │                  ioc->ioc_regs.hfn_mbox_cmd = rb + ct_p0reg[pcifn].hfn;                  
                ioc->ioc_regs.ioc_fwstate = rb + CT2_BFA_IOC0_STATE_REG;                 │                  ioc->ioc_regs.lpu_mbox_cmd = rb + ct_p0reg[pcifn].lpu;                  
                ioc->ioc_regs.alt_ioc_fwstate = rb + CT2_BFA_IOC1_STATE_REG;             │                                                                                          
                ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P0;                            │                  ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P0;                           
                ioc->ioc_regs.alt_ll_halt = rb + FW_INIT_HALT_P1;                        │                  ioc->ioc_regs.alt_ll_halt = rb + FW_INIT_HALT_P1;                       
        } else {                                                                         │          } else {                                                                        
                ioc->ioc_regs.heartbeat = rb + CT2_BFA_IOC1_HBEAT_REG;                   │                  ioc->ioc_regs.heartbeat = rb + BFA_IOC1_HBEAT_REG;                      
                ioc->ioc_regs.ioc_fwstate = rb + CT2_BFA_IOC1_STATE_REG;                 │                  ioc->ioc_regs.ioc_fwstate = rb + BFA_IOC1_STATE_REG;                    
                ioc->ioc_regs.alt_ioc_fwstate = rb + CT2_BFA_IOC0_STATE_REG;             │                  ioc->ioc_regs.alt_ioc_fwstate = rb + BFA_IOC0_STATE_REG;                
                                                                                         │                  ioc->ioc_regs.hfn_mbox_cmd = rb + ct_p1reg[pcifn].hfn;                  
                                                                                         │                  ioc->ioc_regs.lpu_mbox_cmd = rb + ct_p1reg[pcifn].lpu;                  
                ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P1;                            │                  ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P1;                           
                ioc->ioc_regs.alt_ll_halt = rb + FW_INIT_HALT_P0;                        │                  ioc->ioc_regs.alt_ll_halt = rb + FW_INIT_HALT_P0;                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /*                                                                               │          /*                                                                              
         * PSS control registers                                                         │           * PSS control registers                                                        
         */                                                                              │           */                                                                             
        ioc->ioc_regs.pss_ctl_reg = rb + PSS_CTL_REG;                                    │          ioc->ioc_regs.pss_ctl_reg = rb + PSS_CTL_REG;                                   
        ioc->ioc_regs.pss_err_status_reg = rb + PSS_ERR_STATUS_REG;                      │          ioc->ioc_regs.pss_err_status_reg = rb + PSS_ERR_STATUS_REG;                     
        ioc->ioc_regs.app_pll_fast_ctl_reg = rb + CT2_APP_PLL_LCLK_CTL_REG;              │          ioc->ioc_regs.app_pll_fast_ctl_reg = rb + APP_PLL_LCLK_CTL_REG;                 
        ioc->ioc_regs.app_pll_slow_ctl_reg = rb + CT2_APP_PLL_SCLK_CTL_REG;              │          ioc->ioc_regs.app_pll_slow_ctl_reg = rb + APP_PLL_SCLK_CTL_REG;                 
                                                                                         │                                                                                          
        /*                                                                               │          /*                                                                              
         * IOC semaphore registers and serialization                                     │           * IOC semaphore registers and serialization                                    
         */                                                                              │           */                                                                             
        ioc->ioc_regs.ioc_sem_reg = rb + CT2_HOST_SEM0_REG;                              │          ioc->ioc_regs.ioc_sem_reg = rb + HOST_SEM0_REG;                                 
        ioc->ioc_regs.ioc_usage_sem_reg = rb + CT2_HOST_SEM1_REG;                        │          ioc->ioc_regs.ioc_usage_sem_reg = rb + HOST_SEM1_REG;                           
        ioc->ioc_regs.ioc_init_sem_reg = rb + CT2_HOST_SEM2_REG;                         │          ioc->ioc_regs.ioc_init_sem_reg = rb + HOST_SEM2_REG;                            
        ioc->ioc_regs.ioc_usage_reg = rb + CT2_BFA_FW_USE_COUNT;                         │          ioc->ioc_regs.ioc_usage_reg = rb + BFA_FW_USE_COUNT;                            
        ioc->ioc_regs.ioc_fail_sync = rb + CT2_BFA_IOC_FAIL_SYNC;                        │          ioc->ioc_regs.ioc_fail_sync = rb + BFA_IOC_FAIL_SYNC;                           
                                                                                         │                                                                                          
        /**                                                                              │          /**                                                                             
         * sram memory access                                                            │           * sram memory access                                                           
         */                                                                              │           */                                                                             
        ioc->ioc_regs.smem_page_start = rb + PSS_SMEM_PAGE_START;                        │          ioc->ioc_regs.smem_page_start = rb + PSS_SMEM_PAGE_START;                       
        ioc->ioc_regs.smem_pg0 = BFI_IOC_SMEM_PG0_CT;                                    │          ioc->ioc_regs.smem_pg0 = BFI_IOC_SMEM_PG0_CT;                                   
                                                                                         │                                                                                          
        /*                                                                               │          /*                                                                              
         * err set reg : for notification of hb failure in fcmode                        │           * err set reg : for notification of hb failure in fcmode                       
         */                                                                              │           */                                                                             
        ioc->ioc_regs.err_set = rb + ERR_SET_REG;                                        │          ioc->ioc_regs.err_set = (rb + ERR_SET_REG);                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c:2742                             │ linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c:2667                              
                                                                                         │                                                                                          
        u32 tmp;                                                                         │          u32 val;                                                                        
        u8 i;                                                                            │          u16 i;                                                                          
        int rc = 0;                                                                      │          int rc = 0;                                                                     
        u32 chip_id;                                                                     │          u32 chip_id;                                                                    
        if (phy->flags & FLAGS_MDC_MDIO_WA_G) {                                          │          if (phy->flags & FLAGS_MDC_MDIO_WA_G) {                                         
                chip_id = (REG_RD(bp, MISC_REG_CHIP_NUM) << 16) |                        │                  chip_id = (REG_RD(bp, MISC_REG_CHIP_NUM) << 16) |                       
                          ((REG_RD(bp, MISC_REG_CHIP_REV) & 0xf) << 12);                 │                            ((REG_RD(bp, MISC_REG_CHIP_REV) & 0xf) << 12);                
                bnx2x_set_mdio_clk(bp, chip_id, phy->mdio_ctrl);                         │                  bnx2x_set_mdio_clk(bp, chip_id, phy->mdio_ctrl);                        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (phy->flags & FLAGS_MDC_MDIO_WA_B0)                                           │          if (phy->flags & FLAGS_MDC_MDIO_WA_B0)                                          
                bnx2x_bits_en(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_STATUS,            │                  bnx2x_bits_en(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_STATUS,           
                              EMAC_MDIO_STATUS_10MB);                                    │                                EMAC_MDIO_STATUS_10MB);                                   
                                                                                         │                                                                                          
        /* Address */                                                                    │          /* Address */                                                                   
        tmp = ((phy->addr << 21) | (devad << 16) | reg |                                 │          val = ((phy->addr << 21) | (devad << 16) | reg |                                
               EMAC_MDIO_COMM_COMMAND_ADDRESS |                                          │                 EMAC_MDIO_COMM_COMMAND_ADDRESS |                                         
               EMAC_MDIO_COMM_START_BUSY);                                               │                 EMAC_MDIO_COMM_START_BUSY);                                              
        REG_WR(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, tmp);                       │          REG_WR(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, val);                      
                                                                                         │                                                                                          
        for (i = 0; i < 50; i++) {                                                       │          for (i = 0; i < 50; i++) {                                                      
                udelay(10);                                                              │                  udelay(10);                                                             
                                                                                         │                                                                                          
                tmp = REG_RD(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM);              │                  val = REG_RD(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM);             
                if (!(tmp & EMAC_MDIO_COMM_START_BUSY)) {                                │                  if (!(val & EMAC_MDIO_COMM_START_BUSY)) {                               
                        udelay(5);                                                       │                          udelay(5);                                                      
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
        if (tmp & EMAC_MDIO_COMM_START_BUSY) {                                           │          if (val & EMAC_MDIO_COMM_START_BUSY) {                                          
                DP(NETIF_MSG_LINK, "write phy register failed\n");                       │                  DP(NETIF_MSG_LINK, "read phy register failed\n");                       
                netdev_err(bp->dev,  "MDC/MDIO access timeout\n");                       │                  netdev_err(bp->dev,  "MDC/MDIO access timeout\n");                      
                                                                                         │                  *ret_val = 0;                                                           
                rc = -EFAULT;                                                            │                  rc = -EFAULT;                                                           
        } else {                                                                         │          } else {                                                                        
                /* Data */                                                               │                  /* Data */                                                              
                tmp = ((phy->addr << 21) | (devad << 16) | val |                         │                  val = ((phy->addr << 21) | (devad << 16) |                              
                       EMAC_MDIO_COMM_COMMAND_WRITE_45 |                                 │                         EMAC_MDIO_COMM_COMMAND_READ_45 |                                 
                       EMAC_MDIO_COMM_START_BUSY);                                       │                         EMAC_MDIO_COMM_START_BUSY);                                      
                REG_WR(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, tmp);               │                  REG_WR(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, val);              
                                                                                         │                                                                                          
                for (i = 0; i < 50; i++) {                                               │                  for (i = 0; i < 50; i++) {                                              
                        udelay(10);                                                      │                          udelay(10);                                                     
                                                                                         │                                                                                          
                        tmp = REG_RD(bp, phy->mdio_ctrl +                                │                          val = REG_RD(bp, phy->mdio_ctrl +                               
                                     EMAC_REG_EMAC_MDIO_COMM);                           │                                       EMAC_REG_EMAC_MDIO_COMM);                          
                        if (!(tmp & EMAC_MDIO_COMM_START_BUSY)) {                        │                          if (!(val & EMAC_MDIO_COMM_START_BUSY)) {                       
                                udelay(5);                                               │                                  *ret_val = (u16)(val & EMAC_MDIO_COMM_DATA);            
                                break;                                                   │                                  break;                                                  
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                if (tmp & EMAC_MDIO_COMM_START_BUSY) {                                   │                  if (val & EMAC_MDIO_COMM_START_BUSY) {                                  
                        DP(NETIF_MSG_LINK, "write phy register failed\n");               │                          DP(NETIF_MSG_LINK, "read phy register failed\n");               
                        netdev_err(bp->dev,  "MDC/MDIO access timeout\n");               │                          netdev_err(bp->dev,  "MDC/MDIO access timeout\n");              
                                                                                         │                          *ret_val = 0;                                                   
                        rc = -EFAULT;                                                    │                          rc = -EFAULT;                                                   
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
        /* Work around for E3 A0 */                                                      │          /* Work around for E3 A0 */                                                     
        if (phy->flags & FLAGS_MDC_MDIO_WA) {                                            │          if (phy->flags & FLAGS_MDC_MDIO_WA) {                                           
                phy->flags ^= FLAGS_DUMMY_READ;                                          │                  phy->flags ^= FLAGS_DUMMY_READ;                                         
                if (phy->flags & FLAGS_DUMMY_READ) {                                     │                  if (phy->flags & FLAGS_DUMMY_READ) {                                    
                        u16 temp_val;                                                    │                          u16 temp_val;                                                   
                        bnx2x_cl45_read(bp, phy, devad, 0xf, &temp_val);                 │                          bnx2x_cl45_read(bp, phy, devad, 0xf, &temp_val);                
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (phy->flags & FLAGS_MDC_MDIO_WA_B0)                                           │          if (phy->flags & FLAGS_MDC_MDIO_WA_B0)                                          
                bnx2x_bits_dis(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_STATUS,           │                  bnx2x_bits_dis(bp, phy->mdio_ctrl + EMAC_REG_EMAC_MDIO_STATUS,          
                               EMAC_MDIO_STATUS_10MB);                                   │                                 EMAC_MDIO_STATUS_10MB);                                  
        return rc;                                                                       │          return rc;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/skge.h:1618                                          │ linux/drivers/net/ethernet/marvell/sky2.h:1631                                           
                                                                                         │                                                                                          
        GM_GP_STAT      = 0x0000,       /* 16 bit r/o   General Purpose Status */        │          GM_GP_STAT      = 0x0000,       /* 16 bit r/o   General Purpose Status */       
        GM_GP_CTRL      = 0x0004,       /* 16 bit r/w   General Purpose Control */       │          GM_GP_CTRL      = 0x0004,       /* 16 bit r/w   General Purpose Control */      
        GM_TX_CTRL      = 0x0008,       /* 16 bit r/w   Transmit Control Reg. */         │          GM_TX_CTRL      = 0x0008,       /* 16 bit r/w   Transmit Control Reg. */        
        GM_RX_CTRL      = 0x000c,       /* 16 bit r/w   Receive Control Reg. */          │          GM_RX_CTRL      = 0x000c,       /* 16 bit r/w   Receive Control Reg. */         
        GM_TX_FLOW_CTRL = 0x0010,       /* 16 bit r/w   Transmit Flow-Control */         │          GM_TX_FLOW_CTRL = 0x0010,       /* 16 bit r/w   Transmit Flow-Control */        
        GM_TX_PARAM     = 0x0014,       /* 16 bit r/w   Transmit Parameter Reg. */       │          GM_TX_PARAM     = 0x0014,       /* 16 bit r/w   Transmit Parameter Reg. */      
        GM_SERIAL_MODE  = 0x0018,       /* 16 bit r/w   Serial Mode Register */          │          GM_SERIAL_MODE  = 0x0018,       /* 16 bit r/w   Serial Mode Register */         
/* Source Address Registers */                                                           │  /* Source Address Registers */                                                          
        GM_SRC_ADDR_1L  = 0x001c,       /* 16 bit r/w   Source Address 1 (low) */        │          GM_SRC_ADDR_1L  = 0x001c,       /* 16 bit r/w   Source Address 1 (low) */       
        GM_SRC_ADDR_1M  = 0x0020,       /* 16 bit r/w   Source Address 1 (middle) */     │          GM_SRC_ADDR_1M  = 0x0020,       /* 16 bit r/w   Source Address 1 (middle) */    
        GM_SRC_ADDR_1H  = 0x0024,       /* 16 bit r/w   Source Address 1 (high) */       │          GM_SRC_ADDR_1H  = 0x0024,       /* 16 bit r/w   Source Address 1 (high) */      
        GM_SRC_ADDR_2L  = 0x0028,       /* 16 bit r/w   Source Address 2 (low) */        │          GM_SRC_ADDR_2L  = 0x0028,       /* 16 bit r/w   Source Address 2 (low) */       
        GM_SRC_ADDR_2M  = 0x002c,       /* 16 bit r/w   Source Address 2 (middle) */     │          GM_SRC_ADDR_2M  = 0x002c,       /* 16 bit r/w   Source Address 2 (middle) */    
        GM_SRC_ADDR_2H  = 0x0030,       /* 16 bit r/w   Source Address 2 (high) */       │          GM_SRC_ADDR_2H  = 0x0030,       /* 16 bit r/w   Source Address 2 (high) */      
                                                                                         │                                                                                          
/* Multicast Address Hash Registers */                                                   │  /* Multicast Address Hash Registers */                                                  
        GM_MC_ADDR_H1   = 0x0034,       /* 16 bit r/w   Multicast Address Hash 1 */      │          GM_MC_ADDR_H1   = 0x0034,       /* 16 bit r/w   Multicast Address Hash 1 */     
        GM_MC_ADDR_H2   = 0x0038,       /* 16 bit r/w   Multicast Address Hash 2 */      │          GM_MC_ADDR_H2   = 0x0038,       /* 16 bit r/w   Multicast Address Hash 2 */     
        GM_MC_ADDR_H3   = 0x003c,       /* 16 bit r/w   Multicast Address Hash 3 */      │          GM_MC_ADDR_H3   = 0x003c,       /* 16 bit r/w   Multicast Address Hash 3 */     
        GM_MC_ADDR_H4   = 0x0040,       /* 16 bit r/w   Multicast Address Hash 4 */      │          GM_MC_ADDR_H4   = 0x0040,       /* 16 bit r/w   Multicast Address Hash 4 */     
                                                                                         │                                                                                          
/* Interrupt Source Registers */                                                         │  /* Interrupt Source Registers */                                                        
        GM_TX_IRQ_SRC   = 0x0044,       /* 16 bit r/o   Tx Overflow IRQ Source */        │          GM_TX_IRQ_SRC   = 0x0044,       /* 16 bit r/o   Tx Overflow IRQ Source */       
        GM_RX_IRQ_SRC   = 0x0048,       /* 16 bit r/o   Rx Overflow IRQ Source */        │          GM_RX_IRQ_SRC   = 0x0048,       /* 16 bit r/o   Rx Overflow IRQ Source */       
        GM_TR_IRQ_SRC   = 0x004c,       /* 16 bit r/o   Tx/Rx Over. IRQ Source */        │          GM_TR_IRQ_SRC   = 0x004c,       /* 16 bit r/o   Tx/Rx Over. IRQ Source */       
                                                                                         │                                                                                          
/* Interrupt Mask Registers */                                                           │  /* Interrupt Mask Registers */                                                          
        GM_TX_IRQ_MSK   = 0x0050,       /* 16 bit r/w   Tx Overflow IRQ Mask */          │          GM_TX_IRQ_MSK   = 0x0050,       /* 16 bit r/w   Tx Overflow IRQ Mask */         
        GM_RX_IRQ_MSK   = 0x0054,       /* 16 bit r/w   Rx Overflow IRQ Mask */          │          GM_RX_IRQ_MSK   = 0x0054,       /* 16 bit r/w   Rx Overflow IRQ Mask */         
        GM_TR_IRQ_MSK   = 0x0058,       /* 16 bit r/w   Tx/Rx Over. IRQ Mask */          │          GM_TR_IRQ_MSK   = 0x0058,       /* 16 bit r/w   Tx/Rx Over. IRQ Mask */         
                                                                                         │                                                                                          
/* Serial Management Interface (SMI) Registers */                                        │  /* Serial Management Interface (SMI) Registers */                                       
        GM_SMI_CTRL     = 0x0080,       /* 16 bit r/w   SMI Control Register */          │          GM_SMI_CTRL     = 0x0080,       /* 16 bit r/w   SMI Control Register */         
        GM_SMI_DATA     = 0x0084,       /* 16 bit r/w   SMI Data Register */             │          GM_SMI_DATA     = 0x0084,       /* 16 bit r/w   SMI Data Register */            
        GM_PHY_ADDR     = 0x0088,       /* 16 bit r/w   GPHY Address Register */         │          GM_PHY_ADDR     = 0x0088,       /* 16 bit r/w   GPHY Address Register */        
                                                                                         │  /* MIB Counters */                                                                      
                                                                                         │          GM_MIB_CNT_BASE = 0x0100,       /* Base Address of MIB Counters */              
                                                                                         │          GM_MIB_CNT_END  = 0x025C,       /* Last MIB counter */                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_debug.c:4285                                  │ linux/drivers/net/ethernet/qlogic/qed/qed_debug.c:4355                                   
                                                                                         │                                                                                          
        u32 dwords_read, size_param_offset, offset = 0, addr, len;                       │          u32 dwords_read, size_param_offset, offset = 0, addr, len;                      
        bool fifo_has_data;                                                              │          bool fifo_has_data;                                                             
                                                                                         │                                                                                          
        *num_dumped_dwords = 0;                                                          │          *num_dumped_dwords = 0;                                                         
                                                                                         │                                                                                          
        /* Dump global params */                                                         │          /* Dump global params */                                                        
        offset += qed_dump_common_global_params(p_hwfn,                                  │          offset += qed_dump_common_global_params(p_hwfn,                                 
                                                p_ptt,                                   │                                                  p_ptt,                                  
                                                dump_buf + offset, dump, 1);             │                                                  dump_buf + offset, dump, 1);            
        offset += qed_dump_str_param(dump_buf + offset,                                  │          offset += qed_dump_str_param(dump_buf + offset,                                 
                                     dump, "dump-type", "reg-fifo");                     │                                       dump, "dump-type", "igu-fifo");                    
                                                                                         │                                                                                          
        /* Dump fifo data section header and param. The size param is 0 for              │          /* Dump fifo data section header and param. The size param is 0 for             
         * now, and is overwritten after reading the FIFO.                               │           * now, and is overwritten after reading the FIFO.                              
         */                                                                              │           */                                                                             
        offset += qed_dump_section_hdr(dump_buf + offset,                                │          offset += qed_dump_section_hdr(dump_buf + offset,                               
                                       dump, "reg_fifo_data", 1);                        │                                         dump, "igu_fifo_data", 1);                       
        size_param_offset = offset;                                                      │          size_param_offset = offset;                                                     
        offset += qed_dump_num_param(dump_buf + offset, dump, "size", 0);                │          offset += qed_dump_num_param(dump_buf + offset, dump, "size", 0);               
                                                                                         │                                                                                          
        if (!dump) {                                                                     │          if (!dump) {                                                                    
                /* FIFO max size is REG_FIFO_DEPTH_DWORDS. There is no way to            │                  /* FIFO max size is IGU_FIFO_DEPTH_DWORDS. There is no way to           
                 * test how much data is available, except for reading it.               │                   * test how much data is available, except for reading it.              
                 */                                                                      │                   */                                                                     
                offset += REG_FIFO_DEPTH_DWORDS;                                         │                  offset += IGU_FIFO_DEPTH_DWORDS;                                        
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        fifo_has_data = qed_rd(p_hwfn, p_ptt,                                            │          fifo_has_data = qed_rd(p_hwfn, p_ptt,                                           
                               GRC_REG_TRACE_FIFO_VALID_DATA) > 0;                       │                                 IGU_REG_ERROR_HANDLING_DATA_VALID) > 0;                  
                                                                                         │                                                                                          
        /* Pull available data from fifo. Use DMAE since this is widebus memory          │          /* Pull available data from fifo. Use DMAE since this is widebus memory         
         * and must be accessed atomically. Test for dwords_read not passing             │           * and must be accessed atomically. Test for dwords_read not passing            
         * buffer size since more entries could be added to the buffer as we are         │           * buffer size since more entries could be added to the buffer as we are        
         * emptying it.                                                                  │           * emptying it.                                                                 
         */                                                                              │           */                                                                             
        addr = BYTES_TO_DWORDS(GRC_REG_TRACE_FIFO);                                      │          addr = BYTES_TO_DWORDS(IGU_REG_ERROR_HANDLING_MEMORY);                          
        len = REG_FIFO_ELEMENT_DWORDS;                                                   │          len = IGU_FIFO_ELEMENT_DWORDS;                                                  
        for (dwords_read = 0;                                                            │          for (dwords_read = 0;                                                           
             fifo_has_data && dwords_read < REG_FIFO_DEPTH_DWORDS;                       │               fifo_has_data && dwords_read < IGU_FIFO_DEPTH_DWORDS;                      
             dwords_read += REG_FIFO_ELEMENT_DWORDS) {                                   │               dwords_read += IGU_FIFO_ELEMENT_DWORDS) {                                  
                offset += qed_grc_dump_addr_range(p_hwfn,                                │                  offset += qed_grc_dump_addr_range(p_hwfn,                               
                                                  p_ptt,                                 │                                                    p_ptt,                                
                                                  dump_buf + offset,                     │                                                    dump_buf + offset,                    
                                                  true,                                  │                                                    true,                                 
                                                  addr,                                  │                                                    addr,                                 
                                                  len,                                   │                                                    len,                                  
                                                  true, SPLIT_TYPE_NONE,                 │                                                    true, SPLIT_TYPE_NONE,                
                                                  0);                                    │                                                    0);                                   
                fifo_has_data = qed_rd(p_hwfn, p_ptt,                                    │                  fifo_has_data = qed_rd(p_hwfn, p_ptt,                                   
                                       GRC_REG_TRACE_FIFO_VALID_DATA) > 0;               │                                         IGU_REG_ERROR_HANDLING_DATA_VALID) > 0;          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        qed_dump_num_param(dump_buf + size_param_offset, dump, "size",                   │          qed_dump_num_param(dump_buf + size_param_offset, dump, "size",                  
                           dwords_read);                                                 │                             dwords_read);                                                
out:                                                                                     │  out:                                                                                    
        /* Dump last section */                                                          │          /* Dump last section */                                                         
        offset += qed_dump_last_section(dump_buf, offset, dump);                         │          offset += qed_dump_last_section(dump_buf, offset, dump);                        
                                                                                         │                                                                                          
        *num_dumped_dwords = offset;                                                     │          *num_dumped_dwords = offset;                                                    
                                                                                         │                                                                                          
        return DBG_STATUS_OK;                                                            │          return DBG_STATUS_OK;                                                           
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:32                                   │ linux/drivers/net/ethernet/intel/igc/igc_ethtool.c:25                                    
                                                                                         │                                                                                          
        IGB_STAT("rx_packets", stats.gprc),                                              │          IGC_STAT("rx_packets", stats.gprc),                                             
        IGB_STAT("tx_packets", stats.gptc),                                              │          IGC_STAT("tx_packets", stats.gptc),                                             
        IGB_STAT("rx_bytes", stats.gorc),                                                │          IGC_STAT("rx_bytes", stats.gorc),                                               
        IGB_STAT("tx_bytes", stats.gotc),                                                │          IGC_STAT("tx_bytes", stats.gotc),                                               
        IGB_STAT("rx_broadcast", stats.bprc),                                            │          IGC_STAT("rx_broadcast", stats.bprc),                                           
        IGB_STAT("tx_broadcast", stats.bptc),                                            │          IGC_STAT("tx_broadcast", stats.bptc),                                           
        IGB_STAT("rx_multicast", stats.mprc),                                            │          IGC_STAT("rx_multicast", stats.mprc),                                           
        IGB_STAT("tx_multicast", stats.mptc),                                            │          IGC_STAT("tx_multicast", stats.mptc),                                           
        IGB_STAT("multicast", stats.mprc),                                               │          IGC_STAT("multicast", stats.mprc),                                              
        IGB_STAT("collisions", stats.colc),                                              │          IGC_STAT("collisions", stats.colc),                                             
        IGB_STAT("rx_crc_errors", stats.crcerrs),                                        │          IGC_STAT("rx_crc_errors", stats.crcerrs),                                       
        IGB_STAT("rx_no_buffer_count", stats.rnbc),                                      │          IGC_STAT("rx_no_buffer_count", stats.rnbc),                                     
        IGB_STAT("rx_missed_errors", stats.mpc),                                         │          IGC_STAT("rx_missed_errors", stats.mpc),                                        
        IGB_STAT("tx_aborted_errors", stats.ecol),                                       │          IGC_STAT("tx_aborted_errors", stats.ecol),                                      
        IGB_STAT("tx_carrier_errors", stats.tncrs),                                      │          IGC_STAT("tx_carrier_errors", stats.tncrs),                                     
        IGB_STAT("tx_window_errors", stats.latecol),                                     │          IGC_STAT("tx_window_errors", stats.latecol),                                    
        IGB_STAT("tx_abort_late_coll", stats.latecol),                                   │          IGC_STAT("tx_abort_late_coll", stats.latecol),                                  
        IGB_STAT("tx_deferred_ok", stats.dc),                                            │          IGC_STAT("tx_deferred_ok", stats.dc),                                           
        IGB_STAT("tx_single_coll_ok", stats.scc),                                        │          IGC_STAT("tx_single_coll_ok", stats.scc),                                       
        IGB_STAT("tx_multi_coll_ok", stats.mcc),                                         │          IGC_STAT("tx_multi_coll_ok", stats.mcc),                                        
        IGB_STAT("tx_timeout_count", tx_timeout_count),                                  │          IGC_STAT("tx_timeout_count", tx_timeout_count),                                 
        IGB_STAT("rx_long_length_errors", stats.roc),                                    │          IGC_STAT("rx_long_length_errors", stats.roc),                                   
        IGB_STAT("rx_short_length_errors", stats.ruc),                                   │          IGC_STAT("rx_short_length_errors", stats.ruc),                                  
        IGB_STAT("rx_align_errors", stats.algnerrc),                                     │          IGC_STAT("rx_align_errors", stats.algnerrc),                                    
        IGB_STAT("tx_tcp_seg_good", stats.tsctc),                                        │          IGC_STAT("tx_tcp_seg_good", stats.tsctc),                                       
        IGB_STAT("tx_tcp_seg_failed", stats.tsctfc),                                     │          IGC_STAT("tx_tcp_seg_failed", stats.tsctfc),                                    
        IGB_STAT("rx_flow_control_xon", stats.xonrxc),                                   │          IGC_STAT("rx_flow_control_xon", stats.xonrxc),                                  
        IGB_STAT("rx_flow_control_xoff", stats.xoffrxc),                                 │          IGC_STAT("rx_flow_control_xoff", stats.xoffrxc),                                
        IGB_STAT("tx_flow_control_xon", stats.xontxc),                                   │          IGC_STAT("tx_flow_control_xon", stats.xontxc),                                  
        IGB_STAT("tx_flow_control_xoff", stats.xofftxc),                                 │          IGC_STAT("tx_flow_control_xoff", stats.xofftxc),                                
        IGB_STAT("rx_long_byte_count", stats.gorc),                                      │          IGC_STAT("rx_long_byte_count", stats.gorc),                                     
        IGB_STAT("tx_dma_out_of_sync", stats.doosync),                                   │          IGC_STAT("tx_dma_out_of_sync", stats.doosync),                                  
        IGB_STAT("tx_smbus", stats.mgptc),                                               │          IGC_STAT("tx_smbus", stats.mgptc),                                              
        IGB_STAT("rx_smbus", stats.mgprc),                                               │          IGC_STAT("rx_smbus", stats.mgprc),                                              
        IGB_STAT("dropped_smbus", stats.mgpdc),                                          │          IGC_STAT("dropped_smbus", stats.mgpdc),                                         
        IGB_STAT("os2bmc_rx_by_bmc", stats.o2bgptc),                                     │          IGC_STAT("os2bmc_rx_by_bmc", stats.o2bgptc),                                    
        IGB_STAT("os2bmc_tx_by_bmc", stats.b2ospc),                                      │          IGC_STAT("os2bmc_tx_by_bmc", stats.b2ospc),                                     
        IGB_STAT("os2bmc_tx_by_host", stats.o2bspc),                                     │          IGC_STAT("os2bmc_tx_by_host", stats.o2bspc),                                    
        IGB_STAT("os2bmc_rx_by_host", stats.b2ogprc),                                    │          IGC_STAT("os2bmc_rx_by_host", stats.b2ogprc),                                   
        IGB_STAT("tx_hwtstamp_timeouts", tx_hwtstamp_timeouts),                          │          IGC_STAT("tx_hwtstamp_timeouts", tx_hwtstamp_timeouts),                         
        IGB_STAT("tx_hwtstamp_skipped", tx_hwtstamp_skipped),                            │          IGC_STAT("tx_hwtstamp_skipped", tx_hwtstamp_skipped),                           
        IGB_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared),                            │          IGC_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared),                           
                                                                                         │          IGC_STAT("tx_lpi_counter", stats.tlpic),                                        
                                                                                         │          IGC_STAT("rx_lpi_counter", stats.rlpic),                                        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/ich8lan.c:3615                                  │ linux/drivers/net/ethernet/intel/e1000e/ich8lan.c:3691                                   
                                                                                         │                                                                                          
        union ich8_hws_flash_status hsfsts;                                              │          union ich8_hws_flash_status hsfsts;                                             
        union ich8_hws_flash_ctrl hsflctl;                                               │          union ich8_hws_flash_ctrl hsflctl;                                              
        u32 flash_linear_addr;                                                           │          u32 flash_linear_addr;                                                          
        u32 flash_data = 0;                                                              │                                                                                          
        s32 ret_val = -E1000_ERR_NVM;                                                    │          s32 ret_val = -E1000_ERR_NVM;                                                   
        u8 count = 0;                                                                    │          u8 count = 0;                                                                   
                                                                                         │                                                                                          
        if (size < 1 || size > 2 || offset > ICH_FLASH_LINEAR_ADDR_MASK)                 │          if (offset > ICH_FLASH_LINEAR_ADDR_MASK || hw->mac.type < e1000_pch_spt)        
                return -E1000_ERR_NVM;                                                   │                  return -E1000_ERR_NVM;                                                  
                                                                                         │                                                                                          
        flash_linear_addr = ((ICH_FLASH_LINEAR_ADDR_MASK & offset) +                     │          flash_linear_addr = ((ICH_FLASH_LINEAR_ADDR_MASK & offset) +                    
                             hw->nvm.flash_base_addr);                                   │                               hw->nvm.flash_base_addr);                                  
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                udelay(1);                                                               │                  udelay(1);                                                              
                /* Steps */                                                              │                  /* Steps */                                                             
                ret_val = e1000_flash_cycle_init_ich8lan(hw);                            │                  ret_val = e1000_flash_cycle_init_ich8lan(hw);                           
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        break;                                                           │                          break;                                                          
                                                                                         │                  /* In SPT, This register is in Lan memory space, not flash.             
                                                                                         │                   * Therefore, only 32 bit access is supported                           
                                                                                         │                   */                                                                     
                                                                                         │                  hsflctl.regval = er32flash(ICH_FLASH_HSFSTS) >> 16;                     
                                                                                         │                                                                                          
                hsflctl.regval = er16flash(ICH_FLASH_HSFCTL);                            │                                                                                          
                /* 0b/1b corresponds to 1 or 2 byte size, respectively. */               │                  /* 0b/1b corresponds to 1 or 2 byte size, respectively. */              
                hsflctl.hsf_ctrl.fldbcount = size - 1;                                   │                  hsflctl.hsf_ctrl.fldbcount = sizeof(u32) - 1;                           
                hsflctl.hsf_ctrl.flcycle = ICH_CYCLE_READ;                               │                  hsflctl.hsf_ctrl.flcycle = ICH_CYCLE_READ;                              
                ew16flash(ICH_FLASH_HSFCTL, hsflctl.regval);                             │                  /* In SPT, This register is in Lan memory space, not flash.             
                                                                                         │                   * Therefore, only 32 bit access is supported                           
                                                                                         │                   */                                                                     
                                                                                         │                  ew32flash(ICH_FLASH_HSFSTS, (u32)hsflctl.regval << 16);                 
                ew32flash(ICH_FLASH_FADDR, flash_linear_addr);                           │                  ew32flash(ICH_FLASH_FADDR, flash_linear_addr);                          
                                                                                         │                                                                                          
                ret_val =                                                                │                  ret_val =                                                               
                    e1000_flash_cycle_ich8lan(hw,                                        │                     e1000_flash_cycle_ich8lan(hw,                                        
                                              ICH_FLASH_READ_COMMAND_TIMEOUT);           │                                               ICH_FLASH_READ_COMMAND_TIMEOUT);           
                                                                                         │                                                                                          
                /* Check if FCERR is set to 1, if set to 1, clear it                     │                  /* Check if FCERR is set to 1, if set to 1, clear it                    
                 * and try the whole sequence a few more times, else                     │                   * and try the whole sequence a few more times, else                    
                 * read in (shift in) the Flash Data0, the order is                      │                   * read in (shift in) the Flash Data0, the order is                     
                 * least significant byte first msb to lsb                               │                   * least significant byte first msb to lsb                              
                 */                                                                      │                   */                                                                     
                if (!ret_val) {                                                          │                  if (!ret_val) {                                                         
                        flash_data = er32flash(ICH_FLASH_FDATA0);                        │                          *data = er32flash(ICH_FLASH_FDATA0);                            
                        if (size == 1)                                                   │                                                                                          
                                *data = (u8)(flash_data & 0x000000FF);                   │                                                                                          
                        else if (size == 2)                                              │                                                                                          
                                *data = (u16)(flash_data & 0x0000FFFF);                  │                                                                                          
                        break;                                                           │                          break;                                                          
                } else {                                                                 │                  } else {                                                                
                        /* If we've gotten here, then things are probably                │                          /* If we've gotten here, then things are probably               
                         * completely hosed, but if the error condition is               │                           * completely hosed, but if the error condition is              
                         * detected, it won't hurt to give it another try...             │                           * detected, it won't hurt to give it another try...            
                         * ICH_FLASH_CYCLE_REPEAT_COUNT times.                           │                           * ICH_FLASH_CYCLE_REPEAT_COUNT times.                          
                         */                                                              │                           */                                                             
                        hsfsts.regval = er16flash(ICH_FLASH_HSFSTS);                     │                          hsfsts.regval = er16flash(ICH_FLASH_HSFSTS);                    
                        if (hsfsts.hsf_status.flcerr) {                                  │                          if (hsfsts.hsf_status.flcerr) {                                 
                                /* Repeat for some time before giving up. */             │                                  /* Repeat for some time before giving up. */            
                                continue;                                                │                                  continue;                                               
                        } else if (!hsfsts.hsf_status.flcdone) {                         │                          } else if (!hsfsts.hsf_status.flcdone) {                        
                                e_dbg("Timeout error - flash cycle did not complete.\n") │                                  e_dbg("Timeout error - flash cycle did not complete.\n")
                                break;                                                   │                                  break;                                                  
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        } while (count++ < ICH_FLASH_CYCLE_REPEAT_COUNT);                                │          } while (count++ < ICH_FLASH_CYCLE_REPEAT_COUNT);                               
                                                                                         │                                                                                          
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:1456                          │ linux/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:1517                           
                                                                                         │                                                                                          
        .core_init = dwxgmac2_core_init,                                                 │          .core_init = dwxgmac2_core_init,                                                
        .set_mac = dwxgmac2_set_mac,                                                     │          .set_mac = dwxgmac2_set_mac,                                                    
        .rx_ipc = dwxgmac2_rx_ipc,                                                       │          .rx_ipc = dwxgmac2_rx_ipc,                                                      
        .rx_queue_enable = dwxgmac2_rx_queue_enable,                                     │          .rx_queue_enable = dwxlgmac2_rx_queue_enable,                                   
        .rx_queue_prio = dwxgmac2_rx_queue_prio,                                         │          .rx_queue_prio = dwxgmac2_rx_queue_prio,                                        
        .tx_queue_prio = dwxgmac2_tx_queue_prio,                                         │          .tx_queue_prio = dwxgmac2_tx_queue_prio,                                        
        .rx_queue_routing = NULL,                                                        │          .rx_queue_routing = NULL,                                                       
        .prog_mtl_rx_algorithms = dwxgmac2_prog_mtl_rx_algorithms,                       │          .prog_mtl_rx_algorithms = dwxgmac2_prog_mtl_rx_algorithms,                      
        .prog_mtl_tx_algorithms = dwxgmac2_prog_mtl_tx_algorithms,                       │          .prog_mtl_tx_algorithms = dwxgmac2_prog_mtl_tx_algorithms,                      
        .set_mtl_tx_queue_weight = dwxgmac2_set_mtl_tx_queue_weight,                     │          .set_mtl_tx_queue_weight = dwxgmac2_set_mtl_tx_queue_weight,                    
        .map_mtl_to_dma = dwxgmac2_map_mtl_to_dma,                                       │          .map_mtl_to_dma = dwxgmac2_map_mtl_to_dma,                                      
        .config_cbs = dwxgmac2_config_cbs,                                               │          .config_cbs = dwxgmac2_config_cbs,                                              
        .dump_regs = dwxgmac2_dump_regs,                                                 │          .dump_regs = dwxgmac2_dump_regs,                                                
        .host_irq_status = dwxgmac2_host_irq_status,                                     │          .host_irq_status = dwxgmac2_host_irq_status,                                    
        .host_mtl_irq_status = dwxgmac2_host_mtl_irq_status,                             │          .host_mtl_irq_status = dwxgmac2_host_mtl_irq_status,                            
        .flow_ctrl = dwxgmac2_flow_ctrl,                                                 │          .flow_ctrl = dwxgmac2_flow_ctrl,                                                
        .pmt = dwxgmac2_pmt,                                                             │          .pmt = dwxgmac2_pmt,                                                            
        .set_umac_addr = dwxgmac2_set_umac_addr,                                         │          .set_umac_addr = dwxgmac2_set_umac_addr,                                        
        .get_umac_addr = dwxgmac2_get_umac_addr,                                         │          .get_umac_addr = dwxgmac2_get_umac_addr,                                        
        .set_eee_mode = dwxgmac2_set_eee_mode,                                           │          .set_eee_mode = dwxgmac2_set_eee_mode,                                          
        .reset_eee_mode = dwxgmac2_reset_eee_mode,                                       │          .reset_eee_mode = dwxgmac2_reset_eee_mode,                                      
        .set_eee_timer = dwxgmac2_set_eee_timer,                                         │          .set_eee_timer = dwxgmac2_set_eee_timer,                                        
        .set_eee_pls = dwxgmac2_set_eee_pls,                                             │          .set_eee_pls = dwxgmac2_set_eee_pls,                                            
        .pcs_ctrl_ane = NULL,                                                            │          .pcs_ctrl_ane = NULL,                                                           
        .pcs_rane = NULL,                                                                │          .pcs_rane = NULL,                                                               
        .pcs_get_adv_lp = NULL,                                                          │          .pcs_get_adv_lp = NULL,                                                         
        .debug = NULL,                                                                   │          .debug = NULL,                                                                  
        .set_filter = dwxgmac2_set_filter,                                               │          .set_filter = dwxgmac2_set_filter,                                              
        .safety_feat_config = dwxgmac3_safety_feat_config,                               │          .safety_feat_config = dwxgmac3_safety_feat_config,                              
        .safety_feat_irq_status = dwxgmac3_safety_feat_irq_status,                       │          .safety_feat_irq_status = dwxgmac3_safety_feat_irq_status,                      
        .safety_feat_dump = dwxgmac3_safety_feat_dump,                                   │          .safety_feat_dump = dwxgmac3_safety_feat_dump,                                  
        .set_mac_loopback = dwxgmac2_set_mac_loopback,                                   │          .set_mac_loopback = dwxgmac2_set_mac_loopback,                                  
        .rss_configure = dwxgmac2_rss_configure,                                         │          .rss_configure = dwxgmac2_rss_configure,                                        
        .update_vlan_hash = dwxgmac2_update_vlan_hash,                                   │          .update_vlan_hash = dwxgmac2_update_vlan_hash,                                  
        .rxp_config = dwxgmac3_rxp_config,                                               │          .rxp_config = dwxgmac3_rxp_config,                                              
        .get_mac_tx_timestamp = dwxgmac2_get_mac_tx_timestamp,                           │          .get_mac_tx_timestamp = dwxgmac2_get_mac_tx_timestamp,                          
        .flex_pps_config = dwxgmac2_flex_pps_config,                                     │          .flex_pps_config = dwxgmac2_flex_pps_config,                                    
        .sarc_configure = dwxgmac2_sarc_configure,                                       │          .sarc_configure = dwxgmac2_sarc_configure,                                      
        .enable_vlan = dwxgmac2_enable_vlan,                                             │          .enable_vlan = dwxgmac2_enable_vlan,                                            
        .config_l3_filter = dwxgmac2_config_l3_filter,                                   │          .config_l3_filter = dwxgmac2_config_l3_filter,                                  
        .config_l4_filter = dwxgmac2_config_l4_filter,                                   │          .config_l4_filter = dwxgmac2_config_l4_filter,                                  
        .set_arp_offload = dwxgmac2_set_arp_offload,                                     │          .set_arp_offload = dwxgmac2_set_arp_offload,                                    
        .est_configure = dwxgmac3_est_configure,                                         │          .est_configure = dwxgmac3_est_configure,                                        
        .fpe_configure = dwxgmac3_fpe_configure,                                         │          .fpe_configure = dwxgmac3_fpe_configure,                                        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/sunlance.c:563                                           │ linux/drivers/net/ethernet/amd/sunlance.c:731                                            
                                                                                         │                                                                                          
        struct lance_private *lp = netdev_priv(dev);                                     │          struct lance_private *lp = netdev_priv(dev);                                    
        struct lance_init_block *ib = lp->init_block_mem;                                │          struct lance_init_block __iomem *ib = lp->init_block_iomem;                     
        int i, j;                                                                        │          int i, j;                                                                       
                                                                                         │                                                                                          
        spin_lock(&lp->lock);                                                            │          spin_lock(&lp->lock);                                                           
                                                                                         │                                                                                          
        j = lp->tx_old;                                                                  │          j = lp->tx_old;                                                                 
        for (i = j; i != lp->tx_new; i = j) {                                            │          for (i = j; i != lp->tx_new; i = j) {                                           
                struct lance_tx_desc *td = &ib->btx_ring [i];                            │                  struct lance_tx_desc __iomem *td = &ib->btx_ring [i];                   
                u8 bits = td->tmd1_bits;                                                 │                  u8 bits = sbus_readb(&td->tmd1_bits);                                   
                                                                                         │                                                                                          
                /* If we hit a packet not owned by us, stop */                           │                  /* If we hit a packet not owned by us, stop */                          
                if (bits & LE_T1_OWN)                                                    │                  if (bits & LE_T1_OWN)                                                   
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                if (bits & LE_T1_ERR) {                                                  │                  if (bits & LE_T1_ERR) {                                                 
                        u16 status = td->misc;                                           │                          u16 status = sbus_readw(&td->misc);                             
                                                                                         │                                                                                          
                        dev->stats.tx_errors++;                                          │                          dev->stats.tx_errors++;                                         
                        if (status & LE_T3_RTY)  dev->stats.tx_aborted_errors++;         │                          if (status & LE_T3_RTY)  dev->stats.tx_aborted_errors++;        
                        if (status & LE_T3_LCOL) dev->stats.tx_window_errors++;          │                          if (status & LE_T3_LCOL) dev->stats.tx_window_errors++;         
                                                                                         │                                                                                          
                        if (status & LE_T3_CLOS) {                                       │                          if (status & LE_T3_CLOS) {                                      
                                dev->stats.tx_carrier_errors++;                          │                                  dev->stats.tx_carrier_errors++;                         
                                if (lp->auto_select) {                                   │                                  if (lp->auto_select) {                                  
                                        lp->tpe = 1 - lp->tpe;                           │                                          lp->tpe = 1 - lp->tpe;                          
                                        printk(KERN_NOTICE "%s: Carrier Lost, trying %s\ │                                          printk(KERN_NOTICE "%s: Carrier Lost, trying %s\
                                               dev->name, lp->tpe?"TPE":"AUI");          │                                                 dev->name, lp->tpe?"TPE":"AUI");         
                                        STOP_LANCE(lp);                                  │                                          STOP_LANCE(lp);                                 
                                        lp->init_ring(dev);                              │                                          lp->init_ring(dev);                             
                                        load_csrs(lp);                                   │                                          load_csrs(lp);                                  
                                        init_restart_lance(lp);                          │                                          init_restart_lance(lp);                         
                                        goto out;                                        │                                          goto out;                                       
                                }                                                        │                                  }                                                       
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        /* Buffer errors and underflows turn off the                     │                          /* Buffer errors and underflows turn off the                    
                         * transmitter, restart the adapter.                             │                           * transmitter, restart the adapter.                            
                         */                                                              │                           */                                                             
                        if (status & (LE_T3_BUF|LE_T3_UFL)) {                            │                          if (status & (LE_T3_BUF|LE_T3_UFL)) {                           
                                dev->stats.tx_fifo_errors++;                             │                                  dev->stats.tx_fifo_errors++;                            
                                                                                         │                                                                                          
                                printk(KERN_ERR "%s: Tx: ERR_BUF|ERR_UFL, restarting\n", │                                  printk(KERN_ERR "%s: Tx: ERR_BUF|ERR_UFL, restarting\n",
                                       dev->name);                                       │                                         dev->name);                                      
                                STOP_LANCE(lp);                                          │                                  STOP_LANCE(lp);                                         
                                lp->init_ring(dev);                                      │                                  lp->init_ring(dev);                                     
                                load_csrs(lp);                                           │                                  load_csrs(lp);                                          
                                init_restart_lance(lp);                                  │                                  init_restart_lance(lp);                                 
                                goto out;                                                │                                  goto out;                                               
                        }                                                                │                          }                                                               
                } else if ((bits & LE_T1_POK) == LE_T1_POK) {                            │                  } else if ((bits & LE_T1_POK) == LE_T1_POK) {                           
                        /*                                                               │                          /*                                                              
                         * So we don't count the packet more than once.                  │                           * So we don't count the packet more than once.                 
                         */                                                              │                           */                                                             
                        td->tmd1_bits = bits & ~(LE_T1_POK);                             │                          sbus_writeb(bits & ~(LE_T1_POK), &td->tmd1_bits);               
                                                                                         │                                                                                          
                        /* One collision before packet was sent. */                      │                          /* One collision before packet was sent. */                     
                        if (bits & LE_T1_EONE)                                           │                          if (bits & LE_T1_EONE)                                          
                                dev->stats.collisions++;                                 │                                  dev->stats.collisions++;                                
                                                                                         │                                                                                          
                        /* More than one collision, be optimistic. */                    │                          /* More than one collision, be optimistic. */                   
                        if (bits & LE_T1_EMORE)                                          │                          if (bits & LE_T1_EMORE)                                         
                                dev->stats.collisions += 2;                              │                                  dev->stats.collisions += 2;                             
                                                                                         │                                                                                          
                        dev->stats.tx_packets++;                                         │                          dev->stats.tx_packets++;                                        
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                j = TX_NEXT(j);                                                          │                  j = TX_NEXT(j);                                                         
        }                                                                                │          }                                                                               
        lp->tx_old = j;                                                                  │          lp->tx_old = j;                                                                 
out:                                                                                     │                                                                                          
        if (netif_queue_stopped(dev) &&                                                  │          if (netif_queue_stopped(dev) &&                                                 
            TX_BUFFS_AVAIL > 0)                                                          │              TX_BUFFS_AVAIL > 0)                                                         
                netif_wake_queue(dev);                                                   │                  netif_wake_queue(dev);                                                  
                                                                                         │  out:                                                                                    
        spin_unlock(&lp->lock);                                                          │          spin_unlock(&lp->lock);                                                         
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c:1953                                │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c:2025                                 
                                                                                         │                                                                                          
        struct ixgbe_mac_info *mac = &hw->mac;                                           │          struct ixgbe_mac_info *mac = &hw->mac;                                          
        u32 lval, sval, flx_val;                                                         │          u32 lval, sval, flx_val;                                                        
        s32 rc;                                                                          │          s32 rc;                                                                         
                                                                                         │                                                                                          
        rc = mac->ops.read_iosf_sb_reg(hw,                                               │          rc = mac->ops.read_iosf_sb_reg(hw,                                              
                                       IXGBE_KRM_LINK_CTRL_1(hw->bus.lan_id),            │                                         IXGBE_KRM_LINK_CTRL_1(hw->bus.lan_id),           
                                       IXGBE_SB_IOSF_TARGET_KR_PHY, &lval);              │                                         IXGBE_SB_IOSF_TARGET_KR_PHY, &lval);             
        if (rc)                                                                          │          if (rc)                                                                         
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        lval &= ~IXGBE_KRM_LINK_CTRL_1_TETH_AN_ENABLE;                                   │          lval &= ~IXGBE_KRM_LINK_CTRL_1_TETH_AN_ENABLE;                                  
        lval &= ~IXGBE_KRM_LINK_CTRL_1_TETH_FORCE_SPEED_MASK;                            │          lval &= ~IXGBE_KRM_LINK_CTRL_1_TETH_FORCE_SPEED_MASK;                           
        lval |= IXGBE_KRM_LINK_CTRL_1_TETH_AN_SGMII_EN;                                  │          lval |= IXGBE_KRM_LINK_CTRL_1_TETH_AN_SGMII_EN;                                 
        lval |= IXGBE_KRM_LINK_CTRL_1_TETH_AN_CLAUSE_37_EN;                              │          lval |= IXGBE_KRM_LINK_CTRL_1_TETH_AN_CLAUSE_37_EN;                             
        lval |= IXGBE_KRM_LINK_CTRL_1_TETH_FORCE_SPEED_1G;                               │          lval &= ~IXGBE_KRM_LINK_CTRL_1_TETH_FORCE_SPEED_1G;                             
        rc = mac->ops.write_iosf_sb_reg(hw,                                              │          rc = mac->ops.write_iosf_sb_reg(hw,                                             
                                        IXGBE_KRM_LINK_CTRL_1(hw->bus.lan_id),           │                                          IXGBE_KRM_LINK_CTRL_1(hw->bus.lan_id),          
                                        IXGBE_SB_IOSF_TARGET_KR_PHY, lval);              │                                          IXGBE_SB_IOSF_TARGET_KR_PHY, lval);             
        if (rc)                                                                          │          if (rc)                                                                         
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        rc = mac->ops.read_iosf_sb_reg(hw,                                               │          rc = mac->ops.read_iosf_sb_reg(hw,                                              
                                       IXGBE_KRM_SGMII_CTRL(hw->bus.lan_id),             │                                         IXGBE_KRM_SGMII_CTRL(hw->bus.lan_id),            
                                       IXGBE_SB_IOSF_TARGET_KR_PHY, &sval);              │                                         IXGBE_SB_IOSF_TARGET_KR_PHY, &sval);             
        if (rc)                                                                          │          if (rc)                                                                         
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        sval |= IXGBE_KRM_SGMII_CTRL_MAC_TAR_FORCE_10_D;                                 │          sval &= ~IXGBE_KRM_SGMII_CTRL_MAC_TAR_FORCE_10_D;                               
        sval |= IXGBE_KRM_SGMII_CTRL_MAC_TAR_FORCE_100_D;                                │          sval &= ~IXGBE_KRM_SGMII_CTRL_MAC_TAR_FORCE_100_D;                              
        rc = mac->ops.write_iosf_sb_reg(hw,                                              │          rc = mac->ops.write_iosf_sb_reg(hw,                                             
                                        IXGBE_KRM_SGMII_CTRL(hw->bus.lan_id),            │                                          IXGBE_KRM_SGMII_CTRL(hw->bus.lan_id),           
                                        IXGBE_SB_IOSF_TARGET_KR_PHY, sval);              │                                          IXGBE_SB_IOSF_TARGET_KR_PHY, sval);             
        if (rc)                                                                          │          if (rc)                                                                         
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        rc = mac->ops.read_iosf_sb_reg(hw,                                               │          rc = mac->ops.write_iosf_sb_reg(hw,                                             
                                IXGBE_KRM_PMD_FLX_MASK_ST20(hw->bus.lan_id),             │                                          IXGBE_KRM_LINK_CTRL_1(hw->bus.lan_id),          
                                IXGBE_SB_IOSF_TARGET_KR_PHY, &flx_val);                  │                                          IXGBE_SB_IOSF_TARGET_KR_PHY, lval);             
        if (rc)                                                                          │          if (rc)                                                                         
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        rc = mac->ops.read_iosf_sb_reg(hw,                                               │          rc = mac->ops.read_iosf_sb_reg(hw,                                              
                                IXGBE_KRM_PMD_FLX_MASK_ST20(hw->bus.lan_id),             │                                      IXGBE_KRM_PMD_FLX_MASK_ST20(hw->bus.lan_id),        
                                IXGBE_SB_IOSF_TARGET_KR_PHY, &flx_val);                  │                                      IXGBE_SB_IOSF_TARGET_KR_PHY, &flx_val);             
        if (rc)                                                                          │          if (rc)                                                                         
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        flx_val &= ~IXGBE_KRM_PMD_FLX_MASK_ST20_SPEED_MASK;                              │          flx_val &= ~IXGBE_KRM_PMD_FLX_MASK_ST20_SPEED_MASK;                             
        flx_val |= IXGBE_KRM_PMD_FLX_MASK_ST20_SPEED_1G;                                 │          flx_val |= IXGBE_KRM_PMD_FLX_MASK_ST20_SPEED_AN;                                
        flx_val &= ~IXGBE_KRM_PMD_FLX_MASK_ST20_AN_EN;                                   │          flx_val &= ~IXGBE_KRM_PMD_FLX_MASK_ST20_AN_EN;                                  
        flx_val |= IXGBE_KRM_PMD_FLX_MASK_ST20_SGMII_EN;                                 │          flx_val |= IXGBE_KRM_PMD_FLX_MASK_ST20_SGMII_EN;                                
        flx_val |= IXGBE_KRM_PMD_FLX_MASK_ST20_AN37_EN;                                  │          flx_val |= IXGBE_KRM_PMD_FLX_MASK_ST20_AN37_EN;                                 
                                                                                         │                                                                                          
        rc = mac->ops.write_iosf_sb_reg(hw,                                              │          rc = mac->ops.write_iosf_sb_reg(hw,                                             
                                IXGBE_KRM_PMD_FLX_MASK_ST20(hw->bus.lan_id),             │                                      IXGBE_KRM_PMD_FLX_MASK_ST20(hw->bus.lan_id),        
                                IXGBE_SB_IOSF_TARGET_KR_PHY, flx_val);                   │                                      IXGBE_SB_IOSF_TARGET_KR_PHY, flx_val);              
        if (rc)                                                                          │          if (rc)                                                                         
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        rc = ixgbe_restart_an_internal_phy_x550em(hw);                                   │          ixgbe_restart_an_internal_phy_x550em(hw);                                       
        return rc;                                                                       │                                                                                          
                                                                                         │          return hw->phy.ops.setup_link_speed(hw, speed, autoneg_wait);                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c:1659                       │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c:1583                        
                                                                                         │                                                                                          
        struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                  │          struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                 
        u16 local_port, last_local_port;                                                 │          u16 local_port, local_port_1, last_local_port;                                  
                                                                                         │          struct mlxsw_sp_sb_sr_occ_query_cb_ctx cb_ctx;                                  
                                                                                         │          u8 masked_count, current_page = 0;                                              
                                                                                         │          unsigned long cb_priv = 0;                                                      
        LIST_HEAD(bulk_list);                                                            │          LIST_HEAD(bulk_list);                                                           
        unsigned int masked_count;                                                       │                                                                                          
        u8 current_page = 0;                                                             │                                                                                          
        char *sbsr_pl;                                                                   │          char *sbsr_pl;                                                                  
        int i;                                                                           │          int i;                                                                          
        int err;                                                                         │          int err;                                                                        
        int err2;                                                                        │          int err2;                                                                       
                                                                                         │                                                                                          
        sbsr_pl = kmalloc(MLXSW_REG_SBSR_LEN, GFP_KERNEL);                               │          sbsr_pl = kmalloc(MLXSW_REG_SBSR_LEN, GFP_KERNEL);                              
        if (!sbsr_pl)                                                                    │          if (!sbsr_pl)                                                                   
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        local_port = MLXSW_PORT_CPU_PORT;                                                │          local_port = MLXSW_PORT_CPU_PORT;                                               
next_batch:                                                                              │  next_batch:                                                                             
                                                                                         │          local_port_1 = local_port;                                                      
        masked_count = 0;                                                                │          masked_count = 0;                                                               
        mlxsw_reg_sbsr_pack(sbsr_pl, true);                                              │          mlxsw_reg_sbsr_pack(sbsr_pl, false);                                            
        mlxsw_reg_sbsr_port_page_set(sbsr_pl, current_page);                             │          mlxsw_reg_sbsr_port_page_set(sbsr_pl, current_page);                            
        last_local_port = current_page * MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE +              │          last_local_port = current_page * MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE +             
                          MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE - 1;                          │                            MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE - 1;                         
                                                                                         │                                                                                          
        for (i = 0; i < MLXSW_SP_SB_ING_TC_COUNT; i++)                                   │          for (i = 0; i < MLXSW_SP_SB_ING_TC_COUNT; i++)                                  
                mlxsw_reg_sbsr_pg_buff_mask_set(sbsr_pl, i, 1);                          │                  mlxsw_reg_sbsr_pg_buff_mask_set(sbsr_pl, i, 1);                         
        for (i = 0; i < MLXSW_SP_SB_EG_TC_COUNT; i++)                                    │          for (i = 0; i < MLXSW_SP_SB_EG_TC_COUNT; i++)                                   
                mlxsw_reg_sbsr_tclass_mask_set(sbsr_pl, i, 1);                           │                  mlxsw_reg_sbsr_tclass_mask_set(sbsr_pl, i, 1);                          
        for (; local_port < mlxsw_core_max_ports(mlxsw_core); local_port++) {            │          for (; local_port < mlxsw_core_max_ports(mlxsw_core); local_port++) {           
                if (!mlxsw_sp->ports[local_port])                                        │                  if (!mlxsw_sp->ports[local_port])                                       
                        continue;                                                        │                          continue;                                                       
                if (local_port > last_local_port) {                                      │                  if (local_port > last_local_port) {                                     
                        current_page++;                                                  │                          current_page++;                                                 
                        goto do_query;                                                   │                          goto do_query;                                                  
                }                                                                        │                  }                                                                       
                if (local_port != MLXSW_PORT_CPU_PORT) {                                 │                  if (local_port != MLXSW_PORT_CPU_PORT) {                                
                        /* Ingress quotas are not supported for the CPU port */          │                          /* Ingress quotas are not supported for the CPU port */         
                        mlxsw_reg_sbsr_ingress_port_mask_set(sbsr_pl,                    │                          mlxsw_reg_sbsr_ingress_port_mask_set(sbsr_pl,                   
                                                             local_port, 1);             │                                                               local_port, 1);            
                }                                                                        │                  }                                                                       
                mlxsw_reg_sbsr_egress_port_mask_set(sbsr_pl, local_port, 1);             │                  mlxsw_reg_sbsr_egress_port_mask_set(sbsr_pl, local_port, 1);            
                for (i = 0; i < mlxsw_sp->sb_vals->pool_count; i++) {                    │                  for (i = 0; i < mlxsw_sp->sb_vals->pool_count; i++) {                   
                        err = mlxsw_sp_sb_pm_occ_clear(mlxsw_sp, local_port, i,          │                          err = mlxsw_sp_sb_pm_occ_query(mlxsw_sp, local_port, i,         
                                                       &bulk_list);                      │                                                         &bulk_list);                     
                        if (err)                                                         │                          if (err)                                                        
                                goto out;                                                │                                  goto out;                                               
                }                                                                        │                  }                                                                       
                if (++masked_count == MASKED_COUNT_MAX)                                  │                  if (++masked_count == MASKED_COUNT_MAX)                                 
                        goto do_query;                                                   │                          goto do_query;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
do_query:                                                                                │  do_query:                                                                               
                                                                                         │          cb_ctx.masked_count = masked_count;                                             
                                                                                         │          cb_ctx.local_port_1 = local_port_1;                                             
                                                                                         │          memcpy(&cb_priv, &cb_ctx, sizeof(cb_ctx));                                      
        err = mlxsw_reg_trans_query(mlxsw_core, MLXSW_REG(sbsr), sbsr_pl,                │          err = mlxsw_reg_trans_query(mlxsw_core, MLXSW_REG(sbsr), sbsr_pl,               
                                    &bulk_list, NULL, 0);                                │                                      &bulk_list, mlxsw_sp_sb_sr_occ_query_cb,            
                                                                                         │                                      cb_priv);                                           
        if (err)                                                                         │          if (err)                                                                        
                goto out;                                                                │                  goto out;                                                               
        if (local_port < mlxsw_core_max_ports(mlxsw_core)) {                             │          if (local_port < mlxsw_core_max_ports(mlxsw_core)) {                            
                local_port++;                                                            │                  local_port++;                                                           
                goto next_batch;                                                         │                  goto next_batch;                                                        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
out:                                                                                     │  out:                                                                                    
        err2 = mlxsw_reg_trans_bulk_wait(&bulk_list);                                    │          err2 = mlxsw_reg_trans_bulk_wait(&bulk_list);                                   
        if (!err)                                                                        │          if (!err)                                                                       
                err = err2;                                                              │                  err = err2;                                                             
        kfree(sbsr_pl);                                                                  │          kfree(sbsr_pl);                                                                 
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v0.c:883                  │ linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v1.c:1081                  
                                                                                         │                                                                                          
        struct mlx5dr_match_spec *mask = inner ? &value->inner : &value->outer;          │          struct mlx5dr_match_spec *mask = inner ? &value->inner : &value->outer;         
        struct mlx5dr_match_misc *misc_mask = &value->misc;                              │          struct mlx5dr_match_misc *misc_mask = &value->misc;                             
                                                                                         │                                                                                          
        DR_STE_SET_TAG(eth_l2_src, bit_mask, first_vlan_id, mask, first_vid);            │          DR_STE_SET_TAG(eth_l2_src_v1, bit_mask, first_vlan_id, mask, first_vid);        
        DR_STE_SET_TAG(eth_l2_src, bit_mask, first_cfi, mask, first_cfi);                │          DR_STE_SET_TAG(eth_l2_src_v1, bit_mask, first_cfi, mask, first_cfi);            
        DR_STE_SET_TAG(eth_l2_src, bit_mask, first_priority, mask, first_prio);          │          DR_STE_SET_TAG(eth_l2_src_v1, bit_mask, first_priority, mask, first_prio);      
        DR_STE_SET_TAG(eth_l2_src, bit_mask, ip_fragmented, mask, frag);                 │          DR_STE_SET_TAG(eth_l2_src_v1, bit_mask, ip_fragmented, mask, frag);             
        DR_STE_SET_TAG(eth_l2_src, bit_mask, l3_ethertype, mask, ethertype);             │          DR_STE_SET_TAG(eth_l2_src_v1, bit_mask, l3_ethertype, mask, ethertype);         
        DR_STE_SET_ONES(eth_l2_src, bit_mask, l3_type, mask, ip_version);                │          DR_STE_SET_ONES(eth_l2_src_v1, bit_mask, l3_type, mask, ip_version);            
                                                                                         │                                                                                          
        if (mask->svlan_tag || mask->cvlan_tag) {                                        │          if (mask->svlan_tag || mask->cvlan_tag) {                                       
                MLX5_SET(ste_eth_l2_src, bit_mask, first_vlan_qualifier, -1);            │                  MLX5_SET(ste_eth_l2_src_v1, bit_mask, first_vlan_qualifier, -1);        
                mask->cvlan_tag = 0;                                                     │                  mask->cvlan_tag = 0;                                                    
                mask->svlan_tag = 0;                                                     │                  mask->svlan_tag = 0;                                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (inner) {                                                                     │          if (inner) {                                                                    
                if (misc_mask->inner_second_cvlan_tag ||                                 │                  if (misc_mask->inner_second_cvlan_tag ||                                
                    misc_mask->inner_second_svlan_tag) {                                 │                      misc_mask->inner_second_svlan_tag) {                                
                        MLX5_SET(ste_eth_l2_src, bit_mask, second_vlan_qualifier, -1);   │                          MLX5_SET(ste_eth_l2_src_v1, bit_mask, second_vlan_qualifier, -1)
                        misc_mask->inner_second_cvlan_tag = 0;                           │                          misc_mask->inner_second_cvlan_tag = 0;                          
                        misc_mask->inner_second_svlan_tag = 0;                           │                          misc_mask->inner_second_svlan_tag = 0;                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                DR_STE_SET_TAG(eth_l2_src, bit_mask,                                     │                  DR_STE_SET_TAG(eth_l2_src_v1, bit_mask,                                 
                               second_vlan_id, misc_mask, inner_second_vid);             │                                 second_vlan_id, misc_mask, inner_second_vid);            
                DR_STE_SET_TAG(eth_l2_src, bit_mask,                                     │                  DR_STE_SET_TAG(eth_l2_src_v1, bit_mask,                                 
                               second_cfi, misc_mask, inner_second_cfi);                 │                                 second_cfi, misc_mask, inner_second_cfi);                
                DR_STE_SET_TAG(eth_l2_src, bit_mask,                                     │                  DR_STE_SET_TAG(eth_l2_src_v1, bit_mask,                                 
                               second_priority, misc_mask, inner_second_prio);           │                                 second_priority, misc_mask, inner_second_prio);          
        } else {                                                                         │          } else {                                                                        
                if (misc_mask->outer_second_cvlan_tag ||                                 │                  if (misc_mask->outer_second_cvlan_tag ||                                
                    misc_mask->outer_second_svlan_tag) {                                 │                      misc_mask->outer_second_svlan_tag) {                                
                        MLX5_SET(ste_eth_l2_src, bit_mask, second_vlan_qualifier, -1);   │                          MLX5_SET(ste_eth_l2_src_v1, bit_mask, second_vlan_qualifier, -1)
                        misc_mask->outer_second_cvlan_tag = 0;                           │                          misc_mask->outer_second_cvlan_tag = 0;                          
                        misc_mask->outer_second_svlan_tag = 0;                           │                          misc_mask->outer_second_svlan_tag = 0;                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                DR_STE_SET_TAG(eth_l2_src, bit_mask,                                     │                  DR_STE_SET_TAG(eth_l2_src_v1, bit_mask,                                 
                               second_vlan_id, misc_mask, outer_second_vid);             │                                 second_vlan_id, misc_mask, outer_second_vid);            
                DR_STE_SET_TAG(eth_l2_src, bit_mask,                                     │                  DR_STE_SET_TAG(eth_l2_src_v1, bit_mask,                                 
                               second_cfi, misc_mask, outer_second_cfi);                 │                                 second_cfi, misc_mask, outer_second_cfi);                
                DR_STE_SET_TAG(eth_l2_src, bit_mask,                                     │                  DR_STE_SET_TAG(eth_l2_src_v1, bit_mask,                                 
                               second_priority, misc_mask, outer_second_prio);           │                                 second_priority, misc_mask, outer_second_prio);          
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c:324                           │ linux/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c:262                            
                                                                                         │                                                                                          
        struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr;                     │          struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr;                    
        int phymode = socfpga_get_plat_phymode(dwmac);                                   │          int phymode = socfpga_get_plat_phymode(dwmac);                                  
        u32 reg_offset = dwmac->reg_offset;                                              │          u32 reg_offset = dwmac->reg_offset;                                             
        u32 reg_shift = dwmac->reg_shift;                                                │          u32 reg_shift = dwmac->reg_shift;                                               
        u32 ctrl, val, module;                                                           │          u32 ctrl, val, module;                                                          
                                                                                         │                                                                                          
        if (socfpga_set_phy_mode_common(phymode, &val))                                  │          if (socfpga_set_phy_mode_common(phymode, &val)) {                               
                                                                                         │                  dev_err(dwmac->dev, "bad phy mode %d\n", phymode);                      
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        /* Overwrite val to GMII if splitter core is enabled. The phymode here           │          /* Overwrite val to GMII if splitter core is enabled. The phymode here          
         * is the actual phy mode on phy hardware, but phy interface from                │           * is the actual phy mode on phy hardware, but phy interface from               
         * EMAC core is GMII.                                                            │           * EMAC core is GMII.                                                           
         */                                                                              │           */                                                                             
        if (dwmac->splitter_base)                                                        │          if (dwmac->splitter_base)                                                       
                val = SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII;                          │                  val = SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII;                         
                                                                                         │                                                                                          
        /* Assert reset to the enet controller before changing the phy mode */           │          /* Assert reset to the enet controller before changing the phy mode */          
        reset_control_assert(dwmac->stmmac_ocp_rst);                                     │          reset_control_assert(dwmac->stmmac_ocp_rst);                                    
        reset_control_assert(dwmac->stmmac_rst);                                         │          reset_control_assert(dwmac->stmmac_rst);                                        
                                                                                         │                                                                                          
        regmap_read(sys_mgr_base_addr, reg_offset, &ctrl);                               │          regmap_read(sys_mgr_base_addr, reg_offset, &ctrl);                              
        ctrl &= ~(SYSMGR_EMACGRP_CTRL_PHYSEL_MASK);                                      │          ctrl &= ~(SYSMGR_EMACGRP_CTRL_PHYSEL_MASK << reg_shift);                        
        ctrl |= val;                                                                     │          ctrl |= val << reg_shift;                                                       
                                                                                         │                                                                                          
        if (dwmac->f2h_ptp_ref_clk ||                                                    │          if (dwmac->f2h_ptp_ref_clk ||                                                   
            phymode == PHY_INTERFACE_MODE_MII ||                                         │              phymode == PHY_INTERFACE_MODE_MII ||                                        
            phymode == PHY_INTERFACE_MODE_GMII ||                                        │              phymode == PHY_INTERFACE_MODE_GMII ||                                       
            phymode == PHY_INTERFACE_MODE_SGMII) {                                       │              phymode == PHY_INTERFACE_MODE_SGMII) {                                      
                ctrl |= SYSMGR_GEN10_EMACGRP_CTRL_PTP_REF_CLK_MASK;                      │                  regmap_read(sys_mgr_base_addr, SYSMGR_FPGAGRP_MODULE_REG,               
                regmap_read(sys_mgr_base_addr, SYSMGR_FPGAINTF_EMAC_REG,                 │                                                                                          
                            &module);                                                    │                              &module);                                                   
                module |= (SYSMGR_FPGAINTF_EMAC_BIT << reg_shift);                       │                  module |= (SYSMGR_FPGAGRP_MODULE_EMAC << (reg_shift / 2));              
                regmap_write(sys_mgr_base_addr, SYSMGR_FPGAINTF_EMAC_REG,                │                  regmap_write(sys_mgr_base_addr, SYSMGR_FPGAGRP_MODULE_REG,              
                             module);                                                    │                               module);                                                   
        } else {                                                                         │                                                                                          
                ctrl &= ~SYSMGR_GEN10_EMACGRP_CTRL_PTP_REF_CLK_MASK;                     │                                                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          if (dwmac->f2h_ptp_ref_clk)                                                     
                                                                                         │                  ctrl |= SYSMGR_EMACGRP_CTRL_PTP_REF_CLK_MASK << (reg_shift / 2);        
                                                                                         │          else                                                                            
                                                                                         │                  ctrl &= ~(SYSMGR_EMACGRP_CTRL_PTP_REF_CLK_MASK <<                       
                                                                                         │                            (reg_shift / 2));                                             
                                                                                         │                                                                                          
        regmap_write(sys_mgr_base_addr, reg_offset, ctrl);                               │          regmap_write(sys_mgr_base_addr, reg_offset, ctrl);                              
                                                                                         │                                                                                          
        /* Deassert reset for the phy configuration to be sampled by                     │          /* Deassert reset for the phy configuration to be sampled by                    
         * the enet controller, and operation to start in requested mode                 │           * the enet controller, and operation to start in requested mode                
         */                                                                              │           */                                                                             
        reset_control_deassert(dwmac->stmmac_ocp_rst);                                   │          reset_control_deassert(dwmac->stmmac_ocp_rst);                                  
        reset_control_deassert(dwmac->stmmac_rst);                                       │          reset_control_deassert(dwmac->stmmac_rst);                                      
        if (phymode == PHY_INTERFACE_MODE_SGMII) {                                       │          if (phymode == PHY_INTERFACE_MODE_SGMII) {                                      
                if (tse_pcs_init(dwmac->pcs.tse_pcs_base, &dwmac->pcs) != 0) {           │                  if (tse_pcs_init(dwmac->pcs.tse_pcs_base, &dwmac->pcs) != 0) {          
                        dev_err(dwmac->dev, "Unable to initialize TSE PCS");             │                          dev_err(dwmac->dev, "Unable to initialize TSE PCS");            
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/nfd3/dp.c:1249                                 │ linux/drivers/net/ethernet/netronome/nfp/nfdk/dp.c:1423                                  
                                                                                         │                                                                                          
        unsigned int meta_len, data_len, meta_off, pkt_len, pkt_off;                     │          unsigned int meta_len, data_len, meta_off, pkt_len, pkt_off;                    
        struct nfp_net_rx_buf *rxbuf;                                                    │          struct nfp_net_rx_buf *rxbuf;                                                   
        struct nfp_net_rx_desc *rxd;                                                     │          struct nfp_net_rx_desc *rxd;                                                    
        dma_addr_t new_dma_addr;                                                         │          dma_addr_t new_dma_addr;                                                        
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
        void *new_frag;                                                                  │          void *new_frag;                                                                 
        int idx;                                                                         │          int idx;                                                                        
                                                                                         │                                                                                          
        idx = D_IDX(rx_ring, rx_ring->rd_p);                                             │          idx = D_IDX(rx_ring, rx_ring->rd_p);                                            
                                                                                         │                                                                                          
        rxd = &rx_ring->rxds[idx];                                                       │          rxd = &rx_ring->rxds[idx];                                                      
        if (!(rxd->rxd.meta_len_dd & PCIE_DESC_RX_DD))                                   │          if (!(rxd->rxd.meta_len_dd & PCIE_DESC_RX_DD))                                  
                return false;                                                            │                  return false;                                                           
                                                                                         │                                                                                          
        /* Memory barrier to ensure that we won't do other reads                         │          /* Memory barrier to ensure that we won't do other reads                        
         * before the DD bit.                                                            │           * before the DD bit.                                                           
         */                                                                              │           */                                                                             
        dma_rmb();                                                                       │          dma_rmb();                                                                      
                                                                                         │                                                                                          
        rx_ring->rd_p++;                                                                 │          rx_ring->rd_p++;                                                                
                                                                                         │                                                                                          
        rxbuf = &rx_ring->rxbufs[idx];                                                   │          rxbuf = &rx_ring->rxbufs[idx];                                                  
        meta_len = rxd->rxd.meta_len_dd & PCIE_DESC_RX_META_LEN_MASK;                    │          meta_len = rxd->rxd.meta_len_dd & PCIE_DESC_RX_META_LEN_MASK;                   
        data_len = le16_to_cpu(rxd->rxd.data_len);                                       │          data_len = le16_to_cpu(rxd->rxd.data_len);                                      
        pkt_len = data_len - meta_len;                                                   │          pkt_len = data_len - meta_len;                                                  
                                                                                         │                                                                                          
        pkt_off = NFP_NET_RX_BUF_HEADROOM + dp->rx_dma_off;                              │          pkt_off = NFP_NET_RX_BUF_HEADROOM + dp->rx_dma_off;                             
        if (dp->rx_offset == NFP_NET_CFG_RX_OFFSET_DYNAMIC)                              │          if (dp->rx_offset == NFP_NET_CFG_RX_OFFSET_DYNAMIC)                             
                pkt_off += meta_len;                                                     │                  pkt_off += meta_len;                                                    
        else                                                                             │          else                                                                            
                pkt_off += dp->rx_offset;                                                │                  pkt_off += dp->rx_offset;                                               
        meta_off = pkt_off - meta_len;                                                   │          meta_off = pkt_off - meta_len;                                                  
                                                                                         │                                                                                          
        /* Stats update */                                                               │          /* Stats update */                                                              
        u64_stats_update_begin(&r_vec->rx_sync);                                         │          u64_stats_update_begin(&r_vec->rx_sync);                                        
        r_vec->rx_pkts++;                                                                │          r_vec->rx_pkts++;                                                               
        r_vec->rx_bytes += pkt_len;                                                      │          r_vec->rx_bytes += pkt_len;                                                     
        u64_stats_update_end(&r_vec->rx_sync);                                           │          u64_stats_update_end(&r_vec->rx_sync);                                          
                                                                                         │                                                                                          
        nfp_net_dma_sync_cpu_rx(dp, rxbuf->dma_addr + meta_off, data_len);               │          nfp_net_dma_sync_cpu_rx(dp, rxbuf->dma_addr + meta_off, data_len);              
                                                                                         │                                                                                          
        if (unlikely(!nfp_ctrl_meta_ok(nn, rxbuf->frag + meta_off, meta_len))) {         │          if (unlikely(!nfp_ctrl_meta_ok(nn, rxbuf->frag + meta_off, meta_len))) {        
                nn_dp_warn(dp, "incorrect metadata for ctrl packet (%d)\n",              │                  nn_dp_warn(dp, "incorrect metadata for ctrl packet (%d)\n",             
                           meta_len);                                                    │                             meta_len);                                                   
                nfp_nfd3_rx_drop(dp, r_vec, rx_ring, rxbuf, NULL);                       │                  nfp_nfdk_rx_drop(dp, r_vec, rx_ring, rxbuf, NULL);                      
                return true;                                                             │                  return true;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        skb = build_skb(rxbuf->frag, dp->fl_bufsz);                                      │          skb = build_skb(rxbuf->frag, dp->fl_bufsz);                                     
        if (unlikely(!skb)) {                                                            │          if (unlikely(!skb)) {                                                           
                nfp_nfd3_rx_drop(dp, r_vec, rx_ring, rxbuf, NULL);                       │                  nfp_nfdk_rx_drop(dp, r_vec, rx_ring, rxbuf, NULL);                      
                return true;                                                             │                  return true;                                                            
        }                                                                                │          }                                                                               
        new_frag = nfp_nfd3_napi_alloc_one(dp, &new_dma_addr);                           │          new_frag = nfp_nfdk_napi_alloc_one(dp, &new_dma_addr);                          
        if (unlikely(!new_frag)) {                                                       │          if (unlikely(!new_frag)) {                                                      
                nfp_nfd3_rx_drop(dp, r_vec, rx_ring, rxbuf, skb);                        │                  nfp_nfdk_rx_drop(dp, r_vec, rx_ring, rxbuf, skb);                       
                return true;                                                             │                  return true;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        nfp_net_dma_unmap_rx(dp, rxbuf->dma_addr);                                       │          nfp_net_dma_unmap_rx(dp, rxbuf->dma_addr);                                      
                                                                                         │                                                                                          
        nfp_nfd3_rx_give_one(dp, rx_ring, new_frag, new_dma_addr);                       │          nfp_nfdk_rx_give_one(dp, rx_ring, new_frag, new_dma_addr);                      
                                                                                         │                                                                                          
        skb_reserve(skb, pkt_off);                                                       │          skb_reserve(skb, pkt_off);                                                      
        skb_put(skb, pkt_len);                                                           │          skb_put(skb, pkt_len);                                                          
                                                                                         │                                                                                          
        nfp_app_ctrl_rx(nn->app, skb);                                                   │          nfp_app_ctrl_rx(nn->app, skb);                                                  
                                                                                         │                                                                                          
        return true;                                                                     │          return true;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/e1000_phy.c:2206                                   │ linux/drivers/net/ethernet/intel/igb/e1000_phy.c:2290                                    
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        s32 ret_val = 0;                                                                 │          s32 ret_val = 0;                                                                
                                                                                         │                                                                                          
        /* Switch to PHY page 0xFF. */                                                   │          /* Switch to PHY page 0xFF. */                                                  
        ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x00FF);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x00FF);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0x214B);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0x214B);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x2144);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x2144);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0x0C28);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0x0C28);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x2146);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x2146);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0xB233);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0xB233);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x214D);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x214D);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0xCC0C);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_2, 0xDC0C);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x2159);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_1, 0x2159);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        /* Switch to PHY page 0xFB. */                                                   │          /* Switch to PHY page 0xFB. */                                                  
        ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x00FB);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x00FB);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_3, 0x000D);              │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_CFG_REG_3, 0x0C0D);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        /* Switch to PHY page 0x12. */                                                   │          /* Switch to PHY page 0x12. */                                                  
        ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x12);                │          ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x12);               
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        /* Change mode to SGMII-to-Copper */                                             │          /* Change mode to SGMII-to-Copper */                                            
        ret_val = phy->ops.write_reg(hw, E1000_M88E1512_MODE, 0x8001);                   │          ret_val = phy->ops.write_reg(hw, E1000_M88E1512_MODE, 0x8001);                  
                                                                                         │          if (ret_val)                                                                    
                                                                                         │                  goto out;                                                               
                                                                                         │                                                                                          
                                                                                         │          /* Switch to PHY page 1. */                                                     
                                                                                         │          ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0x1);                
                                                                                         │          if (ret_val)                                                                    
                                                                                         │                  goto out;                                                               
                                                                                         │                                                                                          
                                                                                         │          /* Change mode to 1000BASE-X/SGMII and autoneg enable */                        
                                                                                         │          ret_val = phy->ops.write_reg(hw, E1000_M88E1543_FIBER_CTRL, 0x9140);            
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        /* Return the PHY to page 0. */                                                  │          /* Return the PHY to page 0. */                                                 
        ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0);                   │          ret_val = phy->ops.write_reg(hw, E1000_M88E1543_PAGE_ADDR, 0);                  
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = igb_phy_sw_reset(hw);                                                  │          ret_val = igb_phy_sw_reset(hw);                                                 
        if (ret_val) {                                                                   │          if (ret_val) {                                                                  
                hw_dbg("Error committing the PHY changes\n");                            │                  hw_dbg("Error committing the PHY changes\n");                           
                return ret_val;                                                          │                  return ret_val;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* msec_delay(1000); */                                                          │          /* msec_delay(1000); */                                                         
        usleep_range(1000, 2000);                                                        │          usleep_range(1000, 2000);                                                       
out:                                                                                     │  out:                                                                                    
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c:728                    │ linux/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c:574                     
                                                                                         │                                                                                          
        struct netlink_ext_ack *extack = cls->common.extack;                             │          struct netlink_ext_ack *extack = cls->common.extack;                            
        struct dpaa2_switch_mirror_entry *mirror_entry;                                  │          struct dpaa2_switch_mirror_entry *mirror_entry;                                 
        struct ethsw_core *ethsw = block->ethsw;                                         │          struct ethsw_core *ethsw = block->ethsw;                                        
        struct dpaa2_switch_mirror_entry *tmp;                                           │          struct dpaa2_switch_mirror_entry *tmp;                                          
        struct flow_action_entry *cls_act;                                               │          struct flow_action_entry *cls_act;                                              
        struct list_head *pos, *n;                                                       │          struct list_head *pos, *n;                                                      
        bool mirror_port_enabled;                                                        │          bool mirror_port_enabled;                                                       
        u16 if_id;                                                                       │          u16 if_id, vlan;                                                                
                                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        mirror_port_enabled = (ethsw->mirror_port != ethsw->sw_attr.num_ifs);            │          mirror_port_enabled = (ethsw->mirror_port != ethsw->sw_attr.num_ifs);           
        cls_act = &cls->rule->action.entries[0];                                         │          cls_act = &cls->rule->action.entries[0];                                        
                                                                                         │                                                                                          
        /* Offload rules only when the destination is a DPAA2 switch port */             │          /* Offload rules only when the destination is a DPAA2 switch port */            
        if (!dpaa2_switch_port_dev_check(cls_act->dev)) {                                │          if (!dpaa2_switch_port_dev_check(cls_act->dev)) {                               
                NL_SET_ERR_MSG_MOD(extack,                                               │                  NL_SET_ERR_MSG_MOD(extack,                                              
                                   "Destination not a DPAA2 switch port");               │                                     "Destination not a DPAA2 switch port");              
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
        }                                                                                │          }                                                                               
        if_id = dpaa2_switch_get_index(ethsw, cls_act->dev);                             │          if_id = dpaa2_switch_get_index(ethsw, cls_act->dev);                            
                                                                                         │                                                                                          
        /* We have a single mirror port but can configure egress mirroring on            │          /* We have a single mirror port but can configure egress mirroring on           
         * all the other switch ports. We need to allow mirroring rules only             │           * all the other switch ports. We need to allow mirroring rules only            
         * when the destination port is the same.                                        │           * when the destination port is the same.                                       
         */                                                                              │           */                                                                             
        if (mirror_port_enabled && ethsw->mirror_port != if_id) {                        │          if (mirror_port_enabled && ethsw->mirror_port != if_id) {                       
                NL_SET_ERR_MSG_MOD(extack,                                               │                  NL_SET_ERR_MSG_MOD(extack,                                              
                                   "Multiple mirror ports not supported");               │                                     "Multiple mirror ports not supported");              
                return -EBUSY;                                                           │                  return -EBUSY;                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          /* Parse the key */                                                             
                                                                                         │          err = dpaa2_switch_flower_parse_mirror_key(cls, &vlan);                         
                                                                                         │          if (err)                                                                        
                                                                                         │                  return err;                                                             
                                                                                         │                                                                                          
        /* Make sure that we don't already have a mirror rule with the same              │          /* Make sure that we don't already have a mirror rule with the same             
         * configuration. One matchall rule per block is the maximum.                    │           * configuration.                                                               
         */                                                                              │           */                                                                             
        list_for_each_safe(pos, n, &block->mirror_entries) {                             │          list_for_each_safe(pos, n, &block->mirror_entries) {                            
                tmp = list_entry(pos, struct dpaa2_switch_mirror_entry, list);           │                  tmp = list_entry(pos, struct dpaa2_switch_mirror_entry, list);          
                                                                                         │                                                                                          
                if (tmp->cfg.filter == DPSW_REFLECTION_FILTER_INGRESS_ALL) {             │                  if (tmp->cfg.filter == DPSW_REFLECTION_FILTER_INGRESS_VLAN &&           
                                                                                         │                      tmp->cfg.vlan_id == vlan) {                                         
                        NL_SET_ERR_MSG_MOD(extack,                                       │                          NL_SET_ERR_MSG_MOD(extack,                                      
                                           "Matchall mirror filter already installed");  │                                             "VLAN mirror filter already installed");     
                        return -EBUSY;                                                   │                          return -EBUSY;                                                  
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        mirror_entry = kzalloc(sizeof(*mirror_entry), GFP_KERNEL);                       │          mirror_entry = kzalloc(sizeof(*mirror_entry), GFP_KERNEL);                      
        if (!mirror_entry)                                                               │          if (!mirror_entry)                                                              
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        mirror_entry->cfg.filter = DPSW_REFLECTION_FILTER_INGRESS_ALL;                   │          mirror_entry->cfg.filter = DPSW_REFLECTION_FILTER_INGRESS_VLAN;                 
                                                                                         │          mirror_entry->cfg.vlan_id = vlan;                                               
        mirror_entry->cookie = cls->cookie;                                              │          mirror_entry->cookie = cls->cookie;                                             
                                                                                         │                                                                                          
        return dpaa2_switch_block_add_mirror(block, mirror_entry, if_id,                 │          return dpaa2_switch_block_add_mirror(block, mirror_entry, if_id,                
                                             extack);                                    │                                               extack);                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/i40e/i40e_dcb.c:1062                                   │ linux/drivers/net/ethernet/intel/i40e/i40e_dcb.c:987                                     
                                                                                         │                                                                                          
        struct i40e_dcb_ets_config *etsrec;                                              │          u8 priority0, priority1, maxtcwilling = 0;                                      
                                                                                         │          struct i40e_dcb_ets_config *etscfg;                                             
        u16 offset = 0, typelength, i;                                                   │          u16 offset = 0, typelength, i;                                                  
        u8 priority0, priority1;                                                         │                                                                                          
        u8 *buf = tlv->tlvinfo;                                                          │          u8 *buf = tlv->tlvinfo;                                                         
        u32 ouisubtype;                                                                  │          u32 ouisubtype;                                                                 
                                                                                         │                                                                                          
        typelength = (u16)((I40E_TLV_TYPE_ORG << I40E_LLDP_TLV_TYPE_SHIFT) |             │          typelength = (u16)((I40E_TLV_TYPE_ORG << I40E_LLDP_TLV_TYPE_SHIFT) |            
                        I40E_IEEE_ETS_TLV_LENGTH);                                       │                          I40E_IEEE_ETS_TLV_LENGTH);                                      
        tlv->typelength = htons(typelength);                                             │          tlv->typelength = htons(typelength);                                            
                                                                                         │                                                                                          
        ouisubtype = (u32)((I40E_IEEE_8021QAZ_OUI << I40E_LLDP_TLV_OUI_SHIFT) |          │          ouisubtype = (u32)((I40E_IEEE_8021QAZ_OUI << I40E_LLDP_TLV_OUI_SHIFT) |         
                        I40E_IEEE_SUBTYPE_ETS_REC);                                      │                          I40E_IEEE_SUBTYPE_ETS_CFG);                                     
        tlv->ouisubtype = htonl(ouisubtype);                                             │          tlv->ouisubtype = htonl(ouisubtype);                                            
                                                                                         │                                                                                          
        etsrec = &dcbcfg->etsrec;                                                        │          /* First Octet post subtype                                                     
        /* First Octet is reserved */                                                    │           * --------------------------                                                   
                                                                                         │           * |will-|CBS  | Re-  | Max |                                                   
                                                                                         │           * |ing  |     |served| TCs |                                                   
                                                                                         │           * --------------------------                                                   
                                                                                         │           * |1bit | 1bit|3 bits|3bits|                                                   
                                                                                         │           */                                                                             
                                                                                         │          etscfg = &dcbcfg->etscfg;                                                       
                                                                                         │          if (etscfg->willing)                                                            
                                                                                         │                  maxtcwilling = BIT(I40E_IEEE_ETS_WILLING_SHIFT);                        
                                                                                         │          maxtcwilling |= etscfg->maxtcs & I40E_IEEE_ETS_MAXTC_MASK;                      
                                                                                         │          buf[offset] = maxtcwilling;                                                     
                                                                                         │                                                                                          
        /* Move offset to Priority Assignment Table */                                   │          /* Move offset to Priority Assignment Table */                                  
        offset++;                                                                        │          offset++;                                                                       
                                                                                         │                                                                                          
        /* Priority Assignment Table (4 octets)                                          │          /* Priority Assignment Table (4 octets)                                         
         * Octets:|    1    |    2    |    3    |    4    |                              │           * Octets:|    1    |    2    |    3    |    4    |                             
         *        -----------------------------------------                              │           *        -----------------------------------------                             
         *        |pri0|pri1|pri2|pri3|pri4|pri5|pri6|pri7|                              │           *        |pri0|pri1|pri2|pri3|pri4|pri5|pri6|pri7|                             
         *        -----------------------------------------                              │           *        -----------------------------------------                             
         *   Bits:|7  4|3  0|7  4|3  0|7  4|3  0|7  4|3  0|                              │           *   Bits:|7  4|3  0|7  4|3  0|7  4|3  0|7  4|3  0|                             
         *        -----------------------------------------                              │           *        -----------------------------------------                             
         */                                                                              │           */                                                                             
        for (i = 0; i < 4; i++) {                                                        │          for (i = 0; i < 4; i++) {                                                       
                priority0 = etsrec->prioritytable[i * 2] & 0xF;                          │                  priority0 = etscfg->prioritytable[i * 2] & 0xF;                         
                priority1 = etsrec->prioritytable[i * 2 + 1] & 0xF;                      │                  priority1 = etscfg->prioritytable[i * 2 + 1] & 0xF;                     
                buf[offset] = (priority0 << I40E_IEEE_ETS_PRIO_1_SHIFT) |                │                  buf[offset] = (priority0 << I40E_IEEE_ETS_PRIO_1_SHIFT) |               
                                priority1;                                               │                                  priority1;                                              
                offset++;                                                                │                  offset++;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* TC Bandwidth Table (8 octets)                                                 │          /* TC Bandwidth Table (8 octets)                                                
         * Octets:| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |                                      │           * Octets:| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |                                     
         *        ---------------------------------                                      │           *        ---------------------------------                                     
         *        |tc0|tc1|tc2|tc3|tc4|tc5|tc6|tc7|                                      │           *        |tc0|tc1|tc2|tc3|tc4|tc5|tc6|tc7|                                     
         *        ---------------------------------                                      │           *        ---------------------------------                                     
         */                                                                              │           */                                                                             
        for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++)                                     │          for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++)                                    
                buf[offset++] = etsrec->tcbwtable[i];                                    │                  buf[offset++] = etscfg->tcbwtable[i];                                   
                                                                                         │                                                                                          
        /* TSA Assignment Table (8 octets)                                               │          /* TSA Assignment Table (8 octets)                                              
         * Octets:| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |                                      │           * Octets:| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |                                     
         *        ---------------------------------                                      │           *        ---------------------------------                                     
         *        |tc0|tc1|tc2|tc3|tc4|tc5|tc6|tc7|                                      │           *        |tc0|tc1|tc2|tc3|tc4|tc5|tc6|tc7|                                     
         *        ---------------------------------                                      │           *        ---------------------------------                                     
         */                                                                              │           */                                                                             
        for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++)                                     │          for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++)                                    
                buf[offset++] = etsrec->tsatable[i];                                     │                  buf[offset++] = etscfg->tsatable[i];                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ptp.c:444                                      │ linux/drivers/net/ethernet/intel/igc/igc_ptp.c:145                                       
                                                                                         │                                                                                          
        static const u32 aux0_sel_sdp[IGB_N_SDP] = {                                     │          static const u32 igc_aux0_sel_sdp[IGC_N_SDP] = {                                
                AUX0_SEL_SDP0, AUX0_SEL_SDP1, AUX0_SEL_SDP2, AUX0_SEL_SDP3,              │                  IGC_AUX0_SEL_SDP0, IGC_AUX0_SEL_SDP1, IGC_AUX0_SEL_SDP2, IGC_AUX0_SEL_SD
        };                                                                               │          };                                                                              
        static const u32 aux1_sel_sdp[IGB_N_SDP] = {                                     │          static const u32 igc_aux1_sel_sdp[IGC_N_SDP] = {                                
                AUX1_SEL_SDP0, AUX1_SEL_SDP1, AUX1_SEL_SDP2, AUX1_SEL_SDP3,              │                  IGC_AUX1_SEL_SDP0, IGC_AUX1_SEL_SDP1, IGC_AUX1_SEL_SDP2, IGC_AUX1_SEL_SD
        };                                                                               │          };                                                                              
        static const u32 ts_sdp_en[IGB_N_SDP] = {                                        │          static const u32 igc_ts_sdp_en[IGC_N_SDP] = {                                   
                TS_SDP0_EN, TS_SDP1_EN, TS_SDP2_EN, TS_SDP3_EN,                          │                  IGC_TS_SDP0_EN, IGC_TS_SDP1_EN, IGC_TS_SDP2_EN, IGC_TS_SDP3_EN,         
        };                                                                               │          };                                                                              
        static const u32 ts_sdp_sel_tt0[IGB_N_SDP] = {                                   │          static const u32 igc_ts_sdp_sel_tt0[IGC_N_SDP] = {                              
                TS_SDP0_SEL_TT0, TS_SDP1_SEL_TT0,                                        │                  IGC_TS_SDP0_SEL_TT0, IGC_TS_SDP1_SEL_TT0,                               
                TS_SDP2_SEL_TT0, TS_SDP3_SEL_TT0,                                        │                  IGC_TS_SDP2_SEL_TT0, IGC_TS_SDP3_SEL_TT0,                               
        };                                                                               │          };                                                                              
        static const u32 ts_sdp_sel_tt1[IGB_N_SDP] = {                                   │          static const u32 igc_ts_sdp_sel_tt1[IGC_N_SDP] = {                              
                TS_SDP0_SEL_TT1, TS_SDP1_SEL_TT1,                                        │                  IGC_TS_SDP0_SEL_TT1, IGC_TS_SDP1_SEL_TT1,                               
                TS_SDP2_SEL_TT1, TS_SDP3_SEL_TT1,                                        │                  IGC_TS_SDP2_SEL_TT1, IGC_TS_SDP3_SEL_TT1,                               
        };                                                                               │          };                                                                              
        static const u32 ts_sdp_sel_fc0[IGB_N_SDP] = {                                   │          static const u32 igc_ts_sdp_sel_fc0[IGC_N_SDP] = {                              
                TS_SDP0_SEL_FC0, TS_SDP1_SEL_FC0,                                        │                  IGC_TS_SDP0_SEL_FC0, IGC_TS_SDP1_SEL_FC0,                               
                TS_SDP2_SEL_FC0, TS_SDP3_SEL_FC0,                                        │                  IGC_TS_SDP2_SEL_FC0, IGC_TS_SDP3_SEL_FC0,                               
        };                                                                               │          };                                                                              
        static const u32 ts_sdp_sel_fc1[IGB_N_SDP] = {                                   │          static const u32 igc_ts_sdp_sel_fc1[IGC_N_SDP] = {                              
                TS_SDP0_SEL_FC1, TS_SDP1_SEL_FC1,                                        │                  IGC_TS_SDP0_SEL_FC1, IGC_TS_SDP1_SEL_FC1,                               
                TS_SDP2_SEL_FC1, TS_SDP3_SEL_FC1,                                        │                  IGC_TS_SDP2_SEL_FC1, IGC_TS_SDP3_SEL_FC1,                               
        };                                                                               │          };                                                                              
        static const u32 ts_sdp_sel_clr[IGB_N_SDP] = {                                   │          static const u32 igc_ts_sdp_sel_clr[IGC_N_SDP] = {                              
                TS_SDP0_SEL_FC1, TS_SDP1_SEL_FC1,                                        │                  IGC_TS_SDP0_SEL_FC1, IGC_TS_SDP1_SEL_FC1,                               
                TS_SDP2_SEL_FC1, TS_SDP3_SEL_FC1,                                        │                  IGC_TS_SDP2_SEL_FC1, IGC_TS_SDP3_SEL_FC1,                               
        };                                                                               │          };                                                                              
        struct e1000_hw *hw = &igb->hw;                                                  │          struct igc_hw *hw = &igc->hw;                                                   
        u32 ctrl, ctrl_ext, tssdp = 0;                                                   │          u32 ctrl, ctrl_ext, tssdp = 0;                                                  
                                                                                         │                                                                                          
        ctrl = rd32(E1000_CTRL);                                                         │          ctrl = rd32(IGC_CTRL);                                                          
        ctrl_ext = rd32(E1000_CTRL_EXT);                                                 │          ctrl_ext = rd32(IGC_CTRL_EXT);                                                  
        tssdp = rd32(E1000_TSSDP);                                                       │          tssdp = rd32(IGC_TSSDP);                                                        
                                                                                         │                                                                                          
        igb_pin_direction(pin, 0, &ctrl, &ctrl_ext);                                     │          igc_pin_direction(pin, 0, &ctrl, &ctrl_ext);                                    
                                                                                         │                                                                                          
        /* Make sure this pin is not enabled as an input. */                             │          /* Make sure this pin is not enabled as an input. */                            
        if ((tssdp & AUX0_SEL_SDP3) == aux0_sel_sdp[pin])                                │          if ((tssdp & IGC_AUX0_SEL_SDP3) == igc_aux0_sel_sdp[pin])                       
                tssdp &= ~AUX0_TS_SDP_EN;                                                │                  tssdp &= ~IGC_AUX0_TS_SDP_EN;                                           
                                                                                         │                                                                                          
        if ((tssdp & AUX1_SEL_SDP3) == aux1_sel_sdp[pin])                                │          if ((tssdp & IGC_AUX1_SEL_SDP3) == igc_aux1_sel_sdp[pin])                       
                tssdp &= ~AUX1_TS_SDP_EN;                                                │                  tssdp &= ~IGC_AUX1_TS_SDP_EN;                                           
                                                                                         │                                                                                          
        tssdp &= ~ts_sdp_sel_clr[pin];                                                   │          tssdp &= ~igc_ts_sdp_sel_clr[pin];                                              
        if (freq) {                                                                      │          if (freq) {                                                                     
                if (chan == 1)                                                           │                  if (chan == 1)                                                          
                        tssdp |= ts_sdp_sel_fc1[pin];                                    │                          tssdp |= igc_ts_sdp_sel_fc1[pin];                               
                else                                                                     │                  else                                                                    
                        tssdp |= ts_sdp_sel_fc0[pin];                                    │                          tssdp |= igc_ts_sdp_sel_fc0[pin];                               
        } else {                                                                         │          } else {                                                                        
                if (chan == 1)                                                           │                  if (chan == 1)                                                          
                        tssdp |= ts_sdp_sel_tt1[pin];                                    │                          tssdp |= igc_ts_sdp_sel_tt1[pin];                               
                else                                                                     │                  else                                                                    
                        tssdp |= ts_sdp_sel_tt0[pin];                                    │                          tssdp |= igc_ts_sdp_sel_tt0[pin];                               
        }                                                                                │          }                                                                               
        tssdp |= ts_sdp_en[pin];                                                         │          tssdp |= igc_ts_sdp_en[pin];                                                    
                                                                                         │                                                                                          
        wr32(E1000_TSSDP, tssdp);                                                        │          wr32(IGC_TSSDP, tssdp);                                                         
        wr32(E1000_CTRL, ctrl);                                                          │          wr32(IGC_CTRL, ctrl);                                                           
        wr32(E1000_CTRL_EXT, ctrl_ext);                                                  │          wr32(IGC_CTRL_EXT, ctrl_ext);                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:5788                                    │ linux/drivers/net/ethernet/intel/igc/igc_main.c:4006                                     
                                                                                         │                                                                                          
        struct igb_adapter *adapter = q_vector->adapter;                                 │          struct igc_adapter *adapter = q_vector->adapter;                                
        u32 new_itr = q_vector->itr_val;                                                 │          u32 new_itr = q_vector->itr_val;                                                
        u8 current_itr = 0;                                                              │          u8 current_itr = 0;                                                             
                                                                                         │                                                                                          
        /* for non-gigabit speeds, just fix the interrupt rate at 4000 */                │          /* for non-gigabit speeds, just fix the interrupt rate at 4000 */               
        if (adapter->link_speed != SPEED_1000) {                                         │          switch (adapter->link_speed) {                                                  
                                                                                         │          case SPEED_10:                                                                  
                                                                                         │          case SPEED_100:                                                                 
                current_itr = 0;                                                         │                  current_itr = 0;                                                        
                new_itr = IGB_4K_ITR;                                                    │                  new_itr = IGC_4K_ITR;                                                   
                goto set_itr_now;                                                        │                  goto set_itr_now;                                                       
                                                                                         │          default:                                                                        
                                                                                         │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        igb_update_itr(q_vector, &q_vector->tx);                                         │          igc_update_itr(q_vector, &q_vector->tx);                                        
        igb_update_itr(q_vector, &q_vector->rx);                                         │          igc_update_itr(q_vector, &q_vector->rx);                                        
                                                                                         │                                                                                          
        current_itr = max(q_vector->rx.itr, q_vector->tx.itr);                           │          current_itr = max(q_vector->rx.itr, q_vector->tx.itr);                          
                                                                                         │                                                                                          
        /* conservative mode (itr 3) eliminates the lowest_latency setting */            │          /* conservative mode (itr 3) eliminates the lowest_latency setting */           
        if (current_itr == lowest_latency &&                                             │          if (current_itr == lowest_latency &&                                            
            ((q_vector->rx.ring && adapter->rx_itr_setting == 3) ||                      │              ((q_vector->rx.ring && adapter->rx_itr_setting == 3) ||                     
             (!q_vector->rx.ring && adapter->tx_itr_setting == 3)))                      │              (!q_vector->rx.ring && adapter->tx_itr_setting == 3)))                      
                current_itr = low_latency;                                               │                  current_itr = low_latency;                                              
                                                                                         │                                                                                          
        switch (current_itr) {                                                           │          switch (current_itr) {                                                          
        /* counts and packets in update_itr are dependent on these numbers */            │          /* counts and packets in update_itr are dependent on these numbers */           
        case lowest_latency:                                                             │          case lowest_latency:                                                            
                new_itr = IGB_70K_ITR; /* 70,000 ints/sec */                             │                  new_itr = IGC_70K_ITR; /* 70,000 ints/sec */                            
                break;                                                                   │                  break;                                                                  
        case low_latency:                                                                │          case low_latency:                                                               
                new_itr = IGB_20K_ITR; /* 20,000 ints/sec */                             │                  new_itr = IGC_20K_ITR; /* 20,000 ints/sec */                            
                break;                                                                   │                  break;                                                                  
        case bulk_latency:                                                               │          case bulk_latency:                                                              
                new_itr = IGB_4K_ITR;  /* 4,000 ints/sec */                              │                  new_itr = IGC_4K_ITR;  /* 4,000 ints/sec */                             
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
set_itr_now:                                                                             │  set_itr_now:                                                                            
        if (new_itr != q_vector->itr_val) {                                              │          if (new_itr != q_vector->itr_val) {                                             
                /* this attempts to bias the interrupt rate towards Bulk                 │                  /* this attempts to bias the interrupt rate towards Bulk                
                 * by adding intermediate steps when interrupt rate is                   │                   * by adding intermediate steps when interrupt rate is                  
                 * increasing                                                            │                   * increasing                                                           
                 */                                                                      │                   */                                                                     
                new_itr = new_itr > q_vector->itr_val ?                                  │                  new_itr = new_itr > q_vector->itr_val ?                                 
                          max((new_itr * q_vector->itr_val) /                            │                            max((new_itr * q_vector->itr_val) /                           
                          (new_itr + (q_vector->itr_val >> 2)),                          │                            (new_itr + (q_vector->itr_val >> 2)),                         
                          new_itr) : new_itr;                                            │                            new_itr) : new_itr;                                           
                /* Don't write the value here; it resets the adapter's                   │                  /* Don't write the value here; it resets the adapter's                  
                 * internal timer, and causes us to delay far longer than                │                   * internal timer, and causes us to delay far longer than               
                 * we should between interrupts.  Instead, we write the ITR              │                   * we should between interrupts.  Instead, we write the ITR             
                 * value at the beginning of the next interrupt so the timing            │                   * value at the beginning of the next interrupt so the timing           
                 * ends up being correct.                                                │                   * ends up being correct.                                               
                 */                                                                      │                   */                                                                     
                q_vector->itr_val = new_itr;                                             │                  q_vector->itr_val = new_itr;                                            
                q_vector->set_itr = 1;                                                   │                  q_vector->set_itr = 1;                                                  
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/apm/xgene/xgene_enet_cle.c:281                               │ linux/drivers/net/ethernet/apm/xgene/xgene_enet_cle.c:451                                
                                                                                         │                                                                                          
                /* RSS_IPV4_TCP_NODE */                                                  │                  /* RSS_IPV4_OTHERS_NODE */                                              
                .node_type = EWDN,                                                       │                  .node_type = EWDN,                                                      
                .last_node = 0,                                                          │                  .last_node = 0,                                                         
                .hdr_len_store = 1,                                                      │                  .hdr_len_store = 1,                                                     
                .hdr_extn = NO_BYTE,                                                     │                  .hdr_extn = NO_BYTE,                                                    
                .byte_store = NO_BYTE,                                                   │                  .byte_store = NO_BYTE,                                                  
                .search_byte_store = BOTH_BYTES,                                         │                  .search_byte_store = BOTH_BYTES,                                        
                .result_pointer = DB_RES_DROP,                                           │                  .result_pointer = DB_RES_DROP,                                          
                .num_branches = 6,                                                       │                  .num_branches = 6,                                                      
                .branch = {                                                              │                  .branch = {                                                             
                        {                                                                │                          {                                                               
                                /* SRC IPV4 B01 */                                       │                                  /* SRC IPV4 B01 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 28,                               │                                  .next_packet_pointer = 28,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_TCP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 1,                                        │                                  .next_branch = 1,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* SRC IPV4 B23 */                                       │                                  /* SRC IPV4 B23 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 30,                               │                                  .next_packet_pointer = 30,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_TCP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 2,                                        │                                  .next_branch = 2,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* DST IPV4 B01 */                                       │                                  /* DST IPV4 B01 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 32,                               │                                  .next_packet_pointer = 32,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_TCP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 3,                                        │                                  .next_branch = 3,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* DST IPV4 B23 */                                       │                                  /* DST IPV4 B23 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 34,                               │                                  .next_packet_pointer = 34,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_TCP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 4,                                        │                                  .next_branch = 4,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* TCP SRC Port */                                       │                                  /* TCP SRC Port */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 36,                               │                                  .next_packet_pointer = 36,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_TCP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 5,                                        │                                  .next_branch = 5,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* TCP DST Port */                                       │                                  /* TCP DST Port */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 256,                              │                                  .next_packet_pointer = 260,                             
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = LAST_NODE,                                  │                                  .next_node = LAST_NODE,                                 
                                .next_branch = 0,                                        │                                  .next_branch = 0,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/apm/xgene/xgene_enet_cle.c:366                               │ linux/drivers/net/ethernet/apm/xgene/xgene_enet_cle.c:451                                
                                                                                         │                                                                                          
                /* RSS_IPV4_UDP_NODE */                                                  │                  /* RSS_IPV4_OTHERS_NODE */                                              
                .node_type = EWDN,                                                       │                  .node_type = EWDN,                                                      
                .last_node = 0,                                                          │                  .last_node = 0,                                                         
                .hdr_len_store = 1,                                                      │                  .hdr_len_store = 1,                                                     
                .hdr_extn = NO_BYTE,                                                     │                  .hdr_extn = NO_BYTE,                                                    
                .byte_store = NO_BYTE,                                                   │                  .byte_store = NO_BYTE,                                                  
                .search_byte_store = BOTH_BYTES,                                         │                  .search_byte_store = BOTH_BYTES,                                        
                .result_pointer = DB_RES_DROP,                                           │                  .result_pointer = DB_RES_DROP,                                          
                .num_branches = 6,                                                       │                  .num_branches = 6,                                                      
                .branch = {                                                              │                  .branch = {                                                             
                        {                                                                │                          {                                                               
                                /* SRC IPV4 B01 */                                       │                                  /* SRC IPV4 B01 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 28,                               │                                  .next_packet_pointer = 28,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 1,                                        │                                  .next_branch = 1,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* SRC IPV4 B23 */                                       │                                  /* SRC IPV4 B23 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 30,                               │                                  .next_packet_pointer = 30,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 2,                                        │                                  .next_branch = 2,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* DST IPV4 B01 */                                       │                                  /* DST IPV4 B01 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 32,                               │                                  .next_packet_pointer = 32,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 3,                                        │                                  .next_branch = 3,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* DST IPV4 B23 */                                       │                                  /* DST IPV4 B23 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 34,                               │                                  .next_packet_pointer = 34,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 4,                                        │                                  .next_branch = 4,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* TCP SRC Port */                                       │                                  /* TCP SRC Port */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 36,                               │                                  .next_packet_pointer = 36,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_OTHERS_NODE,                      
                                .next_branch = 5,                                        │                                  .next_branch = 5,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* TCP DST Port */                                       │                                  /* TCP DST Port */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 258,                              │                                  .next_packet_pointer = 260,                             
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = LAST_NODE,                                  │                                  .next_node = LAST_NODE,                                 
                                .next_branch = 0,                                        │                                  .next_branch = 0,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/apm/xgene/xgene_enet_cle.c:366                               │ linux/drivers/net/ethernet/apm/xgene/xgene_enet_cle.c:281                                
                                                                                         │                                                                                          
                /* RSS_IPV4_UDP_NODE */                                                  │                  /* RSS_IPV4_TCP_NODE */                                                 
                .node_type = EWDN,                                                       │                  .node_type = EWDN,                                                      
                .last_node = 0,                                                          │                  .last_node = 0,                                                         
                .hdr_len_store = 1,                                                      │                  .hdr_len_store = 1,                                                     
                .hdr_extn = NO_BYTE,                                                     │                  .hdr_extn = NO_BYTE,                                                    
                .byte_store = NO_BYTE,                                                   │                  .byte_store = NO_BYTE,                                                  
                .search_byte_store = BOTH_BYTES,                                         │                  .search_byte_store = BOTH_BYTES,                                        
                .result_pointer = DB_RES_DROP,                                           │                  .result_pointer = DB_RES_DROP,                                          
                .num_branches = 6,                                                       │                  .num_branches = 6,                                                      
                .branch = {                                                              │                  .branch = {                                                             
                        {                                                                │                          {                                                               
                                /* SRC IPV4 B01 */                                       │                                  /* SRC IPV4 B01 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 28,                               │                                  .next_packet_pointer = 28,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_TCP_NODE,                         
                                .next_branch = 1,                                        │                                  .next_branch = 1,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* SRC IPV4 B23 */                                       │                                  /* SRC IPV4 B23 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 30,                               │                                  .next_packet_pointer = 30,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_TCP_NODE,                         
                                .next_branch = 2,                                        │                                  .next_branch = 2,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* DST IPV4 B01 */                                       │                                  /* DST IPV4 B01 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 32,                               │                                  .next_packet_pointer = 32,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_TCP_NODE,                         
                                .next_branch = 3,                                        │                                  .next_branch = 3,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* DST IPV4 B23 */                                       │                                  /* DST IPV4 B23 */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 34,                               │                                  .next_packet_pointer = 34,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_TCP_NODE,                         
                                .next_branch = 4,                                        │                                  .next_branch = 4,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* TCP SRC Port */                                       │                                  /* TCP SRC Port */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 36,                               │                                  .next_packet_pointer = 36,                              
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = RSS_IPV4_UDP_NODE,                          │                                  .next_node = RSS_IPV4_TCP_NODE,                         
                                .next_branch = 5,                                        │                                  .next_branch = 5,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        },                                                               │                          },                                                              
                        {                                                                │                          {                                                               
                                /* TCP DST Port */                                       │                                  /* TCP DST Port */                                      
                                .valid = 0,                                              │                                  .valid = 0,                                             
                                .next_packet_pointer = 258,                              │                                  .next_packet_pointer = 256,                             
                                .jump_bw = JMP_FW,                                       │                                  .jump_bw = JMP_FW,                                      
                                .jump_rel = JMP_ABS,                                     │                                  .jump_rel = JMP_ABS,                                    
                                .operation = EQT,                                        │                                  .operation = EQT,                                       
                                .next_node = LAST_NODE,                                  │                                  .next_node = LAST_NODE,                                 
                                .next_branch = 0,                                        │                                  .next_branch = 0,                                       
                                .data = 0x0,                                             │                                  .data = 0x0,                                            
                                .mask = 0xffff                                           │                                  .mask = 0xffff                                          
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:2288                                 │ linux/drivers/net/ethernet/intel/igc/igc_ethtool.c:816                                   
                                                                                         │                                                                                          
        struct igb_adapter *adapter = netdev_priv(netdev);                               │          struct igc_adapter *adapter = netdev_priv(netdev);                              
        struct rtnl_link_stats64 *net_stats = &adapter->stats64;                         │          struct rtnl_link_stats64 *net_stats = &adapter->stats64;                        
        unsigned int start;                                                              │          unsigned int start;                                                             
        struct igb_ring *ring;                                                           │          struct igc_ring *ring;                                                          
        int i, j;                                                                        │          int i, j;                                                                       
        char *p;                                                                         │          char *p;                                                                        
                                                                                         │                                                                                          
        spin_lock(&adapter->stats64_lock);                                               │          spin_lock(&adapter->stats64_lock);                                              
        igb_update_stats(adapter);                                                       │          igc_update_stats(adapter);                                                      
                                                                                         │                                                                                          
        for (i = 0; i < IGB_GLOBAL_STATS_LEN; i++) {                                     │          for (i = 0; i < IGC_GLOBAL_STATS_LEN; i++) {                                    
                p = (char *)adapter + igb_gstrings_stats[i].stat_offset;                 │                  p = (char *)adapter + igc_gstrings_stats[i].stat_offset;                
                data[i] = (igb_gstrings_stats[i].sizeof_stat ==                          │                  data[i] = (igc_gstrings_stats[i].sizeof_stat ==                         
                        sizeof(u64)) ? *(u64 *)p : *(u32 *)p;                            │                          sizeof(u64)) ? *(u64 *)p : *(u32 *)p;                           
        }                                                                                │          }                                                                               
        for (j = 0; j < IGB_NETDEV_STATS_LEN; j++, i++) {                                │          for (j = 0; j < IGC_NETDEV_STATS_LEN; j++, i++) {                               
                p = (char *)net_stats + igb_gstrings_net_stats[j].stat_offset;           │                  p = (char *)net_stats + igc_gstrings_net_stats[j].stat_offset;          
                data[i] = (igb_gstrings_net_stats[j].sizeof_stat ==                      │                  data[i] = (igc_gstrings_net_stats[j].sizeof_stat ==                     
                        sizeof(u64)) ? *(u64 *)p : *(u32 *)p;                            │                          sizeof(u64)) ? *(u64 *)p : *(u32 *)p;                           
        }                                                                                │          }                                                                               
        for (j = 0; j < adapter->num_tx_queues; j++) {                                   │          for (j = 0; j < adapter->num_tx_queues; j++) {                                  
                u64     restart2;                                                        │                  u64     restart2;                                                       
                                                                                         │                                                                                          
                ring = adapter->tx_ring[j];                                              │                  ring = adapter->tx_ring[j];                                             
                do {                                                                     │                  do {                                                                    
                        start = u64_stats_fetch_begin_irq(&ring->tx_syncp);              │                          start = u64_stats_fetch_begin_irq(&ring->tx_syncp);             
                        data[i]   = ring->tx_stats.packets;                              │                          data[i]   = ring->tx_stats.packets;                             
                        data[i+1] = ring->tx_stats.bytes;                                │                          data[i + 1] = ring->tx_stats.bytes;                             
                        data[i+2] = ring->tx_stats.restart_queue;                        │                          data[i + 2] = ring->tx_stats.restart_queue;                     
                } while (u64_stats_fetch_retry_irq(&ring->tx_syncp, start));             │                  } while (u64_stats_fetch_retry_irq(&ring->tx_syncp, start));            
                do {                                                                     │                  do {                                                                    
                        start = u64_stats_fetch_begin_irq(&ring->tx_syncp2);             │                          start = u64_stats_fetch_begin_irq(&ring->tx_syncp2);            
                        restart2  = ring->tx_stats.restart_queue2;                       │                          restart2  = ring->tx_stats.restart_queue2;                      
                } while (u64_stats_fetch_retry_irq(&ring->tx_syncp2, start));            │                  } while (u64_stats_fetch_retry_irq(&ring->tx_syncp2, start));           
                data[i+2] += restart2;                                                   │                  data[i + 2] += restart2;                                                
                                                                                         │                                                                                          
                i += IGB_TX_QUEUE_STATS_LEN;                                             │                  i += IGC_TX_QUEUE_STATS_LEN;                                            
        }                                                                                │          }                                                                               
        for (j = 0; j < adapter->num_rx_queues; j++) {                                   │          for (j = 0; j < adapter->num_rx_queues; j++) {                                  
                ring = adapter->rx_ring[j];                                              │                  ring = adapter->rx_ring[j];                                             
                do {                                                                     │                  do {                                                                    
                        start = u64_stats_fetch_begin_irq(&ring->rx_syncp);              │                          start = u64_stats_fetch_begin_irq(&ring->rx_syncp);             
                        data[i]   = ring->rx_stats.packets;                              │                          data[i]   = ring->rx_stats.packets;                             
                        data[i+1] = ring->rx_stats.bytes;                                │                          data[i + 1] = ring->rx_stats.bytes;                             
                        data[i+2] = ring->rx_stats.drops;                                │                          data[i + 2] = ring->rx_stats.drops;                             
                        data[i+3] = ring->rx_stats.csum_err;                             │                          data[i + 3] = ring->rx_stats.csum_err;                          
                        data[i+4] = ring->rx_stats.alloc_failed;                         │                          data[i + 4] = ring->rx_stats.alloc_failed;                      
                } while (u64_stats_fetch_retry_irq(&ring->rx_syncp, start));             │                  } while (u64_stats_fetch_retry_irq(&ring->rx_syncp, start));            
                i += IGB_RX_QUEUE_STATS_LEN;                                             │                  i += IGC_RX_QUEUE_STATS_LEN;                                            
        }                                                                                │          }                                                                               
        spin_unlock(&adapter->stats64_lock);                                             │          spin_unlock(&adapter->stats64_lock);                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c:2617                     │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c:2681                      
                                                                                         │                                                                                          
        struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan;                                   │          struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan;                                  
        struct mlxsw_sp_bridge_device *bridge_device;                                    │          struct mlxsw_sp_bridge_device *bridge_device;                                   
        struct mlxsw_sp_bridge_port *bridge_port;                                        │          struct mlxsw_sp_bridge_port *bridge_port;                                       
        struct mlxsw_sp_port *mlxsw_sp_port;                                             │          struct mlxsw_sp_port *mlxsw_sp_port;                                            
        enum switchdev_notifier_type type;                                               │          enum switchdev_notifier_type type;                                              
        char mac[ETH_ALEN];                                                              │          char mac[ETH_ALEN];                                                             
        u16 local_port;                                                                  │          u16 lag_vid = 0;                                                                
                                                                                         │          u16 lag_id;                                                                     
        u16 vid, fid;                                                                    │          u16 vid, fid;                                                                   
        bool do_notification = true;                                                     │          bool do_notification = true;                                                    
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        mlxsw_reg_sfn_mac_unpack(sfn_pl, rec_index, mac, &fid, &local_port);             │          mlxsw_reg_sfn_mac_lag_unpack(sfn_pl, rec_index, mac, &fid, &lag_id);            
                                                                                         │          mlxsw_sp_port = mlxsw_sp_lag_rep_port(mlxsw_sp, lag_id);                        
        if (WARN_ON_ONCE(!mlxsw_sp_local_port_is_valid(mlxsw_sp, local_port)))           │                                                                                          
                return;                                                                  │                                                                                          
        mlxsw_sp_port = mlxsw_sp->ports[local_port];                                     │                                                                                          
        if (!mlxsw_sp_port) {                                                            │          if (!mlxsw_sp_port) {                                                           
                dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Incorrect local port in FD │                  dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Cannot find port represent
                goto just_remove;                                                        │                  goto just_remove;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (mlxsw_sp_fid_is_dummy(mlxsw_sp, fid))                                        │          if (mlxsw_sp_fid_is_dummy(mlxsw_sp, fid))                                       
                goto just_remove;                                                        │                  goto just_remove;                                                       
                                                                                         │                                                                                          
        mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_fid(mlxsw_sp_port, fid);         │          mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_fid(mlxsw_sp_port, fid);        
        if (!mlxsw_sp_port_vlan) {                                                       │          if (!mlxsw_sp_port_vlan) {                                                      
                netdev_err(mlxsw_sp_port->dev, "Failed to find a matching {Port, VID} fo │                  netdev_err(mlxsw_sp_port->dev, "Failed to find a matching {Port, VID} fo
                goto just_remove;                                                        │                  goto just_remove;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        bridge_port = mlxsw_sp_port_vlan->bridge_port;                                   │          bridge_port = mlxsw_sp_port_vlan->bridge_port;                                  
        if (!bridge_port) {                                                              │          if (!bridge_port) {                                                             
                netdev_err(mlxsw_sp_port->dev, "{Port, VID} not associated with a bridge │                  netdev_err(mlxsw_sp_port->dev, "{Port, VID} not associated with a bridge
                goto just_remove;                                                        │                  goto just_remove;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        bridge_device = bridge_port->bridge_device;                                      │          bridge_device = bridge_port->bridge_device;                                     
        vid = bridge_device->vlan_enabled ? mlxsw_sp_port_vlan->vid : 0;                 │          vid = bridge_device->vlan_enabled ? mlxsw_sp_port_vlan->vid : 0;                
                                                                                         │          lag_vid = mlxsw_sp_fid_lag_vid_valid(mlxsw_sp_port_vlan->fid) ?                 
                                                                                         │                    mlxsw_sp_port_vlan->vid : 0;                                          
                                                                                         │                                                                                          
do_fdb_op:                                                                               │  do_fdb_op:                                                                              
        err = mlxsw_sp_port_fdb_uc_op(mlxsw_sp, local_port, mac, fid,                    │          err = mlxsw_sp_port_fdb_uc_lag_op(mlxsw_sp, lag_id, mac, fid, lag_vid,          
                                      adding, true);                                     │                                            adding, true);                                
        if (err) {                                                                       │          if (err) {                                                                      
                dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to set FDB entry\n" │                  dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to set FDB entry\n"
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!do_notification)                                                            │          if (!do_notification)                                                           
                return;                                                                  │                  return;                                                                 
        type = adding ? SWITCHDEV_FDB_ADD_TO_BRIDGE : SWITCHDEV_FDB_DEL_TO_BRIDGE;       │          type = adding ? SWITCHDEV_FDB_ADD_TO_BRIDGE : SWITCHDEV_FDB_DEL_TO_BRIDGE;      
        mlxsw_sp_fdb_call_notifiers(type, mac, vid, bridge_port->dev, adding);           │          mlxsw_sp_fdb_call_notifiers(type, mac, vid, bridge_port->dev, adding);          
                                                                                         │                                                                                          
        return;                                                                          │          return;                                                                         
                                                                                         │                                                                                          
just_remove:                                                                             │  just_remove:                                                                            
        adding = false;                                                                  │          adding = false;                                                                 
        do_notification = false;                                                         │          do_notification = false;                                                        
        goto do_fdb_op;                                                                  │          goto do_fdb_op;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000/e1000_main.c:1500                                │ linux/drivers/net/ethernet/intel/e1000/e1000_main.c:1690                                 
                                                                                         │                                                                                          
        struct pci_dev *pdev = adapter->pdev;                                            │          struct pci_dev *pdev = adapter->pdev;                                           
        int size;                                                                        │          int size, desc_len;                                                             
                                                                                         │                                                                                          
        size = sizeof(struct e1000_tx_buffer) * txdr->count;                             │          size = sizeof(struct e1000_rx_buffer) * rxdr->count;                            
        txdr->buffer_info = vzalloc(size);                                               │          rxdr->buffer_info = vzalloc(size);                                              
        if (!txdr->buffer_info)                                                          │          if (!rxdr->buffer_info)                                                         
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        /* round up to nearest 4K */                                                     │          desc_len = sizeof(struct e1000_rx_desc);                                        
                                                                                         │                                                                                          
        txdr->size = txdr->count * sizeof(struct e1000_tx_desc);                         │          /* Round up to nearest 4K */                                                    
        txdr->size = ALIGN(txdr->size, 4096);                                            │                                                                                          
                                                                                         │                                                                                          
        txdr->desc = dma_alloc_coherent(&pdev->dev, txdr->size, &txdr->dma,              │          rxdr->size = rxdr->count * desc_len;                                            
                                                                                         │          rxdr->size = ALIGN(rxdr->size, 4096);                                           
                                                                                         │                                                                                          
                                                                                         │          rxdr->desc = dma_alloc_coherent(&pdev->dev, rxdr->size, &rxdr->dma,             
                                        GFP_KERNEL);                                     │                                          GFP_KERNEL);                                    
        if (!txdr->desc) {                                                               │          if (!rxdr->desc) {                                                              
setup_tx_desc_die:                                                                       │  setup_rx_desc_die:                                                                      
                vfree(txdr->buffer_info);                                                │                  vfree(rxdr->buffer_info);                                               
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Fix for errata 23, can't cross 64kB boundary */                               │          /* Fix for errata 23, can't cross 64kB boundary */                              
        if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) {                   │          if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) {                  
                void *olddesc = txdr->desc;                                              │                  void *olddesc = rxdr->desc;                                             
                dma_addr_t olddma = txdr->dma;                                           │                  dma_addr_t olddma = rxdr->dma;                                          
                e_err(tx_err, "txdr align check failed: %u bytes at %p\n",               │                  e_err(rx_err, "rxdr align check failed: %u bytes at %p\n",              
                      txdr->size, txdr->desc);                                           │                        rxdr->size, rxdr->desc);                                          
                /* Try again, without freeing the previous */                            │                  /* Try again, without freeing the previous */                           
                txdr->desc = dma_alloc_coherent(&pdev->dev, txdr->size,                  │                  rxdr->desc = dma_alloc_coherent(&pdev->dev, rxdr->size,                 
                                                &txdr->dma, GFP_KERNEL);                 │                                                  &rxdr->dma, GFP_KERNEL);                
                /* Failed allocation, critical failure */                                │                  /* Failed allocation, critical failure */                               
                if (!txdr->desc) {                                                       │                  if (!rxdr->desc) {                                                      
                        dma_free_coherent(&pdev->dev, txdr->size, olddesc,               │                          dma_free_coherent(&pdev->dev, rxdr->size, olddesc,              
                                          olddma);                                       │                                            olddma);                                      
                        goto setup_tx_desc_die;                                          │                          goto setup_rx_desc_die;                                         
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) {           │                  if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) {          
                        /* give up */                                                    │                          /* give up */                                                   
                        dma_free_coherent(&pdev->dev, txdr->size, txdr->desc,            │                          dma_free_coherent(&pdev->dev, rxdr->size, rxdr->desc,           
                                          txdr->dma);                                    │                                            rxdr->dma);                                   
                        dma_free_coherent(&pdev->dev, txdr->size, olddesc,               │                          dma_free_coherent(&pdev->dev, rxdr->size, olddesc,              
                                          olddma);                                       │                                            olddma);                                      
                        e_err(probe, "Unable to allocate aligned memory "                │                          e_err(probe, "Unable to allocate aligned memory for "           
                              "for the transmit descriptor ring\n");                     │                                "the Rx descriptor ring\n");                              
                        vfree(txdr->buffer_info);                                        │                          goto setup_rx_desc_die;                                         
                        return -ENOMEM;                                                  │                                                                                          
                } else {                                                                 │                  } else {                                                                
                        /* Free old allocation, new allocation was successful */         │                          /* Free old allocation, new allocation was successful */        
                        dma_free_coherent(&pdev->dev, txdr->size, olddesc,               │                          dma_free_coherent(&pdev->dev, rxdr->size, olddesc,              
                                          olddma);                                       │                                            olddma);                                      
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
        memset(txdr->desc, 0, txdr->size);                                               │          memset(rxdr->desc, 0, rxdr->size);                                              
                                                                                         │                                                                                          
        txdr->next_to_use = 0;                                                           │          rxdr->next_to_clean = 0;                                                        
        txdr->next_to_clean = 0;                                                         │          rxdr->next_to_use = 0;                                                          
                                                                                         │          rxdr->rx_skb_top = NULL;                                                        
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/selftest.c:466                                           │ linux/drivers/net/ethernet/sfc/falcon/selftest.c:468                                     
                                                                                         │                                                                                          
        struct efx_nic *efx = tx_queue->efx;                                             │          struct ef4_nic *efx = tx_queue->efx;                                            
        struct efx_loopback_state *state = efx->loopback_selftest;                       │          struct ef4_loopback_state *state = efx->loopback_selftest;                      
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
        int tx_done = 0, rx_good, rx_bad;                                                │          int tx_done = 0, rx_good, rx_bad;                                               
        int i, rc = 0;                                                                   │          int i, rc = 0;                                                                  
                                                                                         │                                                                                          
        netif_tx_lock_bh(efx->net_dev);                                                  │          netif_tx_lock_bh(efx->net_dev);                                                 
                                                                                         │                                                                                          
        /* Count the number of tx completions, and decrement the refcnt. Any             │          /* Count the number of tx completions, and decrement the refcnt. Any            
         * skbs not already completed will be free'd when the queue is flushed */        │           * skbs not already completed will be free'd when the queue is flushed */       
        for (i = 0; i < state->packet_count; i++) {                                      │          for (i = 0; i < state->packet_count; i++) {                                     
                skb = state->skbs[i];                                                    │                  skb = state->skbs[i];                                                   
                if (skb && !skb_shared(skb))                                             │                  if (skb && !skb_shared(skb))                                            
                        ++tx_done;                                                       │                          ++tx_done;                                                      
                dev_kfree_skb(skb);                                                      │                  dev_kfree_skb(skb);                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        netif_tx_unlock_bh(efx->net_dev);                                                │          netif_tx_unlock_bh(efx->net_dev);                                               
                                                                                         │                                                                                          
        /* Check TX completion and received packet counts */                             │          /* Check TX completion and received packet counts */                            
        rx_good = atomic_read(&state->rx_good);                                          │          rx_good = atomic_read(&state->rx_good);                                         
        rx_bad = atomic_read(&state->rx_bad);                                            │          rx_bad = atomic_read(&state->rx_bad);                                           
        if (tx_done != state->packet_count) {                                            │          if (tx_done != state->packet_count) {                                           
                /* Don't free the skbs; they will be picked up on TX                     │                  /* Don't free the skbs; they will be picked up on TX                    
                 * overflow or channel teardown.                                         │                   * overflow or channel teardown.                                        
                 */                                                                      │                   */                                                                     
                netif_err(efx, drv, efx->net_dev,                                        │                  netif_err(efx, drv, efx->net_dev,                                       
                          "TX queue %d saw only %d out of an expected %d "               │                            "TX queue %d saw only %d out of an expected %d "              
                          "TX completion events in %s loopback test\n",                  │                            "TX completion events in %s loopback test\n",                 
                          tx_queue->label, tx_done, state->packet_count,                 │                            tx_queue->queue, tx_done, state->packet_count,                
                          LOOPBACK_MODE(efx));                                           │                            LOOPBACK_MODE(efx));                                          
                rc = -ETIMEDOUT;                                                         │                  rc = -ETIMEDOUT;                                                        
                /* Allow to fall through so we see the RX errors as well */              │                  /* Allow to fall through so we see the RX errors as well */             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* We may always be up to a flush away from our desired packet total */          │          /* We may always be up to a flush away from our desired packet total */         
        if (rx_good != state->packet_count) {                                            │          if (rx_good != state->packet_count) {                                           
                netif_dbg(efx, drv, efx->net_dev,                                        │                  netif_dbg(efx, drv, efx->net_dev,                                       
                          "TX queue %d saw only %d out of an expected %d "               │                            "TX queue %d saw only %d out of an expected %d "              
                          "received packets in %s loopback test\n",                      │                            "received packets in %s loopback test\n",                     
                          tx_queue->label, rx_good, state->packet_count,                 │                            tx_queue->queue, rx_good, state->packet_count,                
                          LOOPBACK_MODE(efx));                                           │                            LOOPBACK_MODE(efx));                                          
                rc = -ETIMEDOUT;                                                         │                  rc = -ETIMEDOUT;                                                        
                /* Fall through */                                                       │                  /* Fall through */                                                      
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Update loopback test structure */                                             │          /* Update loopback test structure */                                            
        lb_tests->tx_sent[tx_queue->label] += state->packet_count;                       │          lb_tests->tx_sent[tx_queue->queue] += state->packet_count;                      
        lb_tests->tx_done[tx_queue->label] += tx_done;                                   │          lb_tests->tx_done[tx_queue->queue] += tx_done;                                  
        lb_tests->rx_good += rx_good;                                                    │          lb_tests->rx_good += rx_good;                                                   
        lb_tests->rx_bad += rx_bad;                                                      │          lb_tests->rx_bad += rx_bad;                                                     
                                                                                         │                                                                                          
        return rc;                                                                       │          return rc;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwmac5.c:421                                  │ linux/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:1014                           
                                                                                         │                                                                                          
        struct stmmac_tc_entry *entry, *frag;                                            │          struct stmmac_tc_entry *entry, *frag;                                           
        int i, ret, nve = 0;                                                             │          int i, ret, nve = 0;                                                            
        u32 curr_prio = 0;                                                               │          u32 curr_prio = 0;                                                              
        u32 old_val, val;                                                                │          u32 old_val, val;                                                               
                                                                                         │                                                                                          
        /* Force disable RX */                                                           │          /* Force disable RX */                                                          
        old_val = readl(ioaddr + GMAC_CONFIG);                                           │          old_val = readl(ioaddr + XGMAC_RX_CONFIG);                                      
        val = old_val & ~GMAC_CONFIG_RE;                                                 │          val = old_val & ~XGMAC_CONFIG_RE;                                               
        writel(val, ioaddr + GMAC_CONFIG);                                               │          writel(val, ioaddr + XGMAC_RX_CONFIG);                                          
                                                                                         │                                                                                          
        /* Disable RX Parser */                                                          │          /* Disable RX Parser */                                                         
        ret = dwmac5_rxp_disable(ioaddr);                                                │          ret = dwxgmac3_rxp_disable(ioaddr);                                             
        if (ret)                                                                         │          if (ret)                                                                        
                goto re_enable;                                                          │                  goto re_enable;                                                         
                                                                                         │                                                                                          
        /* Set all entries as NOT in HW */                                               │          /* Set all entries as NOT in HW */                                              
        for (i = 0; i < count; i++) {                                                    │          for (i = 0; i < count; i++) {                                                   
                entry = &entries[i];                                                     │                  entry = &entries[i];                                                    
                entry->in_hw = false;                                                    │                  entry->in_hw = false;                                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Update entries by reverse order */                                            │          /* Update entries by reverse order */                                           
        while (1) {                                                                      │          while (1) {                                                                     
                entry = dwmac5_rxp_get_next_entry(entries, count, curr_prio);            │                  entry = dwxgmac3_rxp_get_next_entry(entries, count, curr_prio);         
                if (!entry)                                                              │                  if (!entry)                                                             
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                curr_prio = entry->prio;                                                 │                  curr_prio = entry->prio;                                                
                frag = entry->frag_ptr;                                                  │                  frag = entry->frag_ptr;                                                 
                                                                                         │                                                                                          
                /* Set special fragment requirements */                                  │                  /* Set special fragment requirements */                                 
                if (frag) {                                                              │                  if (frag) {                                                             
                        entry->val.af = 0;                                               │                          entry->val.af = 0;                                              
                        entry->val.rf = 0;                                               │                          entry->val.rf = 0;                                              
                        entry->val.nc = 1;                                               │                          entry->val.nc = 1;                                              
                        entry->val.ok_index = nve + 2;                                   │                          entry->val.ok_index = nve + 2;                                  
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                ret = dwmac5_rxp_update_single_entry(ioaddr, entry, nve);                │                  ret = dwxgmac3_rxp_update_single_entry(ioaddr, entry, nve);             
                if (ret)                                                                 │                  if (ret)                                                                
                        goto re_enable;                                                  │                          goto re_enable;                                                 
                                                                                         │                                                                                          
                entry->table_pos = nve++;                                                │                  entry->table_pos = nve++;                                               
                entry->in_hw = true;                                                     │                  entry->in_hw = true;                                                    
                                                                                         │                                                                                          
                if (frag && !frag->in_hw) {                                              │                  if (frag && !frag->in_hw) {                                             
                        ret = dwmac5_rxp_update_single_entry(ioaddr, frag, nve);         │                          ret = dwxgmac3_rxp_update_single_entry(ioaddr, frag, nve);      
                        if (ret)                                                         │                          if (ret)                                                        
                                goto re_enable;                                          │                                  goto re_enable;                                         
                        frag->table_pos = nve++;                                         │                          frag->table_pos = nve++;                                        
                        frag->in_hw = true;                                              │                          frag->in_hw = true;                                             
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!nve)                                                                        │          if (!nve)                                                                       
                goto re_enable;                                                          │                  goto re_enable;                                                         
                                                                                         │                                                                                          
        /* Update all pass entry */                                                      │          /* Update all pass entry */                                                     
        for (i = 0; i < count; i++) {                                                    │          for (i = 0; i < count; i++) {                                                   
                entry = &entries[i];                                                     │                  entry = &entries[i];                                                    
                if (!entry->is_last)                                                     │                  if (!entry->is_last)                                                    
                        continue;                                                        │                          continue;                                                       
                                                                                         │                                                                                          
                ret = dwmac5_rxp_update_single_entry(ioaddr, entry, nve);                │                  ret = dwxgmac3_rxp_update_single_entry(ioaddr, entry, nve);             
                if (ret)                                                                 │                  if (ret)                                                                
                        goto re_enable;                                                  │                          goto re_enable;                                                 
                                                                                         │                                                                                          
                entry->table_pos = nve++;                                                │                  entry->table_pos = nve++;                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Assume n. of parsable entries == n. of valid entries */                       │          /* Assume n. of parsable entries == n. of valid entries */                      
        val = (nve << 16) & NPE;                                                         │          val = (nve << 16) & XGMAC_NPE;                                                  
        val |= nve & NVE;                                                                │          val |= nve & XGMAC_NVE;                                                         
        writel(val, ioaddr + MTL_RXP_CONTROL_STATUS);                                    │          writel(val, ioaddr + XGMAC_MTL_RXP_CONTROL_STATUS);                             
                                                                                         │                                                                                          
        /* Enable RX Parser */                                                           │          /* Enable RX Parser */                                                          
        dwmac5_rxp_enable(ioaddr);                                                       │          dwxgmac3_rxp_enable(ioaddr);                                                    
                                                                                         │                                                                                          
re_enable:                                                                               │  re_enable:                                                                              
        /* Re-enable RX */                                                               │          /* Re-enable RX */                                                              
        writel(old_val, ioaddr + GMAC_CONFIG);                                           │          writel(old_val, ioaddr + XGMAC_RX_CONFIG);                                      
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_virtchnl.c:3214                                │ linux/drivers/net/ethernet/intel/ice/ice_virtchnl.c:3140                                 
                                                                                         │                                                                                          
        enum virtchnl_status_code v_ret = VIRTCHNL_STATUS_SUCCESS;                       │          enum virtchnl_status_code v_ret = VIRTCHNL_STATUS_SUCCESS;                      
        struct virtchnl_vlan_supported_caps *stripping_support;                          │          struct virtchnl_vlan_supported_caps *stripping_support;                         
        struct virtchnl_vlan_setting *strip_msg =                                        │          struct virtchnl_vlan_setting *strip_msg =                                       
                (struct virtchnl_vlan_setting *)msg;                                     │                  (struct virtchnl_vlan_setting *)msg;                                    
        u32 ethertype_setting;                                                           │          u32 ethertype_setting;                                                          
        struct ice_vsi *vsi;                                                             │          struct ice_vsi *vsi;                                                            
                                                                                         │                                                                                          
        if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {                             │          if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {                            
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!ice_vc_isvalid_vsi_id(vf, strip_msg->vport_id)) {                           │          if (!ice_vc_isvalid_vsi_id(vf, strip_msg->vport_id)) {                          
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        vsi = ice_get_vf_vsi(vf);                                                        │          vsi = ice_get_vf_vsi(vf);                                                       
        if (!vsi) {                                                                      │          if (!vsi) {                                                                     
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        stripping_support = &vf->vlan_v2_caps.offloads.stripping_support;                │          stripping_support = &vf->vlan_v2_caps.offloads.stripping_support;               
        if (!ice_vc_valid_vlan_setting_msg(stripping_support, strip_msg)) {              │          if (!ice_vc_valid_vlan_setting_msg(stripping_support, strip_msg)) {             
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ethertype_setting = strip_msg->outer_ethertype_setting;                          │          ethertype_setting = strip_msg->outer_ethertype_setting;                         
        if (ethertype_setting) {                                                         │          if (ethertype_setting) {                                                        
                if (vsi->outer_vlan_ops.dis_stripping(vsi)) {                            │                  if (ice_vc_ena_vlan_offload(vsi,                                        
                                                                                         │                                              vsi->outer_vlan_ops.ena_stripping,          
                                                                                         │                                              ethertype_setting)) {                       
                        v_ret = VIRTCHNL_STATUS_ERR_PARAM;                               │                          v_ret = VIRTCHNL_STATUS_ERR_PARAM;                              
                        goto out;                                                        │                          goto out;                                                       
                } else {                                                                 │                  } else {                                                                
                        enum ice_l2tsel l2tsel =                                         │                          enum ice_l2tsel l2tsel =                                        
                                ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG1;                     │                                  ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND;                
                                                                                         │                                                                                          
                        /* PF tells the VF that the outer VLAN tag is always             │                          /* PF tells the VF that the outer VLAN tag is always            
                         * extracted to VIRTCHNL_VLAN_TAG_LOCATION_L2TAG2_2 and          │                           * extracted to VIRTCHNL_VLAN_TAG_LOCATION_L2TAG2_2 and         
                         * inner is always extracted to                                  │                           * inner is always extracted to                                 
                         * VIRTCHNL_VLAN_TAG_LOCATION_L2TAG1. This is needed to          │                           * VIRTCHNL_VLAN_TAG_LOCATION_L2TAG1. This is needed to         
                         * support inner stripping while outer stripping is              │                           * support outer stripping so the first tag always ends         
                         * disabled so that the first and only tag is extracted          │                           * up in L2TAG2_2ND and the second/inner tag, if                
                         * in L2TAG1.                                                    │                           * enabled, is extracted in L2TAG1.                             
                         */                                                              │                           */                                                             
                        ice_vsi_update_l2tsel(vsi, l2tsel);                              │                          ice_vsi_update_l2tsel(vsi, l2tsel);                             
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ethertype_setting = strip_msg->inner_ethertype_setting;                          │          ethertype_setting = strip_msg->inner_ethertype_setting;                         
        if (ethertype_setting && vsi->inner_vlan_ops.dis_stripping(vsi)) {               │          if (ethertype_setting &&                                                        
                                                                                         │              ice_vc_ena_vlan_offload(vsi, vsi->inner_vlan_ops.ena_stripping,             
                                                                                         │                                      ethertype_setting)) {                               
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
out:                                                                                     │  out:                                                                                    
        return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_DISABLE_VLAN_STRIPPING_V2,          │          return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_ENABLE_VLAN_STRIPPING_V2,          
                                     v_ret, NULL, 0);                                    │                                       v_ret, NULL, 0);                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/selftest.c:615                                    │ linux/drivers/net/ethernet/sfc/selftest.c:613                                            
                                                                                         │                                                                                          
        enum ef4_loopback_mode mode;                                                     │          enum efx_loopback_mode mode;                                                    
        struct ef4_loopback_state *state;                                                │          struct efx_loopback_state *state;                                               
        struct ef4_channel *channel =                                                    │          struct efx_channel *channel =                                                   
                ef4_get_channel(efx, efx->tx_channel_offset);                            │                  efx_get_channel(efx, efx->tx_channel_offset);                           
        struct ef4_tx_queue *tx_queue;                                                   │          struct efx_tx_queue *tx_queue;                                                  
        int rc = 0;                                                                      │          int rc = 0;                                                                     
                                                                                         │                                                                                          
        /* Set the port loopback_selftest member. From this point on                     │          /* Set the port loopback_selftest member. From this point on                    
         * all received packets will be dropped. Mark the state as                       │           * all received packets will be dropped. Mark the state as                      
         * "flushing" so all inflight packets are dropped */                             │           * "flushing" so all inflight packets are dropped */                            
        state = kzalloc(sizeof(*state), GFP_KERNEL);                                     │          state = kzalloc(sizeof(*state), GFP_KERNEL);                                    
        if (state == NULL)                                                               │          if (state == NULL)                                                              
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
        BUG_ON(efx->loopback_selftest);                                                  │          BUG_ON(efx->loopback_selftest);                                                 
        state->flush = true;                                                             │          state->flush = true;                                                            
        efx->loopback_selftest = state;                                                  │          efx->loopback_selftest = state;                                                 
                                                                                         │                                                                                          
        /* Test all supported loopback modes */                                          │          /* Test all supported loopback modes */                                         
        for (mode = LOOPBACK_NONE; mode <= LOOPBACK_TEST_MAX; mode++) {                  │          for (mode = LOOPBACK_NONE; mode <= LOOPBACK_TEST_MAX; mode++) {                 
                if (!(loopback_modes & (1 << mode)))                                     │                  if (!(loopback_modes & (1 << mode)))                                    
                        continue;                                                        │                          continue;                                                       
                                                                                         │                                                                                          
                /* Move the port into the specified loopback mode. */                    │                  /* Move the port into the specified loopback mode. */                   
                state->flush = true;                                                     │                  state->flush = true;                                                    
                mutex_lock(&efx->mac_lock);                                              │                  mutex_lock(&efx->mac_lock);                                             
                efx->loopback_mode = mode;                                               │                  efx->loopback_mode = mode;                                              
                rc = __ef4_reconfigure_port(efx);                                        │                  rc = __efx_reconfigure_port(efx);                                       
                mutex_unlock(&efx->mac_lock);                                            │                  mutex_unlock(&efx->mac_lock);                                           
                if (rc) {                                                                │                  if (rc) {                                                               
                        netif_err(efx, drv, efx->net_dev,                                │                          netif_err(efx, drv, efx->net_dev,                               
                                  "unable to move into %s loopback\n",                   │                                    "unable to move into %s loopback\n",                  
                                  LOOPBACK_MODE(efx));                                   │                                    LOOPBACK_MODE(efx));                                  
                        goto out;                                                        │                          goto out;                                                       
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                rc = ef4_wait_for_link(efx);                                             │                  rc = efx_wait_for_link(efx);                                            
                if (rc) {                                                                │                  if (rc) {                                                               
                        netif_err(efx, drv, efx->net_dev,                                │                          netif_err(efx, drv, efx->net_dev,                               
                                  "loopback %s never came up\n",                         │                                    "loopback %s never came up\n",                        
                                  LOOPBACK_MODE(efx));                                   │                                    LOOPBACK_MODE(efx));                                  
                        goto out;                                                        │                          goto out;                                                       
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* Test all enabled types of TX queue */                                 │                  /* Test all enabled types of TX queue */                                
                ef4_for_each_channel_tx_queue(tx_queue, channel) {                       │                  efx_for_each_channel_tx_queue(tx_queue, channel) {                      
                        state->offload_csum = (tx_queue->queue &                         │                          state->offload_csum = (tx_queue->type &                         
                                               EF4_TXQ_TYPE_OFFLOAD);                    │                                                 EFX_TXQ_TYPE_OUTER_CSUM);                
                        rc = ef4_test_loopback(tx_queue,                                 │                          rc = efx_test_loopback(tx_queue,                                
                                               &tests->loopback[mode]);                  │                                                 &tests->loopback[mode]);                 
                        if (rc)                                                          │                          if (rc)                                                         
                                goto out;                                                │                                  goto out;                                               
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
 out:                                                                                    │   out:                                                                                   
        /* Remove the flush. The caller will remove the loopback setting */              │          /* Remove the flush. The caller will remove the loopback setting */             
        state->flush = true;                                                             │          state->flush = true;                                                            
        efx->loopback_selftest = NULL;                                                   │          efx->loopback_selftest = NULL;                                                  
        wmb();                                                                           │          wmb();                                                                          
        kfree(state);                                                                    │          kfree(state);                                                                   
                                                                                         │                                                                                          
        if (rc == -EPERM)                                                                │          if (rc == -EPERM)                                                               
                rc = 0;                                                                  │                  rc = 0;                                                                 
                                                                                         │                                                                                          
        return rc;                                                                       │          return rc;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c:1160                               │ linux/drivers/net/ethernet/intel/ixgbevf/ipsec.c:552                                     
                                                                                         │                                                                                          
        struct ixgbe_adapter *adapter = netdev_priv(rx_ring->netdev);                    │          struct ixgbevf_adapter *adapter = netdev_priv(rx_ring->netdev);                 
        __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info;                    │          __le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info;                   
        __le16 ipsec_pkt_types = cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPSEC_AH |             │          __le16 ipsec_pkt_types = cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPSEC_AH |            
                                             IXGBE_RXDADV_PKTTYPE_IPSEC_ESP);            │                                               IXGBE_RXDADV_PKTTYPE_IPSEC_ESP);           
        struct ixgbe_ipsec *ipsec = adapter->ipsec;                                      │          struct ixgbevf_ipsec *ipsec = adapter->ipsec;                                   
        struct xfrm_offload *xo = NULL;                                                  │          struct xfrm_offload *xo = NULL;                                                 
        struct xfrm_state *xs = NULL;                                                    │          struct xfrm_state *xs = NULL;                                                   
        struct ipv6hdr *ip6 = NULL;                                                      │          struct ipv6hdr *ip6 = NULL;                                                     
        struct iphdr *ip4 = NULL;                                                        │          struct iphdr *ip4 = NULL;                                                       
        struct sec_path *sp;                                                             │          struct sec_path *sp;                                                            
        void *daddr;                                                                     │          void *daddr;                                                                    
        __be32 spi;                                                                      │          __be32 spi;                                                                     
        u8 *c_hdr;                                                                       │          u8 *c_hdr;                                                                      
        u8 proto;                                                                        │          u8 proto;                                                                       
                                                                                         │                                                                                          
        /* Find the ip and crypto headers in the data.                                   │          /* Find the IP and crypto headers in the data.                                  
         * We can assume no vlan header in the way, b/c the                              │           * We can assume no VLAN header in the way, b/c the                             
         * hw won't recognize the IPsec packet and anyway the                            │           * hw won't recognize the IPsec packet and anyway the                           
         * currently vlan device doesn't support xfrm offload.                           │           * currently VLAN device doesn't support xfrm offload.                          
         */                                                                              │           */                                                                             
        if (pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV4)) {                         │          if (pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV4)) {                        
                ip4 = (struct iphdr *)(skb->data + ETH_HLEN);                            │                  ip4 = (struct iphdr *)(skb->data + ETH_HLEN);                           
                daddr = &ip4->daddr;                                                     │                  daddr = &ip4->daddr;                                                    
                c_hdr = (u8 *)ip4 + ip4->ihl * 4;                                        │                  c_hdr = (u8 *)ip4 + ip4->ihl * 4;                                       
        } else if (pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV6)) {                  │          } else if (pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPV6)) {                 
                ip6 = (struct ipv6hdr *)(skb->data + ETH_HLEN);                          │                  ip6 = (struct ipv6hdr *)(skb->data + ETH_HLEN);                         
                daddr = &ip6->daddr;                                                     │                  daddr = &ip6->daddr;                                                    
                c_hdr = (u8 *)ip6 + sizeof(struct ipv6hdr);                              │                  c_hdr = (u8 *)ip6 + sizeof(struct ipv6hdr);                             
        } else {                                                                         │          } else {                                                                        
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        switch (pkt_info & ipsec_pkt_types) {                                            │          switch (pkt_info & ipsec_pkt_types) {                                           
        case cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPSEC_AH):                                 │          case cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPSEC_AH):                                
                spi = ((struct ip_auth_hdr *)c_hdr)->spi;                                │                  spi = ((struct ip_auth_hdr *)c_hdr)->spi;                               
                proto = IPPROTO_AH;                                                      │                  proto = IPPROTO_AH;                                                     
                break;                                                                   │                  break;                                                                  
        case cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPSEC_ESP):                                │          case cpu_to_le16(IXGBE_RXDADV_PKTTYPE_IPSEC_ESP):                               
                spi = ((struct ip_esp_hdr *)c_hdr)->spi;                                 │                  spi = ((struct ip_esp_hdr *)c_hdr)->spi;                                
                proto = IPPROTO_ESP;                                                     │                  proto = IPPROTO_ESP;                                                    
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        xs = ixgbe_ipsec_find_rx_state(ipsec, daddr, proto, spi, !!ip4);                 │          xs = ixgbevf_ipsec_find_rx_state(ipsec, daddr, proto, spi, !!ip4);              
        if (unlikely(!xs))                                                               │          if (unlikely(!xs))                                                              
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        sp = secpath_set(skb);                                                           │          sp = secpath_set(skb);                                                          
        if (unlikely(!sp))                                                               │          if (unlikely(!sp))                                                              
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        sp->xvec[sp->len++] = xs;                                                        │          sp->xvec[sp->len++] = xs;                                                       
        sp->olen++;                                                                      │          sp->olen++;                                                                     
        xo = xfrm_offload(skb);                                                          │          xo = xfrm_offload(skb);                                                         
        xo->flags = CRYPTO_DONE;                                                         │          xo->flags = CRYPTO_DONE;                                                        
        xo->status = CRYPTO_SUCCESS;                                                     │          xo->status = CRYPTO_SUCCESS;                                                    
                                                                                         │                                                                                          
        adapter->rx_ipsec++;                                                             │          adapter->rx_ipsec++;                                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c:578                                  │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c:477                                   
                                                                                         │                                                                                          
        u32 i, command;                                                                  │          u32 i, data, command;                                                           
                                                                                         │                                                                                          
        /* Put the data in the MDI single read and write data register*/                 │                                                                                          
        IXGBE_WRITE_REG(hw, IXGBE_MSRWD, (u32)phy_data);                                 │                                                                                          
                                                                                         │                                                                                          
        /* Setup and write the address cycle command */                                  │          /* Setup and write the address cycle command */                                 
        command = ((reg_addr << IXGBE_MSCA_NP_ADDR_SHIFT)  |                             │          command = ((reg_addr << IXGBE_MSCA_NP_ADDR_SHIFT)  |                            
                   (device_type << IXGBE_MSCA_DEV_TYPE_SHIFT) |                          │                     (device_type << IXGBE_MSCA_DEV_TYPE_SHIFT) |                         
                   (hw->phy.mdio.prtad << IXGBE_MSCA_PHY_ADDR_SHIFT) |                   │                     (hw->phy.mdio.prtad << IXGBE_MSCA_PHY_ADDR_SHIFT) |                  
                   (IXGBE_MSCA_ADDR_CYCLE | IXGBE_MSCA_MDI_COMMAND));                    │                     (IXGBE_MSCA_ADDR_CYCLE | IXGBE_MSCA_MDI_COMMAND));                   
                                                                                         │                                                                                          
        IXGBE_WRITE_REG(hw, IXGBE_MSCA, command);                                        │          IXGBE_WRITE_REG(hw, IXGBE_MSCA, command);                                       
                                                                                         │                                                                                          
        /*                                                                               │          /* Check every 10 usec to see if the address cycle completed.                   
         * Check every 10 usec to see if the address cycle completed.                    │                                                                                          
         * The MDI Command bit will clear when the operation is                          │           * The MDI Command bit will clear when the operation is                         
         * complete                                                                      │           * complete                                                                     
         */                                                                              │           */                                                                             
        for (i = 0; i < IXGBE_MDIO_COMMAND_TIMEOUT; i++) {                               │          for (i = 0; i < IXGBE_MDIO_COMMAND_TIMEOUT; i++) {                              
                udelay(10);                                                              │                  udelay(10);                                                             
                                                                                         │                                                                                          
                command = IXGBE_READ_REG(hw, IXGBE_MSCA);                                │                  command = IXGBE_READ_REG(hw, IXGBE_MSCA);                               
                if ((command & IXGBE_MSCA_MDI_COMMAND) == 0)                             │                  if ((command & IXGBE_MSCA_MDI_COMMAND) == 0)                            
                        break;                                                           │                                  break;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │                                                                                          
        if ((command & IXGBE_MSCA_MDI_COMMAND) != 0) {                                   │          if ((command & IXGBE_MSCA_MDI_COMMAND) != 0) {                                  
                hw_dbg(hw, "PHY address cmd didn't complete\n");                         │                  hw_dbg(hw, "PHY address command did not complete.\n");                  
                return IXGBE_ERR_PHY;                                                    │                  return IXGBE_ERR_PHY;                                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /*                                                                               │          /* Address cycle complete, setup and write the read                             
         * Address cycle complete, setup and write the write                             │                                                                                          
         * command                                                                       │           * command                                                                      
         */                                                                              │           */                                                                             
        command = ((reg_addr << IXGBE_MSCA_NP_ADDR_SHIFT)  |                             │          command = ((reg_addr << IXGBE_MSCA_NP_ADDR_SHIFT)  |                            
                   (device_type << IXGBE_MSCA_DEV_TYPE_SHIFT) |                          │                     (device_type << IXGBE_MSCA_DEV_TYPE_SHIFT) |                         
                   (hw->phy.mdio.prtad << IXGBE_MSCA_PHY_ADDR_SHIFT) |                   │                     (hw->phy.mdio.prtad << IXGBE_MSCA_PHY_ADDR_SHIFT) |                  
                   (IXGBE_MSCA_WRITE | IXGBE_MSCA_MDI_COMMAND));                         │                     (IXGBE_MSCA_READ | IXGBE_MSCA_MDI_COMMAND));                         
                                                                                         │                                                                                          
        IXGBE_WRITE_REG(hw, IXGBE_MSCA, command);                                        │          IXGBE_WRITE_REG(hw, IXGBE_MSCA, command);                                       
                                                                                         │                                                                                          
        /* Check every 10 usec to see if the address cycle                               │          /* Check every 10 usec to see if the address cycle                              
         * completed. The MDI Command bit will clear when the                            │           * completed. The MDI Command bit will clear when the                           
         * operation is complete                                                         │           * operation is complete                                                        
         */                                                                              │           */                                                                             
        for (i = 0; i < IXGBE_MDIO_COMMAND_TIMEOUT; i++) {                               │          for (i = 0; i < IXGBE_MDIO_COMMAND_TIMEOUT; i++) {                              
                udelay(10);                                                              │                  udelay(10);                                                             
                                                                                         │                                                                                          
                command = IXGBE_READ_REG(hw, IXGBE_MSCA);                                │                  command = IXGBE_READ_REG(hw, IXGBE_MSCA);                               
                if ((command & IXGBE_MSCA_MDI_COMMAND) == 0)                             │                  if ((command & IXGBE_MSCA_MDI_COMMAND) == 0)                            
                        break;                                                           │                          break;                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if ((command & IXGBE_MSCA_MDI_COMMAND) != 0) {                                   │          if ((command & IXGBE_MSCA_MDI_COMMAND) != 0) {                                  
                hw_dbg(hw, "PHY write cmd didn't complete\n");                           │                  hw_dbg(hw, "PHY read command didn't complete\n");                       
                return IXGBE_ERR_PHY;                                                    │                  return IXGBE_ERR_PHY;                                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          /* Read operation is complete.  Get the data                                    
                                                                                         │           * from MSRWD                                                                   
                                                                                         │           */                                                                             
                                                                                         │          data = IXGBE_READ_REG(hw, IXGBE_MSRWD);                                         
                                                                                         │          data >>= IXGBE_MSRWD_READ_DATA_SHIFT;                                           
                                                                                         │          *phy_data = (u16)(data);                                                        
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/efx.c:2261                                        │ linux/drivers/net/ethernet/sfc/efx.c:702                                                 
                                                                                         │                                                                                          
        struct net_device *net_dev = efx->net_dev;                                       │          struct net_device *net_dev = efx->net_dev;                                      
        struct ef4_channel *channel;                                                     │          struct efx_channel *channel;                                                    
        int rc;                                                                          │          int rc;                                                                         
                                                                                         │                                                                                          
        net_dev->watchdog_timeo = 5 * HZ;                                                │          net_dev->watchdog_timeo = 5 * HZ;                                               
        net_dev->irq = efx->pci_dev->irq;                                                │          net_dev->irq = efx->pci_dev->irq;                                               
        net_dev->netdev_ops = &ef4_netdev_ops;                                           │          net_dev->netdev_ops = &efx_netdev_ops;                                          
        net_dev->ethtool_ops = &ef4_ethtool_ops;                                         │          if (efx_nic_rev(efx) >= EFX_REV_HUNT_A0)                                        
        netif_set_gso_max_segs(net_dev, EF4_TSO_MAX_SEGS);                               │                  net_dev->priv_flags |= IFF_UNICAST_FLT;                                 
        net_dev->min_mtu = EF4_MIN_MTU;                                                  │          net_dev->ethtool_ops = &efx_ethtool_ops;                                        
        net_dev->max_mtu = EF4_MAX_MTU;                                                  │          netif_set_gso_max_segs(net_dev, EFX_TSO_MAX_SEGS);                              
                                                                                         │          net_dev->min_mtu = EFX_MIN_MTU;                                                 
                                                                                         │          net_dev->max_mtu = EFX_MAX_MTU;                                                 
                                                                                         │                                                                                          
        rtnl_lock();                                                                     │          rtnl_lock();                                                                    
                                                                                         │                                                                                          
        /* Enable resets to be scheduled and check whether any were                      │          /* Enable resets to be scheduled and check whether any were                     
         * already requested.  If so, the NIC is probably hosed so we                    │           * already requested.  If so, the NIC is probably hosed so we                   
         * abort.                                                                        │           * abort.                                                                       
         */                                                                              │           */                                                                             
        efx->state = STATE_READY;                                                        │          efx->state = STATE_READY;                                                       
        smp_mb(); /* ensure we change state before checking reset_pending */             │          smp_mb(); /* ensure we change state before checking reset_pending */            
        if (efx->reset_pending) {                                                        │          if (efx->reset_pending) {                                                       
                netif_err(efx, probe, efx->net_dev,                                      │                  pci_err(efx->pci_dev, "aborting probe due to scheduled reset\n");       
                          "aborting probe due to scheduled reset\n");                    │                                                                                          
                rc = -EIO;                                                               │                  rc = -EIO;                                                              
                goto fail_locked;                                                        │                  goto fail_locked;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        rc = dev_alloc_name(net_dev, net_dev->name);                                     │          rc = dev_alloc_name(net_dev, net_dev->name);                                    
        if (rc < 0)                                                                      │          if (rc < 0)                                                                     
                goto fail_locked;                                                        │                  goto fail_locked;                                                       
        ef4_update_name(efx);                                                            │          efx_update_name(efx);                                                           
                                                                                         │                                                                                          
        /* Always start with carrier off; PHY events will detect the link */             │          /* Always start with carrier off; PHY events will detect the link */            
        netif_carrier_off(net_dev);                                                      │          netif_carrier_off(net_dev);                                                     
                                                                                         │                                                                                          
        rc = register_netdevice(net_dev);                                                │          rc = register_netdevice(net_dev);                                               
        if (rc)                                                                          │          if (rc)                                                                         
                goto fail_locked;                                                        │                  goto fail_locked;                                                       
                                                                                         │                                                                                          
        ef4_for_each_channel(channel, efx) {                                             │          efx_for_each_channel(channel, efx) {                                            
                struct ef4_tx_queue *tx_queue;                                           │                  struct efx_tx_queue *tx_queue;                                          
                ef4_for_each_channel_tx_queue(tx_queue, channel)                         │                  efx_for_each_channel_tx_queue(tx_queue, channel)                        
                        ef4_init_tx_queue_core_txq(tx_queue);                            │                          efx_init_tx_queue_core_txq(tx_queue);                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ef4_associate(efx);                                                              │          efx_associate(efx);                                                             
                                                                                         │                                                                                          
        rtnl_unlock();                                                                   │          rtnl_unlock();                                                                  
                                                                                         │                                                                                          
        rc = device_create_file(&efx->pci_dev->dev, &dev_attr_phy_type);                 │          rc = device_create_file(&efx->pci_dev->dev, &dev_attr_phy_type);                
        if (rc) {                                                                        │          if (rc) {                                                                       
                netif_err(efx, drv, efx->net_dev,                                        │                  netif_err(efx, drv, efx->net_dev,                                       
                          "failed to init net dev attributes\n");                        │                            "failed to init net dev attributes\n");                       
                goto fail_registered;                                                    │                  goto fail_registered;                                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          efx_init_mcdi_logging(efx);                                                     
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
fail_registered:                                                                         │  fail_registered:                                                                        
        rtnl_lock();                                                                     │          rtnl_lock();                                                                    
        ef4_dissociate(efx);                                                             │          efx_dissociate(efx);                                                            
        unregister_netdevice(net_dev);                                                   │          unregister_netdevice(net_dev);                                                  
fail_locked:                                                                             │  fail_locked:                                                                            
        efx->state = STATE_UNINIT;                                                       │          efx->state = STATE_UNINIT;                                                      
        rtnl_unlock();                                                                   │          rtnl_unlock();                                                                  
        netif_err(efx, drv, efx->net_dev, "could not register net dev\n");               │          netif_err(efx, drv, efx->net_dev, "could not register net dev\n");              
        return rc;                                                                       │          return rc;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_ethtool.c:505                                  │ linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:782                                   
                                                                                         │                                                                                          
        struct igc_adapter *adapter = netdev_priv(netdev);                               │          struct igb_adapter *adapter = netdev_priv(netdev);                              
        struct igc_hw *hw = &adapter->hw;                                                │          struct e1000_hw *hw = &adapter->hw;                                             
        int max_len, first_word, last_word, ret_val = 0;                                 │                                                                                          
        u16 *eeprom_buff;                                                                │          u16 *eeprom_buff;                                                               
        void *ptr;                                                                       │          void *ptr;                                                                      
                                                                                         │          int max_len, first_word, last_word, ret_val = 0;                                
        u16 i;                                                                           │          u16 i;                                                                          
                                                                                         │                                                                                          
        if (eeprom->len == 0)                                                            │          if (eeprom->len == 0)                                                           
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
                                                                                         │                                                                                          
        if (hw->mac.type >= igc_i225 &&                                                  │          if ((hw->mac.type >= e1000_i210) &&                                             
            !igc_get_flash_presence_i225(hw)) {                                          │              !igb_get_flash_presence_i210(hw)) {                                         
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (eeprom->magic != (hw->vendor_id | (hw->device_id << 16)))                    │          if (eeprom->magic != (hw->vendor_id | (hw->device_id << 16)))                   
                return -EFAULT;                                                          │                  return -EFAULT;                                                         
                                                                                         │                                                                                          
        max_len = hw->nvm.word_size * 2;                                                 │          max_len = hw->nvm.word_size * 2;                                                
                                                                                         │                                                                                          
        first_word = eeprom->offset >> 1;                                                │          first_word = eeprom->offset >> 1;                                               
        last_word = (eeprom->offset + eeprom->len - 1) >> 1;                             │          last_word = (eeprom->offset + eeprom->len - 1) >> 1;                            
        eeprom_buff = kmalloc(max_len, GFP_KERNEL);                                      │          eeprom_buff = kmalloc(max_len, GFP_KERNEL);                                     
        if (!eeprom_buff)                                                                │          if (!eeprom_buff)                                                               
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        ptr = (void *)eeprom_buff;                                                       │          ptr = (void *)eeprom_buff;                                                      
                                                                                         │                                                                                          
        if (eeprom->offset & 1) {                                                        │          if (eeprom->offset & 1) {                                                       
                /* need read/modify/write of first changed EEPROM word                   │                  /* need read/modify/write of first changed EEPROM word                  
                 * only the second byte of the word is being modified                    │                   * only the second byte of the word is being modified                   
                 */                                                                      │                   */                                                                     
                ret_val = hw->nvm.ops.read(hw, first_word, 1,                            │                  ret_val = hw->nvm.ops.read(hw, first_word, 1,                           
                                            &eeprom_buff[0]);                            │                                              &eeprom_buff[0]);                           
                ptr++;                                                                   │                  ptr++;                                                                  
        }                                                                                │          }                                                                               
        if (((eeprom->offset + eeprom->len) & 1) && ret_val == 0) {                      │          if (((eeprom->offset + eeprom->len) & 1) && (ret_val == 0)) {                   
                /* need read/modify/write of last changed EEPROM word                    │                  /* need read/modify/write of last changed EEPROM word                   
                 * only the first byte of the word is being modified                     │                   * only the first byte of the word is being modified                    
                 */                                                                      │                   */                                                                     
                ret_val = hw->nvm.ops.read(hw, last_word, 1,                             │                  ret_val = hw->nvm.ops.read(hw, last_word, 1,                            
                                   &eeprom_buff[last_word - first_word]);                │                                     &eeprom_buff[last_word - first_word]);               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Device's eeprom is always little-endian, word addressable */                  │          /* Device's eeprom is always little-endian, word addressable */                 
        for (i = 0; i < last_word - first_word + 1; i++)                                 │          for (i = 0; i < last_word - first_word + 1; i++)                                
                le16_to_cpus(&eeprom_buff[i]);                                           │                  le16_to_cpus(&eeprom_buff[i]);                                          
                                                                                         │                                                                                          
        memcpy(ptr, bytes, eeprom->len);                                                 │          memcpy(ptr, bytes, eeprom->len);                                                
                                                                                         │                                                                                          
        for (i = 0; i < last_word - first_word + 1; i++)                                 │          for (i = 0; i < last_word - first_word + 1; i++)                                
                cpu_to_le16s(&eeprom_buff[i]);                                           │                  cpu_to_le16s(&eeprom_buff[i]);                                          
                                                                                         │                                                                                          
        ret_val = hw->nvm.ops.write(hw, first_word,                                      │          ret_val = hw->nvm.ops.write(hw, first_word,                                     
                                    last_word - first_word + 1, eeprom_buff);            │                                      last_word - first_word + 1, eeprom_buff);           
                                                                                         │                                                                                          
        /* Update the checksum if nvm write succeeded */                                 │          /* Update the checksum if nvm write succeeded */                                
        if (ret_val == 0)                                                                │          if (ret_val == 0)                                                               
                hw->nvm.ops.update(hw);                                                  │                  hw->nvm.ops.update(hw);                                                 
                                                                                         │                                                                                          
                                                                                         │          igb_set_fw_version(adapter);                                                    
        kfree(eeprom_buff);                                                              │          kfree(eeprom_buff);                                                             
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_ethtool.c:896                                  │ linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:2188                                  
                                                                                         │                                                                                          
        struct igc_adapter *adapter = netdev_priv(netdev);                               │          struct igb_adapter *adapter = netdev_priv(netdev);                              
        int i;                                                                           │          int i;                                                                          
                                                                                         │                                                                                          
        if (ec->rx_coalesce_usecs > IGC_MAX_ITR_USECS ||                                 │          if ((ec->rx_coalesce_usecs > IGB_MAX_ITR_USECS) ||                              
            (ec->rx_coalesce_usecs > 3 &&                                                │              ((ec->rx_coalesce_usecs > 3) &&                                             
             ec->rx_coalesce_usecs < IGC_MIN_ITR_USECS) ||                               │               (ec->rx_coalesce_usecs < IGB_MIN_ITR_USECS)) ||                            
            ec->rx_coalesce_usecs == 2)                                                  │              (ec->rx_coalesce_usecs == 2))                                               
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        if (ec->tx_coalesce_usecs > IGC_MAX_ITR_USECS ||                                 │          if ((ec->tx_coalesce_usecs > IGB_MAX_ITR_USECS) ||                              
            (ec->tx_coalesce_usecs > 3 &&                                                │              ((ec->tx_coalesce_usecs > 3) &&                                             
             ec->tx_coalesce_usecs < IGC_MIN_ITR_USECS) ||                               │               (ec->tx_coalesce_usecs < IGB_MIN_ITR_USECS)) ||                            
            ec->tx_coalesce_usecs == 2)                                                  │              (ec->tx_coalesce_usecs == 2))                                               
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        if ((adapter->flags & IGC_FLAG_QUEUE_PAIRS) && ec->tx_coalesce_usecs)            │          if ((adapter->flags & IGB_FLAG_QUEUE_PAIRS) && ec->tx_coalesce_usecs)           
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        /* If ITR is disabled, disable DMAC */                                           │          /* If ITR is disabled, disable DMAC */                                          
        if (ec->rx_coalesce_usecs == 0) {                                                │          if (ec->rx_coalesce_usecs == 0) {                                               
                if (adapter->flags & IGC_FLAG_DMAC)                                      │                  if (adapter->flags & IGB_FLAG_DMAC)                                     
                        adapter->flags &= ~IGC_FLAG_DMAC;                                │                          adapter->flags &= ~IGB_FLAG_DMAC;                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* convert to rate of irq's per second */                                        │          /* convert to rate of irq's per second */                                       
        if (ec->rx_coalesce_usecs && ec->rx_coalesce_usecs <= 3)                         │          if (ec->rx_coalesce_usecs && ec->rx_coalesce_usecs <= 3)                        
                adapter->rx_itr_setting = ec->rx_coalesce_usecs;                         │                  adapter->rx_itr_setting = ec->rx_coalesce_usecs;                        
        else                                                                             │          else                                                                            
                adapter->rx_itr_setting = ec->rx_coalesce_usecs << 2;                    │                  adapter->rx_itr_setting = ec->rx_coalesce_usecs << 2;                   
                                                                                         │                                                                                          
        /* convert to rate of irq's per second */                                        │          /* convert to rate of irq's per second */                                       
        if (adapter->flags & IGC_FLAG_QUEUE_PAIRS)                                       │          if (adapter->flags & IGB_FLAG_QUEUE_PAIRS)                                      
                adapter->tx_itr_setting = adapter->rx_itr_setting;                       │                  adapter->tx_itr_setting = adapter->rx_itr_setting;                      
        else if (ec->tx_coalesce_usecs && ec->tx_coalesce_usecs <= 3)                    │          else if (ec->tx_coalesce_usecs && ec->tx_coalesce_usecs <= 3)                   
                adapter->tx_itr_setting = ec->tx_coalesce_usecs;                         │                  adapter->tx_itr_setting = ec->tx_coalesce_usecs;                        
        else                                                                             │          else                                                                            
                adapter->tx_itr_setting = ec->tx_coalesce_usecs << 2;                    │                  adapter->tx_itr_setting = ec->tx_coalesce_usecs << 2;                   
                                                                                         │                                                                                          
        for (i = 0; i < adapter->num_q_vectors; i++) {                                   │          for (i = 0; i < adapter->num_q_vectors; i++) {                                  
                struct igc_q_vector *q_vector = adapter->q_vector[i];                    │                  struct igb_q_vector *q_vector = adapter->q_vector[i];                   
                                                                                         │                                                                                          
                q_vector->tx.work_limit = adapter->tx_work_limit;                        │                  q_vector->tx.work_limit = adapter->tx_work_limit;                       
                if (q_vector->rx.ring)                                                   │                  if (q_vector->rx.ring)                                                  
                        q_vector->itr_val = adapter->rx_itr_setting;                     │                          q_vector->itr_val = adapter->rx_itr_setting;                    
                else                                                                     │                  else                                                                    
                        q_vector->itr_val = adapter->tx_itr_setting;                     │                          q_vector->itr_val = adapter->tx_itr_setting;                    
                if (q_vector->itr_val && q_vector->itr_val <= 3)                         │                  if (q_vector->itr_val && q_vector->itr_val <= 3)                        
                        q_vector->itr_val = IGC_START_ITR;                               │                          q_vector->itr_val = IGB_START_ITR;                              
                q_vector->set_itr = 1;                                                   │                  q_vector->set_itr = 1;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c:1171                            │ linux/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c:1261                             
                                                                                         │                                                                                          
        .core_init = dwmac4_core_init,                                                   │          .core_init = dwmac4_core_init,                                                  
        .set_mac = stmmac_set_mac,                                                       │          .set_mac = stmmac_dwmac4_set_mac,                                               
        .rx_ipc = dwmac4_rx_ipc_enable,                                                  │          .rx_ipc = dwmac4_rx_ipc_enable,                                                 
        .rx_queue_enable = dwmac4_rx_queue_enable,                                       │          .rx_queue_enable = dwmac4_rx_queue_enable,                                      
        .rx_queue_prio = dwmac4_rx_queue_priority,                                       │          .rx_queue_prio = dwmac4_rx_queue_priority,                                      
        .tx_queue_prio = dwmac4_tx_queue_priority,                                       │          .tx_queue_prio = dwmac4_tx_queue_priority,                                      
        .rx_queue_routing = dwmac4_rx_queue_routing,                                     │          .rx_queue_routing = dwmac4_rx_queue_routing,                                    
        .prog_mtl_rx_algorithms = dwmac4_prog_mtl_rx_algorithms,                         │          .prog_mtl_rx_algorithms = dwmac4_prog_mtl_rx_algorithms,                        
        .prog_mtl_tx_algorithms = dwmac4_prog_mtl_tx_algorithms,                         │          .prog_mtl_tx_algorithms = dwmac4_prog_mtl_tx_algorithms,                        
        .set_mtl_tx_queue_weight = dwmac4_set_mtl_tx_queue_weight,                       │          .set_mtl_tx_queue_weight = dwmac4_set_mtl_tx_queue_weight,                      
        .map_mtl_to_dma = dwmac4_map_mtl_dma,                                            │          .map_mtl_to_dma = dwmac4_map_mtl_dma,                                           
        .config_cbs = dwmac4_config_cbs,                                                 │          .config_cbs = dwmac4_config_cbs,                                                
        .dump_regs = dwmac4_dump_regs,                                                   │          .dump_regs = dwmac4_dump_regs,                                                  
        .host_irq_status = dwmac4_irq_status,                                            │          .host_irq_status = dwmac4_irq_status,                                           
        .host_mtl_irq_status = dwmac4_irq_mtl_status,                                    │          .host_mtl_irq_status = dwmac4_irq_mtl_status,                                   
        .flow_ctrl = dwmac4_flow_ctrl,                                                   │          .flow_ctrl = dwmac4_flow_ctrl,                                                  
        .pmt = dwmac4_pmt,                                                               │          .pmt = dwmac4_pmt,                                                              
        .set_umac_addr = dwmac4_set_umac_addr,                                           │          .set_umac_addr = dwmac4_set_umac_addr,                                          
        .get_umac_addr = dwmac4_get_umac_addr,                                           │          .get_umac_addr = dwmac4_get_umac_addr,                                          
        .set_eee_mode = dwmac4_set_eee_mode,                                             │          .set_eee_mode = dwmac4_set_eee_mode,                                            
        .reset_eee_mode = dwmac4_reset_eee_mode,                                         │          .reset_eee_mode = dwmac4_reset_eee_mode,                                        
        .set_eee_lpi_entry_timer = dwmac4_set_eee_lpi_entry_timer,                       │          .set_eee_lpi_entry_timer = dwmac4_set_eee_lpi_entry_timer,                      
        .set_eee_timer = dwmac4_set_eee_timer,                                           │          .set_eee_timer = dwmac4_set_eee_timer,                                          
        .set_eee_pls = dwmac4_set_eee_pls,                                               │          .set_eee_pls = dwmac4_set_eee_pls,                                              
        .pcs_ctrl_ane = dwmac4_ctrl_ane,                                                 │          .pcs_ctrl_ane = dwmac4_ctrl_ane,                                                
        .pcs_rane = dwmac4_rane,                                                         │          .pcs_rane = dwmac4_rane,                                                        
        .pcs_get_adv_lp = dwmac4_get_adv_lp,                                             │          .pcs_get_adv_lp = dwmac4_get_adv_lp,                                            
        .debug = dwmac4_debug,                                                           │          .debug = dwmac4_debug,                                                          
        .set_filter = dwmac4_set_filter,                                                 │          .set_filter = dwmac4_set_filter,                                                
                                                                                         │          .safety_feat_config = dwmac5_safety_feat_config,                                
                                                                                         │          .safety_feat_irq_status = dwmac5_safety_feat_irq_status,                        
                                                                                         │          .safety_feat_dump = dwmac5_safety_feat_dump,                                    
                                                                                         │          .rxp_config = dwmac5_rxp_config,                                                
                                                                                         │          .flex_pps_config = dwmac5_flex_pps_config,                                      
        .set_mac_loopback = dwmac4_set_mac_loopback,                                     │          .set_mac_loopback = dwmac4_set_mac_loopback,                                    
        .update_vlan_hash = dwmac4_update_vlan_hash,                                     │          .update_vlan_hash = dwmac4_update_vlan_hash,                                    
        .sarc_configure = dwmac4_sarc_configure,                                         │          .sarc_configure = dwmac4_sarc_configure,                                        
        .enable_vlan = dwmac4_enable_vlan,                                               │          .enable_vlan = dwmac4_enable_vlan,                                              
        .set_arp_offload = dwmac4_set_arp_offload,                                       │          .set_arp_offload = dwmac4_set_arp_offload,                                      
        .config_l3_filter = dwmac4_config_l3_filter,                                     │          .config_l3_filter = dwmac4_config_l3_filter,                                    
        .config_l4_filter = dwmac4_config_l4_filter,                                     │          .config_l4_filter = dwmac4_config_l4_filter,                                    
                                                                                         │          .est_configure = dwmac5_est_configure,                                          
                                                                                         │          .est_irq_status = dwmac5_est_irq_status,                                        
                                                                                         │          .fpe_configure = dwmac5_fpe_configure,                                          
                                                                                         │          .fpe_send_mpacket = dwmac5_fpe_send_mpacket,                                    
                                                                                         │          .fpe_irq_status = dwmac5_fpe_irq_status,                                        
        .add_hw_vlan_rx_fltr = dwmac4_add_hw_vlan_rx_fltr,                               │          .add_hw_vlan_rx_fltr = dwmac4_add_hw_vlan_rx_fltr,                              
        .del_hw_vlan_rx_fltr = dwmac4_del_hw_vlan_rx_fltr,                               │          .del_hw_vlan_rx_fltr = dwmac4_del_hw_vlan_rx_fltr,                              
        .restore_hw_vlan_rx_fltr = dwmac4_restore_hw_vlan_rx_fltr,                       │          .restore_hw_vlan_rx_fltr = dwmac4_restore_hw_vlan_rx_fltr,                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c:1171                            │ linux/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c:1213                             
                                                                                         │                                                                                          
        .core_init = dwmac4_core_init,                                                   │          .core_init = dwmac4_core_init,                                                  
        .set_mac = stmmac_set_mac,                                                       │          .set_mac = stmmac_dwmac4_set_mac,                                               
        .rx_ipc = dwmac4_rx_ipc_enable,                                                  │          .rx_ipc = dwmac4_rx_ipc_enable,                                                 
        .rx_queue_enable = dwmac4_rx_queue_enable,                                       │          .rx_queue_enable = dwmac4_rx_queue_enable,                                      
        .rx_queue_prio = dwmac4_rx_queue_priority,                                       │          .rx_queue_prio = dwmac4_rx_queue_priority,                                      
        .tx_queue_prio = dwmac4_tx_queue_priority,                                       │          .tx_queue_prio = dwmac4_tx_queue_priority,                                      
        .rx_queue_routing = dwmac4_rx_queue_routing,                                     │          .rx_queue_routing = dwmac4_rx_queue_routing,                                    
        .prog_mtl_rx_algorithms = dwmac4_prog_mtl_rx_algorithms,                         │          .prog_mtl_rx_algorithms = dwmac4_prog_mtl_rx_algorithms,                        
        .prog_mtl_tx_algorithms = dwmac4_prog_mtl_tx_algorithms,                         │          .prog_mtl_tx_algorithms = dwmac4_prog_mtl_tx_algorithms,                        
        .set_mtl_tx_queue_weight = dwmac4_set_mtl_tx_queue_weight,                       │          .set_mtl_tx_queue_weight = dwmac4_set_mtl_tx_queue_weight,                      
        .map_mtl_to_dma = dwmac4_map_mtl_dma,                                            │          .map_mtl_to_dma = dwmac4_map_mtl_dma,                                           
        .config_cbs = dwmac4_config_cbs,                                                 │          .config_cbs = dwmac4_config_cbs,                                                
        .dump_regs = dwmac4_dump_regs,                                                   │          .dump_regs = dwmac4_dump_regs,                                                  
        .host_irq_status = dwmac4_irq_status,                                            │          .host_irq_status = dwmac4_irq_status,                                           
        .host_mtl_irq_status = dwmac4_irq_mtl_status,                                    │          .host_mtl_irq_status = dwmac4_irq_mtl_status,                                   
        .flow_ctrl = dwmac4_flow_ctrl,                                                   │          .flow_ctrl = dwmac4_flow_ctrl,                                                  
        .pmt = dwmac4_pmt,                                                               │          .pmt = dwmac4_pmt,                                                              
        .set_umac_addr = dwmac4_set_umac_addr,                                           │          .set_umac_addr = dwmac4_set_umac_addr,                                          
        .get_umac_addr = dwmac4_get_umac_addr,                                           │          .get_umac_addr = dwmac4_get_umac_addr,                                          
        .set_eee_mode = dwmac4_set_eee_mode,                                             │          .set_eee_mode = dwmac4_set_eee_mode,                                            
        .reset_eee_mode = dwmac4_reset_eee_mode,                                         │          .reset_eee_mode = dwmac4_reset_eee_mode,                                        
        .set_eee_lpi_entry_timer = dwmac4_set_eee_lpi_entry_timer,                       │          .set_eee_lpi_entry_timer = dwmac4_set_eee_lpi_entry_timer,                      
        .set_eee_timer = dwmac4_set_eee_timer,                                           │          .set_eee_timer = dwmac4_set_eee_timer,                                          
        .set_eee_pls = dwmac4_set_eee_pls,                                               │          .set_eee_pls = dwmac4_set_eee_pls,                                              
        .pcs_ctrl_ane = dwmac4_ctrl_ane,                                                 │          .pcs_ctrl_ane = dwmac4_ctrl_ane,                                                
        .pcs_rane = dwmac4_rane,                                                         │          .pcs_rane = dwmac4_rane,                                                        
        .pcs_get_adv_lp = dwmac4_get_adv_lp,                                             │          .pcs_get_adv_lp = dwmac4_get_adv_lp,                                            
        .debug = dwmac4_debug,                                                           │          .debug = dwmac4_debug,                                                          
        .set_filter = dwmac4_set_filter,                                                 │          .set_filter = dwmac4_set_filter,                                                
                                                                                         │          .flex_pps_config = dwmac5_flex_pps_config,                                      
        .set_mac_loopback = dwmac4_set_mac_loopback,                                     │          .set_mac_loopback = dwmac4_set_mac_loopback,                                    
        .update_vlan_hash = dwmac4_update_vlan_hash,                                     │          .update_vlan_hash = dwmac4_update_vlan_hash,                                    
        .sarc_configure = dwmac4_sarc_configure,                                         │          .sarc_configure = dwmac4_sarc_configure,                                        
        .enable_vlan = dwmac4_enable_vlan,                                               │          .enable_vlan = dwmac4_enable_vlan,                                              
        .set_arp_offload = dwmac4_set_arp_offload,                                       │          .set_arp_offload = dwmac4_set_arp_offload,                                      
        .config_l3_filter = dwmac4_config_l3_filter,                                     │          .config_l3_filter = dwmac4_config_l3_filter,                                    
        .config_l4_filter = dwmac4_config_l4_filter,                                     │          .config_l4_filter = dwmac4_config_l4_filter,                                    
                                                                                         │          .est_configure = dwmac5_est_configure,                                          
                                                                                         │          .est_irq_status = dwmac5_est_irq_status,                                        
                                                                                         │          .fpe_configure = dwmac5_fpe_configure,                                          
                                                                                         │          .fpe_send_mpacket = dwmac5_fpe_send_mpacket,                                    
                                                                                         │          .fpe_irq_status = dwmac5_fpe_irq_status,                                        
        .add_hw_vlan_rx_fltr = dwmac4_add_hw_vlan_rx_fltr,                               │          .add_hw_vlan_rx_fltr = dwmac4_add_hw_vlan_rx_fltr,                              
        .del_hw_vlan_rx_fltr = dwmac4_del_hw_vlan_rx_fltr,                               │          .del_hw_vlan_rx_fltr = dwmac4_del_hw_vlan_rx_fltr,                              
        .restore_hw_vlan_rx_fltr = dwmac4_restore_hw_vlan_rx_fltr,                       │          .restore_hw_vlan_rx_fltr = dwmac4_restore_hw_vlan_rx_fltr,                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c:453                               │ linux/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c:524                                
                                                                                         │                                                                                          
        struct virtchnl_ether_addr_list *veal;                                           │          struct virtchnl_ether_addr_list *veal;                                          
        struct iavf_mac_filter *f;                                                       │          struct iavf_mac_filter *f, *ftmp;                                               
        int i = 0, count = 0;                                                            │          int i = 0, count = 0;                                                           
        bool more = false;                                                               │          bool more = false;                                                              
        size_t len;                                                                      │          size_t len;                                                                     
                                                                                         │                                                                                          
        if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) {                                │          if (adapter->current_op != VIRTCHNL_OP_UNKNOWN) {                               
                /* bail because we already have a command pending */                     │                  /* bail because we already have a command pending */                    
                dev_err(&adapter->pdev->dev, "Cannot add filters, command %d pending\n", │                  dev_err(&adapter->pdev->dev, "Cannot remove filters, command %d pending\
                        adapter->current_op);                                            │                          adapter->current_op);                                           
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        spin_lock_bh(&adapter->mac_vlan_list_lock);                                      │          spin_lock_bh(&adapter->mac_vlan_list_lock);                                     
                                                                                         │                                                                                          
        list_for_each_entry(f, &adapter->mac_filter_list, list) {                        │          list_for_each_entry(f, &adapter->mac_filter_list, list) {                       
                if (f->add)                                                              │                  if (f->remove)                                                          
                        count++;                                                         │                          count++;                                                        
        }                                                                                │          }                                                                               
        if (!count) {                                                                    │          if (!count) {                                                                   
                adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_MAC_FILTER;                    │                  adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_MAC_FILTER;                   
                spin_unlock_bh(&adapter->mac_vlan_list_lock);                            │                  spin_unlock_bh(&adapter->mac_vlan_list_lock);                           
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
        adapter->current_op = VIRTCHNL_OP_ADD_ETH_ADDR;                                  │          adapter->current_op = VIRTCHNL_OP_DEL_ETH_ADDR;                                 
                                                                                         │                                                                                          
        len = struct_size(veal, list, count);                                            │          len = struct_size(veal, list, count);                                           
        if (len > IAVF_MAX_AQ_BUF_SIZE) {                                                │          if (len > IAVF_MAX_AQ_BUF_SIZE) {                                               
                dev_warn(&adapter->pdev->dev, "Too many add MAC changes in one request\n │                  dev_warn(&adapter->pdev->dev, "Too many delete MAC changes in one reques
                count = (IAVF_MAX_AQ_BUF_SIZE -                                          │                  count = (IAVF_MAX_AQ_BUF_SIZE -                                         
                         sizeof(struct virtchnl_ether_addr_list)) /                      │                           sizeof(struct virtchnl_ether_addr_list)) /                     
                        sizeof(struct virtchnl_ether_addr);                              │                          sizeof(struct virtchnl_ether_addr);                             
                len = struct_size(veal, list, count);                                    │                  len = struct_size(veal, list, count);                                   
                more = true;                                                             │                  more = true;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        veal = kzalloc(len, GFP_ATOMIC);                                                 │          veal = kzalloc(len, GFP_ATOMIC);                                                
        if (!veal) {                                                                     │          if (!veal) {                                                                    
                spin_unlock_bh(&adapter->mac_vlan_list_lock);                            │                  spin_unlock_bh(&adapter->mac_vlan_list_lock);                           
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        veal->vsi_id = adapter->vsi_res->vsi_id;                                         │          veal->vsi_id = adapter->vsi_res->vsi_id;                                        
        veal->num_elements = count;                                                      │          veal->num_elements = count;                                                     
        list_for_each_entry(f, &adapter->mac_filter_list, list) {                        │          list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, list) {            
                if (f->add) {                                                            │                  if (f->remove) {                                                        
                        ether_addr_copy(veal->list[i].addr, f->macaddr);                 │                          ether_addr_copy(veal->list[i].addr, f->macaddr);                
                        iavf_set_mac_addr_type(&veal->list[i], f);                       │                          iavf_set_mac_addr_type(&veal->list[i], f);                      
                        i++;                                                             │                          i++;                                                            
                        f->add = false;                                                  │                          list_del(&f->list);                                             
                                                                                         │                          kfree(f);                                                       
                        if (i == count)                                                  │                          if (i == count)                                                 
                                break;                                                   │                                  break;                                                  
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
        if (!more)                                                                       │          if (!more)                                                                      
                adapter->aq_required &= ~IAVF_FLAG_AQ_ADD_MAC_FILTER;                    │                  adapter->aq_required &= ~IAVF_FLAG_AQ_DEL_MAC_FILTER;                   
                                                                                         │                                                                                          
        spin_unlock_bh(&adapter->mac_vlan_list_lock);                                    │          spin_unlock_bh(&adapter->mac_vlan_list_lock);                                   
                                                                                         │                                                                                          
        iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_ETH_ADDR, (u8 *)veal, len);            │          iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_ETH_ADDR, (u8 *)veal, len);           
        kfree(veal);                                                                     │          kfree(veal);                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/farch.c:1256                                      │ linux/drivers/net/ethernet/sfc/farch.c:1262                                              
                                                                                         │                                                                                          
        struct ef4_nic *efx = channel->efx;                                              │          struct efx_nic *efx = channel->efx;                                             
        unsigned int read_ptr;                                                           │          unsigned int read_ptr;                                                          
        ef4_qword_t event, *p_event;                                                     │          efx_qword_t event, *p_event;                                                    
        int ev_code;                                                                     │          int ev_code;                                                                    
        int tx_packets = 0;                                                              │                                                                                          
        int spent = 0;                                                                   │          int spent = 0;                                                                  
                                                                                         │                                                                                          
        if (budget <= 0)                                                                 │          if (budget <= 0)                                                                
                return spent;                                                            │                  return spent;                                                           
                                                                                         │                                                                                          
        read_ptr = channel->eventq_read_ptr;                                             │          read_ptr = channel->eventq_read_ptr;                                            
                                                                                         │                                                                                          
        for (;;) {                                                                       │          for (;;) {                                                                      
                p_event = ef4_event(channel, read_ptr);                                  │                  p_event = efx_event(channel, read_ptr);                                 
                event = *p_event;                                                        │                  event = *p_event;                                                       
                                                                                         │                                                                                          
                if (!ef4_event_present(&event))                                          │                  if (!efx_event_present(&event))                                         
                        /* End of events */                                              │                          /* End of events */                                             
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                netif_vdbg(channel->efx, intr, channel->efx->net_dev,                    │                  netif_vdbg(channel->efx, intr, channel->efx->net_dev,                   
                           "channel %d event is "EF4_QWORD_FMT"\n",                      │                             "channel %d event is "EFX_QWORD_FMT"\n",                     
                           channel->channel, EF4_QWORD_VAL(event));                      │                             channel->channel, EFX_QWORD_VAL(event));                     
                                                                                         │                                                                                          
                /* Clear this event by marking it all ones */                            │                  /* Clear this event by marking it all ones */                           
                EF4_SET_QWORD(*p_event);                                                 │                  EFX_SET_QWORD(*p_event);                                                
                                                                                         │                                                                                          
                ++read_ptr;                                                              │                  ++read_ptr;                                                             
                                                                                         │                                                                                          
                ev_code = EF4_QWORD_FIELD(event, FSF_AZ_EV_CODE);                        │                  ev_code = EFX_QWORD_FIELD(event, FSF_AZ_EV_CODE);                       
                                                                                         │                                                                                          
                switch (ev_code) {                                                       │                  switch (ev_code) {                                                      
                case FSE_AZ_EV_CODE_RX_EV:                                               │                  case FSE_AZ_EV_CODE_RX_EV:                                              
                        ef4_farch_handle_rx_event(channel, &event);                      │                          efx_farch_handle_rx_event(channel, &event);                     
                        if (++spent == budget)                                           │                          if (++spent == budget)                                          
                                goto out;                                                │                                  goto out;                                               
                        break;                                                           │                          break;                                                          
                case FSE_AZ_EV_CODE_TX_EV:                                               │                  case FSE_AZ_EV_CODE_TX_EV:                                              
                        tx_packets += ef4_farch_handle_tx_event(channel,                 │                          efx_farch_handle_tx_event(channel, &event);                     
                                                                &event);                 │                                                                                          
                        if (tx_packets > efx->txq_entries) {                             │                                                                                          
                                spent = budget;                                          │                                                                                          
                                goto out;                                                │                                                                                          
                        }                                                                │                                                                                          
                        break;                                                           │                          break;                                                          
                case FSE_AZ_EV_CODE_DRV_GEN_EV:                                          │                  case FSE_AZ_EV_CODE_DRV_GEN_EV:                                         
                        ef4_farch_handle_generated_event(channel, &event);               │                          efx_farch_handle_generated_event(channel, &event);              
                        break;                                                           │                          break;                                                          
                case FSE_AZ_EV_CODE_DRIVER_EV:                                           │                  case FSE_AZ_EV_CODE_DRIVER_EV:                                          
                        ef4_farch_handle_driver_event(channel, &event);                  │                          efx_farch_handle_driver_event(channel, &event);                 
                                                                                         │                          break;                                                          
                                                                                         │  #ifdef CONFIG_SFC_SRIOV                                                                 
                                                                                         │                  case FSE_CZ_EV_CODE_USER_EV:                                            
                                                                                         │                          efx_siena_sriov_event(channel, &event);                         
                                                                                         │                          break;                                                          
                                                                                         │  #endif                                                                                  
                                                                                         │                  case FSE_CZ_EV_CODE_MCDI_EV:                                            
                                                                                         │                          efx_mcdi_process_event(channel, &event);                        
                        break;                                                           │                          break;                                                          
                case FSE_AZ_EV_CODE_GLOBAL_EV:                                           │                  case FSE_AZ_EV_CODE_GLOBAL_EV:                                          
                        if (efx->type->handle_global_event &&                            │                          if (efx->type->handle_global_event &&                           
                            efx->type->handle_global_event(channel, &event))             │                              efx->type->handle_global_event(channel, &event))            
                                break;                                                   │                                  break;                                                  
                        fallthrough;                                                     │                          fallthrough;                                                    
                default:                                                                 │                  default:                                                                
                        netif_err(channel->efx, hw, channel->efx->net_dev,               │                          netif_err(channel->efx, hw, channel->efx->net_dev,              
                                  "channel %d unknown event type %d (data "              │                                    "channel %d unknown event type %d (data "             
                                  EF4_QWORD_FMT ")\n", channel->channel,                 │                                    EFX_QWORD_FMT ")\n", channel->channel,                
                                  ev_code, EF4_QWORD_VAL(event));                        │                                    ev_code, EFX_QWORD_VAL(event));                       
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
out:                                                                                     │  out:                                                                                    
        channel->eventq_read_ptr = read_ptr;                                             │          channel->eventq_read_ptr = read_ptr;                                            
        return spent;                                                                    │          return spent;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c:432                          │ linux/drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c:293                           
                                                                                         │                                                                                          
        int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                              │          int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                             
        int ix = 0;                                                                      │          int ix = 0;                                                                     
        u32 *in;                                                                         │          u32 *in;                                                                        
        int err;                                                                         │          int err;                                                                        
        u8 *mc;                                                                          │          u8 *mc;                                                                         
                                                                                         │                                                                                          
        ttc->g = kcalloc(MLX5_INNER_TTC_NUM_GROUPS, sizeof(*ttc->g),                     │          ttc->g = kcalloc(MLX5_TTC_NUM_GROUPS, sizeof(*ttc->g), GFP_KERNEL);             
                         GFP_KERNEL);                                                    │                                                                                          
        if (!ttc->g)                                                                     │          if (!ttc->g)                                                                    
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
        in = kvzalloc(inlen, GFP_KERNEL);                                                │          in = kvzalloc(inlen, GFP_KERNEL);                                               
        if (!in) {                                                                       │          if (!in) {                                                                      
                kfree(ttc->g);                                                           │                  kfree(ttc->g);                                                          
                ttc->g = NULL;                                                           │                  ttc->g = NULL;                                                          
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* L4 Group */                                                                   │          /* L4 Group */                                                                  
        mc = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                     │          mc = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                    
        MLX5_SET_TO_ONES(fte_match_param, mc, inner_headers.ip_protocol);                │          MLX5_SET_TO_ONES(fte_match_param, mc, outer_headers.ip_protocol);               
        MLX5_SET_TO_ONES(fte_match_param, mc, inner_headers.ip_version);                 │          if (use_ipv)                                                                    
        MLX5_SET_CFG(in, match_criteria_enable, MLX5_MATCH_INNER_HEADERS);               │                  MLX5_SET_TO_ONES(fte_match_param, mc, outer_headers.ip_version);        
                                                                                         │          else                                                                            
                                                                                         │                  MLX5_SET_TO_ONES(fte_match_param, mc, outer_headers.ethertype);         
                                                                                         │          MLX5_SET_CFG(in, match_criteria_enable, MLX5_MATCH_OUTER_HEADERS);              
        MLX5_SET_CFG(in, start_flow_index, ix);                                          │          MLX5_SET_CFG(in, start_flow_index, ix);                                         
        ix += MLX5_INNER_TTC_GROUP1_SIZE;                                                │          ix += MLX5_TTC_GROUP1_SIZE;                                                     
        MLX5_SET_CFG(in, end_flow_index, ix - 1);                                        │          MLX5_SET_CFG(in, end_flow_index, ix - 1);                                       
        ttc->g[ttc->num_groups] = mlx5_create_flow_group(ttc->t, in);                    │          ttc->g[ttc->num_groups] = mlx5_create_flow_group(ttc->t, in);                   
        if (IS_ERR(ttc->g[ttc->num_groups]))                                             │          if (IS_ERR(ttc->g[ttc->num_groups]))                                            
                goto err;                                                                │                  goto err;                                                               
        ttc->num_groups++;                                                               │          ttc->num_groups++;                                                              
                                                                                         │                                                                                          
        /* L3 Group */                                                                   │          /* L3 Group */                                                                  
        MLX5_SET(fte_match_param, mc, inner_headers.ip_protocol, 0);                     │          MLX5_SET(fte_match_param, mc, outer_headers.ip_protocol, 0);                    
        MLX5_SET_CFG(in, start_flow_index, ix);                                          │          MLX5_SET_CFG(in, start_flow_index, ix);                                         
        ix += MLX5_INNER_TTC_GROUP2_SIZE;                                                │          ix += MLX5_TTC_GROUP2_SIZE;                                                     
        MLX5_SET_CFG(in, end_flow_index, ix - 1);                                        │          MLX5_SET_CFG(in, end_flow_index, ix - 1);                                       
        ttc->g[ttc->num_groups] = mlx5_create_flow_group(ttc->t, in);                    │          ttc->g[ttc->num_groups] = mlx5_create_flow_group(ttc->t, in);                   
        if (IS_ERR(ttc->g[ttc->num_groups]))                                             │          if (IS_ERR(ttc->g[ttc->num_groups]))                                            
                goto err;                                                                │                  goto err;                                                               
        ttc->num_groups++;                                                               │          ttc->num_groups++;                                                              
                                                                                         │                                                                                          
        /* Any Group */                                                                  │          /* Any Group */                                                                 
        memset(in, 0, inlen);                                                            │          memset(in, 0, inlen);                                                           
        MLX5_SET_CFG(in, start_flow_index, ix);                                          │          MLX5_SET_CFG(in, start_flow_index, ix);                                         
        ix += MLX5_INNER_TTC_GROUP3_SIZE;                                                │          ix += MLX5_TTC_GROUP3_SIZE;                                                     
        MLX5_SET_CFG(in, end_flow_index, ix - 1);                                        │          MLX5_SET_CFG(in, end_flow_index, ix - 1);                                       
        ttc->g[ttc->num_groups] = mlx5_create_flow_group(ttc->t, in);                    │          ttc->g[ttc->num_groups] = mlx5_create_flow_group(ttc->t, in);                   
        if (IS_ERR(ttc->g[ttc->num_groups]))                                             │          if (IS_ERR(ttc->g[ttc->num_groups]))                                            
                goto err;                                                                │                  goto err;                                                               
        ttc->num_groups++;                                                               │          ttc->num_groups++;                                                              
                                                                                         │                                                                                          
        kvfree(in);                                                                      │          kvfree(in);                                                                     
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
err:                                                                                     │  err:                                                                                    
        err = PTR_ERR(ttc->g[ttc->num_groups]);                                          │          err = PTR_ERR(ttc->g[ttc->num_groups]);                                         
        ttc->g[ttc->num_groups] = NULL;                                                  │          ttc->g[ttc->num_groups] = NULL;                                                 
        kvfree(in);                                                                      │          kvfree(in);                                                                     
                                                                                         │                                                                                          
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4/sge.c:840                                      │ linux/drivers/net/ethernet/chelsio/cxgb4vf/sge.c:904                                     
                                                                                         │                                                                                          
        unsigned int i, len;                                                             │          unsigned int i, len;                                                            
        struct ulptx_sge_pair *to;                                                       │          struct ulptx_sge_pair *to;                                                      
        const struct skb_shared_info *si = skb_shinfo(skb);                              │          const struct skb_shared_info *si = skb_shinfo(skb);                             
        unsigned int nfrags = si->nr_frags;                                              │          unsigned int nfrags = si->nr_frags;                                             
        struct ulptx_sge_pair buf[MAX_SKB_FRAGS / 2 + 1];                                │          struct ulptx_sge_pair buf[MAX_SKB_FRAGS / 2 + 1];                               
                                                                                         │                                                                                          
        len = skb_headlen(skb) - start;                                                  │          len = skb_headlen(skb) - start;                                                 
        if (likely(len)) {                                                               │          if (likely(len)) {                                                              
                sgl->len0 = htonl(len);                                                  │                  sgl->len0 = htonl(len);                                                 
                sgl->addr0 = cpu_to_be64(addr[0] + start);                               │                  sgl->addr0 = cpu_to_be64(addr[0] + start);                              
                nfrags++;                                                                │                  nfrags++;                                                               
        } else {                                                                         │          } else {                                                                        
                sgl->len0 = htonl(skb_frag_size(&si->frags[0]));                         │                  sgl->len0 = htonl(skb_frag_size(&si->frags[0]));                        
                sgl->addr0 = cpu_to_be64(addr[1]);                                       │                  sgl->addr0 = cpu_to_be64(addr[1]);                                      
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        sgl->cmd_nsge = htonl(ULPTX_CMD_V(ULP_TX_SC_DSGL) |                              │          sgl->cmd_nsge = htonl(ULPTX_CMD_V(ULP_TX_SC_DSGL) |                             
                              ULPTX_NSGE_V(nfrags));                                     │                                ULPTX_NSGE_V(nfrags));                                    
        if (likely(--nfrags == 0))                                                       │          if (likely(--nfrags == 0))                                                      
                return;                                                                  │                  return;                                                                 
        /*                                                                               │          /*                                                                              
         * Most of the complexity below deals with the possibility we hit the            │           * Most of the complexity below deals with the possibility we hit the           
         * end of the queue in the middle of writing the SGL.  For this case             │           * end of the queue in the middle of writing the SGL.  For this case            
         * only we create the SGL in a temporary buffer and then copy it.                │           * only we create the SGL in a temporary buffer and then copy it.               
         */                                                                              │           */                                                                             
        to = (u8 *)end > (u8 *)q->stat ? buf : sgl->sge;                                 │          to = (u8 *)end > (u8 *)tq->stat ? buf : sgl->sge;                               
                                                                                         │                                                                                          
        for (i = (nfrags != si->nr_frags); nfrags >= 2; nfrags -= 2, to++) {             │          for (i = (nfrags != si->nr_frags); nfrags >= 2; nfrags -= 2, to++) {            
                to->len[0] = cpu_to_be32(skb_frag_size(&si->frags[i]));                  │                  to->len[0] = cpu_to_be32(skb_frag_size(&si->frags[i]));                 
                to->len[1] = cpu_to_be32(skb_frag_size(&si->frags[++i]));                │                  to->len[1] = cpu_to_be32(skb_frag_size(&si->frags[++i]));               
                to->addr[0] = cpu_to_be64(addr[i]);                                      │                  to->addr[0] = cpu_to_be64(addr[i]);                                     
                to->addr[1] = cpu_to_be64(addr[++i]);                                    │                  to->addr[1] = cpu_to_be64(addr[++i]);                                   
        }                                                                                │          }                                                                               
        if (nfrags) {                                                                    │          if (nfrags) {                                                                   
                to->len[0] = cpu_to_be32(skb_frag_size(&si->frags[i]));                  │                  to->len[0] = cpu_to_be32(skb_frag_size(&si->frags[i]));                 
                to->len[1] = cpu_to_be32(0);                                             │                  to->len[1] = cpu_to_be32(0);                                            
                to->addr[0] = cpu_to_be64(addr[i + 1]);                                  │                  to->addr[0] = cpu_to_be64(addr[i + 1]);                                 
        }                                                                                │          }                                                                               
        if (unlikely((u8 *)end > (u8 *)q->stat)) {                                       │          if (unlikely((u8 *)end > (u8 *)tq->stat)) {                                     
                unsigned int part0 = (u8 *)q->stat - (u8 *)sgl->sge, part1;              │                  unsigned int part0 = (u8 *)tq->stat - (u8 *)sgl->sge, part1;            
                                                                                         │                                                                                          
                if (likely(part0))                                                       │                  if (likely(part0))                                                      
                        memcpy(sgl->sge, buf, part0);                                    │                          memcpy(sgl->sge, buf, part0);                                   
                part1 = (u8 *)end - (u8 *)q->stat;                                       │                  part1 = (u8 *)end - (u8 *)tq->stat;                                     
                memcpy(q->desc, (u8 *)buf + part0, part1);                               │                  memcpy(tq->desc, (u8 *)buf + part0, part1);                             
                end = (void *)q->desc + part1;                                           │                  end = (void *)tq->desc + part1;                                         
        }                                                                                │          }                                                                               
        if ((uintptr_t)end & 8)           /* 0-pad to multiple of 16 */                  │          if ((uintptr_t)end & 8)           /* 0-pad to multiple of 16 */                 
                *end = 0;                                                                │                  *end = 0;                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:2420                                             │ linux/drivers/net/ethernet/sfc/falcon/farch.c:2351                                       
                                                                                         │                                                                                          
                /* Search concurrently for                                               │                  /* Search concurrently for                                              
                 * (1) a filter to be replaced (rep_index): any filter                   │                   * (1) a filter to be replaced (rep_index): any filter                  
                 *     with the same match values, up to the current                     │                   *     with the same match values, up to the current                    
                 *     search depth for this type, and                                   │                   *     search depth for this type, and                                  
                 * (2) the insertion point (ins_index): (1) or any                       │                   * (2) the insertion point (ins_index): (1) or any                      
                 *     free slot before it or up to the maximum search                   │                   *     free slot before it or up to the maximum search                  
                 *     depth for this priority                                           │                   *     depth for this priority                                          
                 * We fail if we cannot find (2).                                        │                   * We fail if we cannot find (2).                                       
                 *                                                                       │                   *                                                                      
                 * We can stop once either                                               │                   * We can stop once either                                              
                 * (a) we find (1), in which case we have definitely                     │                   * (a) we find (1), in which case we have definitely                    
                 *     found (2) as well; or                                             │                   *     found (2) as well; or                                            
                 * (b) we have searched exhaustively for (1), and have                   │                   * (b) we have searched exhaustively for (1), and have                  
                 *     either found (2) or searched exhaustively for it                  │                   *     either found (2) or searched exhaustively for it                 
                 */                                                                      │                   */                                                                     
                u32 key = efx_farch_filter_build(&filter, &spec);                        │                  u32 key = ef4_farch_filter_build(&filter, &spec);                       
                unsigned int hash = efx_farch_filter_hash(key);                          │                  unsigned int hash = ef4_farch_filter_hash(key);                         
                unsigned int incr = efx_farch_filter_increment(key);                     │                  unsigned int incr = ef4_farch_filter_increment(key);                    
                unsigned int max_rep_depth = table->search_limit[spec.type];             │                  unsigned int max_rep_depth = table->search_limit[spec.type];            
                unsigned int max_ins_depth =                                             │                  unsigned int max_ins_depth =                                            
                        spec.priority <= EFX_FILTER_PRI_HINT ?                           │                          spec.priority <= EF4_FILTER_PRI_HINT ?                          
                        EFX_FARCH_FILTER_CTL_SRCH_HINT_MAX :                             │                          EF4_FARCH_FILTER_CTL_SRCH_HINT_MAX :                            
                        EFX_FARCH_FILTER_CTL_SRCH_MAX;                                   │                          EF4_FARCH_FILTER_CTL_SRCH_MAX;                                  
                unsigned int i = hash & (table->size - 1);                               │                  unsigned int i = hash & (table->size - 1);                              
                                                                                         │                                                                                          
                ins_index = -1;                                                          │                  ins_index = -1;                                                         
                depth = 1;                                                               │                  depth = 1;                                                              
                                                                                         │                                                                                          
                                                                                         │                  spin_lock_bh(&efx->filter_lock);                                        
                                                                                         │                                                                                          
                for (;;) {                                                               │                  for (;;) {                                                              
                        if (!test_bit(i, table->used_bitmap)) {                          │                          if (!test_bit(i, table->used_bitmap)) {                         
                                if (ins_index < 0)                                       │                                  if (ins_index < 0)                                      
                                        ins_index = i;                                   │                                          ins_index = i;                                  
                        } else if (efx_farch_filter_equal(&spec,                         │                          } else if (ef4_farch_filter_equal(&spec,                        
                                                          &table->spec[i])) {            │                                                            &table->spec[i])) {           
                                /* Case (a) */                                           │                                  /* Case (a) */                                          
                                if (ins_index < 0)                                       │                                  if (ins_index < 0)                                      
                                        ins_index = i;                                   │                                          ins_index = i;                                  
                                rep_index = i;                                           │                                  rep_index = i;                                          
                                break;                                                   │                                  break;                                                  
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        if (depth >= max_rep_depth &&                                    │                          if (depth >= max_rep_depth &&                                   
                            (ins_index >= 0 || depth >= max_ins_depth)) {                │                              (ins_index >= 0 || depth >= max_ins_depth)) {               
                                /* Case (b) */                                           │                                  /* Case (b) */                                          
                                if (ins_index < 0) {                                     │                                  if (ins_index < 0) {                                    
                                        rc = -EBUSY;                                     │                                          rc = -EBUSY;                                    
                                        goto out_unlock;                                 │                                          goto out;                                       
                                }                                                        │                                  }                                                       
                                rep_index = -1;                                          │                                  rep_index = -1;                                         
                                break;                                                   │                                  break;                                                  
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        i = (i + incr) & (table->size - 1);                              │                          i = (i + incr) & (table->size - 1);                             
                        ++depth;                                                         │                          ++depth;                                                        
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:709                           │ linux/drivers/net/ethernet/stmicro/stmmac/dwmac5.c:90                                    
                                                                                         │                                                                                          
        { true, "TXCES", "MTL TX Memory Error" },                                        │          { true, "TXCES", "MTL TX Memory Error" },                                       
        { true, "TXAMS", "MTL TX Memory Address Mismatch Error" },                       │          { true, "TXAMS", "MTL TX Memory Address Mismatch Error" },                      
        { true, "TXUES", "MTL TX Memory Error" },                                        │          { true, "TXUES", "MTL TX Memory Error" },                                       
        { false, "UNKNOWN", "Unknown Error" }, /* 3 */                                   │          { false, "UNKNOWN", "Unknown Error" }, /* 3 */                                  
        { true, "RXCES", "MTL RX Memory Error" },                                        │          { true, "RXCES", "MTL RX Memory Error" },                                       
        { true, "RXAMS", "MTL RX Memory Address Mismatch Error" },                       │          { true, "RXAMS", "MTL RX Memory Address Mismatch Error" },                      
        { true, "RXUES", "MTL RX Memory Error" },                                        │          { true, "RXUES", "MTL RX Memory Error" },                                       
        { false, "UNKNOWN", "Unknown Error" }, /* 7 */                                   │          { false, "UNKNOWN", "Unknown Error" }, /* 7 */                                  
        { true, "ECES", "MTL EST Memory Error" },                                        │          { true, "ECES", "MTL EST Memory Error" },                                       
        { true, "EAMS", "MTL EST Memory Address Mismatch Error" },                       │          { true, "EAMS", "MTL EST Memory Address Mismatch Error" },                      
        { true, "EUES", "MTL EST Memory Error" },                                        │          { true, "EUES", "MTL EST Memory Error" },                                       
        { false, "UNKNOWN", "Unknown Error" }, /* 11 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 11 */                                 
        { true, "RPCES", "MTL RX Parser Memory Error" },                                 │          { true, "RPCES", "MTL RX Parser Memory Error" },                                
        { true, "RPAMS", "MTL RX Parser Memory Address Mismatch Error" },                │          { true, "RPAMS", "MTL RX Parser Memory Address Mismatch Error" },               
        { true, "RPUES", "MTL RX Parser Memory Error" },                                 │          { true, "RPUES", "MTL RX Parser Memory Error" },                                
        { false, "UNKNOWN", "Unknown Error" }, /* 15 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 15 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 16 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 16 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 17 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 17 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 18 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 18 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 19 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 19 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 20 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 20 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 21 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 21 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 22 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 22 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 23 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 23 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 24 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 24 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 25 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 25 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 26 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 26 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 27 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 27 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 28 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 28 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 29 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 29 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 30 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 30 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 31 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 31 */                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:2233                                             │ linux/drivers/net/ethernet/sfc/falcon/farch.c:2166                                       
                                                                                         │                                                                                          
        u32 data3;                                                                       │          u32 data3;                                                                      
                                                                                         │                                                                                          
        switch (efx_farch_filter_spec_table_id(spec)) {                                  │          switch (ef4_farch_filter_spec_table_id(spec)) {                                 
        case EFX_FARCH_FILTER_TABLE_RX_IP: {                                             │          case EF4_FARCH_FILTER_TABLE_RX_IP: {                                            
                bool is_udp = (spec->type == EFX_FARCH_FILTER_UDP_FULL ||                │                  bool is_udp = (spec->type == EF4_FARCH_FILTER_UDP_FULL ||               
                               spec->type == EFX_FARCH_FILTER_UDP_WILD);                 │                                 spec->type == EF4_FARCH_FILTER_UDP_WILD);                
                EFX_POPULATE_OWORD_7(                                                    │                  EF4_POPULATE_OWORD_7(                                                   
                        *filter,                                                         │                          *filter,                                                        
                        FRF_BZ_RSS_EN,                                                   │                          FRF_BZ_RSS_EN,                                                  
                        !!(spec->flags & EFX_FILTER_FLAG_RX_RSS),                        │                          !!(spec->flags & EF4_FILTER_FLAG_RX_RSS),                       
                        FRF_BZ_SCATTER_EN,                                               │                          FRF_BZ_SCATTER_EN,                                              
                        !!(spec->flags & EFX_FILTER_FLAG_RX_SCATTER),                    │                          !!(spec->flags & EF4_FILTER_FLAG_RX_SCATTER),                   
                        FRF_BZ_TCP_UDP, is_udp,                                          │                          FRF_BZ_TCP_UDP, is_udp,                                         
                        FRF_BZ_RXQ_ID, spec->dmaq_id,                                    │                          FRF_BZ_RXQ_ID, spec->dmaq_id,                                   
                        EFX_DWORD_2, spec->data[2],                                      │                          EF4_DWORD_2, spec->data[2],                                     
                        EFX_DWORD_1, spec->data[1],                                      │                          EF4_DWORD_1, spec->data[1],                                     
                        EFX_DWORD_0, spec->data[0]);                                     │                          EF4_DWORD_0, spec->data[0]);                                    
                data3 = is_udp;                                                          │                  data3 = is_udp;                                                         
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        case EFX_FARCH_FILTER_TABLE_RX_MAC: {                                            │          case EF4_FARCH_FILTER_TABLE_RX_MAC: {                                           
                bool is_wild = spec->type == EFX_FARCH_FILTER_MAC_WILD;                  │                  bool is_wild = spec->type == EF4_FARCH_FILTER_MAC_WILD;                 
                EFX_POPULATE_OWORD_7(                                                    │                  EF4_POPULATE_OWORD_7(                                                   
                        *filter,                                                         │                          *filter,                                                        
                        FRF_CZ_RMFT_RSS_EN,                                              │                          FRF_CZ_RMFT_RSS_EN,                                             
                        !!(spec->flags & EFX_FILTER_FLAG_RX_RSS),                        │                          !!(spec->flags & EF4_FILTER_FLAG_RX_RSS),                       
                        FRF_CZ_RMFT_SCATTER_EN,                                          │                          FRF_CZ_RMFT_SCATTER_EN,                                         
                        !!(spec->flags & EFX_FILTER_FLAG_RX_SCATTER),                    │                          !!(spec->flags & EF4_FILTER_FLAG_RX_SCATTER),                   
                        FRF_CZ_RMFT_RXQ_ID, spec->dmaq_id,                               │                          FRF_CZ_RMFT_RXQ_ID, spec->dmaq_id,                              
                        FRF_CZ_RMFT_WILDCARD_MATCH, is_wild,                             │                          FRF_CZ_RMFT_WILDCARD_MATCH, is_wild,                            
                        FRF_CZ_RMFT_DEST_MAC_HI, spec->data[2],                          │                          FRF_CZ_RMFT_DEST_MAC_HI, spec->data[2],                         
                        FRF_CZ_RMFT_DEST_MAC_LO, spec->data[1],                          │                          FRF_CZ_RMFT_DEST_MAC_LO, spec->data[1],                         
                        FRF_CZ_RMFT_VLAN_ID, spec->data[0]);                             │                          FRF_CZ_RMFT_VLAN_ID, spec->data[0]);                            
                data3 = is_wild;                                                         │                  data3 = is_wild;                                                        
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        case EFX_FARCH_FILTER_TABLE_TX_MAC: {                                            │          case EF4_FARCH_FILTER_TABLE_TX_MAC: {                                           
                bool is_wild = spec->type == EFX_FARCH_FILTER_MAC_WILD;                  │                  bool is_wild = spec->type == EF4_FARCH_FILTER_MAC_WILD;                 
                EFX_POPULATE_OWORD_5(*filter,                                            │                  EF4_POPULATE_OWORD_5(*filter,                                           
                                     FRF_CZ_TMFT_TXQ_ID, spec->dmaq_id,                  │                                       FRF_CZ_TMFT_TXQ_ID, spec->dmaq_id,                 
                                     FRF_CZ_TMFT_WILDCARD_MATCH, is_wild,                │                                       FRF_CZ_TMFT_WILDCARD_MATCH, is_wild,               
                                     FRF_CZ_TMFT_SRC_MAC_HI, spec->data[2],              │                                       FRF_CZ_TMFT_SRC_MAC_HI, spec->data[2],             
                                     FRF_CZ_TMFT_SRC_MAC_LO, spec->data[1],              │                                       FRF_CZ_TMFT_SRC_MAC_LO, spec->data[1],             
                                     FRF_CZ_TMFT_VLAN_ID, spec->data[0]);                │                                       FRF_CZ_TMFT_VLAN_ID, spec->data[0]);               
                data3 = is_wild | spec->dmaq_id << 1;                                    │                  data3 = is_wild | spec->dmaq_id << 1;                                   
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        default:                                                                         │          default:                                                                        
                BUG();                                                                   │                  BUG();                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return spec->data[0] ^ spec->data[1] ^ spec->data[2] ^ data3;                    │          return spec->data[0] ^ spec->data[1] ^ spec->data[2] ^ data3;                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c:560                             │ linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c:595                              
                                                                                         │                                                                                          
                struct bmac1_stats *new = bnx2x_sp(bp, mac_stats.bmac1_stats);           │                  struct bmac2_stats *new = bnx2x_sp(bp, mac_stats.bmac2_stats);          
                                                                                         │                                                                                          
                /* the macros below will use "bmac1_stats" type */                       │                  /* the macros below will use "bmac2_stats" type */                      
                UPDATE_STAT64(rx_stat_grerb, rx_stat_ifhcinbadoctets);                   │                  UPDATE_STAT64(rx_stat_grerb, rx_stat_ifhcinbadoctets);                  
                UPDATE_STAT64(rx_stat_grfcs, rx_stat_dot3statsfcserrors);                │                  UPDATE_STAT64(rx_stat_grfcs, rx_stat_dot3statsfcserrors);               
                UPDATE_STAT64(rx_stat_grund, rx_stat_etherstatsundersizepkts);           │                  UPDATE_STAT64(rx_stat_grund, rx_stat_etherstatsundersizepkts);          
                UPDATE_STAT64(rx_stat_grovr, rx_stat_dot3statsframestoolong);            │                  UPDATE_STAT64(rx_stat_grovr, rx_stat_dot3statsframestoolong);           
                UPDATE_STAT64(rx_stat_grfrg, rx_stat_etherstatsfragments);               │                  UPDATE_STAT64(rx_stat_grfrg, rx_stat_etherstatsfragments);              
                UPDATE_STAT64(rx_stat_grjbr, rx_stat_etherstatsjabbers);                 │                  UPDATE_STAT64(rx_stat_grjbr, rx_stat_etherstatsjabbers);                
                UPDATE_STAT64(rx_stat_grxcf, rx_stat_maccontrolframesreceived);          │                  UPDATE_STAT64(rx_stat_grxcf, rx_stat_maccontrolframesreceived);         
                UPDATE_STAT64(rx_stat_grxpf, rx_stat_xoffstateentered);                  │                  UPDATE_STAT64(rx_stat_grxpf, rx_stat_xoffstateentered);                 
                UPDATE_STAT64(rx_stat_grxpf, rx_stat_mac_xpf);                           │                  UPDATE_STAT64(rx_stat_grxpf, rx_stat_mac_xpf);                          
                                                                                         │                                                                                          
                UPDATE_STAT64(tx_stat_gtxpf, tx_stat_outxoffsent);                       │                  UPDATE_STAT64(tx_stat_gtxpf, tx_stat_outxoffsent);                      
                UPDATE_STAT64(tx_stat_gtxpf, tx_stat_flowcontroldone);                   │                  UPDATE_STAT64(tx_stat_gtxpf, tx_stat_flowcontroldone);                  
                UPDATE_STAT64(tx_stat_gt64, tx_stat_etherstatspkts64octets);             │                  UPDATE_STAT64(tx_stat_gt64, tx_stat_etherstatspkts64octets);            
                UPDATE_STAT64(tx_stat_gt127,                                             │                  UPDATE_STAT64(tx_stat_gt127,                                            
                                tx_stat_etherstatspkts65octetsto127octets);              │                                  tx_stat_etherstatspkts65octetsto127octets);             
                UPDATE_STAT64(tx_stat_gt255,                                             │                  UPDATE_STAT64(tx_stat_gt255,                                            
                                tx_stat_etherstatspkts128octetsto255octets);             │                                  tx_stat_etherstatspkts128octetsto255octets);            
                UPDATE_STAT64(tx_stat_gt511,                                             │                  UPDATE_STAT64(tx_stat_gt511,                                            
                                tx_stat_etherstatspkts256octetsto511octets);             │                                  tx_stat_etherstatspkts256octetsto511octets);            
                UPDATE_STAT64(tx_stat_gt1023,                                            │                  UPDATE_STAT64(tx_stat_gt1023,                                           
                                tx_stat_etherstatspkts512octetsto1023octets);            │                                  tx_stat_etherstatspkts512octetsto1023octets);           
                UPDATE_STAT64(tx_stat_gt1518,                                            │                  UPDATE_STAT64(tx_stat_gt1518,                                           
                                tx_stat_etherstatspkts1024octetsto1522octets);           │                                  tx_stat_etherstatspkts1024octetsto1522octets);          
                UPDATE_STAT64(tx_stat_gt2047, tx_stat_mac_2047);                         │                  UPDATE_STAT64(tx_stat_gt2047, tx_stat_mac_2047);                        
                UPDATE_STAT64(tx_stat_gt4095, tx_stat_mac_4095);                         │                  UPDATE_STAT64(tx_stat_gt4095, tx_stat_mac_4095);                        
                UPDATE_STAT64(tx_stat_gt9216, tx_stat_mac_9216);                         │                  UPDATE_STAT64(tx_stat_gt9216, tx_stat_mac_9216);                        
                UPDATE_STAT64(tx_stat_gt16383, tx_stat_mac_16383);                       │                  UPDATE_STAT64(tx_stat_gt16383, tx_stat_mac_16383);                      
                UPDATE_STAT64(tx_stat_gterr,                                             │                  UPDATE_STAT64(tx_stat_gterr,                                            
                                tx_stat_dot3statsinternalmactransmiterrors);             │                                  tx_stat_dot3statsinternalmactransmiterrors);            
                UPDATE_STAT64(tx_stat_gtufl, tx_stat_mac_ufl);                           │                  UPDATE_STAT64(tx_stat_gtufl, tx_stat_mac_ufl);                          
                                                                                         │                                                                                          
                                                                                         │                  /* collect PFC stats */                                                 
                                                                                         │                  pstats->pfc_frames_tx_hi = new->tx_stat_gtpp_hi;                        
                                                                                         │                  pstats->pfc_frames_tx_lo = new->tx_stat_gtpp_lo;                        
                                                                                         │                                                                                          
                                                                                         │                  pstats->pfc_frames_rx_hi = new->rx_stat_grpp_hi;                        
                                                                                         │                  pstats->pfc_frames_rx_lo = new->rx_stat_grpp_lo;                        
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c:698                                │ linux/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c:7217                                    
                                                                                         │                                                                                          
        u32 sge_control, sge_control2;                                                   │          u32 sge_control, sge_control2;                                                  
        unsigned int ingpadboundary, ingpackboundary, fl_align, ingpad_shift;            │          unsigned int ingpadboundary, ingpackboundary, fl_align, ingpad_shift;           
                                                                                         │                                                                                          
        sge_control = adapter->params.sge.sge_control;                                   │          sge_control = t4_read_reg(adap, SGE_CONTROL_A);                                 
                                                                                         │                                                                                          
        /* T4 uses a single control field to specify both the PCIe Padding and           │          /* T4 uses a single control field to specify both the PCIe Padding and          
         * Packing Boundary.  T5 introduced the ability to specify these                 │           * Packing Boundary.  T5 introduced the ability to specify these                
         * separately.  The actual Ingress Packet Data alignment boundary                │           * separately.  The actual Ingress Packet Data alignment boundary               
         * within Packed Buffer Mode is the maximum of these two                         │           * within Packed Buffer Mode is the maximum of these two                        
         * specifications.  (Note that it makes no real practical sense to               │           * specifications.  (Note that it makes no real practical sense to              
         * have the Pading Boudary be larger than the Packing Boundary but you           │           * have the Padding Boundary be larger than the Packing Boundary but you        
         * could set the chip up that way and, in fact, legacy T4 code would             │           * could set the chip up that way and, in fact, legacy T4 code would            
         * end doing this because it would initialize the Padding Boundary and           │           * end doing this because it would initialize the Padding Boundary and          
         * leave the Packing Boundary initialized to 0 (16 bytes).)                      │           * leave the Packing Boundary initialized to 0 (16 bytes).)                     
         * Padding Boundary values in T6 starts from 8B,                                 │           * Padding Boundary values in T6 starts from 8B,                                
         * where as it is 32B for T4 and T5.                                             │           * where as it is 32B for T4 and T5.                                            
         */                                                                              │           */                                                                             
        if (CHELSIO_CHIP_VERSION(adapter->params.chip) <= CHELSIO_T5)                    │          if (CHELSIO_CHIP_VERSION(adap->params.chip) <= CHELSIO_T5)                      
                ingpad_shift = INGPADBOUNDARY_SHIFT_X;                                   │                  ingpad_shift = INGPADBOUNDARY_SHIFT_X;                                  
        else                                                                             │          else                                                                            
                ingpad_shift = T6_INGPADBOUNDARY_SHIFT_X;                                │                  ingpad_shift = T6_INGPADBOUNDARY_SHIFT_X;                               
                                                                                         │                                                                                          
        ingpadboundary = 1 << (INGPADBOUNDARY_G(sge_control) + ingpad_shift);            │          ingpadboundary = 1 << (INGPADBOUNDARY_G(sge_control) + ingpad_shift);           
                                                                                         │                                                                                          
        fl_align = ingpadboundary;                                                       │          fl_align = ingpadboundary;                                                      
        if (!is_t4(adapter->params.chip)) {                                              │          if (!is_t4(adap->params.chip)) {                                                
                /* T5 has a different interpretation of one of the PCIe Packing          │                  /* T5 has a weird interpretation of one of the PCIe Packing             
                 * Boundary values.                                                      │                   * Boundary values.  No idea why ...                                    
                 */                                                                      │                   */                                                                     
                sge_control2 = adapter->params.sge.sge_control2;                         │                  sge_control2 = t4_read_reg(adap, SGE_CONTROL2_A);                       
                ingpackboundary = INGPACKBOUNDARY_G(sge_control2);                       │                  ingpackboundary = INGPACKBOUNDARY_G(sge_control2);                      
                if (ingpackboundary == INGPACKBOUNDARY_16B_X)                            │                  if (ingpackboundary == INGPACKBOUNDARY_16B_X)                           
                        ingpackboundary = 16;                                            │                          ingpackboundary = 16;                                           
                else                                                                     │                  else                                                                    
                        ingpackboundary = 1 << (ingpackboundary +                        │                          ingpackboundary = 1 << (ingpackboundary +                       
                                                INGPACKBOUNDARY_SHIFT_X);                │                                                  INGPACKBOUNDARY_SHIFT_X);               
                                                                                         │                                                                                          
                fl_align = max(ingpadboundary, ingpackboundary);                         │                  fl_align = max(ingpadboundary, ingpackboundary);                        
        }                                                                                │          }                                                                               
        return fl_align;                                                                 │          return fl_align;                                                                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:4799                        │ linux/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:4734                         
                                                                                         │                                                                                          
        struct mlx4_priv *priv = mlx4_priv(dev);                                         │          struct mlx4_priv *priv = mlx4_priv(dev);                                        
        struct mlx4_resource_tracker *tracker = &priv->mfunc.master.res_tracker;         │          struct mlx4_resource_tracker *tracker = &priv->mfunc.master.res_tracker;        
        struct list_head *cq_list =                                                      │          struct list_head *srq_list =                                                    
                &tracker->slave_list[slave].res_list[RES_CQ];                            │                  &tracker->slave_list[slave].res_list[RES_SRQ];                          
        struct res_cq *cq;                                                               │          struct res_srq *srq;                                                            
        struct res_cq *tmp;                                                              │          struct res_srq *tmp;                                                            
        int state;                                                                       │          int state;                                                                      
        u64 in_param;                                                                    │          u64 in_param;                                                                   
        int cqn;                                                                         │          int srqn;                                                                       
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        err = move_all_busy(dev, slave, RES_CQ);                                         │          err = move_all_busy(dev, slave, RES_SRQ);                                       
        if (err)                                                                         │          if (err)                                                                        
                mlx4_warn(dev, "rem_slave_cqs: Could not move all cqs - too busy for sla │                  mlx4_warn(dev, "rem_slave_srqs: Could not move all srqs - too busy for s
                          slave);                                                        │                            slave);                                                       
                                                                                         │                                                                                          
        spin_lock_irq(mlx4_tlock(dev));                                                  │          spin_lock_irq(mlx4_tlock(dev));                                                 
        list_for_each_entry_safe(cq, tmp, cq_list, com.list) {                           │          list_for_each_entry_safe(srq, tmp, srq_list, com.list) {                        
                spin_unlock_irq(mlx4_tlock(dev));                                        │                  spin_unlock_irq(mlx4_tlock(dev));                                       
                if (cq->com.owner == slave && !atomic_read(&cq->ref_count)) {            │                  if (srq->com.owner == slave) {                                          
                        cqn = cq->com.res_id;                                            │                          srqn = srq->com.res_id;                                         
                        state = cq->com.from_state;                                      │                          state = srq->com.from_state;                                    
                        while (state != 0) {                                             │                          while (state != 0) {                                            
                                switch (state) {                                         │                                  switch (state) {                                        
                                case RES_CQ_ALLOCATED:                                   │                                  case RES_SRQ_ALLOCATED:                                 
                                        __mlx4_cq_free_icm(dev, cqn);                    │                                          __mlx4_srq_free_icm(dev, srqn);                 
                                        spin_lock_irq(mlx4_tlock(dev));                  │                                          spin_lock_irq(mlx4_tlock(dev));                 
                                        rb_erase(&cq->com.node,                          │                                          rb_erase(&srq->com.node,                        
                                                 &tracker->res_tree[RES_CQ]);            │                                                   &tracker->res_tree[RES_SRQ]);          
                                        list_del(&cq->com.list);                         │                                          list_del(&srq->com.list);                       
                                        spin_unlock_irq(mlx4_tlock(dev));                │                                          spin_unlock_irq(mlx4_tlock(dev));               
                                        mlx4_release_resource(dev, slave,                │                                          mlx4_release_resource(dev, slave,               
                                                              RES_CQ, 1, 0);             │                                                                RES_SRQ, 1, 0);           
                                        kfree(cq);                                       │                                          kfree(srq);                                     
                                        state = 0;                                       │                                          state = 0;                                      
                                        break;                                           │                                          break;                                          
                                                                                         │                                                                                          
                                case RES_CQ_HW:                                          │                                  case RES_SRQ_HW:                                        
                                        in_param = slave;                                │                                          in_param = slave;                               
                                        err = mlx4_cmd(dev, in_param, cqn, 1,            │                                          err = mlx4_cmd(dev, in_param, srqn, 1,          
                                                       MLX4_CMD_HW2SW_CQ,                │                                                         MLX4_CMD_HW2SW_SRQ,              
                                                       MLX4_CMD_TIME_CLASS_A,            │                                                         MLX4_CMD_TIME_CLASS_A,           
                                                       MLX4_CMD_NATIVE);                 │                                                         MLX4_CMD_NATIVE);                
                                        if (err)                                         │                                          if (err)                                        
                                                mlx4_dbg(dev, "rem_slave_cqs: failed to  │                                                  mlx4_dbg(dev, "rem_slave_srqs: failed to
                                                         slave, cqn);                    │                                                           slave, srqn);                  
                                        atomic_dec(&cq->mtt->ref_count);                 │                                                                                          
                                        state = RES_CQ_ALLOCATED;                        │                                          atomic_dec(&srq->mtt->ref_count);               
                                                                                         │                                          if (srq->cq)                                    
                                                                                         │                                                  atomic_dec(&srq->cq->ref_count);        
                                                                                         │                                          state = RES_SRQ_ALLOCATED;                      
                                        break;                                           │                                          break;                                          
                                                                                         │                                                                                          
                                default:                                                 │                                  default:                                                
                                        state = 0;                                       │                                          state = 0;                                      
                                }                                                        │                                  }                                                       
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                spin_lock_irq(mlx4_tlock(dev));                                          │                  spin_lock_irq(mlx4_tlock(dev));                                         
        }                                                                                │          }                                                                               
        spin_unlock_irq(mlx4_tlock(dev));                                                │          spin_unlock_irq(mlx4_tlock(dev));                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:931                                     │ linux/drivers/net/ethernet/intel/igc/igc_main.c:5153                                     
                                                                                         │                                                                                          
        unsigned int num_q_vectors = adapter->num_q_vectors;                             │          unsigned int num_q_vectors = adapter->num_q_vectors;                            
                                                                                         │          int i = 0, err = 0, vector = 0, free_vector = 0;                                
        struct net_device *netdev = adapter->netdev;                                     │          struct net_device *netdev = adapter->netdev;                                    
        int i, err = 0, vector = 0, free_vector = 0;                                     │                                                                                          
                                                                                         │                                                                                          
        err = request_irq(adapter->msix_entries[vector].vector,                          │          err = request_irq(adapter->msix_entries[vector].vector,                         
                          igb_msix_other, 0, netdev->name, adapter);                     │                            &igc_msix_other, 0, netdev->name, adapter);                   
        if (err)                                                                         │          if (err)                                                                        
                goto err_out;                                                            │                  goto err_out;                                                           
                                                                                         │                                                                                          
        if (num_q_vectors > MAX_Q_VECTORS) {                                             │          if (num_q_vectors > MAX_Q_VECTORS) {                                            
                num_q_vectors = MAX_Q_VECTORS;                                           │                  num_q_vectors = MAX_Q_VECTORS;                                          
                dev_warn(&adapter->pdev->dev,                                            │                  dev_warn(&adapter->pdev->dev,                                           
                         "The number of queue vectors (%d) is higher than max allowed (% │                           "The number of queue vectors (%d) is higher than max allowed (%
                         adapter->num_q_vectors, MAX_Q_VECTORS);                         │                           adapter->num_q_vectors, MAX_Q_VECTORS);                        
        }                                                                                │          }                                                                               
        for (i = 0; i < num_q_vectors; i++) {                                            │          for (i = 0; i < num_q_vectors; i++) {                                           
                struct igb_q_vector *q_vector = adapter->q_vector[i];                    │                  struct igc_q_vector *q_vector = adapter->q_vector[i];                   
                                                                                         │                                                                                          
                vector++;                                                                │                  vector++;                                                               
                                                                                         │                                                                                          
                q_vector->itr_register = adapter->io_addr + E1000_EITR(vector);          │                  q_vector->itr_register = adapter->io_addr + IGC_EITR(vector);           
                                                                                         │                                                                                          
                if (q_vector->rx.ring && q_vector->tx.ring)                              │                  if (q_vector->rx.ring && q_vector->tx.ring)                             
                        sprintf(q_vector->name, "%s-TxRx-%u", netdev->name,              │                          sprintf(q_vector->name, "%s-TxRx-%u", netdev->name,             
                                q_vector->rx.ring->queue_index);                         │                                  q_vector->rx.ring->queue_index);                        
                else if (q_vector->tx.ring)                                              │                  else if (q_vector->tx.ring)                                             
                        sprintf(q_vector->name, "%s-tx-%u", netdev->name,                │                          sprintf(q_vector->name, "%s-tx-%u", netdev->name,               
                                q_vector->tx.ring->queue_index);                         │                                  q_vector->tx.ring->queue_index);                        
                else if (q_vector->rx.ring)                                              │                  else if (q_vector->rx.ring)                                             
                        sprintf(q_vector->name, "%s-rx-%u", netdev->name,                │                          sprintf(q_vector->name, "%s-rx-%u", netdev->name,               
                                q_vector->rx.ring->queue_index);                         │                                  q_vector->rx.ring->queue_index);                        
                else                                                                     │                  else                                                                    
                        sprintf(q_vector->name, "%s-unused", netdev->name);              │                          sprintf(q_vector->name, "%s-unused", netdev->name);             
                                                                                         │                                                                                          
                err = request_irq(adapter->msix_entries[vector].vector,                  │                  err = request_irq(adapter->msix_entries[vector].vector,                 
                                  igb_msix_ring, 0, q_vector->name,                      │                                    igc_msix_ring, 0, q_vector->name,                     
                                  q_vector);                                             │                                    q_vector);                                            
                if (err)                                                                 │                  if (err)                                                                
                        goto err_free;                                                   │                          goto err_free;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        igb_configure_msix(adapter);                                                     │          igc_configure_msix(adapter);                                                    
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
err_free:                                                                                │  err_free:                                                                               
        /* free already assigned IRQs */                                                 │          /* free already assigned IRQs */                                                
        free_irq(adapter->msix_entries[free_vector++].vector, adapter);                  │          free_irq(adapter->msix_entries[free_vector++].vector, adapter);                 
                                                                                         │                                                                                          
        vector--;                                                                        │          vector--;                                                                       
        for (i = 0; i < vector; i++) {                                                   │          for (i = 0; i < vector; i++) {                                                  
                free_irq(adapter->msix_entries[free_vector++].vector,                    │                  free_irq(adapter->msix_entries[free_vector++].vector,                   
                         adapter->q_vector[i]);                                          │                           adapter->q_vector[i]);                                         
        }                                                                                │          }                                                                               
err_out:                                                                                 │  err_out:                                                                                
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/ti/cpsw.c:456                                                │ linux/drivers/net/ethernet/ti/cpsw_new.c:648                                             
                                                                                         │                                                                                          
        struct phy_device       *phy = slave->phy;                                       │          struct cpsw_priv *priv = netdev_priv(ndev);                                     
        u32                     mac_control = 0;                                         │                                                                                          
        u32                     slave_port;                                              │                                                                                          
        struct cpsw_common *cpsw = priv->cpsw;                                           │          struct cpsw_common *cpsw = priv->cpsw;                                          
                                                                                         │          struct cpsw_slave *slave;                                                       
                                                                                         │          struct phy_device *phy;                                                         
                                                                                         │          u32 mac_control = 0;                                                            
                                                                                         │                                                                                          
                                                                                         │          slave = &cpsw->slaves[priv->emac_port - 1];                                     
                                                                                         │          phy = slave->phy;                                                               
                                                                                         │                                                                                          
        if (!phy)                                                                        │          if (!phy)                                                                       
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        slave_port = cpsw_get_slave_port(slave->slave_num);                              │                                                                                          
                                                                                         │                                                                                          
        if (phy->link) {                                                                 │          if (phy->link) {                                                                
                mac_control = CPSW_SL_CTL_GMII_EN;                                       │                  mac_control = CPSW_SL_CTL_GMII_EN;                                      
                                                                                         │                                                                                          
                if (phy->speed == 1000)                                                  │                  if (phy->speed == 1000)                                                 
                        mac_control |= CPSW_SL_CTL_GIG;                                  │                          mac_control |= CPSW_SL_CTL_GIG;                                 
                if (phy->duplex)                                                         │                  if (phy->duplex)                                                        
                        mac_control |= CPSW_SL_CTL_FULLDUPLEX;                           │                          mac_control |= CPSW_SL_CTL_FULLDUPLEX;                          
                                                                                         │                                                                                          
                /* set speed_in input in case RMII mode is used in 100Mbps */            │                  /* set speed_in input in case RMII mode is used in 100Mbps */           
                if (phy->speed == 100)                                                   │                  if (phy->speed == 100)                                                  
                        mac_control |= CPSW_SL_CTL_IFCTL_A;                              │                          mac_control |= CPSW_SL_CTL_IFCTL_A;                             
                /* in band mode only works in 10Mbps RGMII mode */                       │                  /* in band mode only works in 10Mbps RGMII mode */                      
                else if ((phy->speed == 10) && phy_interface_is_rgmii(phy))              │                  else if ((phy->speed == 10) && phy_interface_is_rgmii(phy))             
                        mac_control |= CPSW_SL_CTL_EXT_EN; /* In Band mode */            │                          mac_control |= CPSW_SL_CTL_EXT_EN; /* In Band mode */           
                                                                                         │                                                                                          
                if (priv->rx_pause)                                                      │                  if (priv->rx_pause)                                                     
                        mac_control |= CPSW_SL_CTL_RX_FLOW_EN;                           │                          mac_control |= CPSW_SL_CTL_RX_FLOW_EN;                          
                                                                                         │                                                                                          
                if (priv->tx_pause)                                                      │                  if (priv->tx_pause)                                                     
                        mac_control |= CPSW_SL_CTL_TX_FLOW_EN;                           │                          mac_control |= CPSW_SL_CTL_TX_FLOW_EN;                          
                                                                                         │                                                                                          
                if (mac_control != slave->mac_control)                                   │                  if (mac_control != slave->mac_control)                                  
                        cpsw_sl_ctl_set(slave->mac_sl, mac_control);                     │                          cpsw_sl_ctl_set(slave->mac_sl, mac_control);                    
                                                                                         │                                                                                          
                /* enable forwarding */                                                  │                  /* enable forwarding */                                                 
                cpsw_ale_control_set(cpsw->ale, slave_port,                              │                  cpsw_ale_control_set(cpsw->ale, priv->emac_port,                        
                                     ALE_PORT_STATE, ALE_PORT_STATE_FORWARD);            │                                       ALE_PORT_STATE, ALE_PORT_STATE_FORWARD);           
                                                                                         │                                                                                          
                *link = true;                                                            │                  netif_tx_wake_all_queues(ndev);                                         
                                                                                         │                                                                                          
                if (priv->shp_cfg_speed &&                                               │                  if (priv->shp_cfg_speed &&                                              
                    priv->shp_cfg_speed != slave->phy->speed &&                          │                      priv->shp_cfg_speed != slave->phy->speed &&                         
                    !cpsw_shp_is_off(priv))                                              │                      !cpsw_shp_is_off(priv))                                             
                        dev_warn(priv->dev,                                              │                          dev_warn(priv->dev, "Speed was changed, CBS shaper speeds are ch
                                 "Speed was changed, CBS shaper speeds are changed!");   │                                                                                          
        } else {                                                                         │          } else {                                                                        
                                                                                         │                  netif_tx_stop_all_queues(ndev);                                         
                                                                                         │                                                                                          
                mac_control = 0;                                                         │                  mac_control = 0;                                                        
                /* disable forwarding */                                                 │                  /* disable forwarding */                                                
                cpsw_ale_control_set(cpsw->ale, slave_port,                              │                  cpsw_ale_control_set(cpsw->ale, priv->emac_port,                        
                                     ALE_PORT_STATE, ALE_PORT_STATE_DISABLE);            │                                       ALE_PORT_STATE, ALE_PORT_STATE_DISABLE);           
                                                                                         │                                                                                          
                cpsw_sl_wait_for_idle(slave->mac_sl, 100);                               │                  cpsw_sl_wait_for_idle(slave->mac_sl, 100);                              
                                                                                         │                                                                                          
                cpsw_sl_ctl_reset(slave->mac_sl);                                        │                  cpsw_sl_ctl_reset(slave->mac_sl);                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (mac_control != slave->mac_control)                                           │          if (mac_control != slave->mac_control)                                          
                phy_print_status(phy);                                                   │                  phy_print_status(phy);                                                  
                                                                                         │                                                                                          
        slave->mac_control = mac_control;                                                │          slave->mac_control = mac_control;                                               
                                                                                         │                                                                                          
                                                                                         │          if (phy->link && cpsw_need_resplit(cpsw))                                       
                                                                                         │                  cpsw_split_res(cpsw);                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c:1696                                  │ linux/drivers/net/ethernet/amd/xgbe/xgbe-phy-v1.c:233                                    
                                                                                         │                                                                                          
        struct ethtool_link_ksettings *lks = &pdata->phy.lks;                            │          struct ethtool_link_ksettings *lks = &pdata->phy.lks;                           
                                                                                         │          struct xgbe_phy_data *phy_data = pdata->phy_data;                               
        enum xgbe_mode mode;                                                             │          enum xgbe_mode mode;                                                            
        unsigned int ad_reg, lp_reg;                                                     │          unsigned int ad_reg, lp_reg;                                                    
                                                                                         │                                                                                          
        XGBE_SET_LP_ADV(lks, Autoneg);                                                   │          XGBE_SET_LP_ADV(lks, Autoneg);                                                  
        XGBE_SET_LP_ADV(lks, Backplane);                                                 │          XGBE_SET_LP_ADV(lks, Backplane);                                                
                                                                                         │                                                                                          
        /* Compare Advertisement and Link Partner register 1 */                          │          /* Compare Advertisement and Link Partner register 1 */                         
        ad_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_ADVERTISE);                      │          ad_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_ADVERTISE);                     
        lp_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_LPA);                            │          lp_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_LPA);                           
        if (lp_reg & 0x400)                                                              │          if (lp_reg & 0x400)                                                             
                XGBE_SET_LP_ADV(lks, Pause);                                             │                  XGBE_SET_LP_ADV(lks, Pause);                                            
        if (lp_reg & 0x800)                                                              │          if (lp_reg & 0x800)                                                             
                XGBE_SET_LP_ADV(lks, Asym_Pause);                                        │                  XGBE_SET_LP_ADV(lks, Asym_Pause);                                       
                                                                                         │                                                                                          
        if (pdata->phy.pause_autoneg) {                                                  │          if (pdata->phy.pause_autoneg) {                                                 
                /* Set flow control based on auto-negotiation result */                  │                  /* Set flow control based on auto-negotiation result */                 
                pdata->phy.tx_pause = 0;                                                 │                  pdata->phy.tx_pause = 0;                                                
                pdata->phy.rx_pause = 0;                                                 │                  pdata->phy.rx_pause = 0;                                                
                                                                                         │                                                                                          
                if (ad_reg & lp_reg & 0x400) {                                           │                  if (ad_reg & lp_reg & 0x400) {                                          
                        pdata->phy.tx_pause = 1;                                         │                          pdata->phy.tx_pause = 1;                                        
                        pdata->phy.rx_pause = 1;                                         │                          pdata->phy.rx_pause = 1;                                        
                } else if (ad_reg & lp_reg & 0x800) {                                    │                  } else if (ad_reg & lp_reg & 0x800) {                                   
                        if (ad_reg & 0x400)                                              │                          if (ad_reg & 0x400)                                             
                                pdata->phy.rx_pause = 1;                                 │                                  pdata->phy.rx_pause = 1;                                
                        else if (lp_reg & 0x400)                                         │                          else if (lp_reg & 0x400)                                        
                                pdata->phy.tx_pause = 1;                                 │                                  pdata->phy.tx_pause = 1;                                
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Compare Advertisement and Link Partner register 2 */                          │          /* Compare Advertisement and Link Partner register 2 */                         
        ad_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_ADVERTISE + 1);                  │          ad_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_ADVERTISE + 1);                 
        lp_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_LPA + 1);                        │          lp_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_LPA + 1);                       
        if (lp_reg & 0x80)                                                               │          if (lp_reg & 0x80)                                                              
                XGBE_SET_LP_ADV(lks, 10000baseKR_Full);                                  │                  XGBE_SET_LP_ADV(lks, 10000baseKR_Full);                                 
        if (lp_reg & 0x20)                                                               │          if (lp_reg & 0x20) {                                                            
                XGBE_SET_LP_ADV(lks, 1000baseKX_Full);                                   │                  if (phy_data->speed_set == XGBE_SPEEDSET_2500_10000)                    
                                                                                         │                          XGBE_SET_LP_ADV(lks, 2500baseX_Full);                           
                                                                                         │                  else                                                                    
                                                                                         │                          XGBE_SET_LP_ADV(lks, 1000baseKX_Full);                          
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        ad_reg &= lp_reg;                                                                │          ad_reg &= lp_reg;                                                               
        if (ad_reg & 0x80)                                                               │          if (ad_reg & 0x80) {                                                            
                mode = XGBE_MODE_KR;                                                     │                  mode = XGBE_MODE_KR;                                                    
        else if (ad_reg & 0x20)                                                          │          } else if (ad_reg & 0x20) {                                                     
                mode = XGBE_MODE_KX_1000;                                                │                  if (phy_data->speed_set == XGBE_SPEEDSET_2500_10000)                    
        else                                                                             │                          mode = XGBE_MODE_KX_2500;                                       
                                                                                         │                  else                                                                    
                                                                                         │                          mode = XGBE_MODE_KX_1000;                                       
                                                                                         │          } else {                                                                        
                mode = XGBE_MODE_UNKNOWN;                                                │                  mode = XGBE_MODE_UNKNOWN;                                               
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        /* Compare Advertisement and Link Partner register 3 */                          │          /* Compare Advertisement and Link Partner register 3 */                         
        ad_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_ADVERTISE + 2);                  │          ad_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_ADVERTISE + 2);                 
        lp_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_LPA + 2);                        │          lp_reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_AN_LPA + 2);                       
        if (lp_reg & 0xc000)                                                             │          if (lp_reg & 0xc000)                                                            
                XGBE_SET_LP_ADV(lks, 10000baseR_FEC);                                    │                  XGBE_SET_LP_ADV(lks, 10000baseR_FEC);                                   
                                                                                         │                                                                                          
        return mode;                                                                     │          return mode;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwmac5.c:138                                  │ linux/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:757                            
                                                                                         │                                                                                          
        { true, "TCES", "DMA TSO Memory Error" },                                        │          { true, "TCES", "DMA TSO Memory Error" },                                       
        { true, "TAMS", "DMA TSO Memory Address Mismatch Error" },                       │          { true, "TAMS", "DMA TSO Memory Address Mismatch Error" },                      
        { true, "TUES", "DMA TSO Memory Error" },                                        │          { true, "TUES", "DMA TSO Memory Error" },                                       
        { false, "UNKNOWN", "Unknown Error" }, /* 3 */                                   │          { false, "UNKNOWN", "Unknown Error" }, /* 3 */                                  
        { false, "UNKNOWN", "Unknown Error" }, /* 4 */                                   │          { true, "DCES", "DMA DCACHE Memory Error" },                                    
        { false, "UNKNOWN", "Unknown Error" }, /* 5 */                                   │          { true, "DAMS", "DMA DCACHE Address Mismatch Error" },                          
        { false, "UNKNOWN", "Unknown Error" }, /* 6 */                                   │          { true, "DUES", "DMA DCACHE Memory Error" },                                    
        { false, "UNKNOWN", "Unknown Error" }, /* 7 */                                   │          { false, "UNKNOWN", "Unknown Error" }, /* 7 */                                  
        { false, "UNKNOWN", "Unknown Error" }, /* 8 */                                   │          { false, "UNKNOWN", "Unknown Error" }, /* 8 */                                  
        { false, "UNKNOWN", "Unknown Error" }, /* 9 */                                   │          { false, "UNKNOWN", "Unknown Error" }, /* 9 */                                  
        { false, "UNKNOWN", "Unknown Error" }, /* 10 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 10 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 11 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 11 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 12 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 12 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 13 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 13 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 14 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 14 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 15 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 15 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 16 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 16 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 17 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 17 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 18 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 18 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 19 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 19 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 20 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 20 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 21 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 21 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 22 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 22 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 23 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 23 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 24 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 24 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 25 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 25 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 26 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 26 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 27 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 27 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 28 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 28 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 29 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 29 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 30 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 30 */                                 
        { false, "UNKNOWN", "Unknown Error" }, /* 31 */                                  │          { false, "UNKNOWN", "Unknown Error" }, /* 31 */                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:1460                                             │ linux/drivers/net/ethernet/sfc/falcon/farch.c:1445                                       
                                                                                         │                                                                                          
        efx_oword_t *int_ker = efx->irq_status.addr;                                     │          struct falcon_nic_data *nic_data = efx->nic_data;                               
        efx_oword_t fatal_intr;                                                          │          ef4_oword_t *int_ker = efx->irq_status.addr;                                    
                                                                                         │          ef4_oword_t fatal_intr;                                                         
        int error, mem_perr;                                                             │          int error, mem_perr;                                                            
                                                                                         │                                                                                          
        efx_reado(efx, &fatal_intr, FR_AZ_FATAL_INTR_KER);                               │          ef4_reado(efx, &fatal_intr, FR_AZ_FATAL_INTR_KER);                              
        error = EFX_OWORD_FIELD(fatal_intr, FRF_AZ_FATAL_INTR);                          │          error = EF4_OWORD_FIELD(fatal_intr, FRF_AZ_FATAL_INTR);                         
                                                                                         │                                                                                          
        netif_err(efx, hw, efx->net_dev, "SYSTEM ERROR "EFX_OWORD_FMT" status "          │          netif_err(efx, hw, efx->net_dev, "SYSTEM ERROR "EF4_OWORD_FMT" status "         
                  EFX_OWORD_FMT ": %s\n", EFX_OWORD_VAL(*int_ker),                       │                    EF4_OWORD_FMT ": %s\n", EF4_OWORD_VAL(*int_ker),                      
                  EFX_OWORD_VAL(fatal_intr),                                             │                    EF4_OWORD_VAL(fatal_intr),                                            
                  error ? "disabling bus mastering" : "no recognised error");            │                    error ? "disabling bus mastering" : "no recognised error");           
                                                                                         │                                                                                          
        /* If this is a memory parity error dump which blocks are offending */           │          /* If this is a memory parity error dump which blocks are offending */          
        mem_perr = (EFX_OWORD_FIELD(fatal_intr, FRF_AZ_MEM_PERR_INT_KER) ||              │          mem_perr = (EF4_OWORD_FIELD(fatal_intr, FRF_AZ_MEM_PERR_INT_KER) ||             
                    EFX_OWORD_FIELD(fatal_intr, FRF_AZ_SRM_PERR_INT_KER));               │                      EF4_OWORD_FIELD(fatal_intr, FRF_AZ_SRM_PERR_INT_KER));              
        if (mem_perr) {                                                                  │          if (mem_perr) {                                                                 
                efx_oword_t reg;                                                         │                  ef4_oword_t reg;                                                        
                efx_reado(efx, ®, FR_AZ_MEM_STAT);                                    │                  ef4_reado(efx, ®, FR_AZ_MEM_STAT);                                   
                netif_err(efx, hw, efx->net_dev,                                         │                  netif_err(efx, hw, efx->net_dev,                                        
                          "SYSTEM ERROR: memory parity error "EFX_OWORD_FMT"\n",         │                            "SYSTEM ERROR: memory parity error "EF4_OWORD_FMT"\n",        
                          EFX_OWORD_VAL(reg));                                           │                            EF4_OWORD_VAL(reg));                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Disable both devices */                                                       │          /* Disable both devices */                                                      
        pci_clear_master(efx->pci_dev);                                                  │          pci_clear_master(efx->pci_dev);                                                 
        efx_farch_irq_disable_master(efx);                                               │          if (ef4_nic_is_dual_func(efx))                                                  
                                                                                         │                  pci_clear_master(nic_data->pci_dev2);                                   
                                                                                         │          ef4_farch_irq_disable_master(efx);                                              
                                                                                         │                                                                                          
        /* Count errors and reset or disable the NIC accordingly */                      │          /* Count errors and reset or disable the NIC accordingly */                     
        if (efx->int_error_count == 0 ||                                                 │          if (efx->int_error_count == 0 ||                                                
            time_after(jiffies, efx->int_error_expire)) {                                │              time_after(jiffies, efx->int_error_expire)) {                               
                efx->int_error_count = 0;                                                │                  efx->int_error_count = 0;                                               
                efx->int_error_expire =                                                  │                  efx->int_error_expire =                                                 
                        jiffies + EFX_INT_ERROR_EXPIRE * HZ;                             │                          jiffies + EF4_INT_ERROR_EXPIRE * HZ;                            
        }                                                                                │          }                                                                               
        if (++efx->int_error_count < EFX_MAX_INT_ERRORS) {                               │          if (++efx->int_error_count < EF4_MAX_INT_ERRORS) {                              
                netif_err(efx, hw, efx->net_dev,                                         │                  netif_err(efx, hw, efx->net_dev,                                        
                          "SYSTEM ERROR - reset scheduled\n");                           │                            "SYSTEM ERROR - reset scheduled\n");                          
                efx_schedule_reset(efx, RESET_TYPE_INT_ERROR);                           │                  ef4_schedule_reset(efx, RESET_TYPE_INT_ERROR);                          
        } else {                                                                         │          } else {                                                                        
                netif_err(efx, hw, efx->net_dev,                                         │                  netif_err(efx, hw, efx->net_dev,                                        
                          "SYSTEM ERROR - max number of errors seen."                    │                            "SYSTEM ERROR - max number of errors seen."                   
                          "NIC will be disabled\n");                                     │                            "NIC will be disabled\n");                                    
                efx_schedule_reset(efx, RESET_TYPE_DISABLE);                             │                  ef4_schedule_reset(efx, RESET_TYPE_DISABLE);                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return IRQ_HANDLED;                                                              │          return IRQ_HANDLED;                                                             
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c:151                             │ linux/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c:83                               
                                                                                         │                                                                                          
        struct net_device *ndev = bus->priv;                                             │          struct net_device *ndev = bus->priv;                                            
        struct stmmac_priv *priv = netdev_priv(ndev);                                    │          struct stmmac_priv *priv = netdev_priv(ndev);                                   
        unsigned int mii_address = priv->hw->mii.addr;                                   │          unsigned int mii_address = priv->hw->mii.addr;                                  
        unsigned int mii_data = priv->hw->mii.data;                                      │          unsigned int mii_data = priv->hw->mii.data;                                     
        u32 addr, tmp, value = MII_XGMAC_BUSY;                                           │          u32 tmp, addr, value = MII_XGMAC_BUSY;                                          
        int ret;                                                                         │          int ret;                                                                        
                                                                                         │                                                                                          
        ret = pm_runtime_get_sync(priv->device);                                         │          ret = pm_runtime_get_sync(priv->device);                                        
        if (ret < 0) {                                                                   │          if (ret < 0) {                                                                  
                pm_runtime_put_noidle(priv->device);                                     │                  pm_runtime_put_noidle(priv->device);                                    
                return ret;                                                              │                  return ret;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Wait until any existing MII operation is complete */                          │          /* Wait until any existing MII operation is complete */                         
        if (readl_poll_timeout(priv->ioaddr + mii_data, tmp,                             │          if (readl_poll_timeout(priv->ioaddr + mii_data, tmp,                            
                               !(tmp & MII_XGMAC_BUSY), 100, 10000)) {                   │                                 !(tmp & MII_XGMAC_BUSY), 100, 10000)) {                  
                ret = -EBUSY;                                                            │                  ret = -EBUSY;                                                           
                goto err_disable_clks;                                                   │                  goto err_disable_clks;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (phyreg & MII_ADDR_C45) {                                                     │          if (phyreg & MII_ADDR_C45) {                                                    
                phyreg &= ~MII_ADDR_C45;                                                 │                  phyreg &= ~MII_ADDR_C45;                                                
                                                                                         │                                                                                          
                ret = stmmac_xgmac2_c45_format(priv, phyaddr, phyreg, &addr);            │                  ret = stmmac_xgmac2_c45_format(priv, phyaddr, phyreg, &addr);           
                if (ret)                                                                 │                  if (ret)                                                                
                        goto err_disable_clks;                                           │                          goto err_disable_clks;                                          
        } else {                                                                         │          } else {                                                                        
                ret = stmmac_xgmac2_c22_format(priv, phyaddr, phyreg, &addr);            │                  ret = stmmac_xgmac2_c22_format(priv, phyaddr, phyreg, &addr);           
                if (ret)                                                                 │                  if (ret)                                                                
                        goto err_disable_clks;                                           │                          goto err_disable_clks;                                          
                                                                                         │                                                                                          
                value |= MII_XGMAC_SADDR;                                                │                  value |= MII_XGMAC_SADDR;                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        value |= (priv->clk_csr << priv->hw->mii.clk_csr_shift)                          │          value |= (priv->clk_csr << priv->hw->mii.clk_csr_shift)                         
                & priv->hw->mii.clk_csr_mask;                                            │                  & priv->hw->mii.clk_csr_mask;                                           
        value |= phydata;                                                                │          value |= MII_XGMAC_READ;                                                        
        value |= MII_XGMAC_WRITE;                                                        │                                                                                          
                                                                                         │                                                                                          
        /* Wait until any existing MII operation is complete */                          │          /* Wait until any existing MII operation is complete */                         
        if (readl_poll_timeout(priv->ioaddr + mii_data, tmp,                             │          if (readl_poll_timeout(priv->ioaddr + mii_data, tmp,                            
                               !(tmp & MII_XGMAC_BUSY), 100, 10000)) {                   │                                 !(tmp & MII_XGMAC_BUSY), 100, 10000)) {                  
                ret = -EBUSY;                                                            │                  ret = -EBUSY;                                                           
                goto err_disable_clks;                                                   │                  goto err_disable_clks;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Set the MII address register to write */                                      │          /* Set the MII address register to read */                                      
        writel(addr, priv->ioaddr + mii_address);                                        │          writel(addr, priv->ioaddr + mii_address);                                       
        writel(value, priv->ioaddr + mii_data);                                          │          writel(value, priv->ioaddr + mii_data);                                         
                                                                                         │                                                                                          
        /* Wait until any existing MII operation is complete */                          │          /* Wait until any existing MII operation is complete */                         
        ret = readl_poll_timeout(priv->ioaddr + mii_data, tmp,                           │          if (readl_poll_timeout(priv->ioaddr + mii_data, tmp,                            
                                 !(tmp & MII_XGMAC_BUSY), 100, 10000);                   │                                 !(tmp & MII_XGMAC_BUSY), 100, 10000)) {                  
                                                                                         │                  ret = -EBUSY;                                                           
                                                                                         │                  goto err_disable_clks;                                                  
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          /* Read the data from the MII data register */                                  
                                                                                         │          ret = (int)readl(priv->ioaddr + mii_data) & GENMASK(15, 0);                     
                                                                                         │                                                                                          
err_disable_clks:                                                                        │  err_disable_clks:                                                                       
        pm_runtime_put(priv->device);                                                    │          pm_runtime_put(priv->device);                                                   
                                                                                         │                                                                                          
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3676                               │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3639                                
                                                                                         │                                                                                          
        .kind                           = mlxsw_sp3_driver_name,                         │          .kind                           = mlxsw_sp2_driver_name,                        
        .priv_size                      = sizeof(struct mlxsw_sp),                       │          .priv_size                      = sizeof(struct mlxsw_sp),                      
        .fw_req_rev                     = &mlxsw_sp3_fw_rev,                             │          .fw_req_rev                     = &mlxsw_sp2_fw_rev,                            
        .fw_filename                    = MLXSW_SP3_FW_FILENAME,                         │          .fw_filename                    = MLXSW_SP2_FW_FILENAME,                        
        .init                           = mlxsw_sp3_init,                                │          .init                           = mlxsw_sp2_init,                               
        .fini                           = mlxsw_sp_fini,                                 │          .fini                           = mlxsw_sp_fini,                                
        .port_split                     = mlxsw_sp_port_split,                           │          .port_split                     = mlxsw_sp_port_split,                          
        .port_unsplit                   = mlxsw_sp_port_unsplit,                         │          .port_unsplit                   = mlxsw_sp_port_unsplit,                        
        .sb_pool_get                    = mlxsw_sp_sb_pool_get,                          │          .sb_pool_get                    = mlxsw_sp_sb_pool_get,                         
        .sb_pool_set                    = mlxsw_sp_sb_pool_set,                          │          .sb_pool_set                    = mlxsw_sp_sb_pool_set,                         
        .sb_port_pool_get               = mlxsw_sp_sb_port_pool_get,                     │          .sb_port_pool_get               = mlxsw_sp_sb_port_pool_get,                    
        .sb_port_pool_set               = mlxsw_sp_sb_port_pool_set,                     │          .sb_port_pool_set               = mlxsw_sp_sb_port_pool_set,                    
        .sb_tc_pool_bind_get            = mlxsw_sp_sb_tc_pool_bind_get,                  │          .sb_tc_pool_bind_get            = mlxsw_sp_sb_tc_pool_bind_get,                 
        .sb_tc_pool_bind_set            = mlxsw_sp_sb_tc_pool_bind_set,                  │          .sb_tc_pool_bind_set            = mlxsw_sp_sb_tc_pool_bind_set,                 
        .sb_occ_snapshot                = mlxsw_sp_sb_occ_snapshot,                      │          .sb_occ_snapshot                = mlxsw_sp_sb_occ_snapshot,                     
        .sb_occ_max_clear               = mlxsw_sp_sb_occ_max_clear,                     │          .sb_occ_max_clear               = mlxsw_sp_sb_occ_max_clear,                    
        .sb_occ_port_pool_get           = mlxsw_sp_sb_occ_port_pool_get,                 │          .sb_occ_port_pool_get           = mlxsw_sp_sb_occ_port_pool_get,                
        .sb_occ_tc_port_bind_get        = mlxsw_sp_sb_occ_tc_port_bind_get,              │          .sb_occ_tc_port_bind_get        = mlxsw_sp_sb_occ_tc_port_bind_get,             
        .trap_init                      = mlxsw_sp_trap_init,                            │          .trap_init                      = mlxsw_sp_trap_init,                           
        .trap_fini                      = mlxsw_sp_trap_fini,                            │          .trap_fini                      = mlxsw_sp_trap_fini,                           
        .trap_action_set                = mlxsw_sp_trap_action_set,                      │          .trap_action_set                = mlxsw_sp_trap_action_set,                     
        .trap_group_init                = mlxsw_sp_trap_group_init,                      │          .trap_group_init                = mlxsw_sp_trap_group_init,                     
        .trap_group_set                 = mlxsw_sp_trap_group_set,                       │          .trap_group_set                 = mlxsw_sp_trap_group_set,                      
        .trap_policer_init              = mlxsw_sp_trap_policer_init,                    │          .trap_policer_init              = mlxsw_sp_trap_policer_init,                   
        .trap_policer_fini              = mlxsw_sp_trap_policer_fini,                    │          .trap_policer_fini              = mlxsw_sp_trap_policer_fini,                   
        .trap_policer_set               = mlxsw_sp_trap_policer_set,                     │          .trap_policer_set               = mlxsw_sp_trap_policer_set,                    
        .trap_policer_counter_get       = mlxsw_sp_trap_policer_counter_get,             │          .trap_policer_counter_get       = mlxsw_sp_trap_policer_counter_get,            
        .txhdr_construct                = mlxsw_sp_txhdr_construct,                      │          .txhdr_construct                = mlxsw_sp_txhdr_construct,                     
        .resources_register             = mlxsw_sp2_resources_register,                  │          .resources_register             = mlxsw_sp2_resources_register,                 
        .params_register                = mlxsw_sp2_params_register,                     │          .params_register                = mlxsw_sp2_params_register,                    
        .params_unregister              = mlxsw_sp2_params_unregister,                   │          .params_unregister              = mlxsw_sp2_params_unregister,                  
        .ptp_transmitted                = mlxsw_sp_ptp_transmitted,                      │          .ptp_transmitted                = mlxsw_sp_ptp_transmitted,                     
        .txhdr_len                      = MLXSW_TXHDR_LEN,                               │          .txhdr_len                      = MLXSW_TXHDR_LEN,                              
        .profile                        = &mlxsw_sp2_config_profile,                     │          .profile                        = &mlxsw_sp2_config_profile,                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/ich8lan.c:4314                                  │ linux/drivers/net/ethernet/intel/e1000e/ich8lan.c:4229                                   
                                                                                         │                                                                                          
                udelay(1);                                                               │                  udelay(1);                                                              
                /* Steps */                                                              │                  /* Steps */                                                             
                ret_val = e1000_flash_cycle_init_ich8lan(hw);                            │                  ret_val = e1000_flash_cycle_init_ich8lan(hw);                           
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* In SPT, This register is in Lan memory space, not                     │                  /* In SPT, This register is in Lan memory space, not                    
                 * flash.  Therefore, only 32 bit access is supported                    │                   * flash.  Therefore, only 32 bit access is supported                   
                 */                                                                      │                   */                                                                     
                if (hw->mac.type >= e1000_pch_spt)                                       │                  if (hw->mac.type >= e1000_pch_spt)                                      
                        hsflctl.regval = er32flash(ICH_FLASH_HSFSTS)                     │                          hsflctl.regval = er32flash(ICH_FLASH_HSFSTS) >> 16;             
                            >> 16;                                                       │                                                                                          
                else                                                                     │                  else                                                                    
                        hsflctl.regval = er16flash(ICH_FLASH_HSFCTL);                    │                          hsflctl.regval = er16flash(ICH_FLASH_HSFCTL);                   
                                                                                         │                                                                                          
                hsflctl.hsf_ctrl.fldbcount = sizeof(u32) - 1;                            │                  /* 0b/1b corresponds to 1 or 2 byte size, respectively. */              
                                                                                         │                  hsflctl.hsf_ctrl.fldbcount = size - 1;                                  
                hsflctl.hsf_ctrl.flcycle = ICH_CYCLE_WRITE;                              │                  hsflctl.hsf_ctrl.flcycle = ICH_CYCLE_WRITE;                             
                                                                                         │                                                                                          
                /* In SPT, This register is in Lan memory space,                         │                  /* In SPT, This register is in Lan memory space,                        
                 * not flash.  Therefore, only 32 bit access is                          │                   * not flash.  Therefore, only 32 bit access is                         
                 * supported                                                             │                   * supported                                                            
                 */                                                                      │                   */                                                                     
                if (hw->mac.type >= e1000_pch_spt)                                       │                  if (hw->mac.type >= e1000_pch_spt)                                      
                        ew32flash(ICH_FLASH_HSFSTS, hsflctl.regval << 16);               │                          ew32flash(ICH_FLASH_HSFSTS, hsflctl.regval << 16);              
                else                                                                     │                  else                                                                    
                        ew16flash(ICH_FLASH_HSFCTL, hsflctl.regval);                     │                          ew16flash(ICH_FLASH_HSFCTL, hsflctl.regval);                    
                                                                                         │                                                                                          
                ew32flash(ICH_FLASH_FADDR, flash_linear_addr);                           │                  ew32flash(ICH_FLASH_FADDR, flash_linear_addr);                          
                                                                                         │                                                                                          
                ew32flash(ICH_FLASH_FDATA0, data);                                       │                  if (size == 1)                                                          
                                                                                         │                          flash_data = (u32)data & 0x00FF;                                
                                                                                         │                  else                                                                    
                                                                                         │                          flash_data = (u32)data;                                         
                                                                                         │                                                                                          
                                                                                         │                  ew32flash(ICH_FLASH_FDATA0, flash_data);                                
                                                                                         │                                                                                          
                /* check if FCERR is set to 1 , if set to 1, clear it                    │                  /* check if FCERR is set to 1 , if set to 1, clear it                   
                 * and try the whole sequence a few more times else done                 │                   * and try the whole sequence a few more times else done                
                 */                                                                      │                   */                                                                     
                ret_val =                                                                │                  ret_val =                                                               
                   e1000_flash_cycle_ich8lan(hw,                                         │                      e1000_flash_cycle_ich8lan(hw,                                       
                                             ICH_FLASH_WRITE_COMMAND_TIMEOUT);           │                                                ICH_FLASH_WRITE_COMMAND_TIMEOUT);         
                                                                                         │                                                                                          
                if (!ret_val)                                                            │                  if (!ret_val)                                                           
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* If we're here, then things are most likely                            │                  /* If we're here, then things are most likely                           
                 * completely hosed, but if the error condition                          │                   * completely hosed, but if the error condition                         
                 * is detected, it won't hurt to give it another                         │                   * is detected, it won't hurt to give it another                        
                 * try...ICH_FLASH_CYCLE_REPEAT_COUNT times.                             │                   * try...ICH_FLASH_CYCLE_REPEAT_COUNT times.                            
                 */                                                                      │                   */                                                                     
                hsfsts.regval = er16flash(ICH_FLASH_HSFSTS);                             │                  hsfsts.regval = er16flash(ICH_FLASH_HSFSTS);                            
                                                                                         │                                                                                          
                if (hsfsts.hsf_status.flcerr)                                            │                  if (hsfsts.hsf_status.flcerr)                                           
                        /* Repeat for some time before giving up. */                     │                          /* Repeat for some time before giving up. */                    
                        continue;                                                        │                          continue;                                                       
                if (!hsfsts.hsf_status.flcdone) {                                        │                  if (!hsfsts.hsf_status.flcdone) {                                       
                        e_dbg("Timeout error - flash cycle did not complete.\n");        │                          e_dbg("Timeout error - flash cycle did not complete.\n");       
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c:1159                    │ linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c:8708                       
                                                                                         │                                                                                          
        struct hclgevf_mac_addr_node *mac_node, *tmp, *new_node;                         │          struct hclge_mac_node *mac_node, *tmp, *new_node;                               
        struct list_head tmp_add_list, tmp_del_list;                                     │          struct list_head tmp_add_list, tmp_del_list;                                    
        struct list_head *list;                                                          │          struct list_head *list;                                                         
                                                                                         │          bool all_added;                                                                 
                                                                                         │                                                                                          
        INIT_LIST_HEAD(&tmp_add_list);                                                   │          INIT_LIST_HEAD(&tmp_add_list);                                                  
        INIT_LIST_HEAD(&tmp_del_list);                                                   │          INIT_LIST_HEAD(&tmp_del_list);                                                  
                                                                                         │                                                                                          
        /* move the mac addr to the tmp_add_list and tmp_del_list, then                  │          /* move the mac addr to the tmp_add_list and tmp_del_list, then                 
         * we can add/delete these mac addr outside the spin lock                        │           * we can add/delete these mac addr outside the spin lock                       
         */                                                                              │           */                                                                             
        list = (mac_type == HCLGEVF_MAC_ADDR_UC) ?                                       │          list = (mac_type == HCLGE_MAC_ADDR_UC) ?                                        
                &hdev->mac_table.uc_mac_list : &hdev->mac_table.mc_mac_list;             │                  &vport->uc_mac_list : &vport->mc_mac_list;                              
                                                                                         │                                                                                          
        spin_lock_bh(&hdev->mac_table.mac_list_lock);                                    │          spin_lock_bh(&vport->mac_list_lock);                                            
                                                                                         │                                                                                          
        list_for_each_entry_safe(mac_node, tmp, list, node) {                            │          list_for_each_entry_safe(mac_node, tmp, list, node) {                           
                switch (mac_node->state) {                                               │                  switch (mac_node->state) {                                              
                case HCLGEVF_MAC_TO_DEL:                                                 │                  case HCLGE_MAC_TO_DEL:                                                  
                        list_move_tail(&mac_node->node, &tmp_del_list);                  │                          list_move_tail(&mac_node->node, &tmp_del_list);                 
                        break;                                                           │                          break;                                                          
                case HCLGEVF_MAC_TO_ADD:                                                 │                  case HCLGE_MAC_TO_ADD:                                                  
                        new_node = kzalloc(sizeof(*new_node), GFP_ATOMIC);               │                          new_node = kzalloc(sizeof(*new_node), GFP_ATOMIC);              
                        if (!new_node)                                                   │                          if (!new_node)                                                  
                                goto stop_traverse;                                      │                                  goto stop_traverse;                                     
                                                                                         │                                                                                          
                        ether_addr_copy(new_node->mac_addr, mac_node->mac_addr);         │                          ether_addr_copy(new_node->mac_addr, mac_node->mac_addr);        
                        new_node->state = mac_node->state;                               │                          new_node->state = mac_node->state;                              
                        list_add_tail(&new_node->node, &tmp_add_list);                   │                          list_add_tail(&new_node->node, &tmp_add_list);                  
                        break;                                                           │                          break;                                                          
                default:                                                                 │                  default:                                                                
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
stop_traverse:                                                                           │  stop_traverse:                                                                          
        spin_unlock_bh(&hdev->mac_table.mac_list_lock);                                  │          spin_unlock_bh(&vport->mac_list_lock);                                          
                                                                                         │                                                                                          
        /* delete first, in order to get max mac table space for adding */               │          /* delete first, in order to get max mac table space for adding */              
        hclgevf_config_mac_list(hdev, &tmp_del_list, mac_type);                          │          hclge_unsync_vport_mac_list(vport, &tmp_del_list, mac_type);                    
        hclgevf_config_mac_list(hdev, &tmp_add_list, mac_type);                          │          hclge_sync_vport_mac_list(vport, &tmp_add_list, mac_type);                      
                                                                                         │                                                                                          
        /* if some mac addresses were added/deleted fail, move back to the               │          /* if some mac addresses were added/deleted fail, move back to the              
         * mac_list, and retry at next time.                                             │           * mac_list, and retry at next time.                                            
         */                                                                              │           */                                                                             
        spin_lock_bh(&hdev->mac_table.mac_list_lock);                                    │          spin_lock_bh(&vport->mac_list_lock);                                            
                                                                                         │                                                                                          
                                                                                         │          hclge_sync_from_del_list(&tmp_del_list, list);                                  
                                                                                         │          all_added = hclge_sync_from_add_list(&tmp_add_list, list);                      
                                                                                         │                                                                                          
        hclgevf_sync_from_del_list(&tmp_del_list, list);                                 │          spin_unlock_bh(&vport->mac_list_lock);                                          
        hclgevf_sync_from_add_list(&tmp_add_list, list);                                 │                                                                                          
                                                                                         │                                                                                          
        spin_unlock_bh(&hdev->mac_table.mac_list_lock);                                  │          hclge_update_overflow_flags(vport, mac_type, all_added);                        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/brocade/bna/bna_tx_rx.c:776                                  │ linux/drivers/net/ethernet/brocade/bna/bna_tx_rx.c:834                                   
                                                                                         │                                                                                          
        struct bna_ucam_mod *ucam_mod = &rx->bna->ucam_mod;                              │          struct bna_mcam_mod *mcam_mod = &rx->bna->mcam_mod;                             
        struct bna_rxf *rxf = &rx->rxf;                                                  │          struct bna_rxf *rxf = &rx->rxf;                                                 
        struct list_head list_head;                                                      │          struct list_head list_head;                                                     
        const u8 *mcaddr;                                                                │          const u8 *mcaddr;                                                               
        struct bna_mac *mac, *del_mac;                                                   │          struct bna_mac *mac, *del_mac;                                                  
        int i;                                                                           │          int i;                                                                          
                                                                                         │                                                                                          
        /* Purge the pending_add_q */                                                    │          /* Purge the pending_add_q */                                                   
        while (!list_empty(&rxf->ucast_pending_add_q)) {                                 │          while (!list_empty(&rxf->mcast_pending_add_q)) {                                
                mac = list_first_entry(&rxf->ucast_pending_add_q,                        │                  mac = list_first_entry(&rxf->mcast_pending_add_q,                       
                                       struct bna_mac, qe);                              │                                         struct bna_mac, qe);                             
                list_move_tail(&mac->qe, &ucam_mod->free_q);                             │                  list_move_tail(&mac->qe, &mcam_mod->free_q);                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Schedule active_q entries for deletion */                                     │          /* Schedule active_q entries for deletion */                                    
        while (!list_empty(&rxf->ucast_active_q)) {                                      │          while (!list_empty(&rxf->mcast_active_q)) {                                     
                mac = list_first_entry(&rxf->ucast_active_q,                             │                  mac = list_first_entry(&rxf->mcast_active_q,                            
                                       struct bna_mac, qe);                              │                                         struct bna_mac, qe);                             
                del_mac = bna_cam_mod_mac_get(&ucam_mod->del_q);                         │                  del_mac = bna_cam_mod_mac_get(&mcam_mod->del_q);                        
                ether_addr_copy(del_mac->addr, mac->addr);                               │                  ether_addr_copy(del_mac->addr, mac->addr);                              
                del_mac->handle = mac->handle;                                           │                  del_mac->handle = mac->handle;                                          
                list_add_tail(&del_mac->qe, &rxf->ucast_pending_del_q);                  │                  list_add_tail(&del_mac->qe, &rxf->mcast_pending_del_q);                 
                list_move_tail(&mac->qe, &ucam_mod->free_q);                             │                  mac->handle = NULL;                                                     
                                                                                         │                  list_move_tail(&mac->qe, &mcam_mod->free_q);                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Allocate nodes */                                                             │          /* Allocate nodes */                                                            
        INIT_LIST_HEAD(&list_head);                                                      │          INIT_LIST_HEAD(&list_head);                                                     
        for (i = 0, mcaddr = uclist; i < count; i++) {                                   │          for (i = 0, mcaddr = mclist; i < count; i++) {                                  
                mac = bna_cam_mod_mac_get(&ucam_mod->free_q);                            │                  mac = bna_cam_mod_mac_get(&mcam_mod->free_q);                           
                if (mac == NULL)                                                         │                  if (mac == NULL)                                                        
                        goto err_return;                                                 │                          goto err_return;                                                
                ether_addr_copy(mac->addr, mcaddr);                                      │                  ether_addr_copy(mac->addr, mcaddr);                                     
                list_add_tail(&mac->qe, &list_head);                                     │                  list_add_tail(&mac->qe, &list_head);                                    
                                                                                         │                                                                                          
                mcaddr += ETH_ALEN;                                                      │                  mcaddr += ETH_ALEN;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Add the new entries */                                                        │          /* Add the new entries */                                                       
        while (!list_empty(&list_head)) {                                                │          while (!list_empty(&list_head)) {                                               
                mac = list_first_entry(&list_head, struct bna_mac, qe);                  │                  mac = list_first_entry(&list_head, struct bna_mac, qe);                 
                list_move_tail(&mac->qe, &rxf->ucast_pending_add_q);                     │                  list_move_tail(&mac->qe, &rxf->mcast_pending_add_q);                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        bfa_fsm_send_event(rxf, RXF_E_CONFIG);                                           │          bfa_fsm_send_event(rxf, RXF_E_CONFIG);                                          
                                                                                         │                                                                                          
        return BNA_CB_SUCCESS;                                                           │          return BNA_CB_SUCCESS;                                                          
                                                                                         │                                                                                          
err_return:                                                                              │  err_return:                                                                             
        while (!list_empty(&list_head)) {                                                │          while (!list_empty(&list_head)) {                                               
                mac = list_first_entry(&list_head, struct bna_mac, qe);                  │                  mac = list_first_entry(&list_head, struct bna_mac, qe);                 
                list_move_tail(&mac->qe, &ucam_mod->free_q);                             │                  list_move_tail(&mac->qe, &mcam_mod->free_q);                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return BNA_CB_UCAST_CAM_FULL;                                                    │          return BNA_CB_MCAST_LIST_FULL;                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8638                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8682                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:5662                                    │ linux/drivers/net/ethernet/intel/igc/igc_main.c:4170                                     
                                                                                         │                                                                                          
                                                                                         │          struct igc_adapter *adapter = q_vector->adapter;                                
        int new_val = q_vector->itr_val;                                                 │          int new_val = q_vector->itr_val;                                                
        int avg_wire_size = 0;                                                           │          int avg_wire_size = 0;                                                          
        struct igb_adapter *adapter = q_vector->adapter;                                 │                                                                                          
        unsigned int packets;                                                            │          unsigned int packets;                                                           
                                                                                         │                                                                                          
        /* For non-gigabit speeds, just fix the interrupt rate at 4000                   │          /* For non-gigabit speeds, just fix the interrupt rate at 4000                  
         * ints/sec - ITR timer value of 120 ticks.                                      │           * ints/sec - ITR timer value of 120 ticks.                                     
         */                                                                              │           */                                                                             
        if (adapter->link_speed != SPEED_1000) {                                         │          switch (adapter->link_speed) {                                                  
                new_val = IGB_4K_ITR;                                                    │          case SPEED_10:                                                                  
                                                                                         │          case SPEED_100:                                                                 
                                                                                         │                  new_val = IGC_4K_ITR;                                                   
                goto set_itr_val;                                                        │                  goto set_itr_val;                                                       
                                                                                         │          default:                                                                        
                                                                                         │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        packets = q_vector->rx.total_packets;                                            │          packets = q_vector->rx.total_packets;                                           
        if (packets)                                                                     │          if (packets)                                                                    
                avg_wire_size = q_vector->rx.total_bytes / packets;                      │                  avg_wire_size = q_vector->rx.total_bytes / packets;                     
                                                                                         │                                                                                          
        packets = q_vector->tx.total_packets;                                            │          packets = q_vector->tx.total_packets;                                           
        if (packets)                                                                     │          if (packets)                                                                    
                avg_wire_size = max_t(u32, avg_wire_size,                                │                  avg_wire_size = max_t(u32, avg_wire_size,                               
                                      q_vector->tx.total_bytes / packets);               │                                        q_vector->tx.total_bytes / packets);              
                                                                                         │                                                                                          
        /* if avg_wire_size isn't set no work was done */                                │          /* if avg_wire_size isn't set no work was done */                               
        if (!avg_wire_size)                                                              │          if (!avg_wire_size)                                                             
                goto clear_counts;                                                       │                  goto clear_counts;                                                      
                                                                                         │                                                                                          
        /* Add 24 bytes to size to account for CRC, preamble, and gap */                 │          /* Add 24 bytes to size to account for CRC, preamble, and gap */                
        avg_wire_size += 24;                                                             │          avg_wire_size += 24;                                                            
                                                                                         │                                                                                          
        /* Don't starve jumbo frames */                                                  │          /* Don't starve jumbo frames */                                                 
        avg_wire_size = min(avg_wire_size, 3000);                                        │          avg_wire_size = min(avg_wire_size, 3000);                                       
                                                                                         │                                                                                          
        /* Give a little boost to mid-size frames */                                     │          /* Give a little boost to mid-size frames */                                    
        if ((avg_wire_size > 300) && (avg_wire_size < 1200))                             │          if (avg_wire_size > 300 && avg_wire_size < 1200)                                
                new_val = avg_wire_size / 3;                                             │                  new_val = avg_wire_size / 3;                                            
        else                                                                             │          else                                                                            
                new_val = avg_wire_size / 2;                                             │                  new_val = avg_wire_size / 2;                                            
                                                                                         │                                                                                          
        /* conservative mode (itr 3) eliminates the lowest_latency setting */            │          /* conservative mode (itr 3) eliminates the lowest_latency setting */           
        if (new_val < IGB_20K_ITR &&                                                     │          if (new_val < IGC_20K_ITR &&                                                    
            ((q_vector->rx.ring && adapter->rx_itr_setting == 3) ||                      │              ((q_vector->rx.ring && adapter->rx_itr_setting == 3) ||                     
             (!q_vector->rx.ring && adapter->tx_itr_setting == 3)))                      │              (!q_vector->rx.ring && adapter->tx_itr_setting == 3)))                      
                new_val = IGB_20K_ITR;                                                   │                  new_val = IGC_20K_ITR;                                                  
                                                                                         │                                                                                          
set_itr_val:                                                                             │  set_itr_val:                                                                            
        if (new_val != q_vector->itr_val) {                                              │          if (new_val != q_vector->itr_val) {                                             
                q_vector->itr_val = new_val;                                             │                  q_vector->itr_val = new_val;                                            
                q_vector->set_itr = 1;                                                   │                  q_vector->set_itr = 1;                                                  
        }                                                                                │          }                                                                               
clear_counts:                                                                            │  clear_counts:                                                                           
        q_vector->rx.total_bytes = 0;                                                    │          q_vector->rx.total_bytes = 0;                                                   
        q_vector->rx.total_packets = 0;                                                  │          q_vector->rx.total_packets = 0;                                                 
        q_vector->tx.total_bytes = 0;                                                    │          q_vector->tx.total_bytes = 0;                                                   
        q_vector->tx.total_packets = 0;                                                  │          q_vector->tx.total_packets = 0;                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/nic.c:76                                          │ linux/drivers/net/ethernet/sfc/nic.c:78                                                  
                                                                                         │                                                                                          
        struct ef4_channel *channel;                                                     │          struct efx_channel *channel;                                                    
        unsigned int n_irqs;                                                             │          unsigned int n_irqs;                                                            
        int rc;                                                                          │          int rc;                                                                         
                                                                                         │                                                                                          
        if (!EF4_INT_MODE_USE_MSI(efx)) {                                                │          if (!EFX_INT_MODE_USE_MSI(efx)) {                                               
                rc = request_irq(efx->legacy_irq,                                        │                  rc = request_irq(efx->legacy_irq,                                       
                                 efx->type->irq_handle_legacy, IRQF_SHARED,              │                                   efx->type->irq_handle_legacy, IRQF_SHARED,             
                                 efx->name, efx);                                        │                                   efx->name, efx);                                       
                if (rc) {                                                                │                  if (rc) {                                                               
                        netif_err(efx, drv, efx->net_dev,                                │                          netif_err(efx, drv, efx->net_dev,                               
                                  "failed to hook legacy IRQ %d\n",                      │                                    "failed to hook legacy IRQ %d\n",                     
                                  efx->pci_dev->irq);                                    │                                    efx->pci_dev->irq);                                   
                        goto fail1;                                                      │                          goto fail1;                                                     
                }                                                                        │                  }                                                                       
                                                                                         │                  efx->irqs_hooked = true;                                                
                return 0;                                                                │                  return 0;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
#ifdef CONFIG_RFS_ACCEL                                                                  │  #ifdef CONFIG_RFS_ACCEL                                                                 
        if (efx->interrupt_mode == EF4_INT_MODE_MSIX) {                                  │          if (efx->interrupt_mode == EFX_INT_MODE_MSIX) {                                 
                efx->net_dev->rx_cpu_rmap =                                              │                  efx->net_dev->rx_cpu_rmap =                                             
                        alloc_irq_cpu_rmap(efx->n_rx_channels);                          │                          alloc_irq_cpu_rmap(efx->n_rx_channels);                         
                if (!efx->net_dev->rx_cpu_rmap) {                                        │                  if (!efx->net_dev->rx_cpu_rmap) {                                       
                        rc = -ENOMEM;                                                    │                          rc = -ENOMEM;                                                   
                        goto fail1;                                                      │                          goto fail1;                                                     
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
#endif                                                                                   │  #endif                                                                                  
                                                                                         │                                                                                          
        /* Hook MSI or MSI-X interrupt */                                                │          /* Hook MSI or MSI-X interrupt */                                               
        n_irqs = 0;                                                                      │          n_irqs = 0;                                                                     
        ef4_for_each_channel(channel, efx) {                                             │          efx_for_each_channel(channel, efx) {                                            
                rc = request_irq(channel->irq, efx->type->irq_handle_msi,                │                  rc = request_irq(channel->irq, efx->type->irq_handle_msi,               
                                 IRQF_PROBE_SHARED, /* Not shared */                     │                                   IRQF_PROBE_SHARED, /* Not shared */                    
                                 efx->msi_context[channel->channel].name,                │                                   efx->msi_context[channel->channel].name,               
                                 &efx->msi_context[channel->channel]);                   │                                   &efx->msi_context[channel->channel]);                  
                if (rc) {                                                                │                  if (rc) {                                                               
                        netif_err(efx, drv, efx->net_dev,                                │                          netif_err(efx, drv, efx->net_dev,                               
                                  "failed to hook IRQ %d\n", channel->irq);              │                                    "failed to hook IRQ %d\n", channel->irq);             
                        goto fail2;                                                      │                          goto fail2;                                                     
                }                                                                        │                  }                                                                       
                ++n_irqs;                                                                │                  ++n_irqs;                                                               
                                                                                         │                                                                                          
#ifdef CONFIG_RFS_ACCEL                                                                  │  #ifdef CONFIG_RFS_ACCEL                                                                 
                if (efx->interrupt_mode == EF4_INT_MODE_MSIX &&                          │                  if (efx->interrupt_mode == EFX_INT_MODE_MSIX &&                         
                    channel->channel < efx->n_rx_channels) {                             │                      channel->channel < efx->n_rx_channels) {                            
                        rc = irq_cpu_rmap_add(efx->net_dev->rx_cpu_rmap,                 │                          rc = irq_cpu_rmap_add(efx->net_dev->rx_cpu_rmap,                
                                              channel->irq);                             │                                                channel->irq);                            
                        if (rc)                                                          │                          if (rc)                                                         
                                goto fail2;                                              │                                  goto fail2;                                             
                }                                                                        │                  }                                                                       
#endif                                                                                   │  #endif                                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          efx->irqs_hooked = true;                                                        
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
 fail2:                                                                                  │   fail2:                                                                                 
#ifdef CONFIG_RFS_ACCEL                                                                  │  #ifdef CONFIG_RFS_ACCEL                                                                 
        free_irq_cpu_rmap(efx->net_dev->rx_cpu_rmap);                                    │          free_irq_cpu_rmap(efx->net_dev->rx_cpu_rmap);                                   
        efx->net_dev->rx_cpu_rmap = NULL;                                                │          efx->net_dev->rx_cpu_rmap = NULL;                                               
#endif                                                                                   │  #endif                                                                                  
        ef4_for_each_channel(channel, efx) {                                             │          efx_for_each_channel(channel, efx) {                                            
                if (n_irqs-- == 0)                                                       │                  if (n_irqs-- == 0)                                                      
                        break;                                                           │                          break;                                                          
                free_irq(channel->irq, &efx->msi_context[channel->channel]);             │                  free_irq(channel->irq, &efx->msi_context[channel->channel]);            
        }                                                                                │          }                                                                               
 fail1:                                                                                  │   fail1:                                                                                 
        return rc;                                                                       │          return rc;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/ibm/emac/core.c:873                                          │ linux/drivers/net/ethernet/ibm/emac/core.c:801                                           
                                                                                         │                                                                                          
        struct emac_regs __iomem *p = dev->emacp;                                        │          struct emac_regs __iomem *p = dev->emacp;                                       
        u32 r = 0;                                                                       │          u32 r = 0;                                                                      
        int n;                                                                           │          int n, err = -ETIMEDOUT;                                                        
                                                                                         │                                                                                          
        mutex_lock(&dev->mdio_lock);                                                     │          mutex_lock(&dev->mdio_lock);                                                    
                                                                                         │                                                                                          
        DBG2(dev, "mdio_write(%02x,%02x,%04x)" NL, id, reg, val);                        │          DBG2(dev, "mdio_read(%02x,%02x)" NL, id, reg);                                  
                                                                                         │                                                                                          
        /* Enable proper MDIO port */                                                    │          /* Enable proper MDIO port */                                                   
        if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))                                    │          if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))                                   
                zmii_get_mdio(dev->zmii_dev, dev->zmii_port);                            │                  zmii_get_mdio(dev->zmii_dev, dev->zmii_port);                           
        if (emac_has_feature(dev, EMAC_FTR_HAS_RGMII))                                   │          if (emac_has_feature(dev, EMAC_FTR_HAS_RGMII))                                  
                rgmii_get_mdio(dev->rgmii_dev, dev->rgmii_port);                         │                  rgmii_get_mdio(dev->rgmii_dev, dev->rgmii_port);                        
                                                                                         │                                                                                          
        /* Wait for management interface to be idle */                                   │          /* Wait for management interface to become idle */                              
        n = 20;                                                                          │          n = 20;                                                                         
        while (!emac_phy_done(dev, in_be32(&p->stacr))) {                                │          while (!emac_phy_done(dev, in_be32(&p->stacr))) {                               
                udelay(1);                                                               │                  udelay(1);                                                              
                if (!--n) {                                                              │                  if (!--n) {                                                             
                        DBG2(dev, " -> timeout wait idle\n");                            │                          DBG2(dev, " -> timeout wait idle\n");                           
                        goto bail;                                                       │                          goto bail;                                                      
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Issue write command */                                                        │          /* Issue read command */                                                        
        if (emac_has_feature(dev, EMAC_FTR_EMAC4))                                       │          if (emac_has_feature(dev, EMAC_FTR_EMAC4))                                      
                r = EMAC4_STACR_BASE(dev->opb_bus_freq);                                 │                  r = EMAC4_STACR_BASE(dev->opb_bus_freq);                                
        else                                                                             │          else                                                                            
                r = EMAC_STACR_BASE(dev->opb_bus_freq);                                  │                  r = EMAC_STACR_BASE(dev->opb_bus_freq);                                 
        if (emac_has_feature(dev, EMAC_FTR_STACR_OC_INVERT))                             │          if (emac_has_feature(dev, EMAC_FTR_STACR_OC_INVERT))                            
                r |= EMAC_STACR_OC;                                                      │                  r |= EMAC_STACR_OC;                                                     
        if (emac_has_feature(dev, EMAC_FTR_HAS_NEW_STACR))                               │          if (emac_has_feature(dev, EMAC_FTR_HAS_NEW_STACR))                              
                r |= EMACX_STACR_STAC_WRITE;                                             │                  r |= EMACX_STACR_STAC_READ;                                             
        else                                                                             │          else                                                                            
                r |= EMAC_STACR_STAC_WRITE;                                              │                  r |= EMAC_STACR_STAC_READ;                                              
        r |= (reg & EMAC_STACR_PRA_MASK) |                                               │          r |= (reg & EMAC_STACR_PRA_MASK)                                                
                ((id & EMAC_STACR_PCDA_MASK) << EMAC_STACR_PCDA_SHIFT) |                 │                  | ((id & EMAC_STACR_PCDA_MASK) << EMAC_STACR_PCDA_SHIFT);               
                (val << EMAC_STACR_PHYD_SHIFT);                                          │                                                                                          
        out_be32(&p->stacr, r);                                                          │          out_be32(&p->stacr, r);                                                         
                                                                                         │                                                                                          
        /* Wait for write to complete */                                                 │          /* Wait for read to complete */                                                 
        n = 200;                                                                         │          n = 200;                                                                        
        while (!emac_phy_done(dev, in_be32(&p->stacr))) {                                │          while (!emac_phy_done(dev, (r = in_be32(&p->stacr)))) {                         
                udelay(1);                                                               │                  udelay(1);                                                              
                if (!--n) {                                                              │                  if (!--n) {                                                             
                        DBG2(dev, " -> timeout wait complete\n");                        │                          DBG2(dev, " -> timeout wait complete\n");                       
                        goto bail;                                                       │                          goto bail;                                                      
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          if (unlikely(r & EMAC_STACR_PHYE)) {                                            
                                                                                         │                  DBG(dev, "mdio_read(%02x, %02x) failed" NL, id, reg);                   
                                                                                         │                  err = -EREMOTEIO;                                                       
                                                                                         │                  goto bail;                                                              
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          r = ((r >> EMAC_STACR_PHYD_SHIFT) & EMAC_STACR_PHYD_MASK);                      
                                                                                         │                                                                                          
                                                                                         │          DBG2(dev, "mdio_read -> %04x" NL, r);                                           
                                                                                         │          err = 0;                                                                        
 bail:                                                                                   │   bail:                                                                                  
        if (emac_has_feature(dev, EMAC_FTR_HAS_RGMII))                                   │          if (emac_has_feature(dev, EMAC_FTR_HAS_RGMII))                                  
                rgmii_put_mdio(dev->rgmii_dev, dev->rgmii_port);                         │                  rgmii_put_mdio(dev->rgmii_dev, dev->rgmii_port);                        
        if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))                                    │          if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))                                   
                zmii_put_mdio(dev->zmii_dev, dev->zmii_port);                            │                  zmii_put_mdio(dev->zmii_dev, dev->zmii_port);                           
        mutex_unlock(&dev->mdio_lock);                                                   │          mutex_unlock(&dev->mdio_lock);                                                  
                                                                                         │                                                                                          
                                                                                         │          return err == 0 ? r : err;                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/synopsys/dwc-xlgmac-hw.c:2818                                │ linux/drivers/net/ethernet/synopsys/dwc-xlgmac-hw.c:2881                                 
                                                                                         │                                                                                          
        unsigned int dma_ch_ier;                                                         │          unsigned int dma_ch_ier;                                                        
                                                                                         │                                                                                          
        dma_ch_ier = readl(XLGMAC_DMA_REG(channel, DMA_CH_IER));                         │          dma_ch_ier = readl(XLGMAC_DMA_REG(channel, DMA_CH_IER));                        
                                                                                         │                                                                                          
        switch (int_id) {                                                                │          switch (int_id) {                                                               
        case XLGMAC_INT_DMA_CH_SR_TI:                                                    │          case XLGMAC_INT_DMA_CH_SR_TI:                                                   
                dma_ch_ier = XLGMAC_SET_REG_BITS(                                        │                  dma_ch_ier = XLGMAC_SET_REG_BITS(                                       
                                dma_ch_ier, DMA_CH_IER_TIE_POS,                          │                                  dma_ch_ier, DMA_CH_IER_TIE_POS,                         
                                DMA_CH_IER_TIE_LEN, 1);                                  │                                  DMA_CH_IER_TIE_LEN, 0);                                 
                break;                                                                   │                  break;                                                                  
        case XLGMAC_INT_DMA_CH_SR_TPS:                                                   │          case XLGMAC_INT_DMA_CH_SR_TPS:                                                  
                dma_ch_ier = XLGMAC_SET_REG_BITS(                                        │                  dma_ch_ier = XLGMAC_SET_REG_BITS(                                       
                                dma_ch_ier, DMA_CH_IER_TXSE_POS,                         │                                  dma_ch_ier, DMA_CH_IER_TXSE_POS,                        
                                DMA_CH_IER_TXSE_LEN, 1);                                 │                                  DMA_CH_IER_TXSE_LEN, 0);                                
                break;                                                                   │                  break;                                                                  
        case XLGMAC_INT_DMA_CH_SR_TBU:                                                   │          case XLGMAC_INT_DMA_CH_SR_TBU:                                                  
                dma_ch_ier = XLGMAC_SET_REG_BITS(                                        │                  dma_ch_ier = XLGMAC_SET_REG_BITS(                                       
                                dma_ch_ier, DMA_CH_IER_TBUE_POS,                         │                                  dma_ch_ier, DMA_CH_IER_TBUE_POS,                        
                                DMA_CH_IER_TBUE_LEN, 1);                                 │                                  DMA_CH_IER_TBUE_LEN, 0);                                
                break;                                                                   │                  break;                                                                  
        case XLGMAC_INT_DMA_CH_SR_RI:                                                    │          case XLGMAC_INT_DMA_CH_SR_RI:                                                   
                dma_ch_ier = XLGMAC_SET_REG_BITS(                                        │                  dma_ch_ier = XLGMAC_SET_REG_BITS(                                       
                                dma_ch_ier, DMA_CH_IER_RIE_POS,                          │                                  dma_ch_ier, DMA_CH_IER_RIE_POS,                         
                                DMA_CH_IER_RIE_LEN, 1);                                  │                                  DMA_CH_IER_RIE_LEN, 0);                                 
                break;                                                                   │                  break;                                                                  
        case XLGMAC_INT_DMA_CH_SR_RBU:                                                   │          case XLGMAC_INT_DMA_CH_SR_RBU:                                                  
                dma_ch_ier = XLGMAC_SET_REG_BITS(                                        │                  dma_ch_ier = XLGMAC_SET_REG_BITS(                                       
                                dma_ch_ier, DMA_CH_IER_RBUE_POS,                         │                                  dma_ch_ier, DMA_CH_IER_RBUE_POS,                        
                                DMA_CH_IER_RBUE_LEN, 1);                                 │                                  DMA_CH_IER_RBUE_LEN, 0);                                
                break;                                                                   │                  break;                                                                  
        case XLGMAC_INT_DMA_CH_SR_RPS:                                                   │          case XLGMAC_INT_DMA_CH_SR_RPS:                                                  
                dma_ch_ier = XLGMAC_SET_REG_BITS(                                        │                  dma_ch_ier = XLGMAC_SET_REG_BITS(                                       
                                dma_ch_ier, DMA_CH_IER_RSE_POS,                          │                                  dma_ch_ier, DMA_CH_IER_RSE_POS,                         
                                DMA_CH_IER_RSE_LEN, 1);                                  │                                  DMA_CH_IER_RSE_LEN, 0);                                 
                break;                                                                   │                  break;                                                                  
        case XLGMAC_INT_DMA_CH_SR_TI_RI:                                                 │          case XLGMAC_INT_DMA_CH_SR_TI_RI:                                                
                dma_ch_ier = XLGMAC_SET_REG_BITS(                                        │                  dma_ch_ier = XLGMAC_SET_REG_BITS(                                       
                                dma_ch_ier, DMA_CH_IER_TIE_POS,                          │                                  dma_ch_ier, DMA_CH_IER_TIE_POS,                         
                                DMA_CH_IER_TIE_LEN, 1);                                  │                                  DMA_CH_IER_TIE_LEN, 0);                                 
                dma_ch_ier = XLGMAC_SET_REG_BITS(                                        │                  dma_ch_ier = XLGMAC_SET_REG_BITS(                                       
                                dma_ch_ier, DMA_CH_IER_RIE_POS,                          │                                  dma_ch_ier, DMA_CH_IER_RIE_POS,                         
                                DMA_CH_IER_RIE_LEN, 1);                                  │                                  DMA_CH_IER_RIE_LEN, 0);                                 
                break;                                                                   │                  break;                                                                  
        case XLGMAC_INT_DMA_CH_SR_FBE:                                                   │          case XLGMAC_INT_DMA_CH_SR_FBE:                                                  
                dma_ch_ier = XLGMAC_SET_REG_BITS(                                        │                  dma_ch_ier = XLGMAC_SET_REG_BITS(                                       
                                dma_ch_ier, DMA_CH_IER_FBEE_POS,                         │                                  dma_ch_ier, DMA_CH_IER_FBEE_POS,                        
                                DMA_CH_IER_FBEE_LEN, 1);                                 │                                  DMA_CH_IER_FBEE_LEN, 0);                                
                break;                                                                   │                  break;                                                                  
        case XLGMAC_INT_DMA_ALL:                                                         │          case XLGMAC_INT_DMA_ALL:                                                        
                dma_ch_ier |= channel->saved_ier;                                        │                  channel->saved_ier = dma_ch_ier & XLGMAC_DMA_INTERRUPT_MASK;            
                                                                                         │                  dma_ch_ier &= ~XLGMAC_DMA_INTERRUPT_MASK;                               
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                return -1;                                                               │                  return -1;                                                              
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        writel(dma_ch_ier, XLGMAC_DMA_REG(channel, DMA_CH_IER));                         │          writel(dma_ch_ier, XLGMAC_DMA_REG(channel, DMA_CH_IER));                        
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/sunlance.c:504                                           │ linux/drivers/net/ethernet/amd/sunlance.c:673                                            
                                                                                         │                                                                                          
        struct lance_private *lp = netdev_priv(dev);                                     │          struct lance_private *lp = netdev_priv(dev);                                    
        struct lance_init_block *ib = lp->init_block_mem;                                │          struct lance_init_block __iomem *ib = lp->init_block_iomem;                     
        struct lance_rx_desc *rd;                                                        │          struct lance_rx_desc __iomem *rd;                                               
        u8 bits;                                                                         │          unsigned char bits;                                                             
        int len, entry = lp->rx_new;                                                     │          int len, entry;                                                                 
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
                                                                                         │                                                                                          
                                                                                         │          entry = lp->rx_new;                                                             
        for (rd = &ib->brx_ring [entry];                                                 │          for (rd = &ib->brx_ring [entry];                                                
             !((bits = rd->rmd1_bits) & LE_R1_OWN);                                      │               !((bits = sbus_readb(&rd->rmd1_bits)) & LE_R1_OWN);                        
             rd = &ib->brx_ring [entry]) {                                               │               rd = &ib->brx_ring [entry]) {                                              
                                                                                         │                                                                                          
                /* We got an incomplete frame? */                                        │                  /* We got an incomplete frame? */                                       
                if ((bits & LE_R1_POK) != LE_R1_POK) {                                   │                  if ((bits & LE_R1_POK) != LE_R1_POK) {                                  
                        dev->stats.rx_over_errors++;                                     │                          dev->stats.rx_over_errors++;                                    
                        dev->stats.rx_errors++;                                          │                          dev->stats.rx_errors++;                                         
                } else if (bits & LE_R1_ERR) {                                           │                  } else if (bits & LE_R1_ERR) {                                          
                        /* Count only the end frame as a rx error,                       │                          /* Count only the end frame as a rx error,                      
                         * not the beginning                                             │                           * not the beginning                                            
                         */                                                              │                           */                                                             
                        if (bits & LE_R1_BUF) dev->stats.rx_fifo_errors++;               │                          if (bits & LE_R1_BUF) dev->stats.rx_fifo_errors++;              
                        if (bits & LE_R1_CRC) dev->stats.rx_crc_errors++;                │                          if (bits & LE_R1_CRC) dev->stats.rx_crc_errors++;               
                        if (bits & LE_R1_OFL) dev->stats.rx_over_errors++;               │                          if (bits & LE_R1_OFL) dev->stats.rx_over_errors++;              
                        if (bits & LE_R1_FRA) dev->stats.rx_frame_errors++;              │                          if (bits & LE_R1_FRA) dev->stats.rx_frame_errors++;             
                        if (bits & LE_R1_EOP) dev->stats.rx_errors++;                    │                          if (bits & LE_R1_EOP) dev->stats.rx_errors++;                   
                } else {                                                                 │                  } else {                                                                
                        len = (rd->mblength & 0xfff) - 4;                                │                          len = (sbus_readw(&rd->mblength) & 0xfff) - 4;                  
                        skb = netdev_alloc_skb(dev, len + 2);                            │                          skb = netdev_alloc_skb(dev, len + 2);                           
                                                                                         │                                                                                          
                        if (skb == NULL) {                                               │                          if (skb == NULL) {                                              
                                dev->stats.rx_dropped++;                                 │                                  dev->stats.rx_dropped++;                                
                                rd->mblength = 0;                                        │                                  sbus_writew(0, &rd->mblength);                          
                                rd->rmd1_bits = LE_R1_OWN;                               │                                  sbus_writeb(LE_R1_OWN, &rd->rmd1_bits);                 
                                lp->rx_new = RX_NEXT(entry);                             │                                  lp->rx_new = RX_NEXT(entry);                            
                                return;                                                  │                                  return;                                                 
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        dev->stats.rx_bytes += len;                                      │                          dev->stats.rx_bytes += len;                                     
                                                                                         │                                                                                          
                        skb_reserve(skb, 2);            /* 16 byte align */              │                          skb_reserve (skb, 2);           /* 16 byte align */             
                        skb_put(skb, len);              /* make room */                  │                          skb_put(skb, len);              /* make room */                 
                        skb_copy_to_linear_data(skb,                                     │                          lance_piocopy_to_skb(skb, &(ib->rx_buf[entry][0]), len);        
                                         (unsigned char *)&(ib->rx_buf [entry][0]),      │                                                                                          
                                         len);                                           │                                                                                          
                        skb->protocol = eth_type_trans(skb, dev);                        │                          skb->protocol = eth_type_trans(skb, dev);                       
                        netif_rx(skb);                                                   │                          netif_rx(skb);                                                  
                        dev->stats.rx_packets++;                                         │                          dev->stats.rx_packets++;                                        
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* Return the packet to the pool */                                      │                  /* Return the packet to the pool */                                     
                rd->mblength = 0;                                                        │                  sbus_writew(0, &rd->mblength);                                          
                rd->rmd1_bits = LE_R1_OWN;                                               │                  sbus_writeb(LE_R1_OWN, &rd->rmd1_bits);                                 
                entry = RX_NEXT(entry);                                                  │                  entry = RX_NEXT(entry);                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        lp->rx_new = entry;                                                              │          lp->rx_new = entry;                                                             
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/ti/cpsw_new.c:916                                            │ linux/drivers/net/ethernet/ti/cpsw.c:900                                                 
                                                                                         │                                                                                          
        struct cpsw_priv *priv = netdev_priv(ndev);                                      │          struct cpsw_priv *priv = netdev_priv(ndev);                                     
        struct cpsw_common *cpsw = priv->cpsw;                                           │          struct cpsw_common *cpsw = priv->cpsw;                                          
        struct cpts *cpts = cpsw->cpts;                                                  │          struct cpts *cpts = cpsw->cpts;                                                 
        struct netdev_queue *txq;                                                        │          struct netdev_queue *txq;                                                       
        struct cpdma_chan *txch;                                                         │          struct cpdma_chan *txch;                                                        
        int ret, q_idx;                                                                  │          int ret, q_idx;                                                                 
                                                                                         │                                                                                          
        if (skb_put_padto(skb, READ_ONCE(priv->tx_packet_min))) {                        │          if (skb_put_padto(skb, CPSW_MIN_PACKET_SIZE)) {                                 
                cpsw_err(priv, tx_err, "packet pad failed\n");                           │                  cpsw_err(priv, tx_err, "packet pad failed\n");                          
                ndev->stats.tx_dropped++;                                                │                  ndev->stats.tx_dropped++;                                               
                return NET_XMIT_DROP;                                                    │                  return NET_XMIT_DROP;                                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP &&                               │          if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP &&                              
            priv->tx_ts_enabled && cpts_can_timestamp(cpts, skb))                        │              priv->tx_ts_enabled && cpts_can_timestamp(cpts, skb))                       
                skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;                          │                  skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;                         
                                                                                         │                                                                                          
        q_idx = skb_get_queue_mapping(skb);                                              │          q_idx = skb_get_queue_mapping(skb);                                             
        if (q_idx >= cpsw->tx_ch_num)                                                    │          if (q_idx >= cpsw->tx_ch_num)                                                   
                q_idx = q_idx % cpsw->tx_ch_num;                                         │                  q_idx = q_idx % cpsw->tx_ch_num;                                        
                                                                                         │                                                                                          
        txch = cpsw->txv[q_idx].ch;                                                      │          txch = cpsw->txv[q_idx].ch;                                                     
        txq = netdev_get_tx_queue(ndev, q_idx);                                          │          txq = netdev_get_tx_queue(ndev, q_idx);                                         
        skb_tx_timestamp(skb);                                                           │          skb_tx_timestamp(skb);                                                          
        ret = cpdma_chan_submit(txch, skb, skb->data, skb->len,                          │          ret = cpdma_chan_submit(txch, skb, skb->data, skb->len,                         
                                priv->emac_port);                                        │                                  priv->emac_port + cpsw->data.dual_emac);                
        if (unlikely(ret != 0)) {                                                        │          if (unlikely(ret != 0)) {                                                       
                cpsw_err(priv, tx_err, "desc submit failed\n");                          │                  cpsw_err(priv, tx_err, "desc submit failed\n");                         
                goto fail;                                                               │                  goto fail;                                                              
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* If there is no more tx desc left free then we need to                         │          /* If there is no more tx desc left free then we need to                        
         * tell the kernel to stop sending us tx frames.                                 │           * tell the kernel to stop sending us tx frames.                                
         */                                                                              │           */                                                                             
        if (unlikely(!cpdma_check_free_tx_desc(txch))) {                                 │          if (unlikely(!cpdma_check_free_tx_desc(txch))) {                                
                netif_tx_stop_queue(txq);                                                │                  netif_tx_stop_queue(txq);                                               
                                                                                         │                                                                                          
                /* Barrier, so that stop_queue visible to other cpus */                  │                  /* Barrier, so that stop_queue visible to other cpus */                 
                smp_mb__after_atomic();                                                  │                  smp_mb__after_atomic();                                                 
                                                                                         │                                                                                          
                if (cpdma_check_free_tx_desc(txch))                                      │                  if (cpdma_check_free_tx_desc(txch))                                     
                        netif_tx_wake_queue(txq);                                        │                          netif_tx_wake_queue(txq);                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return NETDEV_TX_OK;                                                             │          return NETDEV_TX_OK;                                                            
fail:                                                                                    │  fail:                                                                                   
        ndev->stats.tx_dropped++;                                                        │          ndev->stats.tx_dropped++;                                                       
        netif_tx_stop_queue(txq);                                                        │          netif_tx_stop_queue(txq);                                                       
                                                                                         │                                                                                          
        /* Barrier, so that stop_queue visible to other cpus */                          │          /* Barrier, so that stop_queue visible to other cpus */                         
        smp_mb__after_atomic();                                                          │          smp_mb__after_atomic();                                                         
                                                                                         │                                                                                          
        if (cpdma_check_free_tx_desc(txch))                                              │          if (cpdma_check_free_tx_desc(txch))                                             
                netif_tx_wake_queue(txq);                                                │                  netif_tx_wake_queue(txq);                                               
                                                                                         │                                                                                          
        return NETDEV_TX_BUSY;                                                           │          return NETDEV_TX_BUSY;                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:1881                                      │ linux/drivers/net/ethernet/intel/igb/e1000_phy.c:1911                                    
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        s32 ret_val;                                                                     │          s32  ret_val;                                                                   
        u16 phy_data;                                                                    │          u16 phy_data;                                                                   
        bool link;                                                                       │          bool link;                                                                      
                                                                                         │                                                                                          
        if (phy->media_type != e1000_media_type_copper) {                                │          if (phy->media_type != e1000_media_type_copper) {                               
                e_dbg("Phy info is only valid for copper media\n");                      │                  hw_dbg("Phy info is only valid for copper media\n");                    
                return -E1000_ERR_CONFIG;                                                │                  ret_val = -E1000_ERR_CONFIG;                                            
                                                                                         │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret_val = e1000e_phy_has_link_generic(hw, 1, 0, &link);                          │          ret_val = igb_phy_has_link(hw, 1, 0, &link);                                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        if (!link) {                                                                     │          if (!link) {                                                                    
                e_dbg("Phy info is only valid if link is up\n");                         │                  hw_dbg("Phy info is only valid if link is up\n");                       
                return -E1000_ERR_CONFIG;                                                │                  ret_val = -E1000_ERR_CONFIG;                                            
                                                                                         │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);                       │          ret_val = phy->ops.read_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        phy->polarity_correction = !!(phy_data &                                         │          phy->polarity_correction = (phy_data & M88E1000_PSCR_POLARITY_REVERSAL)         
                                      M88E1000_PSCR_POLARITY_REVERSAL);                  │                                     ? true : false;                                      
                                                                                         │                                                                                          
        ret_val = e1000_check_polarity_m88(hw);                                          │          ret_val = igb_check_polarity_m88(hw);                                           
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_STATUS, &phy_data);                     │          ret_val = phy->ops.read_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data);           
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        phy->is_mdix = !!(phy_data & M88E1000_PSSR_MDIX);                                │          phy->is_mdix = (phy_data & M88E1000_PSSR_MDIX) ? true : false;                  
                                                                                         │                                                                                          
        if ((phy_data & M88E1000_PSSR_SPEED) == M88E1000_PSSR_1000MBS) {                 │          if ((phy_data & M88E1000_PSSR_SPEED) == M88E1000_PSSR_1000MBS) {                
                ret_val = hw->phy.ops.get_cable_length(hw);                              │                  ret_val = phy->ops.get_cable_length(hw);                                
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          goto out;                                                       
                                                                                         │                                                                                          
                ret_val = e1e_rphy(hw, MII_STAT1000, &phy_data);                         │                  ret_val = phy->ops.read_reg(hw, PHY_1000T_STATUS, &phy_data);           
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          goto out;                                                       
                                                                                         │                                                                                          
                phy->local_rx = (phy_data & LPA_1000LOCALRXOK)                           │                  phy->local_rx = (phy_data & SR_1000T_LOCAL_RX_STATUS)                   
                    ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;           │                                  ? e1000_1000t_rx_status_ok                              
                                                                                         │                                  : e1000_1000t_rx_status_not_ok;                         
                phy->remote_rx = (phy_data & LPA_1000REMRXOK)                            │                                                                                          
                    ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;           │                  phy->remote_rx = (phy_data & SR_1000T_REMOTE_RX_STATUS)                 
                                                                                         │                                   ? e1000_1000t_rx_status_ok                             
                                                                                         │                                   : e1000_1000t_rx_status_not_ok;                        
        } else {                                                                         │          } else {                                                                        
                /* Set values to "undefined" */                                          │                  /* Set values to "undefined" */                                         
                phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                        │                  phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                       
                phy->local_rx = e1000_1000t_rx_status_undefined;                         │                  phy->local_rx = e1000_1000t_rx_status_undefined;                        
                phy->remote_rx = e1000_1000t_rx_status_undefined;                        │                  phy->remote_rx = e1000_1000t_rx_status_undefined;                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │  out:                                                                                    
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c:223                             │ linux/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c:291                              
                                                                                         │                                                                                          
        struct net_device *ndev = bus->priv;                                             │          struct net_device *ndev = bus->priv;                                            
        struct stmmac_priv *priv = netdev_priv(ndev);                                    │          struct stmmac_priv *priv = netdev_priv(ndev);                                   
        unsigned int mii_address = priv->hw->mii.addr;                                   │          unsigned int mii_address = priv->hw->mii.addr;                                  
        unsigned int mii_data = priv->hw->mii.data;                                      │          unsigned int mii_data = priv->hw->mii.data;                                     
                                                                                         │          int ret, data = phydata;                                                        
        u32 value = MII_BUSY;                                                            │          u32 value = MII_BUSY;                                                           
        int data = 0;                                                                    │                                                                                          
        u32 v;                                                                           │          u32 v;                                                                          
                                                                                         │                                                                                          
        data = pm_runtime_get_sync(priv->device);                                        │          ret = pm_runtime_get_sync(priv->device);                                        
        if (data < 0) {                                                                  │          if (ret < 0) {                                                                  
                pm_runtime_put_noidle(priv->device);                                     │                  pm_runtime_put_noidle(priv->device);                                    
                return data;                                                             │                  return ret;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        value |= (phyaddr << priv->hw->mii.addr_shift)                                   │          value |= (phyaddr << priv->hw->mii.addr_shift)                                  
                & priv->hw->mii.addr_mask;                                               │                  & priv->hw->mii.addr_mask;                                              
        value |= (phyreg << priv->hw->mii.reg_shift) & priv->hw->mii.reg_mask;           │          value |= (phyreg << priv->hw->mii.reg_shift) & priv->hw->mii.reg_mask;          
                                                                                         │                                                                                          
        value |= (priv->clk_csr << priv->hw->mii.clk_csr_shift)                          │          value |= (priv->clk_csr << priv->hw->mii.clk_csr_shift)                         
                & priv->hw->mii.clk_csr_mask;                                            │                  & priv->hw->mii.clk_csr_mask;                                           
        if (priv->plat->has_gmac4) {                                                     │          if (priv->plat->has_gmac4) {                                                    
                value |= MII_GMAC4_READ;                                                 │                  value |= MII_GMAC4_WRITE;                                               
                if (phyreg & MII_ADDR_C45) {                                             │                  if (phyreg & MII_ADDR_C45) {                                            
                        value |= MII_GMAC4_C45E;                                         │                          value |= MII_GMAC4_C45E;                                        
                        value &= ~priv->hw->mii.reg_mask;                                │                          value &= ~priv->hw->mii.reg_mask;                               
                        value |= ((phyreg >> MII_DEVADDR_C45_SHIFT) <<                   │                          value |= ((phyreg >> MII_DEVADDR_C45_SHIFT) <<                  
                               priv->hw->mii.reg_shift) &                                │                                 priv->hw->mii.reg_shift) &                               
                               priv->hw->mii.reg_mask;                                   │                                 priv->hw->mii.reg_mask;                                  
                                                                                         │                                                                                          
                        data |= (phyreg & MII_REGADDR_C45_MASK) <<                       │                          data |= (phyreg & MII_REGADDR_C45_MASK) <<                      
                                MII_GMAC4_REG_ADDR_SHIFT;                                │                                  MII_GMAC4_REG_ADDR_SHIFT;                               
                }                                                                        │                  }                                                                       
                                                                                         │          } else {                                                                        
                                                                                         │                  value |= MII_WRITE;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          /* Wait until any existing MII operation is complete */                         
        if (readl_poll_timeout(priv->ioaddr + mii_address, v, !(v & MII_BUSY),           │          if (readl_poll_timeout(priv->ioaddr + mii_address, v, !(v & MII_BUSY),          
                               100, 10000)) {                                            │                                 100, 10000)) {                                           
                data = -EBUSY;                                                           │                  ret = -EBUSY;                                                           
                goto err_disable_clks;                                                   │                  goto err_disable_clks;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          /* Set the MII address register to write */                                     
        writel(data, priv->ioaddr + mii_data);                                           │          writel(data, priv->ioaddr + mii_data);                                          
        writel(value, priv->ioaddr + mii_address);                                       │          writel(value, priv->ioaddr + mii_address);                                      
                                                                                         │                                                                                          
        if (readl_poll_timeout(priv->ioaddr + mii_address, v, !(v & MII_BUSY),           │          /* Wait until any existing MII operation is complete */                         
                               100, 10000)) {                                            │          ret = readl_poll_timeout(priv->ioaddr + mii_address, v, !(v & MII_BUSY),        
                data = -EBUSY;                                                           │                                   100, 10000);                                           
                goto err_disable_clks;                                                   │                                                                                          
        }                                                                                │                                                                                          
                                                                                         │                                                                                          
        /* Read the data from the MII data register */                                   │                                                                                          
        data = (int)readl(priv->ioaddr + mii_data) & MII_DATA_MASK;                      │                                                                                          
                                                                                         │                                                                                          
err_disable_clks:                                                                        │  err_disable_clks:                                                                       
        pm_runtime_put(priv->device);                                                    │          pm_runtime_put(priv->device);                                                   
                                                                                         │                                                                                          
        return data;                                                                     │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3603                               │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3639                                
                                                                                         │                                                                                          
        .kind                           = mlxsw_sp1_driver_name,                         │          .kind                           = mlxsw_sp2_driver_name,                        
        .priv_size                      = sizeof(struct mlxsw_sp),                       │          .priv_size                      = sizeof(struct mlxsw_sp),                      
        .fw_req_rev                     = &mlxsw_sp1_fw_rev,                             │          .fw_req_rev                     = &mlxsw_sp2_fw_rev,                            
        .fw_filename                    = MLXSW_SP1_FW_FILENAME,                         │          .fw_filename                    = MLXSW_SP2_FW_FILENAME,                        
        .init                           = mlxsw_sp1_init,                                │          .init                           = mlxsw_sp2_init,                               
        .fini                           = mlxsw_sp_fini,                                 │          .fini                           = mlxsw_sp_fini,                                
        .port_split                     = mlxsw_sp_port_split,                           │          .port_split                     = mlxsw_sp_port_split,                          
        .port_unsplit                   = mlxsw_sp_port_unsplit,                         │          .port_unsplit                   = mlxsw_sp_port_unsplit,                        
        .sb_pool_get                    = mlxsw_sp_sb_pool_get,                          │          .sb_pool_get                    = mlxsw_sp_sb_pool_get,                         
        .sb_pool_set                    = mlxsw_sp_sb_pool_set,                          │          .sb_pool_set                    = mlxsw_sp_sb_pool_set,                         
        .sb_port_pool_get               = mlxsw_sp_sb_port_pool_get,                     │          .sb_port_pool_get               = mlxsw_sp_sb_port_pool_get,                    
        .sb_port_pool_set               = mlxsw_sp_sb_port_pool_set,                     │          .sb_port_pool_set               = mlxsw_sp_sb_port_pool_set,                    
        .sb_tc_pool_bind_get            = mlxsw_sp_sb_tc_pool_bind_get,                  │          .sb_tc_pool_bind_get            = mlxsw_sp_sb_tc_pool_bind_get,                 
        .sb_tc_pool_bind_set            = mlxsw_sp_sb_tc_pool_bind_set,                  │          .sb_tc_pool_bind_set            = mlxsw_sp_sb_tc_pool_bind_set,                 
        .sb_occ_snapshot                = mlxsw_sp_sb_occ_snapshot,                      │          .sb_occ_snapshot                = mlxsw_sp_sb_occ_snapshot,                     
        .sb_occ_max_clear               = mlxsw_sp_sb_occ_max_clear,                     │          .sb_occ_max_clear               = mlxsw_sp_sb_occ_max_clear,                    
        .sb_occ_port_pool_get           = mlxsw_sp_sb_occ_port_pool_get,                 │          .sb_occ_port_pool_get           = mlxsw_sp_sb_occ_port_pool_get,                
        .sb_occ_tc_port_bind_get        = mlxsw_sp_sb_occ_tc_port_bind_get,              │          .sb_occ_tc_port_bind_get        = mlxsw_sp_sb_occ_tc_port_bind_get,             
        .trap_init                      = mlxsw_sp_trap_init,                            │          .trap_init                      = mlxsw_sp_trap_init,                           
        .trap_fini                      = mlxsw_sp_trap_fini,                            │          .trap_fini                      = mlxsw_sp_trap_fini,                           
        .trap_action_set                = mlxsw_sp_trap_action_set,                      │          .trap_action_set                = mlxsw_sp_trap_action_set,                     
        .trap_group_init                = mlxsw_sp_trap_group_init,                      │          .trap_group_init                = mlxsw_sp_trap_group_init,                     
        .trap_group_set                 = mlxsw_sp_trap_group_set,                       │          .trap_group_set                 = mlxsw_sp_trap_group_set,                      
        .trap_policer_init              = mlxsw_sp_trap_policer_init,                    │          .trap_policer_init              = mlxsw_sp_trap_policer_init,                   
        .trap_policer_fini              = mlxsw_sp_trap_policer_fini,                    │          .trap_policer_fini              = mlxsw_sp_trap_policer_fini,                   
        .trap_policer_set               = mlxsw_sp_trap_policer_set,                     │          .trap_policer_set               = mlxsw_sp_trap_policer_set,                    
        .trap_policer_counter_get       = mlxsw_sp_trap_policer_counter_get,             │          .trap_policer_counter_get       = mlxsw_sp_trap_policer_counter_get,            
        .txhdr_construct                = mlxsw_sp_txhdr_construct,                      │          .txhdr_construct                = mlxsw_sp_txhdr_construct,                     
        .resources_register             = mlxsw_sp1_resources_register,                  │          .resources_register             = mlxsw_sp2_resources_register,                 
        .kvd_sizes_get                  = mlxsw_sp_kvd_sizes_get,                        │          .params_register                = mlxsw_sp2_params_register,                    
                                                                                         │          .params_unregister              = mlxsw_sp2_params_unregister,                  
        .ptp_transmitted                = mlxsw_sp_ptp_transmitted,                      │          .ptp_transmitted                = mlxsw_sp_ptp_transmitted,                     
        .txhdr_len                      = MLXSW_TXHDR_LEN,                               │          .txhdr_len                      = MLXSW_TXHDR_LEN,                              
        .profile                        = &mlxsw_sp1_config_profile,                     │          .profile                        = &mlxsw_sp2_config_profile,                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3603                               │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3676                                
                                                                                         │                                                                                          
        .kind                           = mlxsw_sp1_driver_name,                         │          .kind                           = mlxsw_sp3_driver_name,                        
        .priv_size                      = sizeof(struct mlxsw_sp),                       │          .priv_size                      = sizeof(struct mlxsw_sp),                      
        .fw_req_rev                     = &mlxsw_sp1_fw_rev,                             │          .fw_req_rev                     = &mlxsw_sp3_fw_rev,                            
        .fw_filename                    = MLXSW_SP1_FW_FILENAME,                         │          .fw_filename                    = MLXSW_SP3_FW_FILENAME,                        
        .init                           = mlxsw_sp1_init,                                │          .init                           = mlxsw_sp3_init,                               
        .fini                           = mlxsw_sp_fini,                                 │          .fini                           = mlxsw_sp_fini,                                
        .port_split                     = mlxsw_sp_port_split,                           │          .port_split                     = mlxsw_sp_port_split,                          
        .port_unsplit                   = mlxsw_sp_port_unsplit,                         │          .port_unsplit                   = mlxsw_sp_port_unsplit,                        
        .sb_pool_get                    = mlxsw_sp_sb_pool_get,                          │          .sb_pool_get                    = mlxsw_sp_sb_pool_get,                         
        .sb_pool_set                    = mlxsw_sp_sb_pool_set,                          │          .sb_pool_set                    = mlxsw_sp_sb_pool_set,                         
        .sb_port_pool_get               = mlxsw_sp_sb_port_pool_get,                     │          .sb_port_pool_get               = mlxsw_sp_sb_port_pool_get,                    
        .sb_port_pool_set               = mlxsw_sp_sb_port_pool_set,                     │          .sb_port_pool_set               = mlxsw_sp_sb_port_pool_set,                    
        .sb_tc_pool_bind_get            = mlxsw_sp_sb_tc_pool_bind_get,                  │          .sb_tc_pool_bind_get            = mlxsw_sp_sb_tc_pool_bind_get,                 
        .sb_tc_pool_bind_set            = mlxsw_sp_sb_tc_pool_bind_set,                  │          .sb_tc_pool_bind_set            = mlxsw_sp_sb_tc_pool_bind_set,                 
        .sb_occ_snapshot                = mlxsw_sp_sb_occ_snapshot,                      │          .sb_occ_snapshot                = mlxsw_sp_sb_occ_snapshot,                     
        .sb_occ_max_clear               = mlxsw_sp_sb_occ_max_clear,                     │          .sb_occ_max_clear               = mlxsw_sp_sb_occ_max_clear,                    
        .sb_occ_port_pool_get           = mlxsw_sp_sb_occ_port_pool_get,                 │          .sb_occ_port_pool_get           = mlxsw_sp_sb_occ_port_pool_get,                
        .sb_occ_tc_port_bind_get        = mlxsw_sp_sb_occ_tc_port_bind_get,              │          .sb_occ_tc_port_bind_get        = mlxsw_sp_sb_occ_tc_port_bind_get,             
        .trap_init                      = mlxsw_sp_trap_init,                            │          .trap_init                      = mlxsw_sp_trap_init,                           
        .trap_fini                      = mlxsw_sp_trap_fini,                            │          .trap_fini                      = mlxsw_sp_trap_fini,                           
        .trap_action_set                = mlxsw_sp_trap_action_set,                      │          .trap_action_set                = mlxsw_sp_trap_action_set,                     
        .trap_group_init                = mlxsw_sp_trap_group_init,                      │          .trap_group_init                = mlxsw_sp_trap_group_init,                     
        .trap_group_set                 = mlxsw_sp_trap_group_set,                       │          .trap_group_set                 = mlxsw_sp_trap_group_set,                      
        .trap_policer_init              = mlxsw_sp_trap_policer_init,                    │          .trap_policer_init              = mlxsw_sp_trap_policer_init,                   
        .trap_policer_fini              = mlxsw_sp_trap_policer_fini,                    │          .trap_policer_fini              = mlxsw_sp_trap_policer_fini,                   
        .trap_policer_set               = mlxsw_sp_trap_policer_set,                     │          .trap_policer_set               = mlxsw_sp_trap_policer_set,                    
        .trap_policer_counter_get       = mlxsw_sp_trap_policer_counter_get,             │          .trap_policer_counter_get       = mlxsw_sp_trap_policer_counter_get,            
        .txhdr_construct                = mlxsw_sp_txhdr_construct,                      │          .txhdr_construct                = mlxsw_sp_txhdr_construct,                     
        .resources_register             = mlxsw_sp1_resources_register,                  │          .resources_register             = mlxsw_sp2_resources_register,                 
        .kvd_sizes_get                  = mlxsw_sp_kvd_sizes_get,                        │          .params_register                = mlxsw_sp2_params_register,                    
                                                                                         │          .params_unregister              = mlxsw_sp2_params_unregister,                  
        .ptp_transmitted                = mlxsw_sp_ptp_transmitted,                      │          .ptp_transmitted                = mlxsw_sp_ptp_transmitted,                     
        .txhdr_len                      = MLXSW_TXHDR_LEN,                               │          .txhdr_len                      = MLXSW_TXHDR_LEN,                              
        .profile                        = &mlxsw_sp1_config_profile,                     │          .profile                        = &mlxsw_sp2_config_profile,                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8594                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8682                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define YSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define YSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define YSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                          │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8594                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8638                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define YSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define YSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define YSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                          │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/i40e/i40e_common.c:4901                                │ linux/drivers/net/ethernet/intel/i40e/i40e_common.c:4827                                 
                                                                                         │                                                                                          
        i40e_status status = I40E_ERR_TIMEOUT;                                           │          i40e_status status = I40E_ERR_TIMEOUT;                                          
        u32 command = 0;                                                                 │          u32 command = 0;                                                                
        u16 retry = 1000;                                                                │          u16 retry = 1000;                                                               
        u8 port_num = hw->func_caps.mdio_port_num;                                       │          u8 port_num = hw->func_caps.mdio_port_num;                                      
                                                                                         │                                                                                          
        command = (reg << I40E_GLGEN_MSCA_MDIADD_SHIFT) |                                │          command = (reg << I40E_GLGEN_MSCA_MDIADD_SHIFT) |                               
                  (page << I40E_GLGEN_MSCA_DEVADD_SHIFT) |                               │                    (page << I40E_GLGEN_MSCA_DEVADD_SHIFT) |                              
                  (phy_addr << I40E_GLGEN_MSCA_PHYADD_SHIFT) |                           │                    (phy_addr << I40E_GLGEN_MSCA_PHYADD_SHIFT) |                          
                  (I40E_MDIO_CLAUSE45_OPCODE_ADDRESS_MASK) |                             │                    (I40E_MDIO_CLAUSE45_OPCODE_ADDRESS_MASK) |                            
                  (I40E_MDIO_CLAUSE45_STCODE_MASK) |                                     │                    (I40E_MDIO_CLAUSE45_STCODE_MASK) |                                    
                  (I40E_GLGEN_MSCA_MDICMD_MASK) |                                        │                    (I40E_GLGEN_MSCA_MDICMD_MASK) |                                       
                  (I40E_GLGEN_MSCA_MDIINPROGEN_MASK);                                    │                    (I40E_GLGEN_MSCA_MDIINPROGEN_MASK);                                   
        wr32(hw, I40E_GLGEN_MSCA(port_num), command);                                    │          wr32(hw, I40E_GLGEN_MSCA(port_num), command);                                   
        do {                                                                             │          do {                                                                            
                command = rd32(hw, I40E_GLGEN_MSCA(port_num));                           │                  command = rd32(hw, I40E_GLGEN_MSCA(port_num));                          
                if (!(command & I40E_GLGEN_MSCA_MDICMD_MASK)) {                          │                  if (!(command & I40E_GLGEN_MSCA_MDICMD_MASK)) {                         
                        status = 0;                                                      │                          status = 0;                                                     
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                usleep_range(10, 20);                                                    │                  usleep_range(10, 20);                                                   
                retry--;                                                                 │                  retry--;                                                                
        } while (retry);                                                                 │          } while (retry);                                                                
                                                                                         │                                                                                          
        if (status) {                                                                    │          if (status) {                                                                   
                i40e_debug(hw, I40E_DEBUG_PHY,                                           │                  i40e_debug(hw, I40E_DEBUG_PHY,                                          
                           "PHY: Can't write command to external PHY.\n");               │                             "PHY: Can't write command to external PHY.\n");              
                goto phy_write_end;                                                      │                  goto phy_read_end;                                                      
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        command = value << I40E_GLGEN_MSRWD_MDIWRDATA_SHIFT;                             │                                                                                          
        wr32(hw, I40E_GLGEN_MSRWD(port_num), command);                                   │                                                                                          
                                                                                         │                                                                                          
        command = (page << I40E_GLGEN_MSCA_DEVADD_SHIFT) |                               │          command = (page << I40E_GLGEN_MSCA_DEVADD_SHIFT) |                              
                  (phy_addr << I40E_GLGEN_MSCA_PHYADD_SHIFT) |                           │                    (phy_addr << I40E_GLGEN_MSCA_PHYADD_SHIFT) |                          
                  (I40E_MDIO_CLAUSE45_OPCODE_WRITE_MASK) |                               │                    (I40E_MDIO_CLAUSE45_OPCODE_READ_MASK) |                               
                  (I40E_MDIO_CLAUSE45_STCODE_MASK) |                                     │                    (I40E_MDIO_CLAUSE45_STCODE_MASK) |                                    
                  (I40E_GLGEN_MSCA_MDICMD_MASK) |                                        │                    (I40E_GLGEN_MSCA_MDICMD_MASK) |                                       
                  (I40E_GLGEN_MSCA_MDIINPROGEN_MASK);                                    │                    (I40E_GLGEN_MSCA_MDIINPROGEN_MASK);                                   
        status = I40E_ERR_TIMEOUT;                                                       │          status = I40E_ERR_TIMEOUT;                                                      
        retry = 1000;                                                                    │          retry = 1000;                                                                   
        wr32(hw, I40E_GLGEN_MSCA(port_num), command);                                    │          wr32(hw, I40E_GLGEN_MSCA(port_num), command);                                   
        do {                                                                             │          do {                                                                            
                command = rd32(hw, I40E_GLGEN_MSCA(port_num));                           │                  command = rd32(hw, I40E_GLGEN_MSCA(port_num));                          
                if (!(command & I40E_GLGEN_MSCA_MDICMD_MASK)) {                          │                  if (!(command & I40E_GLGEN_MSCA_MDICMD_MASK)) {                         
                        status = 0;                                                      │                          status = 0;                                                     
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                usleep_range(10, 20);                                                    │                  usleep_range(10, 20);                                                   
                retry--;                                                                 │                  retry--;                                                                
        } while (retry);                                                                 │          } while (retry);                                                                
                                                                                         │                                                                                          
phy_write_end:                                                                           │          if (!status) {                                                                  
                                                                                         │                  command = rd32(hw, I40E_GLGEN_MSRWD(port_num));                         
                                                                                         │                  *value = (command & I40E_GLGEN_MSRWD_MDIRDDATA_MASK) >>                 
                                                                                         │                           I40E_GLGEN_MSRWD_MDIRDDATA_SHIFT;                              
                                                                                         │          } else {                                                                        
                                                                                         │                  i40e_debug(hw, I40E_DEBUG_PHY,                                          
                                                                                         │                             "PHY: Can't read register value from external PHY.\n");      
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │  phy_read_end:                                                                           
        return status;                                                                   │          return status;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c:1664                           │ linux/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c:1597                            
                                                                                         │                                                                                          
        int j, ret;                                                                      │          int j, ret;                                                                     
        u32 temp, off8;                                                                  │          u32 temp, off8;                                                                 
        u64 val;                                                                         │                                                                                          
        void __iomem *mem_crb;                                                           │          void __iomem *mem_crb;                                                          
                                                                                         │                                                                                          
        /* Only 64-bit aligned access */                                                 │          /* Only 64-bit aligned access */                                                
        if (off & 7)                                                                     │          if (off & 7)                                                                    
                return -EIO;                                                             │                  return -EIO;                                                            
                                                                                         │                                                                                          
        /* P3 onward, test agent base for MIU and SIU is same */                         │          /* P3 onward, test agent base for MIU and SIU is same */                        
        if (ADDR_IN_RANGE(off, NETXEN_ADDR_QDR_NET,                                      │          if (ADDR_IN_RANGE(off, NETXEN_ADDR_QDR_NET,                                     
                                NETXEN_ADDR_QDR_NET_MAX_P3)) {                           │                                  NETXEN_ADDR_QDR_NET_MAX_P3)) {                          
                mem_crb = netxen_get_ioaddr(adapter,                                     │                  mem_crb = netxen_get_ioaddr(adapter,                                    
                                NETXEN_CRB_QDR_NET+MIU_TEST_AGT_BASE);                   │                                  NETXEN_CRB_QDR_NET+MIU_TEST_AGT_BASE);                  
                goto correct;                                                            │                  goto correct;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (ADDR_IN_RANGE(off, NETXEN_ADDR_DDR_NET, NETXEN_ADDR_DDR_NET_MAX)) {          │          if (ADDR_IN_RANGE(off, NETXEN_ADDR_DDR_NET, NETXEN_ADDR_DDR_NET_MAX)) {         
                mem_crb = netxen_get_ioaddr(adapter,                                     │                  mem_crb = netxen_get_ioaddr(adapter,                                    
                                NETXEN_CRB_DDR_NET+MIU_TEST_AGT_BASE);                   │                                  NETXEN_CRB_DDR_NET+MIU_TEST_AGT_BASE);                  
                goto correct;                                                            │                  goto correct;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (ADDR_IN_RANGE(off, NETXEN_ADDR_OCM0, NETXEN_ADDR_OCM0_MAX)) {                │          if (ADDR_IN_RANGE(off, NETXEN_ADDR_OCM0, NETXEN_ADDR_OCM0_MAX))                 
                return netxen_nic_pci_mem_access_direct(adapter,                         │                  return netxen_nic_pci_mem_access_direct(adapter, off, &data, 1);        
                                off, data, 0);                                           │                                                                                          
        }                                                                                │                                                                                          
                                                                                         │                                                                                          
        return -EIO;                                                                     │          return -EIO;                                                                    
                                                                                         │                                                                                          
correct:                                                                                 │  correct:                                                                                
        off8 = off & 0xfffffff8;                                                         │          off8 = off & 0xfffffff8;                                                        
                                                                                         │                                                                                          
        spin_lock(&adapter->ahw.mem_lock);                                               │          spin_lock(&adapter->ahw.mem_lock);                                              
                                                                                         │                                                                                          
        writel(off8, (mem_crb + MIU_TEST_AGT_ADDR_LO));                                  │          writel(off8, (mem_crb + MIU_TEST_AGT_ADDR_LO));                                 
        writel(0, (mem_crb + MIU_TEST_AGT_ADDR_HI));                                     │          writel(0, (mem_crb + MIU_TEST_AGT_ADDR_HI));                                    
        writel(TA_CTL_ENABLE, (mem_crb + TEST_AGT_CTRL));                                │                                                                                          
        writel((TA_CTL_START | TA_CTL_ENABLE), (mem_crb + TEST_AGT_CTRL));               │          writel(data & 0xffffffff,                                                       
                                                                                         │                          mem_crb + MIU_TEST_AGT_WRDATA_LO);                              
                                                                                         │          writel((data >> 32) & 0xffffffff,                                               
                                                                                         │                          mem_crb + MIU_TEST_AGT_WRDATA_HI);                              
                                                                                         │                                                                                          
                                                                                         │          writel((TA_CTL_ENABLE | TA_CTL_WRITE), (mem_crb + TEST_AGT_CTRL));              
                                                                                         │          writel((TA_CTL_START | TA_CTL_ENABLE | TA_CTL_WRITE),                           
                                                                                         │                          (mem_crb + TEST_AGT_CTRL));                                     
                                                                                         │                                                                                          
        for (j = 0; j < MAX_CTL_CHECK; j++) {                                            │          for (j = 0; j < MAX_CTL_CHECK; j++) {                                           
                temp = readl(mem_crb + TEST_AGT_CTRL);                                   │                  temp = readl(mem_crb + TEST_AGT_CTRL);                                  
                if ((temp & TA_CTL_BUSY) == 0)                                           │                  if ((temp & TA_CTL_BUSY) == 0)                                          
                        break;                                                           │                          break;                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (j >= MAX_CTL_CHECK) {                                                        │          if (j >= MAX_CTL_CHECK) {                                                       
                if (printk_ratelimit())                                                  │                  if (printk_ratelimit())                                                 
                        dev_err(&adapter->pdev->dev,                                     │                          dev_err(&adapter->pdev->dev,                                    
                                        "failed to read through agent\n");               │                                          "failed to write through agent\n");             
                ret = -EIO;                                                              │                  ret = -EIO;                                                             
        } else {                                                                         │          } else                                                                          
                val = (u64)(readl(mem_crb + MIU_TEST_AGT_RDDATA_HI)) << 32;              │                                                                                          
                val |= readl(mem_crb + MIU_TEST_AGT_RDDATA_LO);                          │                                                                                          
                *data = val;                                                             │                                                                                          
                ret = 0;                                                                 │                  ret = 0;                                                                
        }                                                                                │                                                                                          
                                                                                         │                                                                                          
        spin_unlock(&adapter->ahw.mem_lock);                                             │          spin_unlock(&adapter->ahw.mem_lock);                                            
                                                                                         │                                                                                          
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:182                                       │ linux/drivers/net/ethernet/intel/e1000e/phy.c:119                                        
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        u32 i, mdic = 0;                                                                 │          u32 i, mdic = 0;                                                                
                                                                                         │                                                                                          
        if (offset > MAX_PHY_REG_ADDRESS) {                                              │          if (offset > MAX_PHY_REG_ADDRESS) {                                             
                e_dbg("PHY Address %d is out of range\n", offset);                       │                  e_dbg("PHY Address %d is out of range\n", offset);                      
                return -E1000_ERR_PARAM;                                                 │                  return -E1000_ERR_PARAM;                                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Set up Op-code, Phy Address, and register offset in the MDI                   │          /* Set up Op-code, Phy Address, and register offset in the MDI                  
         * Control register.  The MAC will take care of interfacing with the             │           * Control register.  The MAC will take care of interfacing with the            
         * PHY to retrieve the desired data.                                             │           * PHY to retrieve the desired data.                                            
         */                                                                              │           */                                                                             
        mdic = (((u32)data) |                                                            │          mdic = ((offset << E1000_MDIC_REG_SHIFT) |                                      
                (offset << E1000_MDIC_REG_SHIFT) |                                       │                                                                                          
                (phy->addr << E1000_MDIC_PHY_SHIFT) |                                    │                  (phy->addr << E1000_MDIC_PHY_SHIFT) |                                   
                (E1000_MDIC_OP_WRITE));                                                  │                  (E1000_MDIC_OP_READ));                                                  
                                                                                         │                                                                                          
        ew32(MDIC, mdic);                                                                │          ew32(MDIC, mdic);                                                               
                                                                                         │                                                                                          
        /* Poll the ready bit to see if the MDI read completed                           │          /* Poll the ready bit to see if the MDI read completed                          
         * Increasing the time out as testing showed failures with                       │           * Increasing the time out as testing showed failures with                      
         * the lower time out                                                            │           * the lower time out                                                           
         */                                                                              │           */                                                                             
        for (i = 0; i < (E1000_GEN_POLL_TIMEOUT * 3); i++) {                             │          for (i = 0; i < (E1000_GEN_POLL_TIMEOUT * 3); i++) {                            
                udelay(50);                                                              │                  udelay(50);                                                             
                mdic = er32(MDIC);                                                       │                  mdic = er32(MDIC);                                                      
                if (mdic & E1000_MDIC_READY)                                             │                  if (mdic & E1000_MDIC_READY)                                            
                        break;                                                           │                          break;                                                          
        }                                                                                │          }                                                                               
        if (!(mdic & E1000_MDIC_READY)) {                                                │          if (!(mdic & E1000_MDIC_READY)) {                                               
                e_dbg("MDI Write PHY Reg Address %d did not complete\n", offset);        │                  e_dbg("MDI Read PHY Reg Address %d did not complete\n", offset);        
                return -E1000_ERR_PHY;                                                   │                  return -E1000_ERR_PHY;                                                  
        }                                                                                │          }                                                                               
        if (mdic & E1000_MDIC_ERROR) {                                                   │          if (mdic & E1000_MDIC_ERROR) {                                                  
                e_dbg("MDI Write PHY Red Address %d Error\n", offset);                   │                  e_dbg("MDI Read PHY Reg Address %d Error\n", offset);                   
                return -E1000_ERR_PHY;                                                   │                  return -E1000_ERR_PHY;                                                  
        }                                                                                │          }                                                                               
        if (((mdic & E1000_MDIC_REG_MASK) >> E1000_MDIC_REG_SHIFT) != offset) {          │          if (((mdic & E1000_MDIC_REG_MASK) >> E1000_MDIC_REG_SHIFT) != offset) {         
                e_dbg("MDI Write offset error - requested %d, returned %d\n",            │                  e_dbg("MDI Read offset error - requested %d, returned %d\n",            
                      offset,                                                            │                        offset,                                                           
                      (mdic & E1000_MDIC_REG_MASK) >> E1000_MDIC_REG_SHIFT);             │                        (mdic & E1000_MDIC_REG_MASK) >> E1000_MDIC_REG_SHIFT);            
                return -E1000_ERR_PHY;                                                   │                  return -E1000_ERR_PHY;                                                  
        }                                                                                │          }                                                                               
                                                                                         │          *data = (u16)mdic;                                                              
                                                                                         │                                                                                          
        /* Allow some time after each MDIC transaction to avoid                          │          /* Allow some time after each MDIC transaction to avoid                         
         * reading duplicate data in the next MDIC transaction.                          │           * reading duplicate data in the next MDIC transaction.                         
         */                                                                              │           */                                                                             
        if (hw->mac.type == e1000_pch2lan)                                               │          if (hw->mac.type == e1000_pch2lan)                                              
                udelay(100);                                                             │                  udelay(100);                                                            
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7751                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8682                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
                                                                                         │          u8 byte2;                                                                       
                                                                                         │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │                                                                                          
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
                                                                                         │          __le16 word1;                                                                   
                                                                                         │          __le16 word2;                                                                   
                                                                                         │          __le16 word3;                                                                   
                                                                                         │          __le16 word4;                                                                   
                                                                                         │          __le32 reg2;                                                                    
                                                                                         │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/microchip/lan743x_main.c:629                                 │ linux/drivers/net/ethernet/microchip/lan743x_main.c:671                                  
                                                                                         │                                                                                          
                int number_of_tx_vectors = intr->number_of_vectors - 1;                  │                  int number_of_rx_vectors = intr->number_of_vectors -                    
                                                                                         │                                                  used_tx_channels - 1;                   
                                                                                         │                                                                                          
                                                                                         │                  if (number_of_rx_vectors > LAN743X_USED_RX_CHANNELS)                    
                                                                                         │                          number_of_rx_vectors = LAN743X_USED_RX_CHANNELS;                
                                                                                         │                                                                                          
                if (number_of_tx_vectors > used_tx_channels)                             │                                                                                          
                        number_of_tx_vectors = used_tx_channels;                         │                                                                                          
                flags = LAN743X_VECTOR_FLAG_SOURCE_STATUS_READ |                         │                  flags = LAN743X_VECTOR_FLAG_SOURCE_STATUS_READ |                        
                        LAN743X_VECTOR_FLAG_SOURCE_STATUS_W2C |                          │                          LAN743X_VECTOR_FLAG_SOURCE_STATUS_W2C |                         
                        LAN743X_VECTOR_FLAG_SOURCE_ENABLE_CHECK |                        │                          LAN743X_VECTOR_FLAG_SOURCE_ENABLE_CHECK |                       
                        LAN743X_VECTOR_FLAG_SOURCE_ENABLE_CLEAR |                        │                          LAN743X_VECTOR_FLAG_SOURCE_ENABLE_CLEAR |                       
                        LAN743X_VECTOR_FLAG_VECTOR_ENABLE_ISR_CLEAR |                    │                          LAN743X_VECTOR_FLAG_VECTOR_ENABLE_ISR_CLEAR |                   
                        LAN743X_VECTOR_FLAG_VECTOR_ENABLE_ISR_SET;                       │                          LAN743X_VECTOR_FLAG_VECTOR_ENABLE_ISR_SET;                      
                                                                                         │                                                                                          
                if (adapter->csr.flags &                                                 │                  if (adapter->csr.flags &                                                
                   LAN743X_CSR_FLAG_SUPPORTS_INTR_AUTO_SET_CLR) {                        │                      LAN743X_CSR_FLAG_SUPPORTS_INTR_AUTO_SET_CLR) {                      
                        flags = LAN743X_VECTOR_FLAG_VECTOR_ENABLE_AUTO_SET |             │                          flags = LAN743X_VECTOR_FLAG_VECTOR_ENABLE_AUTO_CLEAR |          
                                                                                         │                                  LAN743X_VECTOR_FLAG_VECTOR_ENABLE_AUTO_SET |            
                                LAN743X_VECTOR_FLAG_SOURCE_ENABLE_AUTO_SET |             │                                  LAN743X_VECTOR_FLAG_SOURCE_ENABLE_AUTO_SET |            
                                LAN743X_VECTOR_FLAG_SOURCE_ENABLE_AUTO_CLEAR |           │                                  LAN743X_VECTOR_FLAG_SOURCE_ENABLE_AUTO_CLEAR |          
                                LAN743X_VECTOR_FLAG_SOURCE_STATUS_AUTO_CLEAR;            │                                  LAN743X_VECTOR_FLAG_SOURCE_STATUS_AUTO_CLEAR;           
                }                                                                        │                  }                                                                       
                                                                                         │                  for (index = 0; index < number_of_rx_vectors; index++) {                
                                                                                         │                          int vector = index + 1 + used_tx_channels;                      
                                                                                         │                          u32 int_bit = INT_BIT_DMA_RX_(index);                           
                                                                                         │                                                                                          
                for (index = 0; index < number_of_tx_vectors; index++) {                 │                          /* map RX interrupt to vector */                                
                        u32 int_bit = INT_BIT_DMA_TX_(index);                            │                          int_vec_map0 |= INT_VEC_MAP0_RX_VEC_(index, vector);            
                        int vector = index + 1;                                          │                          lan743x_csr_write(adapter, INT_VEC_MAP0, int_vec_map0);         
                                                                                         │                          if (flags &                                                     
                        /* map TX interrupt to vector */                                 │                              LAN743X_VECTOR_FLAG_VECTOR_ENABLE_AUTO_CLEAR) {             
                        int_vec_map1 |= INT_VEC_MAP1_TX_VEC_(index, vector);             │                                  int_vec_en_auto_clr |= INT_VEC_EN_(vector);             
                        lan743x_csr_write(adapter, INT_VEC_MAP1, int_vec_map1);          │                                  lan743x_csr_write(adapter, INT_VEC_EN_AUTO_CLR,         
                                                                                         │                                                    int_vec_en_auto_clr);                 
                                                                                         │                          }                                                               
                                                                                         │                                                                                          
                        /* Remove TX interrupt from shared mask */                       │                          /* Remove RX interrupt from shared mask */                      
                        intr->vector_list[0].int_mask &= ~int_bit;                       │                          intr->vector_list[0].int_mask &= ~int_bit;                      
                        ret = lan743x_intr_register_isr(adapter, vector, flags,          │                          ret = lan743x_intr_register_isr(adapter, vector, flags,         
                                                        int_bit, lan743x_tx_isr,         │                                                          int_bit, lan743x_rx_isr,        
                                                        &adapter->tx[index]);            │                                                          &adapter->rx[index]);           
                        if (ret)                                                         │                          if (ret)                                                        
                                goto clean_up;                                           │                                  goto clean_up;                                          
                        intr->flags |= INTR_FLAG_IRQ_REQUESTED(vector);                  │                          intr->flags |= INTR_FLAG_IRQ_REQUESTED(vector);                 
                        if (!(flags &                                                    │                                                                                          
                            LAN743X_VECTOR_FLAG_VECTOR_ENABLE_AUTO_SET))                 │                          lan743x_csr_write(adapter, INT_VEC_EN_SET,                      
                                lan743x_csr_write(adapter, INT_VEC_EN_SET,               │                                            INT_VEC_EN_(vector));                         
                                                  INT_VEC_EN_(vector));                  │                                                                                          
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:9532                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8682                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10888                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8682                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/ti/cpsw_switchdev.c:377                                      │ linux/drivers/net/ethernet/ti/am65-cpsw-switchdev.c:367                                  
                                                                                         │                                                                                          
        struct cpsw_switchdev_event_work *switchdev_work =                               │          struct am65_cpsw_switchdev_event_work *switchdev_work =                         
                container_of(work, struct cpsw_switchdev_event_work, work);              │                  container_of(work, struct am65_cpsw_switchdev_event_work, work);        
        struct cpsw_priv *priv = switchdev_work->priv;                                   │          struct am65_cpsw_port *port = switchdev_work->port;                             
        struct switchdev_notifier_fdb_info *fdb;                                         │          struct switchdev_notifier_fdb_info *fdb;                                        
        struct cpsw_common *cpsw = priv->cpsw;                                           │          struct am65_cpsw_common *cpsw = port->common;                                   
        int port = priv->emac_port;                                                      │          int port_id = port->port_id;                                                    
                                                                                         │                                                                                          
        rtnl_lock();                                                                     │          rtnl_lock();                                                                    
        switch (switchdev_work->event) {                                                 │          switch (switchdev_work->event) {                                                
        case SWITCHDEV_FDB_ADD_TO_DEVICE:                                                │          case SWITCHDEV_FDB_ADD_TO_DEVICE:                                               
                fdb = &switchdev_work->fdb_info;                                         │                  fdb = &switchdev_work->fdb_info;                                        
                                                                                         │                                                                                          
                dev_dbg(cpsw->dev, "cpsw_fdb_add: MACID = %pM vid = %u flags = %u %u --  │                  netdev_dbg(port->ndev, "cpsw_fdb_add: MACID = %pM vid = %u flags = %u %u
                        fdb->addr, fdb->vid, fdb->added_by_user,                         │                             fdb->addr, fdb->vid, fdb->added_by_user,                     
                        fdb->offloaded, port);                                           │                             fdb->offloaded, port_id);                                    
                                                                                         │                                                                                          
                if (!fdb->added_by_user || fdb->is_local)                                │                  if (!fdb->added_by_user || fdb->is_local)                               
                        break;                                                           │                          break;                                                          
                if (memcmp(priv->mac_addr, (u8 *)fdb->addr, ETH_ALEN) == 0)              │                  if (memcmp(port->slave.mac_addr, (u8 *)fdb->addr, ETH_ALEN) == 0)       
                        port = HOST_PORT_NUM;                                            │                          port_id = HOST_PORT_NUM;                                        
                                                                                         │                                                                                          
                cpsw_ale_add_ucast(cpsw->ale, (u8 *)fdb->addr, port,                     │                  cpsw_ale_add_ucast(cpsw->ale, (u8 *)fdb->addr, port_id,                 
                                   fdb->vid ? ALE_VLAN : 0, fdb->vid);                   │                                     fdb->vid ? ALE_VLAN : 0, fdb->vid);                  
                cpsw_fdb_offload_notify(priv->ndev, fdb);                                │                  am65_cpsw_fdb_offload_notify(port->ndev, fdb);                          
                break;                                                                   │                  break;                                                                  
        case SWITCHDEV_FDB_DEL_TO_DEVICE:                                                │          case SWITCHDEV_FDB_DEL_TO_DEVICE:                                               
                fdb = &switchdev_work->fdb_info;                                         │                  fdb = &switchdev_work->fdb_info;                                        
                                                                                         │                                                                                          
                dev_dbg(cpsw->dev, "cpsw_fdb_del: MACID = %pM vid = %u flags = %u %u --  │                  netdev_dbg(port->ndev, "cpsw_fdb_del: MACID = %pM vid = %u flags = %u %u
                        fdb->addr, fdb->vid, fdb->added_by_user,                         │                             fdb->addr, fdb->vid, fdb->added_by_user,                     
                        fdb->offloaded, port);                                           │                             fdb->offloaded, port_id);                                    
                                                                                         │                                                                                          
                if (!fdb->added_by_user || fdb->is_local)                                │                  if (!fdb->added_by_user || fdb->is_local)                               
                        break;                                                           │                          break;                                                          
                if (memcmp(priv->mac_addr, (u8 *)fdb->addr, ETH_ALEN) == 0)              │                  if (memcmp(port->slave.mac_addr, (u8 *)fdb->addr, ETH_ALEN) == 0)       
                        port = HOST_PORT_NUM;                                            │                          port_id = HOST_PORT_NUM;                                        
                                                                                         │                                                                                          
                cpsw_ale_del_ucast(cpsw->ale, (u8 *)fdb->addr, port,                     │                  cpsw_ale_del_ucast(cpsw->ale, (u8 *)fdb->addr, port_id,                 
                                   fdb->vid ? ALE_VLAN : 0, fdb->vid);                   │                                     fdb->vid ? ALE_VLAN : 0, fdb->vid);                  
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
        rtnl_unlock();                                                                   │          rtnl_unlock();                                                                  
                                                                                         │                                                                                          
        kfree(switchdev_work->fdb_info.addr);                                            │          kfree(switchdev_work->fdb_info.addr);                                           
        kfree(switchdev_work);                                                           │          kfree(switchdev_work);                                                          
        dev_put(priv->ndev);                                                             │          dev_put(port->ndev);                                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:9532                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8638                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10888                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8638                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:9532                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8594                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                         
#define YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                         
#define YSTORM_IWARP_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                         
#define YSTORM_IWARP_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                         
#define YSTORM_IWARP_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                         
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                         
#define YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                         
#define YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                         
#define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                         
#define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                         
#define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                         
#define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                         
#define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                       
#define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                         
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10888                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8594                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                         
#define YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                         
#define YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                         
#define YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                         
#define YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                         
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                         
#define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                         
#define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                         
#define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                         
#define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                         
#define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                         
#define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                         
#define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                         
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10888                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:9532                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define YSTORM_IWARP_CONN_AG_CTX_CF0_MASK       0x3                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT      2                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define YSTORM_IWARP_CONN_AG_CTX_CF1_MASK       0x3                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT      4                                       
#define YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define YSTORM_IWARP_CONN_AG_CTX_CF2_MASK       0x3                                     
#define YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT  3                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT  4                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT  5                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT  6                                       
#define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT  7                                       
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/dec/tulip/media.c:110                                        │ linux/drivers/net/ethernet/dec/tulip/media.c:48                                          
                                                                                         │                                                                                          
        struct tulip_private *tp = netdev_priv(dev);                                     │          struct tulip_private *tp = netdev_priv(dev);                                    
        int i;                                                                           │          int i;                                                                          
        int cmd = (0x5002 << 16) | ((phy_id & 0x1f) << 23) | (location<<18) | (val & 0xf │          int read_cmd = (0xf6 << 10) | ((phy_id & 0x1f) << 5) | location;                
                                                                                         │          int retval = 0;                                                                 
        void __iomem *ioaddr = tp->base_addr;                                            │          void __iomem *ioaddr = tp->base_addr;                                           
        void __iomem *mdio_addr = ioaddr + CSR9;                                         │          void __iomem *mdio_addr = ioaddr + CSR9;                                        
        unsigned long flags;                                                             │          unsigned long flags;                                                            
                                                                                         │                                                                                          
        if (location & ~0x1f)                                                            │          if (location & ~0x1f)                                                           
                return;                                                                  │                  return 0xffff;                                                          
                                                                                         │                                                                                          
        if (tp->chip_id == COMET && phy_id == 30) {                                      │          if (tp->chip_id == COMET  &&  phy_id == 30) {                                   
                if (comet_miireg2offset[location])                                       │                  if (comet_miireg2offset[location])                                      
                        iowrite32(val, ioaddr + comet_miireg2offset[location]);          │                          return ioread32(ioaddr + comet_miireg2offset[location]);        
                return;                                                                  │                  return 0xffff;                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        spin_lock_irqsave(&tp->mii_lock, flags);                                         │          spin_lock_irqsave(&tp->mii_lock, flags);                                        
        if (tp->chip_id == LC82C168) {                                                   │          if (tp->chip_id == LC82C168) {                                                  
                iowrite32(cmd, ioaddr + 0xA0);                                           │                  iowrite32(0x60020000 + (phy_id<<23) + (location<<18), ioaddr + 0xA0);   
                                                                                         │                  ioread32(ioaddr + 0xA0);                                                
                                                                                         │                  ioread32(ioaddr + 0xA0);                                                
                for (i = 1000; i >= 0; --i) {                                            │                  for (i = 1000; i >= 0; --i) {                                           
                        barrier();                                                       │                          barrier();                                                      
                        if ( ! (ioread32(ioaddr + 0xA0) & 0x80000000))                   │                          if ( ! ((retval = ioread32(ioaddr + 0xA0)) & 0x80000000))       
                                break;                                                   │                                  break;                                                  
                }                                                                        │                  }                                                                       
                spin_unlock_irqrestore(&tp->mii_lock, flags);                            │                  spin_unlock_irqrestore(&tp->mii_lock, flags);                           
                return;                                                                  │                  return retval & 0xffff;                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Establish sync by sending 32 logic ones. */                                   │          /* Establish sync by sending at least 32 logic ones. */                         
        for (i = 32; i >= 0; i--) {                                                      │          for (i = 32; i >= 0; i--) {                                                     
                iowrite32(MDIO_ENB | MDIO_DATA_WRITE1, mdio_addr);                       │                  iowrite32(MDIO_ENB | MDIO_DATA_WRITE1, mdio_addr);                      
                mdio_delay();                                                            │                  mdio_delay();                                                           
                iowrite32(MDIO_ENB | MDIO_DATA_WRITE1 | MDIO_SHIFT_CLK, mdio_addr);      │                  iowrite32(MDIO_ENB | MDIO_DATA_WRITE1 | MDIO_SHIFT_CLK, mdio_addr);     
                mdio_delay();                                                            │                  mdio_delay();                                                           
        }                                                                                │          }                                                                               
        /* Shift the command bits out. */                                                │          /* Shift the read command bits out. */                                          
        for (i = 31; i >= 0; i--) {                                                      │          for (i = 15; i >= 0; i--) {                                                     
                int dataval = (cmd & (1 << i)) ? MDIO_DATA_WRITE1 : 0;                   │                  int dataval = (read_cmd & (1 << i)) ? MDIO_DATA_WRITE1 : 0;             
                                                                                         │                                                                                          
                iowrite32(MDIO_ENB | dataval, mdio_addr);                                │                  iowrite32(MDIO_ENB | dataval, mdio_addr);                               
                mdio_delay();                                                            │                  mdio_delay();                                                           
                iowrite32(MDIO_ENB | dataval | MDIO_SHIFT_CLK, mdio_addr);               │                  iowrite32(MDIO_ENB | dataval | MDIO_SHIFT_CLK, mdio_addr);              
                mdio_delay();                                                            │                  mdio_delay();                                                           
        }                                                                                │          }                                                                               
        /* Clear out extra bits. */                                                      │          /* Read the two transition, 16 data, and wire-idle bits. */                     
        for (i = 2; i > 0; i--) {                                                        │          for (i = 19; i > 0; i--) {                                                      
                iowrite32(MDIO_ENB_IN, mdio_addr);                                       │                  iowrite32(MDIO_ENB_IN, mdio_addr);                                      
                mdio_delay();                                                            │                  mdio_delay();                                                           
                                                                                         │                  retval = (retval << 1) | ((ioread32(mdio_addr) & MDIO_DATA_READ) ? 1 : 0
                iowrite32(MDIO_ENB_IN | MDIO_SHIFT_CLK, mdio_addr);                      │                  iowrite32(MDIO_ENB_IN | MDIO_SHIFT_CLK, mdio_addr);                     
                mdio_delay();                                                            │                  mdio_delay();                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        spin_unlock_irqrestore(&tp->mii_lock, flags);                                    │          spin_unlock_irqrestore(&tp->mii_lock, flags);                                   
                                                                                         │          return (retval>>1) & 0xffff;                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/freescale/ucc_geth.c:2201                                    │ linux/drivers/net/ethernet/freescale/ucc_geth.c:2139                                     
                                                                                         │                                                                                          
        struct ucc_geth_info *ug_info;                                                   │          struct ucc_geth_info *ug_info;                                                  
        struct ucc_fast_info *uf_info;                                                   │          struct ucc_fast_info *uf_info;                                                  
        int length;                                                                      │          int length;                                                                     
        u16 i, j;                                                                        │          u16 i, j;                                                                       
        u8 __iomem *bd;                                                                  │          u8 __iomem *bd;                                                                 
                                                                                         │                                                                                          
        ug_info = ugeth->ug_info;                                                        │          ug_info = ugeth->ug_info;                                                       
        uf_info = &ug_info->uf_info;                                                     │          uf_info = &ug_info->uf_info;                                                    
                                                                                         │                                                                                          
        /* Allocate Rx bds */                                                            │          /* Allocate Tx bds */                                                           
        for (j = 0; j < ucc_geth_rx_queues(ug_info); j++) {                              │          for (j = 0; j < ucc_geth_tx_queues(ug_info); j++) {                             
                u32 align = UCC_GETH_RX_BD_RING_ALIGNMENT;                               │                  u32 align = max(UCC_GETH_TX_BD_RING_ALIGNMENT,                          
                                                                                         │                                  UCC_GETH_TX_BD_RING_SIZE_MEMORY_ALIGNMENT);             
                u32 alloc;                                                               │                  u32 alloc;                                                              
                                                                                         │                                                                                          
                length = ug_info->bdRingLenRx[j] * sizeof(struct qe_bd);                 │                  length = ug_info->bdRingLenTx[j] * sizeof(struct qe_bd);                
                alloc = round_up(length, align);                                         │                  alloc = round_up(length, align);                                        
                alloc = roundup_pow_of_two(alloc);                                       │                  alloc = roundup_pow_of_two(alloc);                                      
                                                                                         │                                                                                          
                ugeth->p_rx_bd_ring[j] = kmalloc(alloc, GFP_KERNEL);                     │                  ugeth->p_tx_bd_ring[j] = kmalloc(alloc, GFP_KERNEL);                    
                if (!ugeth->p_rx_bd_ring[j]) {                                           │                                                                                          
                                                                                         │                  if (!ugeth->p_tx_bd_ring[j]) {                                          
                        if (netif_msg_ifup(ugeth))                                       │                          if (netif_msg_ifup(ugeth))                                      
                                pr_err("Can not allocate memory for Rx bd rings\n");     │                                  pr_err("Can not allocate memory for Tx bd rings\n");    
                        return -ENOMEM;                                                  │                          return -ENOMEM;                                                 
                }                                                                        │                  }                                                                       
                                                                                         │                  /* Zero unused end of bd ring, according to spec */                     
                                                                                         │                  memset(ugeth->p_tx_bd_ring[j] + length, 0, alloc - length);             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Init Rx bds */                                                                │          /* Init Tx bds */                                                               
        for (j = 0; j < ucc_geth_rx_queues(ug_info); j++) {                              │          for (j = 0; j < ucc_geth_tx_queues(ug_info); j++) {                             
                /* Setup the skbuff rings */                                             │                  /* Setup the skbuff rings */                                            
                ugeth->rx_skbuff[j] =                                                    │                  ugeth->tx_skbuff[j] =                                                   
                        kcalloc(ugeth->ug_info->bdRingLenRx[j],                          │                          kcalloc(ugeth->ug_info->bdRingLenTx[j],                         
                                sizeof(struct sk_buff *), GFP_KERNEL);                   │                                  sizeof(struct sk_buff *), GFP_KERNEL);                  
                                                                                         │                                                                                          
                if (ugeth->rx_skbuff[j] == NULL) {                                       │                  if (ugeth->tx_skbuff[j] == NULL) {                                      
                        if (netif_msg_ifup(ugeth))                                       │                          if (netif_msg_ifup(ugeth))                                      
                                pr_err("Could not allocate rx_skbuff\n");                │                                  pr_err("Could not allocate tx_skbuff\n");               
                        return -ENOMEM;                                                  │                          return -ENOMEM;                                                 
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                ugeth->skb_currx[j] = 0;                                                 │                  ugeth->skb_curtx[j] = ugeth->skb_dirtytx[j] = 0;                        
                bd = ugeth->rxBd[j] = ugeth->p_rx_bd_ring[j];                            │                  bd = ugeth->confBd[j] = ugeth->txBd[j] = ugeth->p_tx_bd_ring[j];        
                for (i = 0; i < ug_info->bdRingLenRx[j]; i++) {                          │                  for (i = 0; i < ug_info->bdRingLenTx[j]; i++) {                         
                        /* set bd status and length */                                   │                                                                                          
                        out_be32((u32 __iomem *)bd, R_I);                                │                                                                                          
                        /* clear bd buffer */                                            │                          /* clear bd buffer */                                           
                        out_be32(&((struct qe_bd __iomem *)bd)->buf, 0);                 │                          out_be32(&((struct qe_bd __iomem *)bd)->buf, 0);                
                                                                                         │                          /* set bd status and length */                                  
                                                                                         │                          out_be32((u32 __iomem *)bd, 0);                                 
                        bd += sizeof(struct qe_bd);                                      │                          bd += sizeof(struct qe_bd);                                     
                }                                                                        │                  }                                                                       
                bd -= sizeof(struct qe_bd);                                              │                  bd -= sizeof(struct qe_bd);                                             
                /* set bd status and length */                                           │                  /* set bd status and length */                                          
                out_be32((u32 __iomem *)bd, R_W); /* for last BD set Wrap bit */         │                  out_be32((u32 __iomem *)bd, T_W); /* for last BD set Wrap bit */        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7714                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8638                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
                                                                                         │          u8 byte2;                                                                       
                                                                                         │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │                                                                                          
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
                                                                                         │          __le16 word1;                                                                   
                                                                                         │          __le16 word2;                                                                   
                                                                                         │          __le16 word3;                                                                   
                                                                                         │          __le16 word4;                                                                   
                                                                                         │          __le32 reg2;                                                                    
                                                                                         │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7714                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7751                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1639                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8682                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define YSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define YSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define YSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define YSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10324                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8682                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1639                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8638                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define YSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define YSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define YSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define YSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10324                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8638                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1639                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8594                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                         
#define YSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                         
#define YSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                       
#define YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                         
#define YSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                       
#define YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                         
#define YSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                       
#define YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                         
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                         
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                         
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                         
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                         
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                         
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                         
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                         
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                         
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10324                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8594                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                         
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                         
#define YSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                         
#define YSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                         
#define YSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                         
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                         
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                         
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                         
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                         
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                         
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                         
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                         
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                         
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1639                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:9532                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define YSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define YSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_IWARP_CONN_AG_CTX_CF0_MASK       0x3                                     
#define YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT      2                                       
#define YSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_IWARP_CONN_AG_CTX_CF1_MASK       0x3                                     
#define YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT      4                                       
#define YSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_IWARP_CONN_AG_CTX_CF2_MASK       0x3                                     
#define YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT  3                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT  4                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT  5                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT  6                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT  7                                       
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10324                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:9532                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_IWARP_CONN_AG_CTX_CF0_MASK       0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT      2                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_IWARP_CONN_AG_CTX_CF1_MASK       0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT      4                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_IWARP_CONN_AG_CTX_CF2_MASK       0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT  3                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT  4                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT  5                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT  6                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT  7                                       
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1639                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10888                                    
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define YSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define YSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                     
#define YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                       
#define YSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                     
#define YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                       
#define YSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                     
#define YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                       
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                       
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10324                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10888                                    
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                       
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10324                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1639                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                       
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                     
#define YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                       
#define YSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                     
#define YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                               
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                               
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                               
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                       
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                             
#define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                       
        u8 byte2;                                                                        │          u8 byte2;                                                                       
        u8 byte3;                                                                        │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le16 word2;                                                                    │          __le16 word2;                                                                   
        __le16 word3;                                                                    │          __le16 word3;                                                                   
        __le16 word4;                                                                    │          __le16 word4;                                                                   
        __le32 reg2;                                                                     │          __le32 reg2;                                                                    
        __le32 reg3;                                                                     │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:8952                                    │ linux/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:652                              
                                                                                         │                                                                                          
        union e1000_adv_rx_desc *rx_desc;                                                │          union ixgbe_adv_rx_desc *rx_desc;                                               
        struct igb_rx_buffer *bi;                                                        │          struct ixgbevf_rx_buffer *bi;                                                   
        u16 i = rx_ring->next_to_use;                                                    │          unsigned int i = rx_ring->next_to_use;                                          
        u16 bufsz;                                                                       │                                                                                          
                                                                                         │                                                                                          
        /* nothing to do */                                                              │          /* nothing to do or no valid netdev defined */                                  
        if (!cleaned_count)                                                              │          if (!cleaned_count || !rx_ring->netdev)                                         
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        rx_desc = IGB_RX_DESC(rx_ring, i);                                               │          rx_desc = IXGBEVF_RX_DESC(rx_ring, i);                                          
        bi = &rx_ring->rx_buffer_info[i];                                                │          bi = &rx_ring->rx_buffer_info[i];                                               
        i -= rx_ring->count;                                                             │          i -= rx_ring->count;                                                            
                                                                                         │                                                                                          
        bufsz = igb_rx_bufsz(rx_ring);                                                   │                                                                                          
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                if (!igb_alloc_mapped_page(rx_ring, bi))                                 │                  if (!ixgbevf_alloc_mapped_page(rx_ring, bi))                            
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* sync the buffer for use by the device */                              │                  /* sync the buffer for use by the device */                             
                dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                  │                  dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                 
                                                 bi->page_offset, bufsz,                 │                                                   bi->page_offset,                       
                                                                                         │                                                   ixgbevf_rx_bufsz(rx_ring),             
                                                 DMA_FROM_DEVICE);                       │                                                   DMA_FROM_DEVICE);                      
                                                                                         │                                                                                          
                /* Refresh the desc even if buffer_addrs didn't change                   │                  /* Refresh the desc even if pkt_addr didn't change                      
                 * because each write-back erases this info.                             │                   * because each write-back erases this info.                            
                 */                                                                      │                   */                                                                     
                rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);         │                  rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);        
                                                                                         │                                                                                          
                rx_desc++;                                                               │                  rx_desc++;                                                              
                bi++;                                                                    │                  bi++;                                                                   
                i++;                                                                     │                  i++;                                                                    
                if (unlikely(!i)) {                                                      │                  if (unlikely(!i)) {                                                     
                        rx_desc = IGB_RX_DESC(rx_ring, 0);                               │                          rx_desc = IXGBEVF_RX_DESC(rx_ring, 0);                          
                        bi = rx_ring->rx_buffer_info;                                    │                          bi = rx_ring->rx_buffer_info;                                   
                        i -= rx_ring->count;                                             │                          i -= rx_ring->count;                                            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* clear the length for the next_to_use descriptor */                    │                  /* clear the length for the next_to_use descriptor */                   
                rx_desc->wb.upper.length = 0;                                            │                  rx_desc->wb.upper.length = 0;                                           
                                                                                         │                                                                                          
                cleaned_count--;                                                         │                  cleaned_count--;                                                        
        } while (cleaned_count);                                                         │          } while (cleaned_count);                                                        
                                                                                         │                                                                                          
        i += rx_ring->count;                                                             │          i += rx_ring->count;                                                            
                                                                                         │                                                                                          
        if (rx_ring->next_to_use != i) {                                                 │          if (rx_ring->next_to_use != i) {                                                
                /* record the next descriptor to use */                                  │                  /* record the next descriptor to use */                                 
                rx_ring->next_to_use = i;                                                │                  rx_ring->next_to_use = i;                                               
                                                                                         │                                                                                          
                /* update next to alloc since we have filled the ring */                 │                  /* update next to alloc since we have filled the ring */                
                rx_ring->next_to_alloc = i;                                              │                  rx_ring->next_to_alloc = i;                                             
                                                                                         │                                                                                          
                /* Force memory writes to complete before letting h/w                    │                  /* Force memory writes to complete before letting h/w                   
                 * know there are new descriptors to fetch.  (Only                       │                   * know there are new descriptors to fetch.  (Only                      
                 * applicable for weak-ordered memory model archs,                       │                   * applicable for weak-ordered memory model archs,                      
                 * such as IA-64).                                                       │                   * such as IA-64).                                                      
                 */                                                                      │                   */                                                                     
                dma_wmb();                                                               │                  wmb();                                                                  
                writel(i, rx_ring->tail);                                                │                  ixgbevf_write_tail(rx_ring, i);                                         
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qualcomm/emac/emac-sgmii-qdf2432.c:115                       │ linux/drivers/net/ethernet/qualcomm/emac/emac-sgmii-qdf2400.c:125                        
                                                                                         │                                                                                          
        /* CDR Settings */                                                               │          /* CDR Settings */                                                              
        {EMAC_SGMII_LN_UCDR_FO_GAIN_MODE0,                                               │          {EMAC_SGMII_LN_UCDR_FO_GAIN_MODE0,                                              
                UCDR_STEP_BY_TWO_MODE0 | UCDR_xO_GAIN_MODE(10)},                         │                  UCDR_STEP_BY_TWO_MODE0 | UCDR_xO_GAIN_MODE(10)},                        
        {EMAC_SGMII_LN_UCDR_SO_GAIN_MODE0, UCDR_xO_GAIN_MODE(0)},                        │          {EMAC_SGMII_LN_UCDR_SO_GAIN_MODE0, UCDR_xO_GAIN_MODE(0)},                       
        {EMAC_SGMII_LN_UCDR_SO_CONFIG, UCDR_ENABLE | UCDR_SO_SATURATION(12)},            │          {EMAC_SGMII_LN_UCDR_SO_CONFIG, UCDR_ENABLE | UCDR_SO_SATURATION(12)},           
                                                                                         │                                                                                          
        /* TX/RX Settings */                                                             │          /* TX/RX Settings */                                                            
        {EMAC_SGMII_LN_RX_EN_SIGNAL, SIGDET_LP_BYP_PS4 | SIGDET_EN_PS0_TO_PS2},          │          {EMAC_SGMII_LN_RX_EN_SIGNAL, SIGDET_LP_BYP_PS4 | SIGDET_EN_PS0_TO_PS2},         
                                                                                         │                                                                                          
        {EMAC_SGMII_LN_DRVR_CTRL0, TXVAL_VALID_INIT | KR_PCIGEN3_MODE},                  │          {EMAC_SGMII_LN_DRVR_CTRL0, TXVAL_VALID_INIT | KR_PCIGEN3_MODE},                 
        {EMAC_SGMII_LN_DRVR_TAP_EN, MAIN_EN},                                            │          {EMAC_SGMII_LN_DRVR_TAP_EN, MAIN_EN},                                           
        {EMAC_SGMII_LN_TX_MARGINING, TX_MARGINING_MUX | TX_MARGINING(25)},               │          {EMAC_SGMII_LN_TX_MARGINING, TX_MARGINING_MUX | TX_MARGINING(25)},              
        {EMAC_SGMII_LN_TX_PRE, TX_PRE_MUX},                                              │          {EMAC_SGMII_LN_TX_PRE, TX_PRE_MUX},                                             
        {EMAC_SGMII_LN_TX_POST, TX_POST_MUX},                                            │          {EMAC_SGMII_LN_TX_POST, TX_POST_MUX},                                           
                                                                                         │                                                                                          
        {EMAC_SGMII_LN_CML_CTRL_MODE0,                                                   │          {EMAC_SGMII_LN_CML_CTRL_MODE0,                                                  
                CML_GEAR_MODE(1) | CML2CMOS_IBOOST_MODE(1)},                             │                  CML_GEAR_MODE(1) | CML2CMOS_IBOOST_MODE(1)},                            
        {EMAC_SGMII_LN_MIXER_CTRL_MODE0,                                                 │          {EMAC_SGMII_LN_MIXER_CTRL_MODE0,                                                
                MIXER_LOADB_MODE(12) | MIXER_DATARATE_MODE(1)},                          │                  MIXER_LOADB_MODE(12) | MIXER_DATARATE_MODE(1)},                         
        {EMAC_SGMII_LN_VGA_INITVAL, VGA_THRESH_DFE(31)},                                 │          {EMAC_SGMII_LN_VGA_INITVAL, VGA_THRESH_DFE(31)},                                
        {EMAC_SGMII_LN_SIGDET_ENABLES,                                                   │          {EMAC_SGMII_LN_SIGDET_ENABLES,                                                  
                SIGDET_LP_BYP_PS0_TO_PS2 | SIGDET_FLT_BYP},                              │                  SIGDET_LP_BYP_PS0_TO_PS2 | SIGDET_FLT_BYP},                             
        {EMAC_SGMII_LN_SIGDET_CNTRL, SIGDET_LVL(8)},                                     │          {EMAC_SGMII_LN_SIGDET_CNTRL, SIGDET_LVL(8)},                                    
                                                                                         │                                                                                          
        {EMAC_SGMII_LN_SIGDET_DEGLITCH_CNTRL, SIGDET_DEGLITCH_CTRL(4)},                  │          {EMAC_SGMII_LN_SIGDET_DEGLITCH_CNTRL, SIGDET_DEGLITCH_CTRL(4)},                 
        {EMAC_SGMII_LN_RX_MISC_CNTRL0, 0},                                               │          {EMAC_SGMII_LN_RX_MISC_CNTRL0, INVERT_PCS_RX_CLK},                              
        {EMAC_SGMII_LN_DRVR_LOGIC_CLKDIV,                                                │          {EMAC_SGMII_LN_DRVR_LOGIC_CLKDIV,                                               
                DRVR_LOGIC_CLK_EN | DRVR_LOGIC_CLK_DIV(4)},                              │                  DRVR_LOGIC_CLK_EN | DRVR_LOGIC_CLK_DIV(4)},                             
                                                                                         │                                                                                          
        {EMAC_SGMII_LN_PARALLEL_RATE, PARALLEL_RATE_MODE0(1)},                           │          {EMAC_SGMII_LN_PARALLEL_RATE, PARALLEL_RATE_MODE0(1)},                          
        {EMAC_SGMII_LN_TX_BAND_MODE, BAND_MODE0(2)},                                     │          {EMAC_SGMII_LN_TX_BAND_MODE, BAND_MODE0(1)},                                    
        {EMAC_SGMII_LN_RX_BAND, BAND_MODE0(3)},                                          │          {EMAC_SGMII_LN_RX_BAND, BAND_MODE0(2)},                                         
                                                                                         │          {EMAC_SGMII_LN_DRVR_CTRL1, RESCODE_OFFSET(7)},                                  
                                                                                         │          {EMAC_SGMII_LN_RX_RESECODE_OFFSET, RESCODE_OFFSET(9)},                          
        {EMAC_SGMII_LN_LANE_MODE, LANE_MODE(26)},                                        │          {EMAC_SGMII_LN_LANE_MODE, LANE_MODE(26)},                                       
        {EMAC_SGMII_LN_RX_RCVR_PATH1_MODE0, CDR_PD_SEL_MODE0(3)},                        │          {EMAC_SGMII_LN_RX_RCVR_PATH1_MODE0, CDR_PD_SEL_MODE0(2) |                       
                                                                                         │                  EN_DLL_MODE0 | EN_IQ_DCC_MODE0 | EN_IQCAL_MODE0},                       
        {EMAC_SGMII_LN_RSM_CONFIG, BYPASS_RSM_SAMP_CAL | BYPASS_RSM_DLL_CAL},            │          {EMAC_SGMII_LN_RSM_CONFIG, BYPASS_RSM_SAMP_CAL | BYPASS_RSM_DLL_CAL},           
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:4815                                    │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:5999                                 
                                                                                         │                                                                                          
        u16 i = tx_ring->next_to_clean;                                                  │          u16 i = tx_ring->next_to_clean;                                                 
        struct igb_tx_buffer *tx_buffer = &tx_ring->tx_buffer_info[i];                   │          struct ixgbe_tx_buffer *tx_buffer = &tx_ring->tx_buffer_info[i];                
                                                                                         │                                                                                          
                                                                                         │          if (tx_ring->xsk_pool) {                                                        
                                                                                         │                  ixgbe_xsk_clean_tx_ring(tx_ring);                                       
                                                                                         │                  goto out;                                                               
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        while (i != tx_ring->next_to_use) {                                              │          while (i != tx_ring->next_to_use) {                                             
                union e1000_adv_tx_desc *eop_desc, *tx_desc;                             │                  union ixgbe_adv_tx_desc *eop_desc, *tx_desc;                            
                                                                                         │                                                                                          
                /* Free all the Tx ring sk_buffs */                                      │                  /* Free all the Tx ring sk_buffs */                                     
                dev_kfree_skb_any(tx_buffer->skb);                                       │                  if (ring_is_xdp(tx_ring))                                               
                                                                                         │                          xdp_return_frame(tx_buffer->xdpf);                              
                                                                                         │                  else                                                                    
                                                                                         │                          dev_kfree_skb_any(tx_buffer->skb);                              
                                                                                         │                                                                                          
                /* unmap skb header data */                                              │                  /* unmap skb header data */                                             
                dma_unmap_single(tx_ring->dev,                                           │                  dma_unmap_single(tx_ring->dev,                                          
                                 dma_unmap_addr(tx_buffer, dma),                         │                                   dma_unmap_addr(tx_buffer, dma),                        
                                 dma_unmap_len(tx_buffer, len),                          │                                   dma_unmap_len(tx_buffer, len),                         
                                 DMA_TO_DEVICE);                                         │                                   DMA_TO_DEVICE);                                        
                                                                                         │                                                                                          
                /* check for eop_desc to determine the end of the packet */              │                  /* check for eop_desc to determine the end of the packet */             
                eop_desc = tx_buffer->next_to_watch;                                     │                  eop_desc = tx_buffer->next_to_watch;                                    
                tx_desc = IGB_TX_DESC(tx_ring, i);                                       │                  tx_desc = IXGBE_TX_DESC(tx_ring, i);                                    
                                                                                         │                                                                                          
                /* unmap remaining buffers */                                            │                  /* unmap remaining buffers */                                           
                while (tx_desc != eop_desc) {                                            │                  while (tx_desc != eop_desc) {                                           
                        tx_buffer++;                                                     │                          tx_buffer++;                                                    
                        tx_desc++;                                                       │                          tx_desc++;                                                      
                        i++;                                                             │                          i++;                                                            
                        if (unlikely(i == tx_ring->count)) {                             │                          if (unlikely(i == tx_ring->count)) {                            
                                i = 0;                                                   │                                  i = 0;                                                  
                                tx_buffer = tx_ring->tx_buffer_info;                     │                                  tx_buffer = tx_ring->tx_buffer_info;                    
                                tx_desc = IGB_TX_DESC(tx_ring, 0);                       │                                  tx_desc = IXGBE_TX_DESC(tx_ring, 0);                    
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        /* unmap any remaining paged data */                             │                          /* unmap any remaining paged data */                            
                        if (dma_unmap_len(tx_buffer, len))                               │                          if (dma_unmap_len(tx_buffer, len))                              
                                dma_unmap_page(tx_ring->dev,                             │                                  dma_unmap_page(tx_ring->dev,                            
                                               dma_unmap_addr(tx_buffer, dma),           │                                                 dma_unmap_addr(tx_buffer, dma),          
                                               dma_unmap_len(tx_buffer, len),            │                                                 dma_unmap_len(tx_buffer, len),           
                                               DMA_TO_DEVICE);                           │                                                 DMA_TO_DEVICE);                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                tx_buffer->next_to_watch = NULL;                                         │                                                                                          
                                                                                         │                                                                                          
                /* move us one more past the eop_desc for start of next pkt */           │                  /* move us one more past the eop_desc for start of next pkt */          
                tx_buffer++;                                                             │                  tx_buffer++;                                                            
                i++;                                                                     │                  i++;                                                                    
                if (unlikely(i == tx_ring->count)) {                                     │                  if (unlikely(i == tx_ring->count)) {                                    
                        i = 0;                                                           │                          i = 0;                                                          
                        tx_buffer = tx_ring->tx_buffer_info;                             │                          tx_buffer = tx_ring->tx_buffer_info;                            
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* reset BQL for queue */                                                        │          /* reset BQL for queue */                                                       
        netdev_tx_reset_queue(txring_txq(tx_ring));                                      │          if (!ring_is_xdp(tx_ring))                                                      
                                                                                         │                  netdev_tx_reset_queue(txring_txq(tx_ring));                             
                                                                                         │                                                                                          
                                                                                         │  out:                                                                                    
        /* reset next_to_use and next_to_clean */                                        │          /* reset next_to_use and next_to_clean */                                       
        tx_ring->next_to_use = 0;                                                        │          tx_ring->next_to_use = 0;                                                       
        tx_ring->next_to_clean = 0;                                                      │          tx_ring->next_to_clean = 0;                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c:1615                               │ linux/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c:8058                                    
                                                                                         │                                                                                          
        int offset, ret = 0;                                                             │          int offset, ret = 0;                                                            
        struct fw_vi_mac_cmd cmd;                                                        │          struct fw_vi_mac_cmd c;                                                         
        unsigned int nfilters = 0;                                                       │          unsigned int nfilters = 0;                                                      
        unsigned int max_naddr = adapter->params.arch.mps_tcam_size;                     │          unsigned int max_naddr = is_t4(adap->params.chip) ?                             
                                                                                         │                                         NUM_MPS_CLS_SRAM_L_INSTANCES :                   
                                                                                         │                                         NUM_MPS_T5_CLS_SRAM_L_INSTANCES;                 
        unsigned int rem = naddr;                                                        │          unsigned int rem = naddr;                                                       
                                                                                         │                                                                                          
        if (naddr > max_naddr)                                                           │          if (naddr > max_naddr)                                                          
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        for (offset = 0; offset < (int)naddr ; /**/) {                                   │          for (offset = 0; offset < (int)naddr ; /**/) {                                  
                unsigned int fw_naddr = (rem < ARRAY_SIZE(cmd.u.exact) ?                 │                  unsigned int fw_naddr = (rem < ARRAY_SIZE(c.u.exact)                    
                                         rem : ARRAY_SIZE(cmd.u.exact));                 │                                           ? rem                                          
                                                                                         │                                           : ARRAY_SIZE(c.u.exact));                      
                size_t len16 = DIV_ROUND_UP(offsetof(struct fw_vi_mac_cmd,               │                  size_t len16 = DIV_ROUND_UP(offsetof(struct fw_vi_mac_cmd,              
                                                     u.exact[fw_naddr]), 16);            │                                                       u.exact[fw_naddr]), 16);           
                struct fw_vi_mac_exact *p;                                               │                  struct fw_vi_mac_exact *p;                                              
                int i;                                                                   │                  int i;                                                                  
                                                                                         │                                                                                          
                memset(&cmd, 0, sizeof(cmd));                                            │                  memset(&c, 0, sizeof(c));                                               
                cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) |                │                  c.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) |                 
                                     FW_CMD_REQUEST_F |                                  │                                       FW_CMD_REQUEST_F |                                 
                                     FW_CMD_WRITE_F |                                    │                                       FW_CMD_WRITE_F |                                   
                                     FW_CMD_EXEC_V(0) |                                  │                                       FW_CMD_EXEC_V(0) |                                 
                                     FW_VI_MAC_CMD_VIID_V(viid));                        │                                       FW_VI_MAC_CMD_VIID_V(viid));                       
                cmd.freemacs_to_len16 =                                                  │                  c.freemacs_to_len16 =                                                   
                                cpu_to_be32(FW_VI_MAC_CMD_FREEMACS_V(0) |                │                                  cpu_to_be32(FW_VI_MAC_CMD_FREEMACS_V(0) |               
                                            FW_CMD_LEN16_V(len16));                      │                                              FW_CMD_LEN16_V(len16));                     
                                                                                         │                                                                                          
                for (i = 0, p = cmd.u.exact; i < (int)fw_naddr; i++, p++) {              │                  for (i = 0, p = c.u.exact; i < (int)fw_naddr; i++, p++) {               
                        p->valid_to_idx = cpu_to_be16(                                   │                          p->valid_to_idx = cpu_to_be16(                                  
                                FW_VI_MAC_CMD_VALID_F |                                  │                                  FW_VI_MAC_CMD_VALID_F |                                 
                                FW_VI_MAC_CMD_IDX_V(FW_VI_MAC_MAC_BASED_FREE));          │                                  FW_VI_MAC_CMD_IDX_V(FW_VI_MAC_MAC_BASED_FREE));         
                        memcpy(p->macaddr, addr[offset+i], sizeof(p->macaddr));          │                          memcpy(p->macaddr, addr[offset+i], sizeof(p->macaddr));         
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                ret = t4vf_wr_mbox_core(adapter, &cmd, sizeof(cmd), &cmd,                │                  ret = t4_wr_mbox_meat(adap, mbox, &c, sizeof(c), &c, sleep_ok);         
                                        sleep_ok);                                       │                                                                                          
                if (ret)                                                                 │                  if (ret)                                                                
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                for (i = 0, p = cmd.u.exact; i < fw_naddr; i++, p++) {                   │                  for (i = 0, p = c.u.exact; i < fw_naddr; i++, p++) {                    
                        u16 index = FW_VI_MAC_CMD_IDX_G(                                 │                          u16 index = FW_VI_MAC_CMD_IDX_G(                                
                                                be16_to_cpu(p->valid_to_idx));           │                                                  be16_to_cpu(p->valid_to_idx));          
                                                                                         │                                                                                          
                        if (index < max_naddr)                                           │                          if (index < max_naddr)                                          
                                nfilters++;                                              │                                  nfilters++;                                             
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                offset += fw_naddr;                                                      │                  offset += fw_naddr;                                                     
                rem -= fw_naddr;                                                         │                  rem -= fw_naddr;                                                        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (ret == 0)                                                                    │          if (ret == 0)                                                                   
                ret = nfilters;                                                          │                  ret = nfilters;                                                         
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:864                       │ linux/drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c:227                        
                                                                                         │                                                                                          
        int blkaddr, base;                                                               │          int blkaddr, base;                                                              
        bool rc;                                                                         │          bool rc;                                                                        
                                                                                         │                                                                                          
        blkaddr = rvu_get_blkaddr(rvu, BLKTYPE_NPA, 0);                                  │          blkaddr = rvu_get_blkaddr(rvu, BLKTYPE_NIX, 0);                                 
        if (blkaddr < 0)                                                                 │          if (blkaddr < 0)                                                                
                return blkaddr;                                                          │                  return blkaddr;                                                         
                                                                                         │                                                                                          
        /* Get NPA AF MSIX vectors offset. */                                            │          /* Get NIX AF MSIX vectors offset. */                                           
        base = rvu_read64(rvu, blkaddr, NPA_PRIV_AF_INT_CFG) & 0x3ff;                    │          base = rvu_read64(rvu, blkaddr, NIX_PRIV_AF_INT_CFG) & 0x3ff;                   
        if (!base) {                                                                     │          if (!base) {                                                                    
                dev_warn(rvu->dev,                                                       │                  dev_warn(rvu->dev,                                                      
                         "Failed to get NPA_AF_INT vector offsets\n");                   │                           "Failed to get NIX%d NIX_AF_INT vector offsets\n",             
                                                                                         │                           blkaddr - BLKADDR_NIX0);                                       
                return 0;                                                                │                  return 0;                                                               
        }                                                                                │          }                                                                               
                                                                                         │          /* Register and enable NIX_AF_RVU_INT interrupt */                              
        /* Register and enable NPA_AF_RVU_INT interrupt */                               │          rc = rvu_common_request_irq(rvu, base +  NIX_AF_INT_VEC_RVU,                    
        rc = rvu_common_request_irq(rvu, base +  NPA_AF_INT_VEC_RVU,                     │                                      "NIX_AF_RVU_INT",                                   
                                    "NPA_AF_RVU_INT",                                    │                                      rvu_nix_af_rvu_intr_handler);                       
                                    rvu_npa_af_rvu_intr_handler);                        │                                                                                          
        if (!rc)                                                                         │          if (!rc)                                                                        
                goto err;                                                                │                  goto err;                                                               
        rvu_write64(rvu, blkaddr, NPA_AF_RVU_INT_ENA_W1S, ~0ULL);                        │          rvu_write64(rvu, blkaddr, NIX_AF_RVU_INT_ENA_W1S, ~0ULL);                       
                                                                                         │                                                                                          
        /* Register and enable NPA_AF_GEN_INT interrupt */                               │          /* Register and enable NIX_AF_GEN_INT interrupt */                              
        rc = rvu_common_request_irq(rvu, base + NPA_AF_INT_VEC_GEN,                      │          rc = rvu_common_request_irq(rvu, base +  NIX_AF_INT_VEC_GEN,                    
                                    "NPA_AF_RVU_GEN",                                    │                                      "NIX_AF_GEN_INT",                                   
                                    rvu_npa_af_gen_intr_handler);                        │                                      rvu_nix_af_rvu_gen_handler);                        
        if (!rc)                                                                         │          if (!rc)                                                                        
                goto err;                                                                │                  goto err;                                                               
        rvu_write64(rvu, blkaddr, NPA_AF_GEN_INT_ENA_W1S, ~0ULL);                        │          rvu_write64(rvu, blkaddr, NIX_AF_GEN_INT_ENA_W1S, ~0ULL);                       
                                                                                         │                                                                                          
        /* Register and enable NPA_AF_ERR_INT interrupt */                               │          /* Register and enable NIX_AF_ERR_INT interrupt */                              
        rc = rvu_common_request_irq(rvu, base + NPA_AF_INT_VEC_AF_ERR,                   │          rc = rvu_common_request_irq(rvu, base + NIX_AF_INT_VEC_AF_ERR,                  
                                    "NPA_AF_ERR_INT",                                    │                                      "NIX_AF_ERR_INT",                                   
                                    rvu_npa_af_err_intr_handler);                        │                                      rvu_nix_af_rvu_err_handler);                        
        if (!rc)                                                                         │          if (!rc)                                                                        
                goto err;                                                                │                  goto err;                                                               
        rvu_write64(rvu, blkaddr, NPA_AF_ERR_INT_ENA_W1S, ~0ULL);                        │          rvu_write64(rvu, blkaddr, NIX_AF_ERR_INT_ENA_W1S, ~0ULL);                       
                                                                                         │                                                                                          
        /* Register and enable NPA_AF_RAS interrupt */                                   │          /* Register and enable NIX_AF_RAS interrupt */                                  
        rc = rvu_common_request_irq(rvu, base + NPA_AF_INT_VEC_POISON,                   │          rc = rvu_common_request_irq(rvu, base + NIX_AF_INT_VEC_POISON,                  
                                    "NPA_AF_RAS",                                        │                                      "NIX_AF_RAS",                                       
                                    rvu_npa_af_ras_intr_handler);                        │                                      rvu_nix_af_rvu_ras_handler);                        
        if (!rc)                                                                         │          if (!rc)                                                                        
                goto err;                                                                │                  goto err;                                                               
        rvu_write64(rvu, blkaddr, NPA_AF_RAS_ENA_W1S, ~0ULL);                            │          rvu_write64(rvu, blkaddr, NIX_AF_RAS_ENA_W1S, ~0ULL);                           
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
err:                                                                                     │  err:                                                                                    
        rvu_npa_unregister_interrupts(rvu);                                              │          rvu_nix_unregister_interrupts(rvu);                                             
        return rc;                                                                       │          return rc;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_main.c:2011                                    │ linux/drivers/net/ethernet/intel/igb/igb_main.c:8952                                     
                                                                                         │                                                                                          
        union igc_adv_rx_desc *rx_desc;                                                  │          union e1000_adv_rx_desc *rx_desc;                                               
                                                                                         │          struct igb_rx_buffer *bi;                                                       
        u16 i = rx_ring->next_to_use;                                                    │          u16 i = rx_ring->next_to_use;                                                   
        struct igc_rx_buffer *bi;                                                        │                                                                                          
        u16 bufsz;                                                                       │          u16 bufsz;                                                                      
                                                                                         │                                                                                          
        /* nothing to do */                                                              │          /* nothing to do */                                                             
        if (!cleaned_count)                                                              │          if (!cleaned_count)                                                             
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        rx_desc = IGC_RX_DESC(rx_ring, i);                                               │          rx_desc = IGB_RX_DESC(rx_ring, i);                                              
        bi = &rx_ring->rx_buffer_info[i];                                                │          bi = &rx_ring->rx_buffer_info[i];                                               
        i -= rx_ring->count;                                                             │          i -= rx_ring->count;                                                            
                                                                                         │                                                                                          
        bufsz = igc_rx_bufsz(rx_ring);                                                   │          bufsz = igb_rx_bufsz(rx_ring);                                                  
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                if (!igc_alloc_mapped_page(rx_ring, bi))                                 │                  if (!igb_alloc_mapped_page(rx_ring, bi))                                
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* sync the buffer for use by the device */                              │                  /* sync the buffer for use by the device */                             
                dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                  │                  dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                 
                                                 bi->page_offset, bufsz,                 │                                                   bi->page_offset, bufsz,                
                                                 DMA_FROM_DEVICE);                       │                                                   DMA_FROM_DEVICE);                      
                                                                                         │                                                                                          
                /* Refresh the desc even if buffer_addrs didn't change                   │                  /* Refresh the desc even if buffer_addrs didn't change                  
                 * because each write-back erases this info.                             │                   * because each write-back erases this info.                            
                 */                                                                      │                   */                                                                     
                rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);         │                  rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);        
                                                                                         │                                                                                          
                rx_desc++;                                                               │                  rx_desc++;                                                              
                bi++;                                                                    │                  bi++;                                                                   
                i++;                                                                     │                  i++;                                                                    
                if (unlikely(!i)) {                                                      │                  if (unlikely(!i)) {                                                     
                        rx_desc = IGC_RX_DESC(rx_ring, 0);                               │                          rx_desc = IGB_RX_DESC(rx_ring, 0);                              
                        bi = rx_ring->rx_buffer_info;                                    │                          bi = rx_ring->rx_buffer_info;                                   
                        i -= rx_ring->count;                                             │                          i -= rx_ring->count;                                            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* clear the length for the next_to_use descriptor */                    │                  /* clear the length for the next_to_use descriptor */                   
                rx_desc->wb.upper.length = 0;                                            │                  rx_desc->wb.upper.length = 0;                                           
                                                                                         │                                                                                          
                cleaned_count--;                                                         │                  cleaned_count--;                                                        
        } while (cleaned_count);                                                         │          } while (cleaned_count);                                                        
                                                                                         │                                                                                          
        i += rx_ring->count;                                                             │          i += rx_ring->count;                                                            
                                                                                         │                                                                                          
        if (rx_ring->next_to_use != i) {                                                 │          if (rx_ring->next_to_use != i) {                                                
                /* record the next descriptor to use */                                  │                  /* record the next descriptor to use */                                 
                rx_ring->next_to_use = i;                                                │                  rx_ring->next_to_use = i;                                               
                                                                                         │                                                                                          
                /* update next to alloc since we have filled the ring */                 │                  /* update next to alloc since we have filled the ring */                
                rx_ring->next_to_alloc = i;                                              │                  rx_ring->next_to_alloc = i;                                             
                                                                                         │                                                                                          
                /* Force memory writes to complete before letting h/w                    │                  /* Force memory writes to complete before letting h/w                   
                 * know there are new descriptors to fetch.  (Only                       │                   * know there are new descriptors to fetch.  (Only                      
                 * applicable for weak-ordered memory model archs,                       │                   * applicable for weak-ordered memory model archs,                      
                 * such as IA-64).                                                       │                   * such as IA-64).                                                      
                 */                                                                      │                   */                                                                     
                wmb();                                                                   │                  dma_wmb();                                                              
                writel(i, rx_ring->tail);                                                │                  writel(i, rx_ring->tail);                                               
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/3com/3c574_cs.c:985                                          │ linux/drivers/net/ethernet/3com/3c589_cs.c:818                                           
                                                                                         │                                                                                          
        unsigned int ioaddr = dev->base_addr;                                            │          unsigned int ioaddr = dev->base_addr;                                           
                                                                                         │          int worklimit = 32;                                                             
        short rx_status;                                                                 │          short rx_status;                                                                
                                                                                         │                                                                                          
        pr_debug("%s: in rx_packet(), status %4.4x, rx_status %4.4x.\n",                 │          netdev_dbg(dev, "in rx_packet(), status %4.4x, rx_status %4.4x.\n",             
                  dev->name, inw(ioaddr+EL3_STATUS), inw(ioaddr+RxStatus));              │                 inw(ioaddr+EL3_STATUS), inw(ioaddr+RX_STATUS));                          
        while (!((rx_status = inw(ioaddr + RxStatus)) & 0x8000) &&                       │          while (!((rx_status = inw(ioaddr + RX_STATUS)) & 0x8000) &&                     
                        worklimit > 0) {                                                 │                      worklimit > 0) {                                                    
                worklimit--;                                                             │                  worklimit--;                                                            
                if (rx_status & 0x4000) { /* Error, update stats. */                     │                  if (rx_status & 0x4000) { /* Error, update stats. */                    
                        short error = rx_status & 0x3800;                                │                          short error = rx_status & 0x3800;                               
                        dev->stats.rx_errors++;                                          │                          dev->stats.rx_errors++;                                         
                        switch (error) {                                                 │                          switch (error) {                                                
                        case 0x0000:    dev->stats.rx_over_errors++; break;              │                          case 0x0000:                                                    
                        case 0x0800:    dev->stats.rx_length_errors++; break;            │                                  dev->stats.rx_over_errors++;                            
                        case 0x1000:    dev->stats.rx_frame_errors++; break;             │                                  break;                                                  
                        case 0x1800:    dev->stats.rx_length_errors++; break;            │                          case 0x0800:                                                    
                        case 0x2000:    dev->stats.rx_frame_errors++; break;             │                                  dev->stats.rx_length_errors++;                          
                        case 0x2800:    dev->stats.rx_crc_errors++; break;               │                                  break;                                                  
                                                                                         │                          case 0x1000:                                                    
                                                                                         │                                  dev->stats.rx_frame_errors++;                           
                                                                                         │                                  break;                                                  
                                                                                         │                          case 0x1800:                                                    
                                                                                         │                                  dev->stats.rx_length_errors++;                          
                                                                                         │                                  break;                                                  
                                                                                         │                          case 0x2000:                                                    
                                                                                         │                                  dev->stats.rx_frame_errors++;                           
                                                                                         │                                  break;                                                  
                                                                                         │                          case 0x2800:                                                    
                                                                                         │                                  dev->stats.rx_crc_errors++;                             
                                                                                         │                                  break;                                                  
                        }                                                                │                          }                                                               
                } else {                                                                 │                  } else {                                                                
                        short pkt_len = rx_status & 0x7ff;                               │                          short pkt_len = rx_status & 0x7ff;                              
                        struct sk_buff *skb;                                             │                          struct sk_buff *skb;                                            
                                                                                         │                                                                                          
                        skb = netdev_alloc_skb(dev, pkt_len + 5);                        │                          skb = netdev_alloc_skb(dev, pkt_len + 5);                       
                                                                                         │                                                                                          
                        pr_debug("  Receiving packet size %d status %4.4x.\n",           │                          netdev_dbg(dev, "    Receiving packet size %d status %4.4x.\n", 
                                  pkt_len, rx_status);                                   │                         pkt_len, rx_status);                                             
                        if (skb != NULL) {                                               │                          if (skb != NULL) {                                              
                                skb_reserve(skb, 2);                                     │                                  skb_reserve(skb, 2);                                    
                                insl(ioaddr+RX_FIFO, skb_put(skb, pkt_len),              │                                  insl(ioaddr+RX_FIFO, skb_put(skb, pkt_len),             
                                                ((pkt_len+3)>>2));                       │                          (pkt_len+3)>>2);                                                
                                skb->protocol = eth_type_trans(skb, dev);                │                                  skb->protocol = eth_type_trans(skb, dev);               
                                netif_rx(skb);                                           │                                  netif_rx(skb);                                          
                                dev->stats.rx_packets++;                                 │                                  dev->stats.rx_packets++;                                
                                dev->stats.rx_bytes += pkt_len;                          │                                  dev->stats.rx_bytes += pkt_len;                         
                        } else {                                                         │                          } else {                                                        
                                pr_debug("%s: couldn't allocate a sk_buff of"            │                                  netdev_dbg(dev, "couldn't allocate a sk_buff of size %d.
                                          " size %d.\n", dev->name, pkt_len);            │                             pkt_len);                                                    
                                dev->stats.rx_dropped++;                                 │                                  dev->stats.rx_dropped++;                                
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                tc574_wait_for_completion(dev, RxDiscard);                               │                  /* Pop the top of the Rx FIFO */                                        
                                                                                         │                  tc589_wait_for_completion(dev, RxDiscard);                              
        }                                                                                │          }                                                                               
                                                                                         │          if (worklimit == 0)                                                             
        return worklimit;                                                                │                  netdev_warn(dev, "too much work in el3_rx!\n");                         
                                                                                         │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/i825xx/82596.c:1281                                          │ linux/drivers/net/ethernet/i825xx/lib82596.c:1186                                        
                                                                                         │                                                                                          
                        case CmdTx:                                                      │                          case CmdTx:                                                     
                            {                                                            │                              {                                                           
                                struct tx_cmd *tx_cmd = (struct tx_cmd *) ptr;           │                                  struct tx_cmd *tx_cmd = (struct tx_cmd *) ptr;          
                                struct sk_buff *skb = tx_cmd->skb;                       │                                  struct sk_buff *skb = tx_cmd->skb;                      
                                                                                         │                                                                                          
                                if ((ptr->status) & STAT_OK) {                           │                                  if (ptr->status & SWAP16(STAT_OK)) {                    
                                        DEB(DEB_TXADDR,print_eth(skb->data, "tx-done")); │                                          DEB(DEB_TXADDR,                                 
                                                                                         │                                              print_eth(skb->data, "tx-done"));           
                                } else {                                                 │                                  } else {                                                
                                        dev->stats.tx_errors++;                          │                                          dev->stats.tx_errors++;                         
                                        if ((ptr->status) & 0x0020)                      │                                          if (ptr->status & SWAP16(0x0020))               
                                                dev->stats.collisions++;                 │                                                  dev->stats.collisions++;                
                                        if (!((ptr->status) & 0x0040))                   │                                          if (!(ptr->status & SWAP16(0x0040)))            
                                                dev->stats.tx_heartbeat_errors++;        │                                                  dev->stats.tx_heartbeat_errors++;       
                                        if ((ptr->status) & 0x0400)                      │                                          if (ptr->status & SWAP16(0x0400))               
                                                dev->stats.tx_carrier_errors++;          │                                                  dev->stats.tx_carrier_errors++;         
                                        if ((ptr->status) & 0x0800)                      │                                          if (ptr->status & SWAP16(0x0800))               
                                                dev->stats.collisions++;                 │                                                  dev->stats.collisions++;                
                                        if ((ptr->status) & 0x1000)                      │                                          if (ptr->status & SWAP16(0x1000))               
                                                dev->stats.tx_aborted_errors++;          │                                                  dev->stats.tx_aborted_errors++;         
                                }                                                        │                                  }                                                       
                                                                                         │                                  dma_unmap_single(dev->dev.parent,                       
                                                                                         │                                                   tx_cmd->dma_addr,                      
                                                                                         │                                                   skb->len, DMA_TO_DEVICE);              
                                dev_consume_skb_irq(skb);                                │                                  dev_consume_skb_irq(skb);                               
                                                                                         │                                                                                          
                                tx_cmd->cmd.command = 0; /* Mark free */                 │                                  tx_cmd->cmd.command = 0; /* Mark free */                
                                break;                                                   │                                  break;                                                  
                            }                                                            │                              }                                                           
                        case CmdTDR:                                                     │                          case CmdTDR:                                                    
                            {                                                            │                              {                                                           
                                unsigned short status = ((struct tdr_cmd *)ptr)->status; │                                  unsigned short status = SWAP16(((struct tdr_cmd *)ptr)->
                                                                                         │                                                                                          
                                if (status & 0x8000) {                                   │                                  if (status & 0x8000) {                                  
                                        DEB(DEB_TDR,printk(KERN_INFO "%s: link ok.\n", d │                                          DEB(DEB_ANY,                                    
                                                                                         │                                              printk(KERN_DEBUG "%s: link ok.\n",         
                                                                                         │                                                     dev->name));                         
                                } else {                                                 │                                  } else {                                                
                                        if (status & 0x4000)                             │                                          if (status & 0x4000)                            
                                                printk(KERN_ERR "%s: Transceiver problem │                                                  printk(KERN_ERR                         
                                                                                         │                                                         "%s: Transceiver problem.\n",    
                                                                                         │                                                         dev->name);                      
                                        if (status & 0x2000)                             │                                          if (status & 0x2000)                            
                                                printk(KERN_ERR "%s: Termination problem │                                                  printk(KERN_ERR                         
                                                                                         │                                                         "%s: Termination problem.\n",    
                                                                                         │                                                         dev->name);                      
                                        if (status & 0x1000)                             │                                          if (status & 0x1000)                            
                                                printk(KERN_ERR "%s: Short circuit.\n",  │                                                  printk(KERN_ERR                         
                                                                                         │                                                         "%s: Short circuit.\n",          
                                                                                         │                                                         dev->name);                      
                                                                                         │                                                                                          
                                        DEB(DEB_TDR,printk(KERN_INFO "%s: Time %d.\n", d │                                          DEB(DEB_TDR,                                    
                                                                                         │                                              printk(KERN_DEBUG "%s: Time %d.\n",         
                                                                                         │                                                     dev->name, status & 0x07ff));        
                                }                                                        │                                  }                                                       
                                break;                                                   │                                  break;                                                  
                            }                                                            │                              }                                                           
                        case CmdConfigure:                                               │                          case CmdConfigure:                                              
                        case CmdMulticastList:                                           │                                  /*                                                      
                                /* Zap command so set_multicast_list() knows it is free  │                                   * Zap command so set_multicast_list() know             
                                                                                         │                                   * it is free                                           
                                                                                         │                                   */                                                     
                                ptr->command = 0;                                        │                                  ptr->command = 0;                                       
                                break;                                                   │                                  break;                                                  
                        }                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/cnic_defs.h:4252                                    │ linux/drivers/net/ethernet/broadcom/cnic_defs.h:3387                                     
                                                                                         │                                                                                          
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 remote_addr_4;                                                                │          u8 remote_addr_4;                                                               
        u8 remote_addr_5;                                                                │          u8 remote_addr_5;                                                               
        u8 local_addr_0;                                                                 │          u8 local_addr_0;                                                                
        u8 local_addr_1;                                                                 │          u8 local_addr_1;                                                                
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 local_addr_1;                                                                 │          u8 local_addr_1;                                                                
        u8 local_addr_0;                                                                 │          u8 local_addr_0;                                                                
        u8 remote_addr_5;                                                                │          u8 remote_addr_5;                                                               
        u8 remote_addr_4;                                                                │          u8 remote_addr_4;                                                               
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 remote_addr_0;                                                                │          u8 remote_addr_0;                                                               
        u8 remote_addr_1;                                                                │          u8 remote_addr_1;                                                               
        u8 remote_addr_2;                                                                │          u8 remote_addr_2;                                                               
        u8 remote_addr_3;                                                                │          u8 remote_addr_3;                                                               
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 remote_addr_3;                                                                │          u8 remote_addr_3;                                                               
        u8 remote_addr_2;                                                                │          u8 remote_addr_2;                                                               
        u8 remote_addr_1;                                                                │          u8 remote_addr_1;                                                               
        u8 remote_addr_0;                                                                │          u8 remote_addr_0;                                                               
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u16 reserved_vlan_type;                                                          │          u16 reserved_vlan_type;                                                         
        u16 vlan_params;                                                                 │          u16 params;                                                                     
#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)                                    │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)                              
#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0                                       │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0                                 
#define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)                                         │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI (0x1<<12)                                   
#define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12                                          │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI_SHIFT 12                                    
#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)                                    │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)                              
#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13                                     │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13                               
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u16 vlan_params;                                                                 │          u16 params;                                                                     
#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)                                    │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)                              
#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0                                       │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0                                 
#define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)                                         │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI (0x1<<12)                                   
#define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12                                          │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI_SHIFT 12                                    
#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)                                    │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)                              
#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13                                     │  #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13                               
        u16 reserved_vlan_type;                                                          │          u16 reserved_vlan_type;                                                         
#endif                                                                                   │  #endif                                                                                  
#if defined(__BIG_ENDIAN)                                                                │  #if defined(__BIG_ENDIAN)                                                               
        u8 local_addr_2;                                                                 │          u8 local_addr_2;                                                                
        u8 local_addr_3;                                                                 │          u8 local_addr_3;                                                                
        u8 local_addr_4;                                                                 │          u8 local_addr_4;                                                                
        u8 local_addr_5;                                                                 │          u8 local_addr_5;                                                                
#elif defined(__LITTLE_ENDIAN)                                                           │  #elif defined(__LITTLE_ENDIAN)                                                          
        u8 local_addr_5;                                                                 │          u8 local_addr_5;                                                                
        u8 local_addr_4;                                                                 │          u8 local_addr_4;                                                                
        u8 local_addr_3;                                                                 │          u8 local_addr_3;                                                                
        u8 local_addr_2;                                                                 │          u8 local_addr_2;                                                                
#endif                                                                                   │  #endif                                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/80003es2lan.c:342                               │ linux/drivers/net/ethernet/intel/e1000e/80003es2lan.c:411                                
                                                                                         │                                                                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        u32 page_select;                                                                 │          u32 page_select;                                                                
        u16 temp;                                                                        │          u16 temp;                                                                       
                                                                                         │                                                                                          
        ret_val = e1000_acquire_phy_80003es2lan(hw);                                     │          ret_val = e1000_acquire_phy_80003es2lan(hw);                                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  return ret_val;                                                         
                                                                                         │                                                                                          
        /* Select Configuration Page */                                                  │          /* Select Configuration Page */                                                 
        if ((offset & MAX_PHY_REG_ADDRESS) < GG82563_MIN_ALT_REG) {                      │          if ((offset & MAX_PHY_REG_ADDRESS) < GG82563_MIN_ALT_REG) {                     
                page_select = GG82563_PHY_PAGE_SELECT;                                   │                  page_select = GG82563_PHY_PAGE_SELECT;                                  
        } else {                                                                         │          } else {                                                                        
                /* Use Alternative Page Select register to access                        │                  /* Use Alternative Page Select register to access                       
                 * registers 30 and 31                                                   │                   * registers 30 and 31                                                  
                 */                                                                      │                   */                                                                     
                page_select = GG82563_PHY_PAGE_SELECT_ALT;                               │                  page_select = GG82563_PHY_PAGE_SELECT_ALT;                              
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        temp = (u16)((u16)offset >> GG82563_PAGE_SHIFT);                                 │          temp = (u16)((u16)offset >> GG82563_PAGE_SHIFT);                                
        ret_val = e1000e_write_phy_reg_mdic(hw, page_select, temp);                      │          ret_val = e1000e_write_phy_reg_mdic(hw, page_select, temp);                     
        if (ret_val) {                                                                   │          if (ret_val) {                                                                  
                e1000_release_phy_80003es2lan(hw);                                       │                  e1000_release_phy_80003es2lan(hw);                                      
                return ret_val;                                                          │                  return ret_val;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (hw->dev_spec.e80003es2lan.mdic_wa_enable) {                                  │          if (hw->dev_spec.e80003es2lan.mdic_wa_enable) {                                 
                /* The "ready" bit in the MDIC register may be incorrectly set           │                  /* The "ready" bit in the MDIC register may be incorrectly set          
                 * before the device has completed the "Page Select" MDI                 │                   * before the device has completed the "Page Select" MDI                
                 * transaction.  So we wait 200us after each MDI command...              │                   * transaction.  So we wait 200us after each MDI command...             
                 */                                                                      │                   */                                                                     
                usleep_range(200, 400);                                                  │                  usleep_range(200, 400);                                                 
                                                                                         │                                                                                          
                /* ...and verify the command was successful. */                          │                  /* ...and verify the command was successful. */                         
                ret_val = e1000e_read_phy_reg_mdic(hw, page_select, &temp);              │                  ret_val = e1000e_read_phy_reg_mdic(hw, page_select, &temp);             
                                                                                         │                                                                                          
                if (((u16)offset >> GG82563_PAGE_SHIFT) != temp) {                       │                  if (((u16)offset >> GG82563_PAGE_SHIFT) != temp) {                      
                        e1000_release_phy_80003es2lan(hw);                               │                          e1000_release_phy_80003es2lan(hw);                              
                        return -E1000_ERR_PHY;                                           │                          return -E1000_ERR_PHY;                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                usleep_range(200, 400);                                                  │                  usleep_range(200, 400);                                                 
                                                                                         │                                                                                          
                ret_val = e1000e_read_phy_reg_mdic(hw,                                   │                  ret_val = e1000e_write_phy_reg_mdic(hw,                                 
                                                   MAX_PHY_REG_ADDRESS & offset,         │                                                      MAX_PHY_REG_ADDRESS &               
                                                   data);                                │                                                      offset, data);                      
                                                                                         │                                                                                          
                usleep_range(200, 400);                                                  │                  usleep_range(200, 400);                                                 
        } else {                                                                         │          } else {                                                                        
                ret_val = e1000e_read_phy_reg_mdic(hw,                                   │                  ret_val = e1000e_write_phy_reg_mdic(hw,                                 
                                                   MAX_PHY_REG_ADDRESS & offset,         │                                                      MAX_PHY_REG_ADDRESS &               
                                                   data);                                │                                                      offset, data);                      
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        e1000_release_phy_80003es2lan(hw);                                               │          e1000_release_phy_80003es2lan(hw);                                              
                                                                                         │                                                                                          
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/xgbe/xgbe-phy-v1.c:411                                   │ linux/drivers/net/ethernet/amd/xgbe/xgbe-phy-v1.c:368                                    
                                                                                         │                                                                                          
        struct xgbe_phy_data *phy_data = pdata->phy_data;                                │          struct xgbe_phy_data *phy_data = pdata->phy_data;                               
        unsigned int reg;                                                                │          unsigned int reg;                                                               
                                                                                         │                                                                                          
        /* Set PCS to KX/1G speed */                                                     │          /* Set PCS to KR/10G speed */                                                   
        reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL2);                               │          reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL2);                              
        reg &= ~MDIO_PCS_CTRL2_TYPE;                                                     │          reg &= ~MDIO_PCS_CTRL2_TYPE;                                                    
        reg |= MDIO_PCS_CTRL2_10GBX;                                                     │          reg |= MDIO_PCS_CTRL2_10GBR;                                                    
        XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL2, reg);                               │          XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL2, reg);                              
                                                                                         │                                                                                          
        reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1);                               │          reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1);                              
        reg &= ~MDIO_CTRL1_SPEEDSEL;                                                     │          reg &= ~MDIO_CTRL1_SPEEDSEL;                                                    
        reg |= MDIO_CTRL1_SPEED1G;                                                       │          reg |= MDIO_CTRL1_SPEED10G;                                                     
        XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, reg);                               │          XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, reg);                              
                                                                                         │                                                                                          
        xgbe_phy_pcs_power_cycle(pdata);                                                 │          xgbe_phy_pcs_power_cycle(pdata);                                                
                                                                                         │                                                                                          
        /* Set SerDes to 2.5G speed */                                                   │          /* Set SerDes to 10G speed */                                                   
        xgbe_phy_start_ratechange(pdata);                                                │          xgbe_phy_start_ratechange(pdata);                                               
                                                                                         │                                                                                          
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, DATARATE, XGBE_SPEED_2500_RATE);           │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, DATARATE, XGBE_SPEED_10000_RATE);         
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, WORDMODE, XGBE_SPEED_2500_WORD);           │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, WORDMODE, XGBE_SPEED_10000_WORD);         
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, PLLSEL, XGBE_SPEED_2500_PLL);              │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, PLLSEL, XGBE_SPEED_10000_PLL);            
                                                                                         │                                                                                          
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, CDR_RATE,                                  │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, CDR_RATE,                                 
                           phy_data->cdr_rate[XGBE_SPEED_2500]);                         │                             phy_data->cdr_rate[XGBE_SPEED_10000]);                       
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, TXAMP,                                     │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, TXAMP,                                    
                           phy_data->tx_amp[XGBE_SPEED_2500]);                           │                             phy_data->tx_amp[XGBE_SPEED_10000]);                         
        XRXTX_IOWRITE_BITS(pdata, RXTX_REG20, BLWC_ENA,                                  │          XRXTX_IOWRITE_BITS(pdata, RXTX_REG20, BLWC_ENA,                                 
                           phy_data->blwc[XGBE_SPEED_2500]);                             │                             phy_data->blwc[XGBE_SPEED_10000]);                           
        XRXTX_IOWRITE_BITS(pdata, RXTX_REG114, PQ_REG,                                   │          XRXTX_IOWRITE_BITS(pdata, RXTX_REG114, PQ_REG,                                  
                           phy_data->pq_skew[XGBE_SPEED_2500]);                          │                             phy_data->pq_skew[XGBE_SPEED_10000]);                        
        XRXTX_IOWRITE_BITS(pdata, RXTX_REG129, RXDFE_CONFIG,                             │          XRXTX_IOWRITE_BITS(pdata, RXTX_REG129, RXDFE_CONFIG,                            
                           phy_data->dfe_tap_cfg[XGBE_SPEED_2500]);                      │                             phy_data->dfe_tap_cfg[XGBE_SPEED_10000]);                    
        XRXTX_IOWRITE(pdata, RXTX_REG22,                                                 │          XRXTX_IOWRITE(pdata, RXTX_REG22,                                                
                      phy_data->dfe_tap_ena[XGBE_SPEED_2500]);                           │                        phy_data->dfe_tap_ena[XGBE_SPEED_10000]);                         
                                                                                         │                                                                                          
        xgbe_phy_complete_ratechange(pdata);                                             │          xgbe_phy_complete_ratechange(pdata);                                            
                                                                                         │                                                                                          
        netif_dbg(pdata, link, pdata->netdev, "2.5GbE KX mode set\n");                   │          netif_dbg(pdata, link, pdata->netdev, "10GbE KR mode set\n");                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:2400                            │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:5999                                 
                                                                                         │                                                                                          
        u16 i = tx_ring->next_to_clean;                                                  │          u16 i = tx_ring->next_to_clean;                                                 
        struct ixgbevf_tx_buffer *tx_buffer = &tx_ring->tx_buffer_info[i];               │          struct ixgbe_tx_buffer *tx_buffer = &tx_ring->tx_buffer_info[i];                
                                                                                         │                                                                                          
                                                                                         │          if (tx_ring->xsk_pool) {                                                        
                                                                                         │                  ixgbe_xsk_clean_tx_ring(tx_ring);                                       
                                                                                         │                  goto out;                                                               
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        while (i != tx_ring->next_to_use) {                                              │          while (i != tx_ring->next_to_use) {                                             
                union ixgbe_adv_tx_desc *eop_desc, *tx_desc;                             │                  union ixgbe_adv_tx_desc *eop_desc, *tx_desc;                            
                                                                                         │                                                                                          
                /* Free all the Tx ring sk_buffs */                                      │                  /* Free all the Tx ring sk_buffs */                                     
                if (ring_is_xdp(tx_ring))                                                │                  if (ring_is_xdp(tx_ring))                                               
                        page_frag_free(tx_buffer->data);                                 │                          xdp_return_frame(tx_buffer->xdpf);                              
                else                                                                     │                  else                                                                    
                        dev_kfree_skb_any(tx_buffer->skb);                               │                          dev_kfree_skb_any(tx_buffer->skb);                              
                                                                                         │                                                                                          
                /* unmap skb header data */                                              │                  /* unmap skb header data */                                             
                dma_unmap_single(tx_ring->dev,                                           │                  dma_unmap_single(tx_ring->dev,                                          
                                 dma_unmap_addr(tx_buffer, dma),                         │                                   dma_unmap_addr(tx_buffer, dma),                        
                                 dma_unmap_len(tx_buffer, len),                          │                                   dma_unmap_len(tx_buffer, len),                         
                                 DMA_TO_DEVICE);                                         │                                   DMA_TO_DEVICE);                                        
                                                                                         │                                                                                          
                /* check for eop_desc to determine the end of the packet */              │                  /* check for eop_desc to determine the end of the packet */             
                eop_desc = tx_buffer->next_to_watch;                                     │                  eop_desc = tx_buffer->next_to_watch;                                    
                tx_desc = IXGBEVF_TX_DESC(tx_ring, i);                                   │                  tx_desc = IXGBE_TX_DESC(tx_ring, i);                                    
                                                                                         │                                                                                          
                /* unmap remaining buffers */                                            │                  /* unmap remaining buffers */                                           
                while (tx_desc != eop_desc) {                                            │                  while (tx_desc != eop_desc) {                                           
                        tx_buffer++;                                                     │                          tx_buffer++;                                                    
                        tx_desc++;                                                       │                          tx_desc++;                                                      
                        i++;                                                             │                          i++;                                                            
                        if (unlikely(i == tx_ring->count)) {                             │                          if (unlikely(i == tx_ring->count)) {                            
                                i = 0;                                                   │                                  i = 0;                                                  
                                tx_buffer = tx_ring->tx_buffer_info;                     │                                  tx_buffer = tx_ring->tx_buffer_info;                    
                                tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);                   │                                  tx_desc = IXGBE_TX_DESC(tx_ring, 0);                    
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        /* unmap any remaining paged data */                             │                          /* unmap any remaining paged data */                            
                        if (dma_unmap_len(tx_buffer, len))                               │                          if (dma_unmap_len(tx_buffer, len))                              
                                dma_unmap_page(tx_ring->dev,                             │                                  dma_unmap_page(tx_ring->dev,                            
                                               dma_unmap_addr(tx_buffer, dma),           │                                                 dma_unmap_addr(tx_buffer, dma),          
                                               dma_unmap_len(tx_buffer, len),            │                                                 dma_unmap_len(tx_buffer, len),           
                                               DMA_TO_DEVICE);                           │                                                 DMA_TO_DEVICE);                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* move us one more past the eop_desc for start of next pkt */           │                  /* move us one more past the eop_desc for start of next pkt */          
                tx_buffer++;                                                             │                  tx_buffer++;                                                            
                i++;                                                                     │                  i++;                                                                    
                if (unlikely(i == tx_ring->count)) {                                     │                  if (unlikely(i == tx_ring->count)) {                                    
                        i = 0;                                                           │                          i = 0;                                                          
                        tx_buffer = tx_ring->tx_buffer_info;                             │                          tx_buffer = tx_ring->tx_buffer_info;                            
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          /* reset BQL for queue */                                                       
                                                                                         │          if (!ring_is_xdp(tx_ring))                                                      
                                                                                         │                  netdev_tx_reset_queue(txring_txq(tx_ring));                             
                                                                                         │                                                                                          
                                                                                         │  out:                                                                                    
        /* reset next_to_use and next_to_clean */                                        │          /* reset next_to_use and next_to_clean */                                       
        tx_ring->next_to_use = 0;                                                        │          tx_ring->next_to_use = 0;                                                       
        tx_ring->next_to_clean = 0;                                                      │          tx_ring->next_to_clean = 0;                                                     
                                                                                         │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/xgbe/xgbe-phy-v1.c:454                                   │ linux/drivers/net/ethernet/amd/xgbe/xgbe-phy-v1.c:368                                    
                                                                                         │                                                                                          
        struct xgbe_phy_data *phy_data = pdata->phy_data;                                │          struct xgbe_phy_data *phy_data = pdata->phy_data;                               
        unsigned int reg;                                                                │          unsigned int reg;                                                               
                                                                                         │                                                                                          
        /* Set PCS to KX/1G speed */                                                     │          /* Set PCS to KR/10G speed */                                                   
        reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL2);                               │          reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL2);                              
        reg &= ~MDIO_PCS_CTRL2_TYPE;                                                     │          reg &= ~MDIO_PCS_CTRL2_TYPE;                                                    
        reg |= MDIO_PCS_CTRL2_10GBX;                                                     │          reg |= MDIO_PCS_CTRL2_10GBR;                                                    
        XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL2, reg);                               │          XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL2, reg);                              
                                                                                         │                                                                                          
        reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1);                               │          reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1);                              
        reg &= ~MDIO_CTRL1_SPEEDSEL;                                                     │          reg &= ~MDIO_CTRL1_SPEEDSEL;                                                    
        reg |= MDIO_CTRL1_SPEED1G;                                                       │          reg |= MDIO_CTRL1_SPEED10G;                                                     
        XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, reg);                               │          XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, reg);                              
                                                                                         │                                                                                          
        xgbe_phy_pcs_power_cycle(pdata);                                                 │          xgbe_phy_pcs_power_cycle(pdata);                                                
                                                                                         │                                                                                          
        /* Set SerDes to 1G speed */                                                     │          /* Set SerDes to 10G speed */                                                   
        xgbe_phy_start_ratechange(pdata);                                                │          xgbe_phy_start_ratechange(pdata);                                               
                                                                                         │                                                                                          
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, DATARATE, XGBE_SPEED_1000_RATE);           │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, DATARATE, XGBE_SPEED_10000_RATE);         
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, WORDMODE, XGBE_SPEED_1000_WORD);           │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, WORDMODE, XGBE_SPEED_10000_WORD);         
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, PLLSEL, XGBE_SPEED_1000_PLL);              │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, PLLSEL, XGBE_SPEED_10000_PLL);            
                                                                                         │                                                                                          
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, CDR_RATE,                                  │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, CDR_RATE,                                 
                           phy_data->cdr_rate[XGBE_SPEED_1000]);                         │                             phy_data->cdr_rate[XGBE_SPEED_10000]);                       
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, TXAMP,                                     │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, TXAMP,                                    
                           phy_data->tx_amp[XGBE_SPEED_1000]);                           │                             phy_data->tx_amp[XGBE_SPEED_10000]);                         
        XRXTX_IOWRITE_BITS(pdata, RXTX_REG20, BLWC_ENA,                                  │          XRXTX_IOWRITE_BITS(pdata, RXTX_REG20, BLWC_ENA,                                 
                           phy_data->blwc[XGBE_SPEED_1000]);                             │                             phy_data->blwc[XGBE_SPEED_10000]);                           
        XRXTX_IOWRITE_BITS(pdata, RXTX_REG114, PQ_REG,                                   │          XRXTX_IOWRITE_BITS(pdata, RXTX_REG114, PQ_REG,                                  
                           phy_data->pq_skew[XGBE_SPEED_1000]);                          │                             phy_data->pq_skew[XGBE_SPEED_10000]);                        
        XRXTX_IOWRITE_BITS(pdata, RXTX_REG129, RXDFE_CONFIG,                             │          XRXTX_IOWRITE_BITS(pdata, RXTX_REG129, RXDFE_CONFIG,                            
                           phy_data->dfe_tap_cfg[XGBE_SPEED_1000]);                      │                             phy_data->dfe_tap_cfg[XGBE_SPEED_10000]);                    
        XRXTX_IOWRITE(pdata, RXTX_REG22,                                                 │          XRXTX_IOWRITE(pdata, RXTX_REG22,                                                
                      phy_data->dfe_tap_ena[XGBE_SPEED_1000]);                           │                        phy_data->dfe_tap_ena[XGBE_SPEED_10000]);                         
                                                                                         │                                                                                          
        xgbe_phy_complete_ratechange(pdata);                                             │          xgbe_phy_complete_ratechange(pdata);                                            
                                                                                         │                                                                                          
        netif_dbg(pdata, link, pdata->netdev, "1GbE KX mode set\n");                     │          netif_dbg(pdata, link, pdata->netdev, "10GbE KR mode set\n");                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/xgbe/xgbe-phy-v1.c:454                                   │ linux/drivers/net/ethernet/amd/xgbe/xgbe-phy-v1.c:411                                    
                                                                                         │                                                                                          
        struct xgbe_phy_data *phy_data = pdata->phy_data;                                │          struct xgbe_phy_data *phy_data = pdata->phy_data;                               
        unsigned int reg;                                                                │          unsigned int reg;                                                               
                                                                                         │                                                                                          
        /* Set PCS to KX/1G speed */                                                     │          /* Set PCS to KX/1G speed */                                                    
        reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL2);                               │          reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL2);                              
        reg &= ~MDIO_PCS_CTRL2_TYPE;                                                     │          reg &= ~MDIO_PCS_CTRL2_TYPE;                                                    
        reg |= MDIO_PCS_CTRL2_10GBX;                                                     │          reg |= MDIO_PCS_CTRL2_10GBX;                                                    
        XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL2, reg);                               │          XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL2, reg);                              
                                                                                         │                                                                                          
        reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1);                               │          reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1);                              
        reg &= ~MDIO_CTRL1_SPEEDSEL;                                                     │          reg &= ~MDIO_CTRL1_SPEEDSEL;                                                    
        reg |= MDIO_CTRL1_SPEED1G;                                                       │          reg |= MDIO_CTRL1_SPEED1G;                                                      
        XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, reg);                               │          XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, reg);                              
                                                                                         │                                                                                          
        xgbe_phy_pcs_power_cycle(pdata);                                                 │          xgbe_phy_pcs_power_cycle(pdata);                                                
                                                                                         │                                                                                          
        /* Set SerDes to 1G speed */                                                     │          /* Set SerDes to 2.5G speed */                                                  
        xgbe_phy_start_ratechange(pdata);                                                │          xgbe_phy_start_ratechange(pdata);                                               
                                                                                         │                                                                                          
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, DATARATE, XGBE_SPEED_1000_RATE);           │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, DATARATE, XGBE_SPEED_2500_RATE);          
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, WORDMODE, XGBE_SPEED_1000_WORD);           │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, WORDMODE, XGBE_SPEED_2500_WORD);          
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, PLLSEL, XGBE_SPEED_1000_PLL);              │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, PLLSEL, XGBE_SPEED_2500_PLL);             
                                                                                         │                                                                                          
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, CDR_RATE,                                  │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, CDR_RATE,                                 
                           phy_data->cdr_rate[XGBE_SPEED_1000]);                         │                             phy_data->cdr_rate[XGBE_SPEED_2500]);                        
        XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, TXAMP,                                     │          XSIR1_IOWRITE_BITS(pdata, SIR1_SPEED, TXAMP,                                    
                           phy_data->tx_amp[XGBE_SPEED_1000]);                           │                             phy_data->tx_amp[XGBE_SPEED_2500]);                          
        XRXTX_IOWRITE_BITS(pdata, RXTX_REG20, BLWC_ENA,                                  │          XRXTX_IOWRITE_BITS(pdata, RXTX_REG20, BLWC_ENA,                                 
                           phy_data->blwc[XGBE_SPEED_1000]);                             │                             phy_data->blwc[XGBE_SPEED_2500]);                            
        XRXTX_IOWRITE_BITS(pdata, RXTX_REG114, PQ_REG,                                   │          XRXTX_IOWRITE_BITS(pdata, RXTX_REG114, PQ_REG,                                  
                           phy_data->pq_skew[XGBE_SPEED_1000]);                          │                             phy_data->pq_skew[XGBE_SPEED_2500]);                         
        XRXTX_IOWRITE_BITS(pdata, RXTX_REG129, RXDFE_CONFIG,                             │          XRXTX_IOWRITE_BITS(pdata, RXTX_REG129, RXDFE_CONFIG,                            
                           phy_data->dfe_tap_cfg[XGBE_SPEED_1000]);                      │                             phy_data->dfe_tap_cfg[XGBE_SPEED_2500]);                     
        XRXTX_IOWRITE(pdata, RXTX_REG22,                                                 │          XRXTX_IOWRITE(pdata, RXTX_REG22,                                                
                      phy_data->dfe_tap_ena[XGBE_SPEED_1000]);                           │                        phy_data->dfe_tap_ena[XGBE_SPEED_2500]);                          
                                                                                         │                                                                                          
        xgbe_phy_complete_ratechange(pdata);                                             │          xgbe_phy_complete_ratechange(pdata);                                            
                                                                                         │                                                                                          
        netif_dbg(pdata, link, pdata->netdev, "1GbE KX mode set\n");                     │          netif_dbg(pdata, link, pdata->netdev, "2.5GbE KX mode set\n");                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:1581                                │ linux/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:652                              
                                                                                         │                                                                                          
        union ixgbe_adv_rx_desc *rx_desc;                                                │          union ixgbe_adv_rx_desc *rx_desc;                                               
        struct ixgbe_rx_buffer *bi;                                                      │          struct ixgbevf_rx_buffer *bi;                                                   
        u16 i = rx_ring->next_to_use;                                                    │          unsigned int i = rx_ring->next_to_use;                                          
        u16 bufsz;                                                                       │                                                                                          
                                                                                         │                                                                                          
        /* nothing to do */                                                              │          /* nothing to do or no valid netdev defined */                                  
        if (!cleaned_count)                                                              │          if (!cleaned_count || !rx_ring->netdev)                                         
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        rx_desc = IXGBE_RX_DESC(rx_ring, i);                                             │          rx_desc = IXGBEVF_RX_DESC(rx_ring, i);                                          
        bi = &rx_ring->rx_buffer_info[i];                                                │          bi = &rx_ring->rx_buffer_info[i];                                               
        i -= rx_ring->count;                                                             │          i -= rx_ring->count;                                                            
                                                                                         │                                                                                          
        bufsz = ixgbe_rx_bufsz(rx_ring);                                                 │                                                                                          
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                if (!ixgbe_alloc_mapped_page(rx_ring, bi))                               │                  if (!ixgbevf_alloc_mapped_page(rx_ring, bi))                            
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* sync the buffer for use by the device */                              │                  /* sync the buffer for use by the device */                             
                dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                  │                  dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                 
                                                 bi->page_offset, bufsz,                 │                                                   bi->page_offset,                       
                                                                                         │                                                   ixgbevf_rx_bufsz(rx_ring),             
                                                 DMA_FROM_DEVICE);                       │                                                   DMA_FROM_DEVICE);                      
                                                                                         │                                                                                          
                /*                                                                       │                  /* Refresh the desc even if pkt_addr didn't change                      
                 * Refresh the desc even if buffer_addrs didn't change                   │                                                                                          
                 * because each write-back erases this info.                             │                   * because each write-back erases this info.                            
                 */                                                                      │                   */                                                                     
                rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);         │                  rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);        
                                                                                         │                                                                                          
                rx_desc++;                                                               │                  rx_desc++;                                                              
                bi++;                                                                    │                  bi++;                                                                   
                i++;                                                                     │                  i++;                                                                    
                if (unlikely(!i)) {                                                      │                  if (unlikely(!i)) {                                                     
                        rx_desc = IXGBE_RX_DESC(rx_ring, 0);                             │                          rx_desc = IXGBEVF_RX_DESC(rx_ring, 0);                          
                        bi = rx_ring->rx_buffer_info;                                    │                          bi = rx_ring->rx_buffer_info;                                   
                        i -= rx_ring->count;                                             │                          i -= rx_ring->count;                                            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* clear the length for the next_to_use descriptor */                    │                  /* clear the length for the next_to_use descriptor */                   
                rx_desc->wb.upper.length = 0;                                            │                  rx_desc->wb.upper.length = 0;                                           
                                                                                         │                                                                                          
                cleaned_count--;                                                         │                  cleaned_count--;                                                        
        } while (cleaned_count);                                                         │          } while (cleaned_count);                                                        
                                                                                         │                                                                                          
        i += rx_ring->count;                                                             │          i += rx_ring->count;                                                            
                                                                                         │                                                                                          
        if (rx_ring->next_to_use != i) {                                                 │          if (rx_ring->next_to_use != i) {                                                
                                                                                         │                  /* record the next descriptor to use */                                 
                rx_ring->next_to_use = i;                                                │                  rx_ring->next_to_use = i;                                               
                                                                                         │                                                                                          
                /* update next to alloc since we have filled the ring */                 │                  /* update next to alloc since we have filled the ring */                
                rx_ring->next_to_alloc = i;                                              │                  rx_ring->next_to_alloc = i;                                             
                                                                                         │                                                                                          
                /* Force memory writes to complete before letting h/w                    │                  /* Force memory writes to complete before letting h/w                   
                 * know there are new descriptors to fetch.  (Only                       │                   * know there are new descriptors to fetch.  (Only                      
                 * applicable for weak-ordered memory model archs,                       │                   * applicable for weak-ordered memory model archs,                      
                 * such as IA-64).                                                       │                   * such as IA-64).                                                      
                 */                                                                      │                   */                                                                     
                wmb();                                                                   │                  wmb();                                                                  
                writel(i, rx_ring->tail);                                                │                  ixgbevf_write_tail(rx_ring, i);                                         
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:1581                                │ linux/drivers/net/ethernet/intel/igb/igb_main.c:8952                                     
                                                                                         │                                                                                          
        union ixgbe_adv_rx_desc *rx_desc;                                                │          union e1000_adv_rx_desc *rx_desc;                                               
        struct ixgbe_rx_buffer *bi;                                                      │          struct igb_rx_buffer *bi;                                                       
        u16 i = rx_ring->next_to_use;                                                    │          u16 i = rx_ring->next_to_use;                                                   
        u16 bufsz;                                                                       │          u16 bufsz;                                                                      
                                                                                         │                                                                                          
        /* nothing to do */                                                              │          /* nothing to do */                                                             
        if (!cleaned_count)                                                              │          if (!cleaned_count)                                                             
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        rx_desc = IXGBE_RX_DESC(rx_ring, i);                                             │          rx_desc = IGB_RX_DESC(rx_ring, i);                                              
        bi = &rx_ring->rx_buffer_info[i];                                                │          bi = &rx_ring->rx_buffer_info[i];                                               
        i -= rx_ring->count;                                                             │          i -= rx_ring->count;                                                            
                                                                                         │                                                                                          
        bufsz = ixgbe_rx_bufsz(rx_ring);                                                 │          bufsz = igb_rx_bufsz(rx_ring);                                                  
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                if (!ixgbe_alloc_mapped_page(rx_ring, bi))                               │                  if (!igb_alloc_mapped_page(rx_ring, bi))                                
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* sync the buffer for use by the device */                              │                  /* sync the buffer for use by the device */                             
                dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                  │                  dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                 
                                                 bi->page_offset, bufsz,                 │                                                   bi->page_offset, bufsz,                
                                                 DMA_FROM_DEVICE);                       │                                                   DMA_FROM_DEVICE);                      
                                                                                         │                                                                                          
                /*                                                                       │                  /* Refresh the desc even if buffer_addrs didn't change                  
                 * Refresh the desc even if buffer_addrs didn't change                   │                                                                                          
                 * because each write-back erases this info.                             │                   * because each write-back erases this info.                            
                 */                                                                      │                   */                                                                     
                rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);         │                  rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);        
                                                                                         │                                                                                          
                rx_desc++;                                                               │                  rx_desc++;                                                              
                bi++;                                                                    │                  bi++;                                                                   
                i++;                                                                     │                  i++;                                                                    
                if (unlikely(!i)) {                                                      │                  if (unlikely(!i)) {                                                     
                        rx_desc = IXGBE_RX_DESC(rx_ring, 0);                             │                          rx_desc = IGB_RX_DESC(rx_ring, 0);                              
                        bi = rx_ring->rx_buffer_info;                                    │                          bi = rx_ring->rx_buffer_info;                                   
                        i -= rx_ring->count;                                             │                          i -= rx_ring->count;                                            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* clear the length for the next_to_use descriptor */                    │                  /* clear the length for the next_to_use descriptor */                   
                rx_desc->wb.upper.length = 0;                                            │                  rx_desc->wb.upper.length = 0;                                           
                                                                                         │                                                                                          
                cleaned_count--;                                                         │                  cleaned_count--;                                                        
        } while (cleaned_count);                                                         │          } while (cleaned_count);                                                        
                                                                                         │                                                                                          
        i += rx_ring->count;                                                             │          i += rx_ring->count;                                                            
                                                                                         │                                                                                          
        if (rx_ring->next_to_use != i) {                                                 │          if (rx_ring->next_to_use != i) {                                                
                                                                                         │                  /* record the next descriptor to use */                                 
                rx_ring->next_to_use = i;                                                │                  rx_ring->next_to_use = i;                                               
                                                                                         │                                                                                          
                /* update next to alloc since we have filled the ring */                 │                  /* update next to alloc since we have filled the ring */                
                rx_ring->next_to_alloc = i;                                              │                  rx_ring->next_to_alloc = i;                                             
                                                                                         │                                                                                          
                /* Force memory writes to complete before letting h/w                    │                  /* Force memory writes to complete before letting h/w                   
                 * know there are new descriptors to fetch.  (Only                       │                   * know there are new descriptors to fetch.  (Only                      
                 * applicable for weak-ordered memory model archs,                       │                   * applicable for weak-ordered memory model archs,                      
                 * such as IA-64).                                                       │                   * such as IA-64).                                                      
                 */                                                                      │                   */                                                                     
                wmb();                                                                   │                  dma_wmb();                                                              
                writel(i, rx_ring->tail);                                                │                  writel(i, rx_ring->tail);                                               
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:1581                                │ linux/drivers/net/ethernet/intel/igc/igc_main.c:2011                                     
                                                                                         │                                                                                          
        union ixgbe_adv_rx_desc *rx_desc;                                                │          union igc_adv_rx_desc *rx_desc;                                                 
        struct ixgbe_rx_buffer *bi;                                                      │                                                                                          
        u16 i = rx_ring->next_to_use;                                                    │          u16 i = rx_ring->next_to_use;                                                   
                                                                                         │          struct igc_rx_buffer *bi;                                                       
        u16 bufsz;                                                                       │          u16 bufsz;                                                                      
                                                                                         │                                                                                          
        /* nothing to do */                                                              │          /* nothing to do */                                                             
        if (!cleaned_count)                                                              │          if (!cleaned_count)                                                             
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        rx_desc = IXGBE_RX_DESC(rx_ring, i);                                             │          rx_desc = IGC_RX_DESC(rx_ring, i);                                              
        bi = &rx_ring->rx_buffer_info[i];                                                │          bi = &rx_ring->rx_buffer_info[i];                                               
        i -= rx_ring->count;                                                             │          i -= rx_ring->count;                                                            
                                                                                         │                                                                                          
        bufsz = ixgbe_rx_bufsz(rx_ring);                                                 │          bufsz = igc_rx_bufsz(rx_ring);                                                  
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                if (!ixgbe_alloc_mapped_page(rx_ring, bi))                               │                  if (!igc_alloc_mapped_page(rx_ring, bi))                                
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                /* sync the buffer for use by the device */                              │                  /* sync the buffer for use by the device */                             
                dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                  │                  dma_sync_single_range_for_device(rx_ring->dev, bi->dma,                 
                                                 bi->page_offset, bufsz,                 │                                                   bi->page_offset, bufsz,                
                                                 DMA_FROM_DEVICE);                       │                                                   DMA_FROM_DEVICE);                      
                                                                                         │                                                                                          
                /*                                                                       │                  /* Refresh the desc even if buffer_addrs didn't change                  
                 * Refresh the desc even if buffer_addrs didn't change                   │                                                                                          
                 * because each write-back erases this info.                             │                   * because each write-back erases this info.                            
                 */                                                                      │                   */                                                                     
                rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);         │                  rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);        
                                                                                         │                                                                                          
                rx_desc++;                                                               │                  rx_desc++;                                                              
                bi++;                                                                    │                  bi++;                                                                   
                i++;                                                                     │                  i++;                                                                    
                if (unlikely(!i)) {                                                      │                  if (unlikely(!i)) {                                                     
                        rx_desc = IXGBE_RX_DESC(rx_ring, 0);                             │                          rx_desc = IGC_RX_DESC(rx_ring, 0);                              
                        bi = rx_ring->rx_buffer_info;                                    │                          bi = rx_ring->rx_buffer_info;                                   
                        i -= rx_ring->count;                                             │                          i -= rx_ring->count;                                            
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* clear the length for the next_to_use descriptor */                    │                  /* clear the length for the next_to_use descriptor */                   
                rx_desc->wb.upper.length = 0;                                            │                  rx_desc->wb.upper.length = 0;                                           
                                                                                         │                                                                                          
                cleaned_count--;                                                         │                  cleaned_count--;                                                        
        } while (cleaned_count);                                                         │          } while (cleaned_count);                                                        
                                                                                         │                                                                                          
        i += rx_ring->count;                                                             │          i += rx_ring->count;                                                            
                                                                                         │                                                                                          
        if (rx_ring->next_to_use != i) {                                                 │          if (rx_ring->next_to_use != i) {                                                
                                                                                         │                  /* record the next descriptor to use */                                 
                rx_ring->next_to_use = i;                                                │                  rx_ring->next_to_use = i;                                               
                                                                                         │                                                                                          
                /* update next to alloc since we have filled the ring */                 │                  /* update next to alloc since we have filled the ring */                
                rx_ring->next_to_alloc = i;                                              │                  rx_ring->next_to_alloc = i;                                             
                                                                                         │                                                                                          
                /* Force memory writes to complete before letting h/w                    │                  /* Force memory writes to complete before letting h/w                   
                 * know there are new descriptors to fetch.  (Only                       │                   * know there are new descriptors to fetch.  (Only                      
                 * applicable for weak-ordered memory model archs,                       │                   * applicable for weak-ordered memory model archs,                      
                 * such as IA-64).                                                       │                   * such as IA-64).                                                      
                 */                                                                      │                   */                                                                     
                wmb();                                                                   │                  wmb();                                                                  
                writel(i, rx_ring->tail);                                                │                  writel(i, rx_ring->tail);                                               
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_dcb.c:514                                      │ linux/drivers/net/ethernet/intel/i40e/i40e_dcb.c:413                                     
                                                                                         │                                                                                          
        struct ice_cee_feat_tlv *sub_tlv;                                                │          u16 len, tlvlen, sublen, typelength;                                            
                                                                                         │          struct i40e_cee_feat_tlv *sub_tlv;                                              
        u8 subtype, feat_tlv_count = 0;                                                  │          u8 subtype, feat_tlv_count = 0;                                                 
        u16 len, tlvlen, typelen;                                                        │                                                                                          
        u32 ouisubtype;                                                                  │          u32 ouisubtype;                                                                 
                                                                                         │                                                                                          
        ouisubtype = ntohl(tlv->ouisubtype);                                             │          ouisubtype = ntohl(tlv->ouisubtype);                                            
        subtype = (u8)((ouisubtype & ICE_LLDP_TLV_SUBTYPE_M) >>                          │          subtype = (u8)((ouisubtype & I40E_LLDP_TLV_SUBTYPE_MASK) >>                     
                       ICE_LLDP_TLV_SUBTYPE_S);                                          │                         I40E_LLDP_TLV_SUBTYPE_SHIFT);                                    
        /* Return if not CEE DCBX */                                                     │          /* Return if not CEE DCBX */                                                    
        if (subtype != ICE_CEE_DCBX_TYPE)                                                │          if (subtype != I40E_CEE_DCBX_TYPE)                                              
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        typelen = ntohs(tlv->typelen);                                                   │          typelength = ntohs(tlv->typelength);                                            
        tlvlen = ((typelen & ICE_LLDP_TLV_LEN_M) >> ICE_LLDP_TLV_LEN_S);                 │          tlvlen = (u16)((typelength & I40E_LLDP_TLV_LEN_MASK) >>                         
        len = sizeof(tlv->typelen) + sizeof(ouisubtype) +                                │                          I40E_LLDP_TLV_LEN_SHIFT);                                       
                sizeof(struct ice_cee_ctrl_tlv);                                         │          len = sizeof(tlv->typelength) + sizeof(ouisubtype) +                            
                                                                                         │                sizeof(struct i40e_cee_ctrl_tlv);                                         
        /* Return if no CEE DCBX Feature TLVs */                                         │          /* Return if no CEE DCBX Feature TLVs */                                        
        if (tlvlen <= len)                                                               │          if (tlvlen <= len)                                                              
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        sub_tlv = (struct ice_cee_feat_tlv *)((char *)tlv + len);                        │          sub_tlv = (struct i40e_cee_feat_tlv *)((char *)tlv + len);                      
        while (feat_tlv_count < ICE_CEE_MAX_FEAT_TYPE) {                                 │          while (feat_tlv_count < I40E_CEE_MAX_FEAT_TYPE) {                               
                u16 sublen;                                                              │                  typelength = ntohs(sub_tlv->hdr.typelen);                               
                                                                                         │                  sublen = (u16)((typelength &                                            
                typelen = ntohs(sub_tlv->hdr.typelen);                                   │                                  I40E_LLDP_TLV_LEN_MASK) >>                              
                sublen = ((typelen & ICE_LLDP_TLV_LEN_M) >> ICE_LLDP_TLV_LEN_S);         │                                  I40E_LLDP_TLV_LEN_SHIFT);                               
                subtype = (u8)((typelen & ICE_LLDP_TLV_TYPE_M) >>                        │                  subtype = (u8)((typelength & I40E_LLDP_TLV_TYPE_MASK) >>                
                               ICE_LLDP_TLV_TYPE_S);                                     │                                  I40E_LLDP_TLV_TYPE_SHIFT);                              
                switch (subtype) {                                                       │                  switch (subtype) {                                                      
                case ICE_CEE_SUBTYPE_PG_CFG:                                             │                  case I40E_CEE_SUBTYPE_PG_CFG:                                           
                        ice_parse_cee_pgcfg_tlv(sub_tlv, dcbcfg);                        │                          i40e_parse_cee_pgcfg_tlv(sub_tlv, dcbcfg);                      
                        break;                                                           │                          break;                                                          
                case ICE_CEE_SUBTYPE_PFC_CFG:                                            │                  case I40E_CEE_SUBTYPE_PFC_CFG:                                          
                        ice_parse_cee_pfccfg_tlv(sub_tlv, dcbcfg);                       │                          i40e_parse_cee_pfccfg_tlv(sub_tlv, dcbcfg);                     
                        break;                                                           │                          break;                                                          
                case ICE_CEE_SUBTYPE_APP_PRI:                                            │                  case I40E_CEE_SUBTYPE_APP_PRI:                                          
                        ice_parse_cee_app_tlv(sub_tlv, dcbcfg);                          │                          i40e_parse_cee_app_tlv(sub_tlv, dcbcfg);                        
                        break;                                                           │                          break;                                                          
                default:                                                                 │                  default:                                                                
                        return; /* Invalid Sub-type return */                            │                          return; /* Invalid Sub-type return */                           
                }                                                                        │                  }                                                                       
                feat_tlv_count++;                                                        │                  feat_tlv_count++;                                                       
                /* Move to next sub TLV */                                               │                  /* Move to next sub TLV */                                              
                sub_tlv = (struct ice_cee_feat_tlv *)                                    │                  sub_tlv = (struct i40e_cee_feat_tlv *)((char *)sub_tlv +                
                          ((char *)sub_tlv + sizeof(sub_tlv->hdr.typelen) +              │                                                  sizeof(sub_tlv->hdr.typelen) +          
                           sublen);                                                      │                                                  sublen);                                
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/mac.c:942                                       │ linux/drivers/net/ethernet/intel/igb/e1000_mac.c:838                                     
                                                                                         │                                                                                          
        u32 ctrl;                                                                        │          u32 ctrl;                                                                       
                                                                                         │          s32 ret_val = 0;                                                                
                                                                                         │                                                                                          
        ctrl = er32(CTRL);                                                               │          ctrl = rd32(E1000_CTRL);                                                        
                                                                                         │                                                                                          
        /* Because we didn't get link via the internal auto-negotiation                  │          /* Because we didn't get link via the internal auto-negotiation                 
         * mechanism (we either forced link or we got link via PHY                       │           * mechanism (we either forced link or we got link via PHY                      
         * auto-neg), we have to manually enable/disable transmit an                     │           * auto-neg), we have to manually enable/disable transmit an                    
         * receive flow control.                                                         │           * receive flow control.                                                        
         *                                                                               │           *                                                                              
         * The "Case" statement below enables/disable flow control                       │           * The "Case" statement below enables/disable flow control                      
         * according to the "hw->fc.current_mode" parameter.                             │           * according to the "hw->fc.current_mode" parameter.                            
         *                                                                               │           *                                                                              
         * The possible values of the "fc" parameter are:                                │           * The possible values of the "fc" parameter are:                               
         *      0:  Flow control is completely disabled                                  │           *      0:  Flow control is completely disabled                                 
         *      1:  Rx flow control is enabled (we can receive pause                     │           *      1:  Rx flow control is enabled (we can receive pause                    
         *          frames but not send pause frames).                                   │           *          frames but not send pause frames).                                  
         *      2:  Tx flow control is enabled (we can send pause frames                 │           *      2:  Tx flow control is enabled (we can send pause frames                
         *          frames but we do not receive pause frames).                          │           *          frames but we do not receive pause frames).                         
         *      3:  Both Rx and Tx flow control (symmetric) is enabled.                  │           *      3:  Both Rx and TX flow control (symmetric) is enabled.                 
         *  other:  No other values should be possible at this point.                    │           *  other:  No other values should be possible at this point.                   
         */                                                                              │           */                                                                             
        e_dbg("hw->fc.current_mode = %u\n", hw->fc.current_mode);                        │          hw_dbg("hw->fc.current_mode = %u\n", hw->fc.current_mode);                      
                                                                                         │                                                                                          
        switch (hw->fc.current_mode) {                                                   │          switch (hw->fc.current_mode) {                                                  
        case e1000_fc_none:                                                              │          case e1000_fc_none:                                                             
                ctrl &= (~(E1000_CTRL_TFCE | E1000_CTRL_RFCE));                          │                  ctrl &= (~(E1000_CTRL_TFCE | E1000_CTRL_RFCE));                         
                break;                                                                   │                  break;                                                                  
        case e1000_fc_rx_pause:                                                          │          case e1000_fc_rx_pause:                                                         
                ctrl &= (~E1000_CTRL_TFCE);                                              │                  ctrl &= (~E1000_CTRL_TFCE);                                             
                ctrl |= E1000_CTRL_RFCE;                                                 │                  ctrl |= E1000_CTRL_RFCE;                                                
                break;                                                                   │                  break;                                                                  
        case e1000_fc_tx_pause:                                                          │          case e1000_fc_tx_pause:                                                         
                ctrl &= (~E1000_CTRL_RFCE);                                              │                  ctrl &= (~E1000_CTRL_RFCE);                                             
                ctrl |= E1000_CTRL_TFCE;                                                 │                  ctrl |= E1000_CTRL_TFCE;                                                
                break;                                                                   │                  break;                                                                  
        case e1000_fc_full:                                                              │          case e1000_fc_full:                                                             
                ctrl |= (E1000_CTRL_TFCE | E1000_CTRL_RFCE);                             │                  ctrl |= (E1000_CTRL_TFCE | E1000_CTRL_RFCE);                            
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                e_dbg("Flow control param set incorrectly\n");                           │                  hw_dbg("Flow control param set incorrectly\n");                         
                return -E1000_ERR_CONFIG;                                                │                  ret_val = -E1000_ERR_CONFIG;                                            
                                                                                         │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ew32(CTRL, ctrl);                                                                │          wr32(E1000_CTRL, ctrl);                                                         
                                                                                         │                                                                                          
        return 0;                                                                        │  out:                                                                                    
                                                                                         │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/agere/et131x.c:1171                                          │ linux/drivers/net/ethernet/agere/et131x.c:1240                                           
                                                                                         │                                                                                          
        struct mac_regs __iomem *mac = &adapter->regs->mac;                              │          struct mac_regs __iomem *mac = &adapter->regs->mac;                             
        int status = 0;                                                                  │          int status = 0;                                                                 
        u32 delay = 0;                                                                   │          u32 delay = 0;                                                                  
        u32 mii_addr;                                                                    │          u32 mii_addr;                                                                   
        u32 mii_cmd;                                                                     │          u32 mii_cmd;                                                                    
        u32 mii_indicator;                                                               │          u32 mii_indicator;                                                              
                                                                                         │                                                                                          
        /* Save a local copy of the registers we are dealing with so we can              │          /* Save a local copy of the registers we are dealing with so we can             
         * set them back                                                                 │           * set them back                                                                
         */                                                                              │           */                                                                             
        mii_addr = readl(&mac->mii_mgmt_addr);                                           │          mii_addr = readl(&mac->mii_mgmt_addr);                                          
        mii_cmd = readl(&mac->mii_mgmt_cmd);                                             │          mii_cmd = readl(&mac->mii_mgmt_cmd);                                            
                                                                                         │                                                                                          
        /* Stop the current operation */                                                 │          /* Stop the current operation */                                                
        writel(0, &mac->mii_mgmt_cmd);                                                   │          writel(0, &mac->mii_mgmt_cmd);                                                  
                                                                                         │                                                                                          
        /* Set up the register we need to read from on the correct PHY */                │          /* Set up the register we need to write to on the correct PHY */                
        writel(ET_MAC_MII_ADDR(addr, reg), &mac->mii_mgmt_addr);                         │          writel(ET_MAC_MII_ADDR(addr, reg), &mac->mii_mgmt_addr);                        
                                                                                         │                                                                                          
        writel(0x1, &mac->mii_mgmt_cmd);                                                 │          /* Add the value to write to the registers to the mac */                        
                                                                                         │          writel(value, &mac->mii_mgmt_ctrl);                                             
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                udelay(50);                                                              │                  udelay(50);                                                             
                delay++;                                                                 │                  delay++;                                                                
                mii_indicator = readl(&mac->mii_mgmt_indicator);                         │                  mii_indicator = readl(&mac->mii_mgmt_indicator);                        
        } while ((mii_indicator & ET_MAC_MGMT_WAIT) && delay < 50);                      │          } while ((mii_indicator & ET_MAC_MGMT_BUSY) && delay < 100);                    
                                                                                         │                                                                                          
                                                                                         │          /* If we hit the max delay, we could not write the register */                  
                                                                                         │          if (delay == 100) {                                                             
                                                                                         │                  u16 tmp;                                                                
                                                                                         │                                                                                          
        /* If we hit the max delay, we could not read the register */                    │                                                                                          
        if (delay == 50) {                                                               │                                                                                          
                dev_warn(&adapter->pdev->dev,                                            │                  dev_warn(&adapter->pdev->dev,                                           
                         "reg 0x%08x could not be read\n", reg);                         │                           "reg 0x%08x could not be written", reg);                       
                dev_warn(&adapter->pdev->dev, "status is  0x%08x\n",                     │                  dev_warn(&adapter->pdev->dev, "status is  0x%08x\n",                    
                         mii_indicator);                                                 │                           mii_indicator);                                                
                                                                                         │                  dev_warn(&adapter->pdev->dev, "command is  0x%08x\n",                   
                                                                                         │                           readl(&mac->mii_mgmt_cmd));                                    
                                                                                         │                                                                                          
                                                                                         │                  et131x_mii_read(adapter, reg, &tmp);                                    
                                                                                         │                                                                                          
                status = -EIO;                                                           │                  status = -EIO;                                                          
                goto out;                                                                │                                                                                          
        }                                                                                │          }                                                                               
                                                                                         │          /* Stop the write operation */                                                  
        /* If we hit here we were able to read the register and we need to               │                                                                                          
         * return the value to the caller                                                │                                                                                          
         */                                                                              │                                                                                          
        *value = readl(&mac->mii_mgmt_stat) & ET_MAC_MIIMGMT_STAT_PHYCRTL_MASK;          │                                                                                          
                                                                                         │                                                                                          
out:                                                                                     │                                                                                          
        /* Stop the read operation */                                                    │                                                                                          
        writel(0, &mac->mii_mgmt_cmd);                                                   │          writel(0, &mac->mii_mgmt_cmd);                                                  
                                                                                         │                                                                                          
        /* set the registers we touched back to the state at which we entered            │          /* set the registers we touched back to the state at which we entered           
         * this function                                                                 │           * this function                                                                
         */                                                                              │           */                                                                             
        writel(mii_addr, &mac->mii_mgmt_addr);                                           │          writel(mii_addr, &mac->mii_mgmt_addr);                                          
        writel(mii_cmd, &mac->mii_mgmt_cmd);                                             │          writel(mii_cmd, &mac->mii_mgmt_cmd);                                            
                                                                                         │                                                                                          
        return status;                                                                   │          return status;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/mac.c:1467                                      │ linux/drivers/net/ethernet/intel/igb/e1000_mac.c:1396                                    
                                                                                         │                                                                                          
        struct e1000_mac_info *mac = &hw->mac;                                           │          struct e1000_mac_info *mac = &hw->mac;                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        const u32 ledctl_mask = 0x000000FF;                                              │          const u32 ledctl_mask = 0x000000FF;                                             
        const u32 ledctl_on = E1000_LEDCTL_MODE_LED_ON;                                  │          const u32 ledctl_on = E1000_LEDCTL_MODE_LED_ON;                                 
        const u32 ledctl_off = E1000_LEDCTL_MODE_LED_OFF;                                │          const u32 ledctl_off = E1000_LEDCTL_MODE_LED_OFF;                               
        u16 data, i, temp;                                                               │          u16 data, i, temp;                                                              
        const u16 led_mask = 0x0F;                                                       │          const u16 led_mask = 0x0F;                                                      
                                                                                         │                                                                                          
        ret_val = hw->nvm.ops.valid_led_default(hw, &data);                              │          /* i210 and i211 devices have different LED mechanism */                        
                                                                                         │          if ((hw->mac.type == e1000_i210) ||                                             
                                                                                         │              (hw->mac.type == e1000_i211))                                               
                                                                                         │                  ret_val = igb_valid_led_default_i210(hw, &data);                        
                                                                                         │          else                                                                            
                                                                                         │                  ret_val = igb_valid_led_default(hw, &data);                             
                                                                                         │                                                                                          
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        mac->ledctl_default = er32(LEDCTL);                                              │          mac->ledctl_default = rd32(E1000_LEDCTL);                                       
        mac->ledctl_mode1 = mac->ledctl_default;                                         │          mac->ledctl_mode1 = mac->ledctl_default;                                        
        mac->ledctl_mode2 = mac->ledctl_default;                                         │          mac->ledctl_mode2 = mac->ledctl_default;                                        
                                                                                         │                                                                                          
        for (i = 0; i < 4; i++) {                                                        │          for (i = 0; i < 4; i++) {                                                       
                temp = (data >> (i << 2)) & led_mask;                                    │                  temp = (data >> (i << 2)) & led_mask;                                   
                switch (temp) {                                                          │                  switch (temp) {                                                         
                case ID_LED_ON1_DEF2:                                                    │                  case ID_LED_ON1_DEF2:                                                   
                case ID_LED_ON1_ON2:                                                     │                  case ID_LED_ON1_ON2:                                                    
                case ID_LED_ON1_OFF2:                                                    │                  case ID_LED_ON1_OFF2:                                                   
                        mac->ledctl_mode1 &= ~(ledctl_mask << (i << 3));                 │                          mac->ledctl_mode1 &= ~(ledctl_mask << (i << 3));                
                        mac->ledctl_mode1 |= ledctl_on << (i << 3);                      │                          mac->ledctl_mode1 |= ledctl_on << (i << 3);                     
                        break;                                                           │                          break;                                                          
                case ID_LED_OFF1_DEF2:                                                   │                  case ID_LED_OFF1_DEF2:                                                  
                case ID_LED_OFF1_ON2:                                                    │                  case ID_LED_OFF1_ON2:                                                   
                case ID_LED_OFF1_OFF2:                                                   │                  case ID_LED_OFF1_OFF2:                                                  
                        mac->ledctl_mode1 &= ~(ledctl_mask << (i << 3));                 │                          mac->ledctl_mode1 &= ~(ledctl_mask << (i << 3));                
                        mac->ledctl_mode1 |= ledctl_off << (i << 3);                     │                          mac->ledctl_mode1 |= ledctl_off << (i << 3);                    
                        break;                                                           │                          break;                                                          
                default:                                                                 │                  default:                                                                
                        /* Do nothing */                                                 │                          /* Do nothing */                                                
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                switch (temp) {                                                          │                  switch (temp) {                                                         
                case ID_LED_DEF1_ON2:                                                    │                  case ID_LED_DEF1_ON2:                                                   
                case ID_LED_ON1_ON2:                                                     │                  case ID_LED_ON1_ON2:                                                    
                case ID_LED_OFF1_ON2:                                                    │                  case ID_LED_OFF1_ON2:                                                   
                        mac->ledctl_mode2 &= ~(ledctl_mask << (i << 3));                 │                          mac->ledctl_mode2 &= ~(ledctl_mask << (i << 3));                
                        mac->ledctl_mode2 |= ledctl_on << (i << 3);                      │                          mac->ledctl_mode2 |= ledctl_on << (i << 3);                     
                        break;                                                           │                          break;                                                          
                case ID_LED_DEF1_OFF2:                                                   │                  case ID_LED_DEF1_OFF2:                                                  
                case ID_LED_ON1_OFF2:                                                    │                  case ID_LED_ON1_OFF2:                                                   
                case ID_LED_OFF1_OFF2:                                                   │                  case ID_LED_OFF1_OFF2:                                                  
                        mac->ledctl_mode2 &= ~(ledctl_mask << (i << 3));                 │                          mac->ledctl_mode2 &= ~(ledctl_mask << (i << 3));                
                        mac->ledctl_mode2 |= ledctl_off << (i << 3);                     │                          mac->ledctl_mode2 |= ledctl_off << (i << 3);                    
                        break;                                                           │                          break;                                                          
                default:                                                                 │                  default:                                                                
                        /* Do nothing */                                                 │                          /* Do nothing */                                                
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │  out:                                                                                    
                                                                                         │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/selftest.c:527                                    │ linux/drivers/net/ethernet/sfc/selftest.c:525                                            
                                                                                         │                                                                                          
        struct ef4_nic *efx = tx_queue->efx;                                             │          struct efx_nic *efx = tx_queue->efx;                                            
        struct ef4_loopback_state *state = efx->loopback_selftest;                       │          struct efx_loopback_state *state = efx->loopback_selftest;                      
        int i, begin_rc, end_rc;                                                         │          int i, begin_rc, end_rc;                                                        
                                                                                         │                                                                                          
        for (i = 0; i < 3; i++) {                                                        │          for (i = 0; i < 3; i++) {                                                       
                /* Determine how many packets to send */                                 │                  /* Determine how many packets to send */                                
                state->packet_count = efx->txq_entries / 3;                              │                  state->packet_count = efx->txq_entries / 3;                             
                state->packet_count = min(1 << (i << 2), state->packet_count);           │                  state->packet_count = min(1 << (i << 2), state->packet_count);          
                state->skbs = kcalloc(state->packet_count,                               │                  state->skbs = kcalloc(state->packet_count,                              
                                      sizeof(state->skbs[0]), GFP_KERNEL);               │                                        sizeof(state->skbs[0]), GFP_KERNEL);              
                if (!state->skbs)                                                        │                  if (!state->skbs)                                                       
                        return -ENOMEM;                                                  │                          return -ENOMEM;                                                 
                state->flush = false;                                                    │                  state->flush = false;                                                   
                                                                                         │                                                                                          
                netif_dbg(efx, drv, efx->net_dev,                                        │                  netif_dbg(efx, drv, efx->net_dev,                                       
                          "TX queue %d testing %s loopback with %d packets\n",           │                            "TX queue %d (hw %d) testing %s loopback with %d packets\n",  
                          tx_queue->queue, LOOPBACK_MODE(efx),                           │                            tx_queue->label, tx_queue->queue, LOOPBACK_MODE(efx),         
                          state->packet_count);                                          │                            state->packet_count);                                         
                                                                                         │                                                                                          
                ef4_iterate_state(efx);                                                  │                  efx_iterate_state(efx);                                                 
                begin_rc = ef4_begin_loopback(tx_queue);                                 │                  begin_rc = efx_begin_loopback(tx_queue);                                
                                                                                         │                                                                                          
                /* This will normally complete very quickly, but be                      │                  /* This will normally complete very quickly, but be                     
                 * prepared to wait much longer. */                                      │                   * prepared to wait much longer. */                                     
                msleep(1);                                                               │                  msleep(1);                                                              
                if (!ef4_poll_loopback(efx)) {                                           │                  if (!efx_poll_loopback(efx)) {                                          
                        msleep(LOOPBACK_TIMEOUT_MS);                                     │                          msleep(LOOPBACK_TIMEOUT_MS);                                    
                        ef4_poll_loopback(efx);                                          │                          efx_poll_loopback(efx);                                         
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                end_rc = ef4_end_loopback(tx_queue, lb_tests);                           │                  end_rc = efx_end_loopback(tx_queue, lb_tests);                          
                kfree(state->skbs);                                                      │                  kfree(state->skbs);                                                     
                                                                                         │                                                                                          
                if (begin_rc || end_rc) {                                                │                  if (begin_rc || end_rc) {                                               
                        /* Wait a while to ensure there are no packets                   │                          /* Wait a while to ensure there are no packets                  
                         * floating around after a failure. */                           │                           * floating around after a failure. */                          
                        schedule_timeout_uninterruptible(HZ / 10);                       │                          schedule_timeout_uninterruptible(HZ / 10);                      
                        return begin_rc ? begin_rc : end_rc;                             │                          return begin_rc ? begin_rc : end_rc;                            
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        netif_dbg(efx, drv, efx->net_dev,                                                │          netif_dbg(efx, drv, efx->net_dev,                                               
                  "TX queue %d passed %s loopback test with a burst length "             │                    "TX queue %d passed %s loopback test with a burst length "            
                  "of %d packets\n", tx_queue->queue, LOOPBACK_MODE(efx),                │                    "of %d packets\n", tx_queue->label, LOOPBACK_MODE(efx),               
                  state->packet_count);                                                  │                    state->packet_count);                                                 
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c:1637                           │ linux/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c:1759                            
                                                                                         │                                                                                          
                if (!(oct_dev->io_qmask.iq & BIT_ULL(j)))                                │                  j = lio->linfo.txpciq[vj].s.q_no;                                       
                        continue;                                                        │                                                                                          
                /*packets to network port*/                                              │                                                                                          
                /*# of packets tx to network */                                          │                                                                                          
                data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_done);          │                                                                                          
                /*# of bytes tx to network */                                            │                                                                                          
                data[i++] =                                                              │                                                                                          
                        CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_tot_bytes);         │                                                                                          
                /*# of packets dropped */                                                │                                                                                          
                data[i++] =                                                              │                                                                                          
                        CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_dropped);           │                                                                                          
                /*# of tx fails due to queue full */                                     │                                                                                          
                data[i++] =                                                              │                                                                                          
                        CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_iq_busy);           │                                                                                          
                /*XXX gather entries sent */                                             │                                                                                          
                data[i++] =                                                              │                                                                                          
                        CVM_CAST64(oct_dev->instr_queue[j]->stats.sgentry_sent);         │                                                                                          
                                                                                         │                                                                                          
                /*instruction to firmware: data and control */                           │                  /* packets to network port */                                           
                /*# of instructions to the queue */                                      │                  /* # of packets tx to network */                                        
                data[i++] =                                                              │                  data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_done);         
                        CVM_CAST64(oct_dev->instr_queue[j]->stats.instr_posted);         │                   /* # of bytes tx to network */                                         
                /*# of instructions processed */                                         │                                                                                          
                data[i++] = CVM_CAST64(                                                  │                  data[i++] = CVM_CAST64(                                                 
                                oct_dev->instr_queue[j]->stats.instr_processed);         │                                  oct_dev->instr_queue[j]->stats.tx_tot_bytes);           
                /*# of instructions could not be processed */                            │                  /* # of packets dropped */                                              
                data[i++] = CVM_CAST64(                                                  │                  data[i++] = CVM_CAST64(                                                 
                                oct_dev->instr_queue[j]->stats.instr_dropped);           │                                  oct_dev->instr_queue[j]->stats.tx_dropped);             
                /*bytes sent through the queue */                                        │                  /* # of tx fails due to queue full */                                   
                data[i++] =                                                              │                  data[i++] = CVM_CAST64(                                                 
                        CVM_CAST64(oct_dev->instr_queue[j]->stats.bytes_sent);           │                                  oct_dev->instr_queue[j]->stats.tx_iq_busy);             
                                                                                         │                  /* XXX gather entries sent */                                           
                                                                                         │                  data[i++] = CVM_CAST64(                                                 
                                                                                         │                                  oct_dev->instr_queue[j]->stats.sgentry_sent);           
                                                                                         │                                                                                          
                /*tso request*/                                                          │                  /* instruction to firmware: data and control */                         
                                                                                         │                  /* # of instructions to the queue */                                    
                                                                                         │                  data[i++] = CVM_CAST64(                                                 
                                                                                         │                                  oct_dev->instr_queue[j]->stats.instr_posted);           
                                                                                         │                  /* # of instructions processed */                                       
                                                                                         │                  data[i++] =                                                             
                                                                                         │                      CVM_CAST64(oct_dev->instr_queue[j]->stats.instr_processed);         
                                                                                         │                  /* # of instructions could not be processed */                          
                                                                                         │                  data[i++] =                                                             
                                                                                         │                      CVM_CAST64(oct_dev->instr_queue[j]->stats.instr_dropped);           
                                                                                         │                  /* bytes sent through the queue */                                      
                                                                                         │                  data[i++] = CVM_CAST64(                                                 
                                                                                         │                                  oct_dev->instr_queue[j]->stats.bytes_sent);             
                                                                                         │                  /* tso request */                                                       
                data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_gso);           │                  data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_gso);          
                /*vxlan request*/                                                        │                  /* vxlan request */                                                     
                data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_vxlan);         │                  data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_vxlan);        
                /*txq restart*/                                                          │                  /* txq restart */                                                       
                data[i++] =                                                              │                  data[i++] = CVM_CAST64(                                                 
                        CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_restart);           │                                  oct_dev->instr_queue[j]->stats.tx_restart);             
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7677                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:8594                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                          │  #define YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                         
#define MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                          │  #define YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                         
#define MSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                          │  #define YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                         
#define MSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                          │  #define YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                         
#define MSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                          │  #define YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                         
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                          │  #define YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                         
#define MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                          │  #define YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                         
#define MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                          │  #define YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                         
#define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                          │  #define YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                         
#define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                          │  #define YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                         
#define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                          │  #define YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                         
#define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                          │  #define YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                         
#define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                        │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                       
#define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                          │  #define YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                         
                                                                                         │          u8 byte2;                                                                       
                                                                                         │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │                                                                                          
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
                                                                                         │          __le16 word1;                                                                   
                                                                                         │          __le16 word2;                                                                   
                                                                                         │          __le16 word3;                                                                   
                                                                                         │          __le16 word4;                                                                   
                                                                                         │          __le32 reg2;                                                                    
                                                                                         │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7677                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7751                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                          │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7677                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7714                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                          │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/i40e/i40e_nvm.c:223                                    │ linux/drivers/net/ethernet/intel/i40e/i40e_nvm.c:550                                     
                                                                                         │                                                                                          
        i40e_status ret_code = I40E_ERR_NVM;                                             │          i40e_status ret_code = I40E_ERR_NVM;                                            
        struct i40e_asq_cmd_details cmd_details;                                         │          struct i40e_asq_cmd_details cmd_details;                                        
                                                                                         │                                                                                          
        memset(&cmd_details, 0, sizeof(cmd_details));                                    │          memset(&cmd_details, 0, sizeof(cmd_details));                                   
        cmd_details.wb_desc = &hw->nvm_wb_desc;                                          │          cmd_details.wb_desc = &hw->nvm_wb_desc;                                         
                                                                                         │                                                                                          
        /* Here we are checking the SR limit only for the flat memory model.             │          /* Here we are checking the SR limit only for the flat memory model.            
         * We cannot do it for the module-based model, as we did not acquire             │           * We cannot do it for the module-based model, as we did not acquire            
         * the NVM resource yet (we cannot get the module pointer value).                │           * the NVM resource yet (we cannot get the module pointer value).               
         * Firmware will check the module-based model.                                   │           * Firmware will check the module-based model.                                  
         */                                                                              │           */                                                                             
        if ((offset + words) > hw->nvm.sr_size)                                          │          if ((offset + words) > hw->nvm.sr_size)                                         
                i40e_debug(hw, I40E_DEBUG_NVM,                                           │                  i40e_debug(hw, I40E_DEBUG_NVM,                                          
                           "NVM write error: offset %d beyond Shadow RAM limit %d\n",    │                             "NVM write error: offset %d beyond Shadow RAM limit %d\n",   
                           (offset + words), hw->nvm.sr_size);                           │                             (offset + words), hw->nvm.sr_size);                          
        else if (words > I40E_SR_SECTOR_SIZE_IN_WORDS)                                   │          else if (words > I40E_SR_SECTOR_SIZE_IN_WORDS)                                  
                /* We can write only up to 4KB (one sector), in one AQ write */          │                  /* We can write only up to 4KB (one sector), in one AQ write */         
                i40e_debug(hw, I40E_DEBUG_NVM,                                           │                  i40e_debug(hw, I40E_DEBUG_NVM,                                          
                           "NVM write fail error: tried to write %d words, limit is %d.\ │                             "NVM write fail error: tried to write %d words, limit is %d.\
                           words, I40E_SR_SECTOR_SIZE_IN_WORDS);                         │                             words, I40E_SR_SECTOR_SIZE_IN_WORDS);                        
        else if (((offset + (words - 1)) / I40E_SR_SECTOR_SIZE_IN_WORDS)                 │          else if (((offset + (words - 1)) / I40E_SR_SECTOR_SIZE_IN_WORDS)                
                 != (offset / I40E_SR_SECTOR_SIZE_IN_WORDS))                             │                   != (offset / I40E_SR_SECTOR_SIZE_IN_WORDS))                            
                /* A single write cannot spread over two sectors */                      │                  /* A single write cannot spread over two sectors */                     
                i40e_debug(hw, I40E_DEBUG_NVM,                                           │                  i40e_debug(hw, I40E_DEBUG_NVM,                                          
                           "NVM write error: cannot spread over two sectors in a single  │                             "NVM write error: cannot spread over two sectors in a single 
                           offset, words);                                               │                             offset, words);                                              
        else                                                                             │          else                                                                            
                ret_code = i40e_aq_read_nvm(hw, module_pointer,                          │                  ret_code = i40e_aq_update_nvm(hw, module_pointer,                       
                                            2 * offset,  /*bytes*/                       │                                                2 * offset,  /*bytes*/                    
                                            2 * words,   /*bytes*/                       │                                                2 * words,   /*bytes*/                    
                                            data, last_command, &cmd_details);           │                                                data, last_command, 0,                    
                                                                                         │                                                &cmd_details);                            
                                                                                         │                                                                                          
        return ret_code;                                                                 │          return ret_code;                                                                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/atheros/atl1e/atl1e_main.c:1153                              │ linux/drivers/net/ethernet/atheros/atl1c/atl1c_main.c:1557                               
                                                                                         │                                                                                          
        struct atl1e_adapter *adapter = netdev_priv(netdev);                             │          struct atl1c_adapter *adapter = netdev_priv(netdev);                            
        struct atl1e_hw_stats  *hw_stats = &adapter->hw_stats;                           │          struct atl1c_hw_stats  *hw_stats = &adapter->hw_stats;                          
        struct net_device_stats *net_stats = &netdev->stats;                             │          struct net_device_stats *net_stats = &netdev->stats;                            
                                                                                         │                                                                                          
                                                                                         │          atl1c_update_hw_stats(adapter);                                                 
        net_stats->rx_bytes   = hw_stats->rx_byte_cnt;                                   │          net_stats->rx_bytes   = hw_stats->rx_byte_cnt;                                  
        net_stats->tx_bytes   = hw_stats->tx_byte_cnt;                                   │          net_stats->tx_bytes   = hw_stats->tx_byte_cnt;                                  
        net_stats->multicast  = hw_stats->rx_mcast;                                      │          net_stats->multicast  = hw_stats->rx_mcast;                                     
        net_stats->collisions = hw_stats->tx_1_col +                                     │          net_stats->collisions = hw_stats->tx_1_col +                                    
                                hw_stats->tx_2_col +                                     │                                  hw_stats->tx_2_col +                                    
                                hw_stats->tx_late_col +                                  │                                  hw_stats->tx_late_col +                                 
                                hw_stats->tx_abort_col;                                  │                                  hw_stats->tx_abort_col;                                 
                                                                                         │                                                                                          
        net_stats->rx_errors  = hw_stats->rx_frag +                                      │          net_stats->rx_errors  = hw_stats->rx_frag +                                     
                                hw_stats->rx_fcs_err +                                   │                                  hw_stats->rx_fcs_err +                                  
                                hw_stats->rx_len_err +                                   │                                  hw_stats->rx_len_err +                                  
                                hw_stats->rx_sz_ov +                                     │                                  hw_stats->rx_sz_ov +                                    
                                hw_stats->rx_rrd_ov +                                    │                                  hw_stats->rx_rrd_ov +                                   
                                hw_stats->rx_align_err +                                 │                                  hw_stats->rx_align_err +                                
                                hw_stats->rx_rxf_ov;                                     │                                  hw_stats->rx_rxf_ov;                                    
                                                                                         │                                                                                          
        net_stats->rx_fifo_errors   = hw_stats->rx_rxf_ov;                               │          net_stats->rx_fifo_errors   = hw_stats->rx_rxf_ov;                              
        net_stats->rx_length_errors = hw_stats->rx_len_err;                              │          net_stats->rx_length_errors = hw_stats->rx_len_err;                             
        net_stats->rx_crc_errors    = hw_stats->rx_fcs_err;                              │          net_stats->rx_crc_errors    = hw_stats->rx_fcs_err;                             
        net_stats->rx_frame_errors  = hw_stats->rx_align_err;                            │          net_stats->rx_frame_errors  = hw_stats->rx_align_err;                           
        net_stats->rx_dropped       = hw_stats->rx_rrd_ov;                               │          net_stats->rx_dropped       = hw_stats->rx_rrd_ov;                              
                                                                                         │                                                                                          
        net_stats->tx_errors = hw_stats->tx_late_col +                                   │          net_stats->tx_errors = hw_stats->tx_late_col +                                  
                               hw_stats->tx_abort_col +                                  │                                 hw_stats->tx_abort_col +                                 
                               hw_stats->tx_underrun +                                   │                                 hw_stats->tx_underrun +                                  
                               hw_stats->tx_trunc;                                       │                                 hw_stats->tx_trunc;                                      
                                                                                         │                                                                                          
        net_stats->tx_fifo_errors    = hw_stats->tx_underrun;                            │          net_stats->tx_fifo_errors    = hw_stats->tx_underrun;                           
        net_stats->tx_aborted_errors = hw_stats->tx_abort_col;                           │          net_stats->tx_aborted_errors = hw_stats->tx_abort_col;                          
        net_stats->tx_window_errors  = hw_stats->tx_late_col;                            │          net_stats->tx_window_errors  = hw_stats->tx_late_col;                           
                                                                                         │                                                                                          
        net_stats->rx_packets = hw_stats->rx_ok + net_stats->rx_errors;                  │          net_stats->rx_packets = hw_stats->rx_ok + net_stats->rx_errors;                 
        net_stats->tx_packets = hw_stats->tx_ok + net_stats->tx_errors;                  │          net_stats->tx_packets = hw_stats->tx_ok + net_stats->tx_errors;                 
                                                                                         │                                                                                          
        return net_stats;                                                                │          return net_stats;                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h:5429                                │ linux/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h:5402                                 
                                                                                         │                                                                                          
                                                                                         │          __le16  error_code;                                                             
        __le16  req_type;                                                                │          __le16  req_type;                                                               
        __le16  cmpl_ring;                                                               │                                                                                          
        __le16  seq_id;                                                                  │          __le16  seq_id;                                                                 
        __le16  target_id;                                                               │          __le16  resp_len;                                                               
        __le64  resp_addr;                                                               │                                                                                          
        __le32  flags;                                                                   │          __le32  flags;                                                                  
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI0_PFC_ENABLED              0x1UL        │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI0_PFC_ENABLED              0x1UL     
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI1_PFC_ENABLED              0x2UL        │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI1_PFC_ENABLED              0x2UL     
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI2_PFC_ENABLED              0x4UL        │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI2_PFC_ENABLED              0x4UL     
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI3_PFC_ENABLED              0x8UL        │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI3_PFC_ENABLED              0x8UL     
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI4_PFC_ENABLED              0x10UL       │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI4_PFC_ENABLED              0x10UL    
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI5_PFC_ENABLED              0x20UL       │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI5_PFC_ENABLED              0x20UL    
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI6_PFC_ENABLED              0x40UL       │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI6_PFC_ENABLED              0x40UL    
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI7_PFC_ENABLED              0x80UL       │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI7_PFC_ENABLED              0x80UL    
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI0_PFC_WATCHDOG_ENABLED     0x100UL      │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI0_PFC_WATCHDOG_ENABLED     0x100UL   
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI1_PFC_WATCHDOG_ENABLED     0x200UL      │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI1_PFC_WATCHDOG_ENABLED     0x200UL   
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI2_PFC_WATCHDOG_ENABLED     0x400UL      │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI2_PFC_WATCHDOG_ENABLED     0x400UL   
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI3_PFC_WATCHDOG_ENABLED     0x800UL      │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI3_PFC_WATCHDOG_ENABLED     0x800UL   
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI4_PFC_WATCHDOG_ENABLED     0x1000UL     │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI4_PFC_WATCHDOG_ENABLED     0x1000UL  
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI5_PFC_WATCHDOG_ENABLED     0x2000UL     │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI5_PFC_WATCHDOG_ENABLED     0x2000UL  
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI6_PFC_WATCHDOG_ENABLED     0x4000UL     │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI6_PFC_WATCHDOG_ENABLED     0x4000UL  
        #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI7_PFC_WATCHDOG_ENABLED     0x8000UL     │          #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI7_PFC_WATCHDOG_ENABLED     0x8000UL  
        __le16  port_id;                                                                 │          u8      unused_0[3];                                                            
        u8      unused_0[2];                                                             │          u8      valid;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:1883                                 │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c:2066                              
                                                                                         │                                                                                          
        struct igb_ring *tx_ring = &adapter->test_tx_ring;                               │          struct ixgbe_ring *tx_ring = &adapter->test_tx_ring;                            
        struct igb_ring *rx_ring = &adapter->test_rx_ring;                               │          struct ixgbe_ring *rx_ring = &adapter->test_rx_ring;                            
        u16 i, j, lc, good_cnt;                                                          │          int i, j, lc, good_cnt, ret_val = 0;                                            
        int ret_val = 0;                                                                 │          unsigned int size = 1024;                                                       
        unsigned int size = IGB_RX_HDR_LEN;                                              │                                                                                          
        netdev_tx_t tx_ret_val;                                                          │          netdev_tx_t tx_ret_val;                                                         
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
                                                                                         │          u32 flags_orig = adapter->flags;                                                
                                                                                         │                                                                                          
                                                                                         │          /* DCB can modify the frames on Tx */                                           
                                                                                         │          adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED;                                      
                                                                                         │                                                                                          
        /* allocate test skb */                                                          │          /* allocate test skb */                                                         
        skb = alloc_skb(size, GFP_KERNEL);                                               │          skb = alloc_skb(size, GFP_KERNEL);                                              
        if (!skb)                                                                        │          if (!skb)                                                                       
                return 11;                                                               │                  return 11;                                                              
                                                                                         │                                                                                          
        /* place data into test skb */                                                   │          /* place data into test skb */                                                  
        igb_create_lbtest_frame(skb, size);                                              │          ixgbe_create_lbtest_frame(skb, size);                                           
        skb_put(skb, size);                                                              │          skb_put(skb, size);                                                             
                                                                                         │                                                                                          
        /* Calculate the loop count based on the largest descriptor ring                 │          /*                                                                              
                                                                                         │           * Calculate the loop count based on the largest descriptor ring                
         * The idea is to wrap the largest ring a number of times using 64               │           * The idea is to wrap the largest ring a number of times using 64              
         * send/receive pairs during each loop                                           │           * send/receive pairs during each loop                                          
         */                                                                              │           */                                                                             
                                                                                         │                                                                                          
        if (rx_ring->count <= tx_ring->count)                                            │          if (rx_ring->count <= tx_ring->count)                                           
                lc = ((tx_ring->count / 64) * 2) + 1;                                    │                  lc = ((tx_ring->count / 64) * 2) + 1;                                   
        else                                                                             │          else                                                                            
                lc = ((rx_ring->count / 64) * 2) + 1;                                    │                  lc = ((rx_ring->count / 64) * 2) + 1;                                   
                                                                                         │                                                                                          
        for (j = 0; j <= lc; j++) { /* loop count loop */                                │          for (j = 0; j <= lc; j++) {                                                     
                /* reset count of good packets */                                        │                  /* reset count of good packets */                                       
                good_cnt = 0;                                                            │                  good_cnt = 0;                                                           
                                                                                         │                                                                                          
                /* place 64 packets on the transmit queue*/                              │                  /* place 64 packets on the transmit queue*/                             
                for (i = 0; i < 64; i++) {                                               │                  for (i = 0; i < 64; i++) {                                              
                        skb_get(skb);                                                    │                          skb_get(skb);                                                   
                        tx_ret_val = igb_xmit_frame_ring(skb, tx_ring);                  │                          tx_ret_val = ixgbe_xmit_frame_ring(skb,                         
                                                                                         │                                                             adapter,                     
                                                                                         │                                                             tx_ring);                    
                        if (tx_ret_val == NETDEV_TX_OK)                                  │                          if (tx_ret_val == NETDEV_TX_OK)                                 
                                good_cnt++;                                              │                                  good_cnt++;                                             
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (good_cnt != 64) {                                                    │                  if (good_cnt != 64) {                                                   
                        ret_val = 12;                                                    │                          ret_val = 12;                                                   
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* allow 200 milliseconds for packets to go from Tx to Rx */             │                  /* allow 200 milliseconds for packets to go from Tx to Rx */            
                msleep(200);                                                             │                  msleep(200);                                                            
                                                                                         │                                                                                          
                good_cnt = igb_clean_test_rings(rx_ring, tx_ring, size);                 │                  good_cnt = ixgbe_clean_test_rings(rx_ring, tx_ring, size);              
                if (good_cnt != 64) {                                                    │                  if (good_cnt != 64) {                                                   
                        ret_val = 13;                                                    │                          ret_val = 13;                                                   
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
        } /* end loop count loop */                                                      │          }                                                                               
                                                                                         │                                                                                          
        /* free the original skb */                                                      │          /* free the original skb */                                                     
        kfree_skb(skb);                                                                  │          kfree_skb(skb);                                                                 
                                                                                         │          adapter->flags = flags_orig;                                                    
                                                                                         │                                                                                          
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/nvidia/forcedeth.c:2283                                      │ linux/drivers/net/ethernet/nvidia/forcedeth.c:2461                                       
                                                                                         │                                                                                          
                const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];                     │                  skb_frag_t *frag = &skb_shinfo(skb)->frags[i];                          
                u32 frag_size = skb_frag_size(frag);                                     │                  u32 frag_size = skb_frag_size(frag);                                    
                offset = 0;                                                              │                  offset = 0;                                                             
                                                                                         │                                                                                          
                do {                                                                     │                  do {                                                                    
                                                                                         │                          bcnt = (frag_size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE :
                        if (!start_tx_ctx)                                               │                          if (!start_tx_ctx)                                              
                                start_tx_ctx = tmp_tx_ctx = np->put_tx_ctx;              │                                  start_tx_ctx = tmp_tx_ctx = np->put_tx_ctx;             
                                                                                         │                                                                                          
                        bcnt = (frag_size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE : │                                                                                          
                        np->put_tx_ctx->dma = skb_frag_dma_map(                          │                          np->put_tx_ctx->dma = skb_frag_dma_map(                         
                                                        &np->pci_dev->dev,               │                                                          &np->pci_dev->dev,              
                                                        frag, offset,                    │                                                          frag, offset,                   
                                                        bcnt,                            │                                                          bcnt,                           
                                                        DMA_TO_DEVICE);                  │                                                          DMA_TO_DEVICE);                 
                                                                                         │                                                                                          
                        if (unlikely(dma_mapping_error(&np->pci_dev->dev,                │                          if (unlikely(dma_mapping_error(&np->pci_dev->dev,               
                                                       np->put_tx_ctx->dma))) {          │                                                         np->put_tx_ctx->dma))) {         
                                                                                         │                                                                                          
                                /* Unwind the mapped fragments */                        │                                  /* Unwind the mapped fragments */                       
                                do {                                                     │                                  do {                                                    
                                        nv_unmap_txskb(np, start_tx_ctx);                │                                          nv_unmap_txskb(np, start_tx_ctx);               
                                        if (unlikely(tmp_tx_ctx++ == np->last_tx_ctx))   │                                          if (unlikely(tmp_tx_ctx++ == np->last_tx_ctx))  
                                                tmp_tx_ctx = np->tx_skb;                 │                                                  tmp_tx_ctx = np->tx_skb;                
                                } while (tmp_tx_ctx != np->put_tx_ctx);                  │                                  } while (tmp_tx_ctx != np->put_tx_ctx);                 
                                dev_kfree_skb_any(skb);                                  │                                  dev_kfree_skb_any(skb);                                 
                                np->put_tx_ctx = start_tx_ctx;                           │                                  np->put_tx_ctx = start_tx_ctx;                          
                                u64_stats_update_begin(&np->swstats_tx_syncp);           │                                  u64_stats_update_begin(&np->swstats_tx_syncp);          
                                nv_txrx_stats_inc(stat_tx_dropped);                      │                                  nv_txrx_stats_inc(stat_tx_dropped);                     
                                u64_stats_update_end(&np->swstats_tx_syncp);             │                                  u64_stats_update_end(&np->swstats_tx_syncp);            
                                                                                         │                                                                                          
                                ret = NETDEV_TX_OK;                                      │                                  ret = NETDEV_TX_OK;                                     
                                                                                         │                                                                                          
                                goto dma_error;                                          │                                  goto dma_error;                                         
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        np->put_tx_ctx->dma_len = bcnt;                                  │                          np->put_tx_ctx->dma_len = bcnt;                                 
                        np->put_tx_ctx->dma_single = 0;                                  │                          np->put_tx_ctx->dma_single = 0;                                 
                        put_tx->buf = cpu_to_le32(np->put_tx_ctx->dma);                  │                          put_tx->bufhigh = cpu_to_le32(dma_high(np->put_tx_ctx->dma));   
                                                                                         │                          put_tx->buflow = cpu_to_le32(dma_low(np->put_tx_ctx->dma));     
                        put_tx->flaglen = cpu_to_le32((bcnt-1) | tx_flags);              │                          put_tx->flaglen = cpu_to_le32((bcnt-1) | tx_flags);             
                                                                                         │                                                                                          
                        offset += bcnt;                                                  │                          offset += bcnt;                                                 
                        frag_size -= bcnt;                                               │                          frag_size -= bcnt;                                              
                        if (unlikely(put_tx++ == np->last_tx.orig))                      │                          if (unlikely(put_tx++ == np->last_tx.ex))                       
                                put_tx = np->tx_ring.orig;                               │                                  put_tx = np->tx_ring.ex;                                
                        if (unlikely(np->put_tx_ctx++ == np->last_tx_ctx))               │                          if (unlikely(np->put_tx_ctx++ == np->last_tx_ctx))              
                                np->put_tx_ctx = np->tx_skb;                             │                                  np->put_tx_ctx = np->tx_skb;                            
                } while (frag_size);                                                     │                  } while (frag_size);                                                    
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/ni/nixge.c:699                                               │ linux/drivers/net/ethernet/ni/nixge.c:743                                                
                                                                                         │                                                                                          
        struct nixge_priv *priv = netdev_priv(_ndev);                                    │          struct nixge_priv *priv = netdev_priv(_ndev);                                   
        struct net_device *ndev = _ndev;                                                 │          struct net_device *ndev = _ndev;                                                
        unsigned int status;                                                             │          unsigned int status;                                                            
        dma_addr_t phys;                                                                 │          dma_addr_t phys;                                                                
        u32 cr;                                                                          │          u32 cr;                                                                         
                                                                                         │                                                                                          
        status = nixge_dma_read_reg(priv, XAXIDMA_TX_SR_OFFSET);                         │          status = nixge_dma_read_reg(priv, XAXIDMA_RX_SR_OFFSET);                        
        if (status & (XAXIDMA_IRQ_IOC_MASK | XAXIDMA_IRQ_DELAY_MASK)) {                  │          if (status & (XAXIDMA_IRQ_IOC_MASK | XAXIDMA_IRQ_DELAY_MASK)) {                 
                nixge_dma_write_reg(priv, XAXIDMA_TX_SR_OFFSET, status);                 │                  /* Turn of IRQs because NAPI */                                         
                nixge_start_xmit_done(priv->ndev);                                       │                  nixge_dma_write_reg(priv, XAXIDMA_RX_SR_OFFSET, status);                
                                                                                         │                  cr = nixge_dma_read_reg(priv, XAXIDMA_RX_CR_OFFSET);                    
                                                                                         │                  cr &= ~(XAXIDMA_IRQ_IOC_MASK | XAXIDMA_IRQ_DELAY_MASK);                 
                                                                                         │                  nixge_dma_write_reg(priv, XAXIDMA_RX_CR_OFFSET, cr);                    
                                                                                         │                                                                                          
                                                                                         │                  if (napi_schedule_prep(&priv->napi))                                    
                                                                                         │                          __napi_schedule(&priv->napi);                                   
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
        if (!(status & XAXIDMA_IRQ_ALL_MASK)) {                                          │          if (!(status & XAXIDMA_IRQ_ALL_MASK)) {                                         
                netdev_err(ndev, "No interrupts asserted in Tx path\n");                 │                  netdev_err(ndev, "No interrupts asserted in Rx path\n");                
                return IRQ_NONE;                                                         │                  return IRQ_NONE;                                                        
        }                                                                                │          }                                                                               
        if (status & XAXIDMA_IRQ_ERROR_MASK) {                                           │          if (status & XAXIDMA_IRQ_ERROR_MASK) {                                          
                phys = nixge_hw_dma_bd_get_addr(&priv->tx_bd_v[priv->tx_bd_ci],          │                  phys = nixge_hw_dma_bd_get_addr(&priv->rx_bd_v[priv->rx_bd_ci],         
                                                phys);                                   │                                                  phys);                                  
                                                                                         │                  netdev_err(ndev, "DMA Rx error 0x%x\n", status);                        
                netdev_err(ndev, "DMA Tx error 0x%x\n", status);                         │                                                                                          
                netdev_err(ndev, "Current BD is at: 0x%llx\n", (u64)phys);               │                  netdev_err(ndev, "Current BD is at: 0x%llx\n", (u64)phys);              
                                                                                         │                                                                                          
                cr = nixge_dma_read_reg(priv, XAXIDMA_TX_CR_OFFSET);                     │                  cr = nixge_dma_read_reg(priv, XAXIDMA_TX_CR_OFFSET);                    
                /* Disable coalesce, delay timer and error interrupts */                 │                  /* Disable coalesce, delay timer and error interrupts */                
                cr &= (~XAXIDMA_IRQ_ALL_MASK);                                           │                  cr &= (~XAXIDMA_IRQ_ALL_MASK);                                          
                /* Write to the Tx channel control register */                           │                  /* Finally write to the Tx channel control register */                  
                nixge_dma_write_reg(priv, XAXIDMA_TX_CR_OFFSET, cr);                     │                  nixge_dma_write_reg(priv, XAXIDMA_TX_CR_OFFSET, cr);                    
                                                                                         │                                                                                          
                cr = nixge_dma_read_reg(priv, XAXIDMA_RX_CR_OFFSET);                     │                  cr = nixge_dma_read_reg(priv, XAXIDMA_RX_CR_OFFSET);                    
                /* Disable coalesce, delay timer and error interrupts */                 │                  /* Disable coalesce, delay timer and error interrupts */                
                cr &= (~XAXIDMA_IRQ_ALL_MASK);                                           │                  cr &= (~XAXIDMA_IRQ_ALL_MASK);                                          
                /* Write to the Rx channel control register */                           │                  /* write to the Rx channel control register */                          
                nixge_dma_write_reg(priv, XAXIDMA_RX_CR_OFFSET, cr);                     │                  nixge_dma_write_reg(priv, XAXIDMA_RX_CR_OFFSET, cr);                    
                                                                                         │                                                                                          
                tasklet_schedule(&priv->dma_err_tasklet);                                │                  tasklet_schedule(&priv->dma_err_tasklet);                               
                nixge_dma_write_reg(priv, XAXIDMA_TX_SR_OFFSET, status);                 │                  nixge_dma_write_reg(priv, XAXIDMA_RX_SR_OFFSET, status);                
        }                                                                                │          }                                                                               
out:                                                                                     │  out:                                                                                    
        return IRQ_HANDLED;                                                              │          return IRQ_HANDLED;                                                             
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c:640                            │ linux/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c:743                             
                                                                                         │                                                                                          
        char data_str[ARRAY_SIZE(rx_queue_info_items)][HNS3_DBG_DATA_STR_LEN];           │          char data_str[ARRAY_SIZE(tx_queue_info_items)][HNS3_DBG_DATA_STR_LEN];          
        struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);                          │          struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);                         
        char *result[ARRAY_SIZE(rx_queue_info_items)];                                   │          char *result[ARRAY_SIZE(tx_queue_info_items)];                                  
        struct hns3_nic_priv *priv = h->priv;                                            │          struct hns3_nic_priv *priv = h->priv;                                           
        char content[HNS3_DBG_INFO_LEN];                                                 │          char content[HNS3_DBG_INFO_LEN];                                                
        struct hns3_enet_ring *ring;                                                     │          struct hns3_enet_ring *ring;                                                    
        int pos = 0;                                                                     │          int pos = 0;                                                                    
        u32 i;                                                                           │          u32 i;                                                                          
                                                                                         │                                                                                          
        if (!priv->ring) {                                                               │          if (!priv->ring) {                                                              
                dev_err(&h->pdev->dev, "priv->ring is NULL\n");                          │                  dev_err(&h->pdev->dev, "priv->ring is NULL\n");                         
                return -EFAULT;                                                          │                  return -EFAULT;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (i = 0; i < ARRAY_SIZE(rx_queue_info_items); i++)                            │          for (i = 0; i < ARRAY_SIZE(tx_queue_info_items); i++)                           
                result[i] = &data_str[i][0];                                             │                  result[i] = &data_str[i][0];                                            
                                                                                         │                                                                                          
        hns3_dbg_fill_content(content, sizeof(content), rx_queue_info_items,             │          hns3_dbg_fill_content(content, sizeof(content), tx_queue_info_items,            
                              NULL, ARRAY_SIZE(rx_queue_info_items));                    │                                NULL, ARRAY_SIZE(tx_queue_info_items));                   
        pos += scnprintf(buf + pos, len - pos, "%s", content);                           │          pos += scnprintf(buf + pos, len - pos, "%s", content);                          
                                                                                         │                                                                                          
        for (i = 0; i < h->kinfo.num_tqps; i++) {                                        │          for (i = 0; i < h->kinfo.num_tqps; i++) {                                       
                /* Each cycle needs to determine whether the instance is reset,          │                  /* Each cycle needs to determine whether the instance is reset,         
                 * to prevent reference to invalid memory. And need to ensure            │                   * to prevent reference to invalid memory. And need to ensure           
                 * that the following code is executed within 100ms.                     │                   * that the following code is executed within 100ms.                    
                 */                                                                      │                   */                                                                     
                if (!test_bit(HNS3_NIC_STATE_INITED, &priv->state) ||                    │                  if (!test_bit(HNS3_NIC_STATE_INITED, &priv->state) ||                   
                    test_bit(HNS3_NIC_STATE_RESETTING, &priv->state))                    │                      test_bit(HNS3_NIC_STATE_RESETTING, &priv->state))                   
                        return -EPERM;                                                   │                          return -EPERM;                                                  
                                                                                         │                                                                                          
                ring = &priv->ring[(u32)(i + h->kinfo.num_tqps)];                        │                  ring = &priv->ring[i];                                                  
                hns3_dump_rx_queue_info(ring, ae_dev, result, i);                        │                  hns3_dump_tx_queue_info(ring, ae_dev, result, i);                       
                hns3_dbg_fill_content(content, sizeof(content),                          │                  hns3_dbg_fill_content(content, sizeof(content),                         
                                      rx_queue_info_items,                               │                                        tx_queue_info_items,                              
                                      (const char **)result,                             │                                        (const char **)result,                            
                                      ARRAY_SIZE(rx_queue_info_items));                  │                                        ARRAY_SIZE(tx_queue_info_items));                 
                pos += scnprintf(buf + pos, len - pos, "%s", content);                   │                  pos += scnprintf(buf + pos, len - pos, "%s", content);                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          hns3_dbg_tx_spare_info(ring, buf, len, h->kinfo.num_tqps, &pos);                
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10813                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7751                                     
                                                                                         │                                                                                          
        u8 reserved;                                                                     │          u8 byte0;                                                                       
        u8 state;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10813                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10888                                    
                                                                                         │                                                                                          
        u8 reserved;                                                                     │          u8 byte0;                                                                       
        u8 state;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                       
                                                                                         │          u8 byte2;                                                                       
                                                                                         │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │                                                                                          
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
                                                                                         │          __le16 word1;                                                                   
                                                                                         │          __le16 word2;                                                                   
                                                                                         │          __le16 word3;                                                                   
                                                                                         │          __le16 word4;                                                                   
                                                                                         │          __le32 reg2;                                                                    
                                                                                         │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10813                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7714                                     
                                                                                         │                                                                                          
        u8 reserved;                                                                     │          u8 byte0;                                                                       
        u8 state;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10813                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7677                                     
                                                                                         │                                                                                          
        u8 reserved;                                                                     │          u8 byte0;                                                                       
        u8 state;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                        │  #define MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                         
#define MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                        │  #define MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                         
#define MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                         
#define MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                         
#define MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                         
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                                │  #define MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                         
#define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                                │  #define MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                         
#define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                                │  #define MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                         
#define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                         
#define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                         
#define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                         
#define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                         
#define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                       
#define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                         
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c:1991                   │ linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c:2307                    
                                                                                         │                                                                                          
        struct mss_egress_ctl_register ctl_reg;                                          │          struct mss_ingress_ctl_register ctl_reg;                                        
        int ret;                                                                         │          int ret;                                                                        
                                                                                         │                                                                                          
        memset(&ctl_reg, 0, sizeof(ctl_reg));                                            │          memset(&ctl_reg, 0, sizeof(ctl_reg));                                           
                                                                                         │                                                                                          
        ret = aq_mss_mdio_read(hw, MDIO_MMD_VEND1, MSS_EGRESS_CTL_REGISTER_ADDR,         │          ret = aq_mss_mdio_read(hw, MDIO_MMD_VEND1,                                      
                               &ctl_reg.word_0);                                         │                                 MSS_INGRESS_CTL_REGISTER_ADDR, &ctl_reg.word_0);         
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
        ret = aq_mss_mdio_read(hw, MDIO_MMD_VEND1,                                       │          ret = aq_mss_mdio_read(hw, MDIO_MMD_VEND1,                                      
                               MSS_EGRESS_CTL_REGISTER_ADDR + 4,                         │                                 MSS_INGRESS_CTL_REGISTER_ADDR + 4,                       
                               &ctl_reg.word_1);                                         │                                 &ctl_reg.word_1);                                        
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
                                                                                         │                                                                                          
        /* Toggle the Egress MIB clear bit 0->1->0 */                                    │          /* Toggle the Ingress MIB clear bit 0->1->0 */                                  
        ctl_reg.bits_0.clear_counter = 0;                                                │          ctl_reg.bits_0.clear_count = 0;                                                 
        ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                      │          ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                     
                                MSS_EGRESS_CTL_REGISTER_ADDR, ctl_reg.word_0);           │                                  MSS_INGRESS_CTL_REGISTER_ADDR, ctl_reg.word_0);         
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
        ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                      │          ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                     
                                MSS_EGRESS_CTL_REGISTER_ADDR + 4,                        │                                  MSS_INGRESS_CTL_REGISTER_ADDR + 4,                      
                                ctl_reg.word_1);                                         │                                  ctl_reg.word_1);                                        
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
                                                                                         │                                                                                          
        ctl_reg.bits_0.clear_counter = 1;                                                │          ctl_reg.bits_0.clear_count = 1;                                                 
        ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                      │          ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                     
                                MSS_EGRESS_CTL_REGISTER_ADDR, ctl_reg.word_0);           │                                  MSS_INGRESS_CTL_REGISTER_ADDR, ctl_reg.word_0);         
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
        ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                      │          ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                     
                                MSS_EGRESS_CTL_REGISTER_ADDR + 4,                        │                                  MSS_INGRESS_CTL_REGISTER_ADDR + 4,                      
                                ctl_reg.word_1);                                         │                                  ctl_reg.word_1);                                        
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
                                                                                         │                                                                                          
        ctl_reg.bits_0.clear_counter = 0;                                                │          ctl_reg.bits_0.clear_count = 0;                                                 
        ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                      │          ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                     
                                MSS_EGRESS_CTL_REGISTER_ADDR, ctl_reg.word_0);           │                                  MSS_INGRESS_CTL_REGISTER_ADDR, ctl_reg.word_0);         
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
        ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                      │          ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                     
                                MSS_EGRESS_CTL_REGISTER_ADDR + 4,                        │                                  MSS_INGRESS_CTL_REGISTER_ADDR + 4,                      
                                ctl_reg.word_1);                                         │                                  ctl_reg.word_1);                                        
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx4/port.c:843                                     │ linux/drivers/net/ethernet/mellanox/mlx4/port.c:950                                      
                                                                                         │                                                                                          
        struct mlx4_mac_table *t1 = &mlx4_priv(dev)->port[1].mac_table;                  │          struct mlx4_vlan_table *t1 = &mlx4_priv(dev)->port[1].vlan_table;               
        struct mlx4_mac_table *t2 = &mlx4_priv(dev)->port[2].mac_table;                  │          struct mlx4_vlan_table *t2 = &mlx4_priv(dev)->port[2].vlan_table;               
        int ret = 0;                                                                     │          int ret = 0;                                                                    
        int i;                                                                           │          int i;                                                                          
        bool update1 = false;                                                            │          bool update1 = false;                                                           
        bool update2 = false;                                                            │          bool update2 = false;                                                           
                                                                                         │                                                                                          
        mutex_lock(&t1->mutex);                                                          │          mutex_lock(&t1->mutex);                                                         
        mutex_lock(&t2->mutex);                                                          │          mutex_lock(&t2->mutex);                                                         
        for (i = 0; i < MLX4_MAX_MAC_NUM; i++) {                                         │          for (i = 0; i < MLX4_MAX_VLAN_NUM; i++) {                                       
                if ((t1->entries[i] != t2->entries[i]) &&                                │                  if ((t1->entries[i] != t2->entries[i]) &&                               
                    t1->entries[i] && t2->entries[i]) {                                  │                      t1->entries[i] && t2->entries[i]) {                                 
                        mlx4_warn(dev, "can't duplicate entry %d in mac table\n", i);    │                          mlx4_warn(dev, "can't duplicate entry %d in vlan table\n", i);  
                        ret = -EINVAL;                                                   │                          ret = -EINVAL;                                                  
                        goto unlock;                                                     │                          goto unlock;                                                    
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (i = 0; i < MLX4_MAX_MAC_NUM; i++) {                                         │          for (i = 0; i < MLX4_MAX_VLAN_NUM; i++) {                                       
                if (t1->entries[i] && !t2->entries[i]) {                                 │                  if (t1->entries[i] && !t2->entries[i]) {                                
                        t2->entries[i] = t1->entries[i];                                 │                          t2->entries[i] = t1->entries[i];                                
                        t2->is_dup[i] = true;                                            │                          t2->is_dup[i] = true;                                           
                        update2 = true;                                                  │                          update2 = true;                                                 
                } else if (!t1->entries[i] && t2->entries[i]) {                          │                  } else if (!t1->entries[i] && t2->entries[i]) {                         
                        t1->entries[i] = t2->entries[i];                                 │                          t1->entries[i] = t2->entries[i];                                
                        t1->is_dup[i] = true;                                            │                          t1->is_dup[i] = true;                                           
                        update1 = true;                                                  │                          update1 = true;                                                 
                } else if (t1->entries[i] && t2->entries[i]) {                           │                  } else if (t1->entries[i] && t2->entries[i]) {                          
                        t1->is_dup[i] = true;                                            │                          t1->is_dup[i] = true;                                           
                        t2->is_dup[i] = true;                                            │                          t2->is_dup[i] = true;                                           
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (update1) {                                                                   │          if (update1) {                                                                  
                ret = mlx4_set_port_mac_table(dev, 1, t1->entries);                      │                  ret = mlx4_set_port_vlan_table(dev, 1, t1->entries);                    
                if (ret)                                                                 │                  if (ret)                                                                
                        mlx4_warn(dev, "failed to set MAC table for port 1 (%d)\n", ret) │                          mlx4_warn(dev, "failed to set VLAN table for port 1 (%d)\n", ret
        }                                                                                │          }                                                                               
        if (!ret && update2) {                                                           │          if (!ret && update2) {                                                          
                ret = mlx4_set_port_mac_table(dev, 2, t2->entries);                      │                  ret = mlx4_set_port_vlan_table(dev, 2, t2->entries);                    
                if (ret)                                                                 │                  if (ret)                                                                
                        mlx4_warn(dev, "failed to set MAC table for port 2 (%d)\n", ret) │                          mlx4_warn(dev, "failed to set VLAN table for port 2 (%d)\n", ret
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (ret)                                                                         │          if (ret)                                                                        
                mlx4_warn(dev, "failed to create mirror MAC tables\n");                  │                  mlx4_warn(dev, "failed to create mirror VLAN tables\n");                
unlock:                                                                                  │  unlock:                                                                                 
        mutex_unlock(&t2->mutex);                                                        │          mutex_unlock(&t2->mutex);                                                       
        mutex_unlock(&t1->mutex);                                                        │          mutex_unlock(&t1->mutex);                                                       
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_type.h:979                                     │ linux/drivers/net/ethernet/intel/i40e/i40e_type.h:1186                                   
                                                                                         │                                                                                          
        /* eth stats collected by the port */                                            │          /* eth stats collected by the port */                                           
        struct ice_eth_stats eth;                                                        │          struct i40e_eth_stats eth;                                                      
                                                                                         │                                                                                          
        /* additional port specific stats */                                             │          /* additional port specific stats */                                            
        u64 tx_dropped_link_down;       /* tdold */                                      │          u64 tx_dropped_link_down;       /* tdold */                                     
        u64 crc_errors;                 /* crcerrs */                                    │          u64 crc_errors;                 /* crcerrs */                                   
        u64 illegal_bytes;              /* illerrc */                                    │          u64 illegal_bytes;              /* illerrc */                                   
        u64 error_bytes;                /* errbc */                                      │          u64 error_bytes;                /* errbc */                                     
        u64 mac_local_faults;           /* mlfc */                                       │          u64 mac_local_faults;           /* mlfc */                                      
        u64 mac_remote_faults;          /* mrfc */                                       │          u64 mac_remote_faults;          /* mrfc */                                      
        u64 rx_len_errors;              /* rlec */                                       │          u64 rx_length_errors;           /* rlec */                                      
        u64 link_xon_rx;                /* lxonrxc */                                    │          u64 link_xon_rx;                /* lxonrxc */                                   
        u64 link_xoff_rx;               /* lxoffrxc */                                   │          u64 link_xoff_rx;               /* lxoffrxc */                                  
        u64 link_xon_tx;                /* lxontxc */                                    │                                                                                          
        u64 link_xoff_tx;               /* lxofftxc */                                   │                                                                                          
        u64 priority_xon_rx[8];         /* pxonrxc[8] */                                 │          u64 priority_xon_rx[8];         /* pxonrxc[8] */                                
        u64 priority_xoff_rx[8];        /* pxoffrxc[8] */                                │          u64 priority_xoff_rx[8];        /* pxoffrxc[8] */                               
                                                                                         │          u64 link_xon_tx;                /* lxontxc */                                   
                                                                                         │          u64 link_xoff_tx;               /* lxofftxc */                                  
        u64 priority_xon_tx[8];         /* pxontxc[8] */                                 │          u64 priority_xon_tx[8];         /* pxontxc[8] */                                
        u64 priority_xoff_tx[8];        /* pxofftxc[8] */                                │          u64 priority_xoff_tx[8];        /* pxofftxc[8] */                               
        u64 priority_xon_2_xoff[8];     /* pxon2offc[8] */                               │          u64 priority_xon_2_xoff[8];     /* pxon2offc[8] */                              
        u64 rx_size_64;                 /* prc64 */                                      │          u64 rx_size_64;                 /* prc64 */                                     
        u64 rx_size_127;                /* prc127 */                                     │          u64 rx_size_127;                /* prc127 */                                    
        u64 rx_size_255;                /* prc255 */                                     │          u64 rx_size_255;                /* prc255 */                                    
        u64 rx_size_511;                /* prc511 */                                     │          u64 rx_size_511;                /* prc511 */                                    
        u64 rx_size_1023;               /* prc1023 */                                    │          u64 rx_size_1023;               /* prc1023 */                                   
        u64 rx_size_1522;               /* prc1522 */                                    │          u64 rx_size_1522;               /* prc1522 */                                   
        u64 rx_size_big;                /* prc9522 */                                    │          u64 rx_size_big;                /* prc9522 */                                   
        u64 rx_undersize;               /* ruc */                                        │          u64 rx_undersize;               /* ruc */                                       
        u64 rx_fragments;               /* rfc */                                        │          u64 rx_fragments;               /* rfc */                                       
        u64 rx_oversize;                /* roc */                                        │          u64 rx_oversize;                /* roc */                                       
        u64 rx_jabber;                  /* rjc */                                        │          u64 rx_jabber;                  /* rjc */                                       
        u64 tx_size_64;                 /* ptc64 */                                      │          u64 tx_size_64;                 /* ptc64 */                                     
        u64 tx_size_127;                /* ptc127 */                                     │          u64 tx_size_127;                /* ptc127 */                                    
        u64 tx_size_255;                /* ptc255 */                                     │          u64 tx_size_255;                /* ptc255 */                                    
        u64 tx_size_511;                /* ptc511 */                                     │          u64 tx_size_511;                /* ptc511 */                                    
        u64 tx_size_1023;               /* ptc1023 */                                    │          u64 tx_size_1023;               /* ptc1023 */                                   
        u64 tx_size_1522;               /* ptc1522 */                                    │          u64 tx_size_1522;               /* ptc1522 */                                   
        u64 tx_size_big;                /* ptc9522 */                                    │          u64 tx_size_big;                /* ptc9522 */                                   
                                                                                         │          u64 mac_short_packet_dropped;   /* mspdc */                                     
                                                                                         │          u64 checksum_error;             /* xec */                                       
        /* flow director stats */                                                        │          /* flow director stats */                                                       
        u32 fd_sb_status;                                                                │          u64 fd_atr_match;                                                               
        u64 fd_sb_match;                                                                 │          u64 fd_sb_match;                                                                
                                                                                         │          u64 fd_atr_tunnel_match;                                                        
                                                                                         │          u32 fd_atr_status;                                                              
                                                                                         │          u32 fd_sb_status;                                                               
                                                                                         │          /* EEE LPI */                                                                   
                                                                                         │          u32 tx_lpi_status;                                                              
                                                                                         │          u32 rx_lpi_status;                                                              
                                                                                         │          u64 tx_lpi_count;               /* etlpic */                                    
                                                                                         │          u64 rx_lpi_count;               /* erlpic */                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_lib.c:3833                                     │ linux/drivers/net/ethernet/intel/ice/ice_lib.c:3894                                      
                                                                                         │                                                                                          
        struct ice_pf *pf = vsi->back;                                                   │          struct ice_pf *pf = vsi->back;                                                  
        struct device *dev;                                                              │          struct device *dev;                                                             
        int status;                                                                      │          int status;                                                                     
        int speed;                                                                       │          int speed;                                                                      
                                                                                         │                                                                                          
        dev = ice_pf_to_dev(pf);                                                         │          dev = ice_pf_to_dev(pf);                                                        
        if (!vsi->port_info) {                                                           │          if (!vsi->port_info) {                                                          
                dev_dbg(dev, "VSI %d, type %u specified doesn't have valid port_info\n", │                  dev_dbg(dev, "VSI %d, type %u specified doesn't have valid port_info\n",
                        vsi->idx, vsi->type);                                            │                          vsi->idx, vsi->type);                                           
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        speed = ice_get_link_speed_kbps(vsi);                                            │          speed = ice_get_link_speed_kbps(vsi);                                           
        if (min_tx_rate > (u64)speed) {                                                  │          if (max_tx_rate > (u64)speed) {                                                 
                dev_err(dev, "invalid min Tx rate %llu Kbps specified for %s %d is great │                  dev_err(dev, "invalid max Tx rate %llu Kbps specified for %s %d is great
                        min_tx_rate, ice_vsi_type_str(vsi->type), vsi->idx,              │                          max_tx_rate, ice_vsi_type_str(vsi->type), vsi->idx,             
                        speed);                                                          │                          speed);                                                         
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Configure min BW for VSI limit */                                             │          /* Configure max BW for VSI limit */                                            
        if (min_tx_rate) {                                                               │          if (max_tx_rate) {                                                              
                status = ice_cfg_vsi_bw_lmt_per_tc(vsi->port_info, vsi->idx, 0,          │                  status = ice_cfg_vsi_bw_lmt_per_tc(vsi->port_info, vsi->idx, 0,         
                                                   ICE_MIN_BW, min_tx_rate);             │                                                     ICE_MAX_BW, max_tx_rate);            
                if (status) {                                                            │                  if (status) {                                                           
                        dev_err(dev, "failed to set min Tx rate(%llu Kbps) for %s %d\n", │                          dev_err(dev, "failed setting max Tx rate(%llu Kbps) for %s %d\n"
                                min_tx_rate, ice_vsi_type_str(vsi->type),                │                                  max_tx_rate, ice_vsi_type_str(vsi->type),               
                                vsi->idx);                                               │                                  vsi->idx);                                              
                        return status;                                                   │                          return status;                                                  
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                dev_dbg(dev, "set min Tx rate(%llu Kbps) for %s\n",                      │                  dev_dbg(dev, "set max Tx rate(%llu Kbps) for %s %d\n",                  
                        min_tx_rate, ice_vsi_type_str(vsi->type));                       │                          max_tx_rate, ice_vsi_type_str(vsi->type), vsi->idx);            
        } else {                                                                         │          } else {                                                                        
                status = ice_cfg_vsi_bw_dflt_lmt_per_tc(vsi->port_info,                  │                  status = ice_cfg_vsi_bw_dflt_lmt_per_tc(vsi->port_info,                 
                                                        vsi->idx, 0,                     │                                                          vsi->idx, 0,                    
                                                        ICE_MIN_BW);                     │                                                          ICE_MAX_BW);                    
                if (status) {                                                            │                  if (status) {                                                           
                        dev_err(dev, "failed to clear min Tx rate configuration for %s % │                          dev_err(dev, "failed clearing max Tx rate configuration for %s %
                                ice_vsi_type_str(vsi->type), vsi->idx);                  │                                  ice_vsi_type_str(vsi->type), vsi->idx);                 
                        return status;                                                   │                          return status;                                                  
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                dev_dbg(dev, "cleared min Tx rate configuration for %s %d\n",            │                  dev_dbg(dev, "cleared max Tx rate configuration for %s %d\n",           
                        ice_vsi_type_str(vsi->type), vsi->idx);                          │                          ice_vsi_type_str(vsi->type), vsi->idx);                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/dec/tulip/de4x5.c:2802                                       │ linux/drivers/net/ethernet/dec/tulip/de4x5.c:2985                                        
                                                                                         │                                                                                          
        case 0:                                                                          │          case 0:                                                                         
            if (lp->timeout < 0) {                                                       │              if (lp->timeout < 0) {                                                      
                mii_wr(MII_CR_ASSE | MII_CR_RAN, MII_CR, lp->phy[lp->active].addr, DE4X5 │                  mii_wr(MII_CR_ASSE | MII_CR_RAN, MII_CR, lp->phy[lp->active].addr, DE4X5
            }                                                                            │              }                                                                           
            cr = test_mii_reg(dev, MII_CR, MII_CR_RAN, false, 500);                      │              cr = test_mii_reg(dev, MII_CR, MII_CR_RAN, false, 500);                     
            if (cr < 0) {                                                                │              if (cr < 0) {                                                               
                next_tick = cr & ~TIMER_CB;                                              │                  next_tick = cr & ~TIMER_CB;                                             
            } else {                                                                     │              } else {                                                                    
                if (cr) {                                                                │                  if (cr) {                                                               
                    lp->local_state = 0;                                                 │                      lp->local_state = 0;                                                
                    lp->media = SPD_DET;                                                 │                      lp->media = SPD_DET;                                                
                } else {                                                                 │                  } else {                                                                
                    lp->local_state++;                                                   │                      lp->local_state++;                                                  
                }                                                                        │                  }                                                                       
                next_tick = dc21140m_autoconf(dev);                                      │                  next_tick = dc2114x_autoconf(dev);                                      
            }                                                                            │              }                                                                           
            break;                                                                       │              break;                                                                      
                                                                                         │                                                                                          
        case 1:                                                                          │          case 1:                                                                         
            if ((sr=test_mii_reg(dev, MII_SR, MII_SR_ASSC, true, 2000)) < 0) {           │              sr = test_mii_reg(dev, MII_SR, MII_SR_ASSC, true, 2000);                    
                                                                                         │              if (sr < 0) {                                                               
                next_tick = sr & ~TIMER_CB;                                              │                  next_tick = sr & ~TIMER_CB;                                             
            } else {                                                                     │              } else {                                                                    
                lp->media = SPD_DET;                                                     │                  lp->media = SPD_DET;                                                    
                lp->local_state = 0;                                                     │                  lp->local_state = 0;                                                    
                if (sr) {                         /* Success! */                         │                  if (sr) {                         /* Success! */                        
                    lp->tmp = MII_SR_ASSC;                                               │                      lp->tmp = MII_SR_ASSC;                                              
                    anlpa = mii_rd(MII_ANLPA, lp->phy[lp->active].addr, DE4X5_MII);      │                      anlpa = mii_rd(MII_ANLPA, lp->phy[lp->active].addr, DE4X5_MII);     
                    ana = mii_rd(MII_ANA, lp->phy[lp->active].addr, DE4X5_MII);          │                      ana = mii_rd(MII_ANA, lp->phy[lp->active].addr, DE4X5_MII);         
                    if (!(anlpa & MII_ANLPA_RF) &&                                       │                      if (!(anlpa & MII_ANLPA_RF) &&                                      
                         (cap = anlpa & MII_ANLPA_TAF & ana)) {                          │                           (cap = anlpa & MII_ANLPA_TAF & ana)) {                         
                        if (cap & MII_ANA_100M) {                                        │                          if (cap & MII_ANA_100M) {                                       
                            lp->fdx = (ana & anlpa & MII_ANA_FDAM & MII_ANA_100M) != 0;  │                              lp->fdx = (ana & anlpa & MII_ANA_FDAM & MII_ANA_100M) != 0; 
                            lp->media = _100Mb;                                          │                              lp->media = _100Mb;                                         
                        } else if (cap & MII_ANA_10M) {                                  │                          } else if (cap & MII_ANA_10M) {                                 
                            lp->fdx = (ana & anlpa & MII_ANA_FDAM & MII_ANA_10M) != 0;   │                              lp->fdx = (ana & anlpa & MII_ANA_FDAM & MII_ANA_10M) != 0;  
                                                                                         │                                                                                          
                            lp->media = _10Mb;                                           │                              lp->media = _10Mb;                                          
                        }                                                                │                          }                                                               
                    }                                                                    │                      }                                                                   
                }                       /* Auto Negotiation failed to finish */          │                  }                       /* Auto Negotiation failed to finish */         
                next_tick = dc21140m_autoconf(dev);                                      │                  next_tick = dc2114x_autoconf(dev);                                      
            }                           /* Auto Negotiation failed to start */           │              }                           /* Auto Negotiation failed to start  */         
            break;                                                                       │              break;                                                                      
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_dcb.c:1204                                     │ linux/drivers/net/ethernet/intel/i40e/i40e_dcb.c:1164                                    
                                                                                         │                                                                                          
        u16 typelen, len, offset = 0;                                                    │          u16 typelength, length, offset = 0;                                             
        u8 priority, selector, i = 0;                                                    │          u8 priority, selector, i = 0;                                                   
        u8 *buf = tlv->tlvinfo;                                                          │          u8 *buf = tlv->tlvinfo;                                                         
        u32 ouisubtype;                                                                  │          u32 ouisubtype;                                                                 
                                                                                         │                                                                                          
        /* No APP TLVs then just return */                                               │          /* No APP TLVs then just return */                                              
        if (dcbcfg->numapps == 0)                                                        │          if (dcbcfg->numapps == 0)                                                       
                return;                                                                  │                  return;                                                                 
        ouisubtype = ((ICE_IEEE_8021QAZ_OUI << ICE_LLDP_TLV_OUI_S) |                     │          ouisubtype = (u32)((I40E_IEEE_8021QAZ_OUI << I40E_LLDP_TLV_OUI_SHIFT) |         
                      ICE_IEEE_SUBTYPE_APP_PRI);                                         │                          I40E_IEEE_SUBTYPE_APP_PRI);                                     
        tlv->ouisubtype = htonl(ouisubtype);                                             │          tlv->ouisubtype = htonl(ouisubtype);                                            
                                                                                         │                                                                                          
        /* Move offset to App Priority Table */                                          │          /* Move offset to App Priority Table */                                         
        offset++;                                                                        │          offset++;                                                                       
        /* Application Priority Table (3 octets)                                         │          /* Application Priority Table (3 octets)                                        
         * Octets:|         1          |    2    |    3    |                             │           * Octets:|         1          |    2    |    3    |                            
         *        -----------------------------------------                              │           *        -----------------------------------------                             
         *        |Priority|Rsrvd| Sel |    Protocol ID    |                             │           *        |Priority|Rsrvd| Sel |    Protocol ID    |                            
         *        -----------------------------------------                              │           *        -----------------------------------------                             
         *   Bits:|23    21|20 19|18 16|15                0|                             │           *   Bits:|23    21|20 19|18 16|15                0|                            
         *        -----------------------------------------                              │           *        -----------------------------------------                             
         */                                                                              │           */                                                                             
        while (i < dcbcfg->numapps) {                                                    │          while (i < dcbcfg->numapps) {                                                   
                priority = dcbcfg->app[i].priority & 0x7;                                │                  priority = dcbcfg->app[i].priority & 0x7;                               
                selector = dcbcfg->app[i].selector & 0x7;                                │                  selector = dcbcfg->app[i].selector & 0x7;                               
                buf[offset] = (priority << ICE_IEEE_APP_PRIO_S) | selector;              │                  buf[offset] = (priority << I40E_IEEE_APP_PRIO_SHIFT) | selector;        
                buf[offset + 1] = (dcbcfg->app[i].prot_id >> 0x8) & 0xFF;                │                  buf[offset + 1] = (dcbcfg->app[i].protocolid >> 0x8) & 0xFF;            
                buf[offset + 2] = dcbcfg->app[i].prot_id & 0xFF;                         │                  buf[offset + 2] =  dcbcfg->app[i].protocolid & 0xFF;                    
                /* Move to next app */                                                   │                  /* Move to next app */                                                  
                offset += 3;                                                             │                  offset += 3;                                                            
                i++;                                                                     │                  i++;                                                                    
                if (i >= ICE_DCBX_MAX_APPS)                                              │                  if (i >= I40E_DCBX_MAX_APPS)                                            
                        break;                                                           │                          break;                                                          
        }                                                                                │          }                                                                               
        /* len includes size of ouisubtype + 1 reserved + 3*numapps */                   │          /* length includes size of ouisubtype + 1 reserved + 3*numapps */               
        len = sizeof(tlv->ouisubtype) + 1 + (i * 3);                                     │          length = sizeof(tlv->ouisubtype) + 1 + (i * 3);                                 
        typelen = ((ICE_TLV_TYPE_ORG << ICE_LLDP_TLV_TYPE_S) | (len & 0x1FF));           │          typelength = (u16)((I40E_TLV_TYPE_ORG << I40E_LLDP_TLV_TYPE_SHIFT) |            
        tlv->typelen = htons(typelen);                                                   │                  (length & 0x1FF));                                                      
                                                                                         │          tlv->typelength = htons(typelength);                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/efx.c:266                                                │ linux/drivers/net/ethernet/sfc/falcon/efx.c:1615                                         
                                                                                         │                                                                                          
        int rc;                                                                          │          int rc;                                                                         
                                                                                         │                                                                                          
        netif_dbg(efx, probe, efx->net_dev, "creating NIC\n");                           │          netif_dbg(efx, probe, efx->net_dev, "creating NIC\n");                          
                                                                                         │                                                                                          
        /* Carry out hardware-type specific initialisation */                            │          /* Carry out hardware-type specific initialisation */                           
        rc = efx->type->probe(efx);                                                      │          rc = efx->type->probe(efx);                                                     
        if (rc)                                                                          │          if (rc)                                                                         
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                if (!efx->max_channels || !efx->max_tx_channels) {                       │                  if (!efx->max_channels || !efx->max_tx_channels) {                      
                        netif_err(efx, drv, efx->net_dev,                                │                          netif_err(efx, drv, efx->net_dev,                               
                                  "Insufficient resources to allocate"                   │                                    "Insufficient resources to allocate"                  
                                  " any channels\n");                                    │                                    " any channels\n");                                   
                        rc = -ENOSPC;                                                    │                          rc = -ENOSPC;                                                   
                        goto fail1;                                                      │                          goto fail1;                                                     
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* Determine the number of channels and queues by trying                 │                  /* Determine the number of channels and queues by trying                
                 * to hook in MSI-X interrupts.                                          │                   * to hook in MSI-X interrupts.                                         
                 */                                                                      │                   */                                                                     
                rc = efx_probe_interrupts(efx);                                          │                  rc = ef4_probe_interrupts(efx);                                         
                if (rc)                                                                  │                  if (rc)                                                                 
                        goto fail1;                                                      │                          goto fail1;                                                     
                                                                                         │                                                                                          
                rc = efx_set_channels(efx);                                              │                  ef4_set_channels(efx);                                                  
                if (rc)                                                                  │                                                                                          
                        goto fail1;                                                      │                                                                                          
                                                                                         │                                                                                          
                /* dimension_resources can fail with EAGAIN */                           │                  /* dimension_resources can fail with EAGAIN */                          
                rc = efx->type->dimension_resources(efx);                                │                  rc = efx->type->dimension_resources(efx);                               
                if (rc != 0 && rc != -EAGAIN)                                            │                  if (rc != 0 && rc != -EAGAIN)                                           
                        goto fail2;                                                      │                          goto fail2;                                                     
                                                                                         │                                                                                          
                if (rc == -EAGAIN)                                                       │                  if (rc == -EAGAIN)                                                      
                        /* try again with new max_channels */                            │                          /* try again with new max_channels */                           
                        efx_remove_interrupts(efx);                                      │                          ef4_remove_interrupts(efx);                                     
                                                                                         │                                                                                          
        } while (rc == -EAGAIN);                                                         │          } while (rc == -EAGAIN);                                                        
                                                                                         │                                                                                          
        if (efx->n_channels > 1)                                                         │          if (efx->n_channels > 1)                                                        
                netdev_rss_key_fill(efx->rss_context.rx_hash_key,                        │                  netdev_rss_key_fill(&efx->rx_hash_key,                                  
                                    sizeof(efx->rss_context.rx_hash_key));               │                                      sizeof(efx->rx_hash_key));                          
        efx_set_default_rx_indir_table(efx, &efx->rss_context);                          │          ef4_set_default_rx_indir_table(efx);                                            
                                                                                         │                                                                                          
                                                                                         │          netif_set_real_num_tx_queues(efx->net_dev, efx->n_tx_channels);                 
                                                                                         │          netif_set_real_num_rx_queues(efx->net_dev, efx->n_rx_channels);                 
                                                                                         │                                                                                          
        /* Initialise the interrupt moderation settings */                               │          /* Initialise the interrupt moderation settings */                              
        efx->irq_mod_step_us = DIV_ROUND_UP(efx->timer_quantum_ns, 1000);                │          efx->irq_mod_step_us = DIV_ROUND_UP(efx->timer_quantum_ns, 1000);               
        efx_init_irq_moderation(efx, tx_irq_mod_usec, rx_irq_mod_usec, true,             │          ef4_init_irq_moderation(efx, tx_irq_mod_usec, rx_irq_mod_usec, true,            
                                true);                                                   │                                  true);                                                  
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
fail2:                                                                                   │  fail2:                                                                                  
        efx_remove_interrupts(efx);                                                      │          ef4_remove_interrupts(efx);                                                     
fail1:                                                                                   │  fail1:                                                                                  
        efx->type->remove(efx);                                                          │          efx->type->remove(efx);                                                         
        return rc;                                                                       │          return rc;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1602                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7751                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define MSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define MSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define MSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define MSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10183                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7751                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1602                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7714                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define MSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define MSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define MSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define MSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10183                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7714                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1602                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1639                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                       
#define MSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                       
#define MSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                     
#define MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                       
#define MSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                     
#define MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                       
#define MSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                     
#define MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                             
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                               
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                             
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                               
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                             
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                               
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                             
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                       
                                                                                         │          u8 byte2;                                                                       
                                                                                         │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │                                                                                          
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
                                                                                         │          __le16 word1;                                                                   
                                                                                         │          __le16 word2;                                                                   
                                                                                         │          __le16 word3;                                                                   
                                                                                         │          __le16 word4;                                                                   
                                                                                         │          __le32 reg2;                                                                    
                                                                                         │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10183                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10324                                    
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                       
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define YSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define YSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define YSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                               
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                               
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                       
                                                                                         │          u8 byte2;                                                                       
                                                                                         │          u8 byte3;                                                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │                                                                                          
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
                                                                                         │          __le16 word1;                                                                   
                                                                                         │          __le16 word2;                                                                   
                                                                                         │          __le16 word3;                                                                   
                                                                                         │          __le16 word4;                                                                   
                                                                                         │          __le32 reg2;                                                                    
                                                                                         │          __le32 reg3;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1602                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7677                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                         
#define MSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                         
#define MSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                       
#define MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                         
#define MSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                       
#define MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                         
#define MSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                       
#define MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                         
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                         
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                         
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                         
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                         
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                         
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                         
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                         
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                         
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10183                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7677                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                         
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                         
#define MSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                         
#define MSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                         
#define MSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                         
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                         
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                         
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                         
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                         
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                         
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                         
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                         
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                         
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1602                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10813                                    
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 reserved;                                                                    
        u8 byte1;                                                                        │          u8 state;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define MSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define MSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                     
#define MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                       
#define MSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                     
#define MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                       
#define MSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                     
#define MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                       
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10183                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10813                                    
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 reserved;                                                                    
        u8 byte1;                                                                        │          u8 state;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10183                                   │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1602                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                        │  #define MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                       
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                     
#define MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                        │  #define MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                      │  #define MSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                        │  #define MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                      │  #define MSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                        │  #define MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                       
#define MSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                      │  #define MSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                     
#define MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                        │  #define MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                              │  #define MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                                │  #define MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                               
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                              │  #define MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                                │  #define MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                               
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                              │  #define MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                                │  #define MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                               
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                              │  #define MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                              │  #define MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                              │  #define MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                              │  #define MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                       
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                              │  #define MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                             
#define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/lio_main.c:1156                              │ linux/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c:599                             
                                                                                         │                                                                                          
                                                                                         │          struct octeon_device *oct = (struct octeon_device *)lio->oct_dev;               
        struct octeon_soft_command *sc;                                                  │          struct octeon_soft_command *sc;                                                 
        union octnet_cmd *ncmd;                                                          │          union octnet_cmd *ncmd;                                                         
        struct octeon_device *oct = (struct octeon_device *)lio->oct_dev;                │                                                                                          
        int retval;                                                                      │          int retval;                                                                     
                                                                                         │                                                                                          
        if (oct->props[lio->ifidx].rx_on == start_stop)                                  │          if (oct->props[lio->ifidx].rx_on == start_stop)                                 
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        sc = (struct octeon_soft_command *)                                              │          sc = (struct octeon_soft_command *)                                             
                octeon_alloc_soft_command(oct, OCTNET_CMD_SIZE,                          │                  octeon_alloc_soft_command(oct, OCTNET_CMD_SIZE,                         
                                          16, 0);                                        │                                            16, 0);                                       
        if (!sc) {                                                                       │          if (!sc) {                                                                      
                netif_info(lio, rx_err, lio->netdev,                                     │                  netif_info(lio, rx_err, lio->netdev,                                    
                           "Failed to allocate octeon_soft_command struct\n");           │                             "Failed to allocate octeon_soft_command struct\n");          
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ncmd = (union octnet_cmd *)sc->virtdptr;                                         │          ncmd = (union octnet_cmd *)sc->virtdptr;                                        
                                                                                         │                                                                                          
        ncmd->u64 = 0;                                                                   │          ncmd->u64 = 0;                                                                  
        ncmd->s.cmd = OCTNET_CMD_RX_CTL;                                                 │          ncmd->s.cmd = OCTNET_CMD_RX_CTL;                                                
        ncmd->s.param1 = start_stop;                                                     │          ncmd->s.param1 = start_stop;                                                    
                                                                                         │                                                                                          
        octeon_swap_8B_data((u64 *)ncmd, (OCTNET_CMD_SIZE >> 3));                        │          octeon_swap_8B_data((u64 *)ncmd, (OCTNET_CMD_SIZE >> 3));                       
                                                                                         │                                                                                          
        sc->iq_no = lio->linfo.txpciq[0].s.q_no;                                         │          sc->iq_no = lio->linfo.txpciq[0].s.q_no;                                        
                                                                                         │                                                                                          
        octeon_prepare_soft_command(oct, sc, OPCODE_NIC,                                 │          octeon_prepare_soft_command(oct, sc, OPCODE_NIC,                                
                                    OPCODE_NIC_CMD, 0, 0, 0);                            │                                      OPCODE_NIC_CMD, 0, 0, 0);                           
                                                                                         │                                                                                          
        init_completion(&sc->complete);                                                  │          init_completion(&sc->complete);                                                 
        sc->sc_status = OCTEON_REQUEST_PENDING;                                          │          sc->sc_status = OCTEON_REQUEST_PENDING;                                         
                                                                                         │                                                                                          
        retval = octeon_send_soft_command(oct, sc);                                      │          retval = octeon_send_soft_command(oct, sc);                                     
        if (retval == IQ_SEND_FAILED) {                                                  │          if (retval == IQ_SEND_FAILED) {                                                 
                netif_info(lio, rx_err, lio->netdev, "Failed to send RX Control message\ │                  netif_info(lio, rx_err, lio->netdev, "Failed to send RX Control message\
                octeon_free_soft_command(oct, sc);                                       │                  octeon_free_soft_command(oct, sc);                                      
        } else {                                                                         │          } else {                                                                        
                /* Sleep on a wait queue till the cond flag indicates that the           │                  /* Sleep on a wait queue till the cond flag indicates that the          
                 * response arrived or timed-out.                                        │                   * response arrived or timed-out.                                       
                 */                                                                      │                   */                                                                     
                retval = wait_for_sc_completion_timeout(oct, sc, 0);                     │                  retval = wait_for_sc_completion_timeout(oct, sc, 0);                    
                if (retval)                                                              │                  if (retval)                                                             
                        return retval;                                                   │                          return retval;                                                  
                                                                                         │                                                                                          
                oct->props[lio->ifidx].rx_on = start_stop;                               │                  oct->props[lio->ifidx].rx_on = start_stop;                              
                WRITE_ONCE(sc->caller_is_done, true);                                    │                  WRITE_ONCE(sc->caller_is_done, true);                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return retval;                                                                   │          return retval;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c:9609                      │ linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c:9564                       
                                                                                         │                                                                                          
        struct hclge_rx_vtag_cfg *vcfg = &vport->rxvlan_cfg;                             │          struct hclge_tx_vtag_cfg *vcfg = &vport->txvlan_cfg;                            
        struct hclge_vport_vtag_rx_cfg_cmd *req;                                         │          struct hclge_vport_vtag_tx_cfg_cmd *req;                                        
        struct hclge_dev *hdev = vport->back;                                            │          struct hclge_dev *hdev = vport->back;                                           
        struct hclge_desc desc;                                                          │          struct hclge_desc desc;                                                         
        u16 bmap_index;                                                                  │          u16 bmap_index;                                                                 
        int status;                                                                      │          int status;                                                                     
                                                                                         │                                                                                          
        hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_VLAN_PORT_RX_CFG, false);            │          hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_VLAN_PORT_TX_CFG, false);           
                                                                                         │                                                                                          
        req = (struct hclge_vport_vtag_rx_cfg_cmd *)desc.data;                           │          req = (struct hclge_vport_vtag_tx_cfg_cmd *)desc.data;                          
        hnae3_set_bit(req->vport_vlan_cfg, HCLGE_REM_TAG1_EN_B,                          │          req->def_vlan_tag1 = cpu_to_le16(vcfg->default_tag1);                           
                      vcfg->strip_tag1_en ? 1 : 0);                                      │          req->def_vlan_tag2 = cpu_to_le16(vcfg->default_tag2);                           
        hnae3_set_bit(req->vport_vlan_cfg, HCLGE_REM_TAG2_EN_B,                          │          hnae3_set_bit(req->vport_vlan_cfg, HCLGE_ACCEPT_TAG1_B,                         
                      vcfg->strip_tag2_en ? 1 : 0);                                      │                        vcfg->accept_tag1 ? 1 : 0);                                       
        hnae3_set_bit(req->vport_vlan_cfg, HCLGE_SHOW_TAG1_EN_B,                         │          hnae3_set_bit(req->vport_vlan_cfg, HCLGE_ACCEPT_UNTAG1_B,                       
                      vcfg->vlan1_vlan_prionly ? 1 : 0);                                 │                        vcfg->accept_untag1 ? 1 : 0);                                     
        hnae3_set_bit(req->vport_vlan_cfg, HCLGE_SHOW_TAG2_EN_B,                         │          hnae3_set_bit(req->vport_vlan_cfg, HCLGE_ACCEPT_TAG2_B,                         
                      vcfg->vlan2_vlan_prionly ? 1 : 0);                                 │                        vcfg->accept_tag2 ? 1 : 0);                                       
        hnae3_set_bit(req->vport_vlan_cfg, HCLGE_DISCARD_TAG1_EN_B,                      │          hnae3_set_bit(req->vport_vlan_cfg, HCLGE_ACCEPT_UNTAG2_B,                       
                      vcfg->strip_tag1_discard_en ? 1 : 0);                              │                        vcfg->accept_untag2 ? 1 : 0);                                     
        hnae3_set_bit(req->vport_vlan_cfg, HCLGE_DISCARD_TAG2_EN_B,                      │          hnae3_set_bit(req->vport_vlan_cfg, HCLGE_PORT_INS_TAG1_EN_B,                    
                      vcfg->strip_tag2_discard_en ? 1 : 0);                              │                        vcfg->insert_tag1_en ? 1 : 0);                                    
                                                                                         │          hnae3_set_bit(req->vport_vlan_cfg, HCLGE_PORT_INS_TAG2_EN_B,                    
                                                                                         │                        vcfg->insert_tag2_en ? 1 : 0);                                    
                                                                                         │          hnae3_set_bit(req->vport_vlan_cfg, HCLGE_TAG_SHIFT_MODE_EN_B,                   
                                                                                         │                        vcfg->tag_shift_mode_en ? 1 : 0);                                 
                                                                                         │          hnae3_set_bit(req->vport_vlan_cfg, HCLGE_CFG_NIC_ROCE_SEL_B, 0);                
                                                                                         │                                                                                          
        req->vf_offset = vport->vport_id / HCLGE_VF_NUM_PER_CMD;                         │          req->vf_offset = vport->vport_id / HCLGE_VF_NUM_PER_CMD;                        
        bmap_index = vport->vport_id % HCLGE_VF_NUM_PER_CMD /                            │          bmap_index = vport->vport_id % HCLGE_VF_NUM_PER_CMD /                           
                        HCLGE_VF_NUM_PER_BYTE;                                           │                          HCLGE_VF_NUM_PER_BYTE;                                          
        req->vf_bitmap[bmap_index] =                                                     │          req->vf_bitmap[bmap_index] =                                                    
                1U << (vport->vport_id % HCLGE_VF_NUM_PER_BYTE);                         │                  1U << (vport->vport_id % HCLGE_VF_NUM_PER_BYTE);                        
                                                                                         │                                                                                          
        status = hclge_cmd_send(&hdev->hw, &desc, 1);                                    │          status = hclge_cmd_send(&hdev->hw, &desc, 1);                                   
        if (status)                                                                      │          if (status)                                                                     
                dev_err(&hdev->pdev->dev,                                                │                  dev_err(&hdev->pdev->dev,                                               
                        "Send port rxvlan cfg command fail, ret =%d\n",                  │                          "Send port txvlan cfg command fail, ret =%d\n",                 
                        status);                                                         │                          status);                                                        
                                                                                         │                                                                                          
        return status;                                                                   │          return status;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_ethtool.c:2453                                 │ linux/drivers/net/ethernet/intel/iavf/iavf_ethtool.c:1541                                
                                                                                         │                                                                                          
        u64 hfld = ICE_HASH_INVALID;                                                     │          u64 hfld = IAVF_ADV_RSS_HASH_INVALID;                                           
                                                                                         │                                                                                          
        if (nfc->data & RXH_IP_SRC || nfc->data & RXH_IP_DST) {                          │          if (cmd->data & RXH_IP_SRC || cmd->data & RXH_IP_DST) {                         
                switch (nfc->flow_type) {                                                │                  switch (cmd->flow_type) {                                               
                case TCP_V4_FLOW:                                                        │                  case TCP_V4_FLOW:                                                       
                case UDP_V4_FLOW:                                                        │                  case UDP_V4_FLOW:                                                       
                case SCTP_V4_FLOW:                                                       │                  case SCTP_V4_FLOW:                                                      
                        if (nfc->data & RXH_IP_SRC)                                      │                          if (cmd->data & RXH_IP_SRC)                                     
                                hfld |= ICE_FLOW_HASH_FLD_IPV4_SA;                       │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_IPV4_SA;                  
                        if (nfc->data & RXH_IP_DST)                                      │                          if (cmd->data & RXH_IP_DST)                                     
                                hfld |= ICE_FLOW_HASH_FLD_IPV4_DA;                       │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_IPV4_DA;                  
                        break;                                                           │                          break;                                                          
                case TCP_V6_FLOW:                                                        │                  case TCP_V6_FLOW:                                                       
                case UDP_V6_FLOW:                                                        │                  case UDP_V6_FLOW:                                                       
                case SCTP_V6_FLOW:                                                       │                  case SCTP_V6_FLOW:                                                      
                        if (nfc->data & RXH_IP_SRC)                                      │                          if (cmd->data & RXH_IP_SRC)                                     
                                hfld |= ICE_FLOW_HASH_FLD_IPV6_SA;                       │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_IPV6_SA;                  
                        if (nfc->data & RXH_IP_DST)                                      │                          if (cmd->data & RXH_IP_DST)                                     
                                hfld |= ICE_FLOW_HASH_FLD_IPV6_DA;                       │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_IPV6_DA;                  
                        break;                                                           │                          break;                                                          
                default:                                                                 │                  default:                                                                
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (nfc->data & RXH_L4_B_0_1 || nfc->data & RXH_L4_B_2_3) {                      │          if (cmd->data & RXH_L4_B_0_1 || cmd->data & RXH_L4_B_2_3) {                     
                switch (nfc->flow_type) {                                                │                  switch (cmd->flow_type) {                                               
                case TCP_V4_FLOW:                                                        │                  case TCP_V4_FLOW:                                                       
                case TCP_V6_FLOW:                                                        │                  case TCP_V6_FLOW:                                                       
                        if (nfc->data & RXH_L4_B_0_1)                                    │                          if (cmd->data & RXH_L4_B_0_1)                                   
                                hfld |= ICE_FLOW_HASH_FLD_TCP_SRC_PORT;                  │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_TCP_SRC_PORT;             
                        if (nfc->data & RXH_L4_B_2_3)                                    │                          if (cmd->data & RXH_L4_B_2_3)                                   
                                hfld |= ICE_FLOW_HASH_FLD_TCP_DST_PORT;                  │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_TCP_DST_PORT;             
                        break;                                                           │                          break;                                                          
                case UDP_V4_FLOW:                                                        │                  case UDP_V4_FLOW:                                                       
                case UDP_V6_FLOW:                                                        │                  case UDP_V6_FLOW:                                                       
                        if (nfc->data & RXH_L4_B_0_1)                                    │                          if (cmd->data & RXH_L4_B_0_1)                                   
                                hfld |= ICE_FLOW_HASH_FLD_UDP_SRC_PORT;                  │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_UDP_SRC_PORT;             
                        if (nfc->data & RXH_L4_B_2_3)                                    │                          if (cmd->data & RXH_L4_B_2_3)                                   
                                hfld |= ICE_FLOW_HASH_FLD_UDP_DST_PORT;                  │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_UDP_DST_PORT;             
                        break;                                                           │                          break;                                                          
                case SCTP_V4_FLOW:                                                       │                  case SCTP_V4_FLOW:                                                      
                case SCTP_V6_FLOW:                                                       │                  case SCTP_V6_FLOW:                                                      
                        if (nfc->data & RXH_L4_B_0_1)                                    │                          if (cmd->data & RXH_L4_B_0_1)                                   
                                hfld |= ICE_FLOW_HASH_FLD_SCTP_SRC_PORT;                 │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_SCTP_SRC_PORT;            
                        if (nfc->data & RXH_L4_B_2_3)                                    │                          if (cmd->data & RXH_L4_B_2_3)                                   
                                hfld |= ICE_FLOW_HASH_FLD_SCTP_DST_PORT;                 │                                  hfld |= IAVF_ADV_RSS_HASH_FLD_SCTP_DST_PORT;            
                        break;                                                           │                          break;                                                          
                default:                                                                 │                  default:                                                                
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return hfld;                                                                     │          return hfld;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/ti/cpsw_switchdev.c:431                                      │ linux/drivers/net/ethernet/ti/am65-cpsw-switchdev.c:421                                  
                                                                                         │                                                                                          
        struct net_device *ndev = switchdev_notifier_info_to_dev(ptr);                   │          struct net_device *ndev = switchdev_notifier_info_to_dev(ptr);                  
                                                                                         │          struct am65_cpsw_switchdev_event_work *switchdev_work;                          
                                                                                         │          struct am65_cpsw_port *port = am65_ndev_to_port(ndev);                          
        struct switchdev_notifier_fdb_info *fdb_info = ptr;                              │          struct switchdev_notifier_fdb_info *fdb_info = ptr;                             
        struct cpsw_switchdev_event_work *switchdev_work;                                │                                                                                          
        struct cpsw_priv *priv = netdev_priv(ndev);                                      │                                                                                          
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (event == SWITCHDEV_PORT_ATTR_SET) {                                          │          if (event == SWITCHDEV_PORT_ATTR_SET) {                                         
                err = switchdev_handle_port_attr_set(ndev, ptr,                          │                  err = switchdev_handle_port_attr_set(ndev, ptr,                         
                                                     cpsw_port_dev_check,                │                                                       am65_cpsw_port_dev_check,          
                                                     cpsw_port_attr_set);                │                                                       am65_cpsw_port_attr_set);          
                return notifier_from_errno(err);                                         │                  return notifier_from_errno(err);                                        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!cpsw_port_dev_check(ndev))                                                  │          if (!am65_cpsw_port_dev_check(ndev))                                            
                return NOTIFY_DONE;                                                      │                  return NOTIFY_DONE;                                                     
                                                                                         │                                                                                          
        switchdev_work = kzalloc(sizeof(*switchdev_work), GFP_ATOMIC);                   │          switchdev_work = kzalloc(sizeof(*switchdev_work), GFP_ATOMIC);                  
        if (WARN_ON(!switchdev_work))                                                    │          if (WARN_ON(!switchdev_work))                                                   
                return NOTIFY_BAD;                                                       │                  return NOTIFY_BAD;                                                      
                                                                                         │                                                                                          
        INIT_WORK(&switchdev_work->work, cpsw_switchdev_event_work);                     │          INIT_WORK(&switchdev_work->work, am65_cpsw_switchdev_event_work);               
        switchdev_work->priv = priv;                                                     │          switchdev_work->port = port;                                                    
        switchdev_work->event = event;                                                   │          switchdev_work->event = event;                                                  
                                                                                         │                                                                                          
        switch (event) {                                                                 │          switch (event) {                                                                
        case SWITCHDEV_FDB_ADD_TO_DEVICE:                                                │          case SWITCHDEV_FDB_ADD_TO_DEVICE:                                               
        case SWITCHDEV_FDB_DEL_TO_DEVICE:                                                │          case SWITCHDEV_FDB_DEL_TO_DEVICE:                                               
                memcpy(&switchdev_work->fdb_info, ptr,                                   │                  memcpy(&switchdev_work->fdb_info, ptr,                                  
                       sizeof(switchdev_work->fdb_info));                                │                         sizeof(switchdev_work->fdb_info));                               
                switchdev_work->fdb_info.addr = kzalloc(ETH_ALEN, GFP_ATOMIC);           │                  switchdev_work->fdb_info.addr = kzalloc(ETH_ALEN, GFP_ATOMIC);          
                if (!switchdev_work->fdb_info.addr)                                      │                  if (!switchdev_work->fdb_info.addr)                                     
                        goto err_addr_alloc;                                             │                          goto err_addr_alloc;                                            
                ether_addr_copy((u8 *)switchdev_work->fdb_info.addr,                     │                  ether_addr_copy((u8 *)switchdev_work->fdb_info.addr,                    
                                fdb_info->addr);                                         │                                  fdb_info->addr);                                        
                dev_hold(ndev);                                                          │                  dev_hold(ndev);                                                         
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                kfree(switchdev_work);                                                   │                  kfree(switchdev_work);                                                  
                return NOTIFY_DONE;                                                      │                  return NOTIFY_DONE;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        queue_work(system_long_wq, &switchdev_work->work);                               │          queue_work(system_long_wq, &switchdev_work->work);                              
                                                                                         │                                                                                          
        return NOTIFY_DONE;                                                              │          return NOTIFY_DONE;                                                             
                                                                                         │                                                                                          
err_addr_alloc:                                                                          │  err_addr_alloc:                                                                         
        kfree(switchdev_work);                                                           │          kfree(switchdev_work);                                                          
        return NOTIFY_BAD;                                                               │          return NOTIFY_BAD;                                                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cadence/macb_main.c:336                                      │ linux/drivers/net/ethernet/cadence/macb_main.c:390                                       
                                                                                         │                                                                                          
        struct macb *bp = bus->priv;                                                     │          struct macb *bp = bus->priv;                                                    
        int status;                                                                      │          int status;                                                                     
                                                                                         │                                                                                          
        status = pm_runtime_get_sync(&bp->pdev->dev);                                    │          status = pm_runtime_get_sync(&bp->pdev->dev);                                   
        if (status < 0) {                                                                │          if (status < 0) {                                                               
                pm_runtime_put_noidle(&bp->pdev->dev);                                   │                  pm_runtime_put_noidle(&bp->pdev->dev);                                  
                goto mdio_pm_exit;                                                       │                  goto mdio_pm_exit;                                                      
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        status = macb_mdio_wait_for_idle(bp);                                            │          status = macb_mdio_wait_for_idle(bp);                                           
        if (status < 0)                                                                  │          if (status < 0)                                                                 
                goto mdio_read_exit;                                                     │                  goto mdio_write_exit;                                                   
                                                                                         │                                                                                          
        if (regnum & MII_ADDR_C45) {                                                     │          if (regnum & MII_ADDR_C45) {                                                    
                macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C45_SOF)                     │                  macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C45_SOF)                    
                            | MACB_BF(RW, MACB_MAN_C45_ADDR)                             │                              | MACB_BF(RW, MACB_MAN_C45_ADDR)                            
                            | MACB_BF(PHYA, mii_id)                                      │                              | MACB_BF(PHYA, mii_id)                                     
                            | MACB_BF(REGA, (regnum >> 16) & 0x1F)                       │                              | MACB_BF(REGA, (regnum >> 16) & 0x1F)                      
                            | MACB_BF(DATA, regnum & 0xFFFF)                             │                              | MACB_BF(DATA, regnum & 0xFFFF)                            
                            | MACB_BF(CODE, MACB_MAN_C45_CODE)));                        │                              | MACB_BF(CODE, MACB_MAN_C45_CODE)));                       
                                                                                         │                                                                                          
                status = macb_mdio_wait_for_idle(bp);                                    │                  status = macb_mdio_wait_for_idle(bp);                                   
                if (status < 0)                                                          │                  if (status < 0)                                                         
                        goto mdio_read_exit;                                             │                          goto mdio_write_exit;                                           
                                                                                         │                                                                                          
                macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C45_SOF)                     │                  macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C45_SOF)                    
                            | MACB_BF(RW, MACB_MAN_C45_READ)                             │                              | MACB_BF(RW, MACB_MAN_C45_WRITE)                           
                            | MACB_BF(PHYA, mii_id)                                      │                              | MACB_BF(PHYA, mii_id)                                     
                            | MACB_BF(REGA, (regnum >> 16) & 0x1F)                       │                              | MACB_BF(REGA, (regnum >> 16) & 0x1F)                      
                            | MACB_BF(CODE, MACB_MAN_C45_CODE)));                        │                              | MACB_BF(CODE, MACB_MAN_C45_CODE)                          
                                                                                         │                              | MACB_BF(DATA, value)));                                   
        } else {                                                                         │          } else {                                                                        
                macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C22_SOF)                     │                  macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C22_SOF)                    
                                | MACB_BF(RW, MACB_MAN_C22_READ)                         │                                  | MACB_BF(RW, MACB_MAN_C22_WRITE)                       
                                | MACB_BF(PHYA, mii_id)                                  │                                  | MACB_BF(PHYA, mii_id)                                 
                                | MACB_BF(REGA, regnum)                                  │                                  | MACB_BF(REGA, regnum)                                 
                                | MACB_BF(CODE, MACB_MAN_C22_CODE)));                    │                                  | MACB_BF(CODE, MACB_MAN_C22_CODE)                      
                                                                                         │                                  | MACB_BF(DATA, value)));                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        status = macb_mdio_wait_for_idle(bp);                                            │          status = macb_mdio_wait_for_idle(bp);                                           
        if (status < 0)                                                                  │          if (status < 0)                                                                 
                goto mdio_read_exit;                                                     │                  goto mdio_write_exit;                                                   
                                                                                         │                                                                                          
        status = MACB_BFEXT(DATA, macb_readl(bp, MAN));                                  │                                                                                          
                                                                                         │                                                                                          
mdio_read_exit:                                                                          │  mdio_write_exit:                                                                        
        pm_runtime_mark_last_busy(&bp->pdev->dev);                                       │          pm_runtime_mark_last_busy(&bp->pdev->dev);                                      
        pm_runtime_put_autosuspend(&bp->pdev->dev);                                      │          pm_runtime_put_autosuspend(&bp->pdev->dev);                                     
mdio_pm_exit:                                                                            │  mdio_pm_exit:                                                                           
        return status;                                                                   │          return status;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c:1540                               │ linux/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c:7983                                    
                                                                                         │                                                                                          
                unsigned int fw_naddr = (rem < ARRAY_SIZE(cmd.u.exact)                   │                  unsigned int fw_naddr = (rem < ARRAY_SIZE(c.u.exact) ?                  
                                         ? rem                                           │                                           rem : ARRAY_SIZE(c.u.exact));                  
                                         : ARRAY_SIZE(cmd.u.exact));                     │                                                                                          
                size_t len16 = DIV_ROUND_UP(offsetof(struct fw_vi_mac_cmd,               │                  size_t len16 = DIV_ROUND_UP(offsetof(struct fw_vi_mac_cmd,              
                                                     u.exact[fw_naddr]), 16);            │                                                       u.exact[fw_naddr]), 16);           
                struct fw_vi_mac_exact *p;                                               │                  struct fw_vi_mac_exact *p;                                              
                int i;                                                                   │                  int i;                                                                  
                                                                                         │                                                                                          
                memset(&cmd, 0, sizeof(cmd));                                            │                  memset(&c, 0, sizeof(c));                                               
                cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) |                │                  c.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) |                 
                                             FW_CMD_REQUEST_F |                          │                                             FW_CMD_REQUEST_F |                           
                                             FW_CMD_WRITE_F |                            │                                             FW_CMD_WRITE_F |                             
                                             (free ? FW_CMD_EXEC_F : 0) |                │                                             FW_CMD_EXEC_V(free) |                        
                                             FW_VI_MAC_CMD_VIID_V(viid));                │                                             FW_VI_MAC_CMD_VIID_V(viid));                 
                cmd.freemacs_to_len16 =                                                  │                  c.freemacs_to_len16 =                                                   
                        cpu_to_be32(FW_VI_MAC_CMD_FREEMACS_V(free) |                     │                          cpu_to_be32(FW_VI_MAC_CMD_FREEMACS_V(free) |                    
                                    FW_CMD_LEN16_V(len16));                              │                                      FW_CMD_LEN16_V(len16));                             
                                                                                         │                                                                                          
                for (i = 0, p = cmd.u.exact; i < fw_naddr; i++, p++) {                   │                  for (i = 0, p = c.u.exact; i < fw_naddr; i++, p++) {                    
                        p->valid_to_idx = cpu_to_be16(                                   │                          p->valid_to_idx =                                               
                                FW_VI_MAC_CMD_VALID_F |                                  │                                  cpu_to_be16(FW_VI_MAC_CMD_VALID_F |                     
                                FW_VI_MAC_CMD_IDX_V(FW_VI_MAC_ADD_MAC));                 │                                              FW_VI_MAC_CMD_IDX_V(                        
                        memcpy(p->macaddr, addr[offset+i], sizeof(p->macaddr));          │                                                      FW_VI_MAC_ADD_MAC));                
                                                                                         │                          memcpy(p->macaddr, addr[offset + i],                            
                                                                                         │                                 sizeof(p->macaddr));                                     
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                                                                                         │                  /* It's okay if we run out of space in our MAC address arena.           
                ret = t4vf_wr_mbox_core(adapter, &cmd, sizeof(cmd), &rpl,                │                   * Some of the addresses we submit may get stored so we need            
                                        sleep_ok);                                       │                   * to run through the reply to see what the results were ...            
                if (ret && ret != -ENOMEM)                                               │                   */                                                                     
                                                                                         │                  ret = t4_wr_mbox_meat(adap, mbox, &c, sizeof(c), &c, sleep_ok);         
                                                                                         │                  if (ret && ret != -FW_ENOMEM)                                           
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                for (i = 0, p = rpl.u.exact; i < fw_naddr; i++, p++) {                   │                  for (i = 0, p = c.u.exact; i < fw_naddr; i++, p++) {                    
                        u16 index = FW_VI_MAC_CMD_IDX_G(                                 │                          u16 index = FW_VI_MAC_CMD_IDX_G(                                
                                be16_to_cpu(p->valid_to_idx));                           │                                          be16_to_cpu(p->valid_to_idx));                  
                                                                                         │                                                                                          
                        if (idx)                                                         │                          if (idx)                                                        
                                idx[offset+i] =                                          │                                  idx[offset + i] = (index >= max_naddr ?                 
                                        (index >= max_naddr                              │                                                     0xffff : index);                     
                                         ? 0xffff                                        │                                                                                          
                                         : index);                                       │                                                                                          
                        if (index < max_naddr)                                           │                          if (index < max_naddr)                                          
                                nfilters++;                                              │                                  nfilters++;                                             
                        else if (hash)                                                   │                          else if (hash)                                                  
                                *hash |= (1ULL << hash_mac_addr(addr[offset+i]));        │                                  *hash |= (1ULL <<                                       
                                                                                         │                                            hash_mac_addr(addr[offset + i]));             
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                free = false;                                                            │                  free = false;                                                           
                offset += fw_naddr;                                                      │                  offset += fw_naddr;                                                     
                rem -= fw_naddr;                                                         │                  rem -= fw_naddr;                                                        
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:2613                        │ linux/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:2299                         
                                                                                         │                                                                                          
        int err = -EINVAL;                                                               │          int err;                                                                        
        int alop = vhcr->op_modifier;                                                    │          int alop = vhcr->op_modifier;                                                   
                                                                                         │                                                                                          
        switch (vhcr->in_modifier & 0xFF) {                                              │          switch (vhcr->in_modifier & 0xFF) {                                             
        case RES_QP:                                                                     │          case RES_QP:                                                                    
                err = qp_free_res(dev, slave, vhcr->op_modifier, alop,                   │                  err = qp_alloc_res(dev, slave, vhcr->op_modifier, alop,                 
                                  vhcr->in_param);                                       │                                     vhcr->in_param, &vhcr->out_param);                   
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case RES_MTT:                                                                    │          case RES_MTT:                                                                   
                err = mtt_free_res(dev, slave, vhcr->op_modifier, alop,                  │                  err = mtt_alloc_res(dev, slave, vhcr->op_modifier, alop,                
                                   vhcr->in_param, &vhcr->out_param);                    │                                      vhcr->in_param, &vhcr->out_param);                  
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case RES_MPT:                                                                    │          case RES_MPT:                                                                   
                err = mpt_free_res(dev, slave, vhcr->op_modifier, alop,                  │                  err = mpt_alloc_res(dev, slave, vhcr->op_modifier, alop,                
                                   vhcr->in_param);                                      │                                      vhcr->in_param, &vhcr->out_param);                  
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case RES_CQ:                                                                     │          case RES_CQ:                                                                    
                err = cq_free_res(dev, slave, vhcr->op_modifier, alop,                   │                  err = cq_alloc_res(dev, slave, vhcr->op_modifier, alop,                 
                                  vhcr->in_param, &vhcr->out_param);                     │                                     vhcr->in_param, &vhcr->out_param);                   
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case RES_SRQ:                                                                    │          case RES_SRQ:                                                                   
                err = srq_free_res(dev, slave, vhcr->op_modifier, alop,                  │                  err = srq_alloc_res(dev, slave, vhcr->op_modifier, alop,                
                                   vhcr->in_param, &vhcr->out_param);                    │                                      vhcr->in_param, &vhcr->out_param);                  
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case RES_MAC:                                                                    │          case RES_MAC:                                                                   
                err = mac_free_res(dev, slave, vhcr->op_modifier, alop,                  │                  err = mac_alloc_res(dev, slave, vhcr->op_modifier, alop,                
                                   vhcr->in_param, &vhcr->out_param,                     │                                      vhcr->in_param, &vhcr->out_param,                   
                                   (vhcr->in_modifier >> 8) & 0xFF);                     │                                      (vhcr->in_modifier >> 8) & 0xFF);                   
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case RES_VLAN:                                                                   │          case RES_VLAN:                                                                  
                err = vlan_free_res(dev, slave, vhcr->op_modifier, alop,                 │                  err = vlan_alloc_res(dev, slave, vhcr->op_modifier, alop,               
                                    vhcr->in_param, &vhcr->out_param,                    │                                       vhcr->in_param, &vhcr->out_param,                  
                                    (vhcr->in_modifier >> 8) & 0xFF);                    │                                       (vhcr->in_modifier >> 8) & 0xFF);                  
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case RES_COUNTER:                                                                │          case RES_COUNTER:                                                               
                err = counter_free_res(dev, slave, vhcr->op_modifier, alop,              │                  err = counter_alloc_res(dev, slave, vhcr->op_modifier, alop,            
                                       vhcr->in_param, &vhcr->out_param);                │                                          vhcr->in_param, &vhcr->out_param, 0);           
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case RES_XRCD:                                                                   │          case RES_XRCD:                                                                  
                err = xrcdn_free_res(dev, slave, vhcr->op_modifier, alop,                │                  err = xrcdn_alloc_res(dev, slave, vhcr->op_modifier, alop,              
                                     vhcr->in_param, &vhcr->out_param);                  │                                        vhcr->in_param, &vhcr->out_param);                
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        default:                                                                         │          default:                                                                        
                                                                                         │                  err = -EINVAL;                                                          
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4/sge.c:1937                                     │ linux/drivers/net/ethernet/chelsio/cxgb4vf/sge.c:1276                                    
                                                                                         │                                                                                          
                struct cpl_tx_pkt_lso_core *lso = (void *)(wr + 1);                      │                  struct cpl_tx_pkt_lso_core *lso = (void *)(wr + 1);                     
                bool v6 = (ssi->gso_type & SKB_GSO_TCPV6) != 0;                          │                  bool v6 = (ssi->gso_type & SKB_GSO_TCPV6) != 0;                         
                int l3hdr_len = skb_network_header_len(skb);                             │                  int l3hdr_len = skb_network_header_len(skb);                            
                int eth_xtra_len = skb_network_offset(skb) - ETH_HLEN;                   │                  int eth_xtra_len = skb_network_offset(skb) - ETH_HLEN;                  
                                                                                         │                                                                                          
                wr->op_immdlen =                                                         │                  wr->op_immdlen =                                                        
                        cpu_to_be32(FW_WR_OP_V(FW_ETH_TX_PKT_VM_WR) |                    │                          cpu_to_be32(FW_WR_OP_V(FW_ETH_TX_PKT_VM_WR) |                   
                                    FW_WR_IMMDLEN_V(sizeof(*lso) +                       │                                      FW_WR_IMMDLEN_V(sizeof(*lso) +                      
                                                    sizeof(*cpl)));                      │                                                      sizeof(*cpl)));                     
                 /* Fill in the LSO CPL message. */                                      │                  /*                                                                      
                                                                                         │                   * Fill in the LSO CPL message.                                         
                                                                                         │                   */                                                                     
                lso->lso_ctrl =                                                          │                  lso->lso_ctrl =                                                         
                        cpu_to_be32(LSO_OPCODE_V(CPL_TX_PKT_LSO) |                       │                          cpu_to_be32(LSO_OPCODE_V(CPL_TX_PKT_LSO) |                      
                                    LSO_FIRST_SLICE_F |                                  │                                      LSO_FIRST_SLICE_F |                                 
                                    LSO_LAST_SLICE_F |                                   │                                      LSO_LAST_SLICE_F |                                  
                                    LSO_IPV6_V(v6) |                                     │                                      LSO_IPV6_V(v6) |                                    
                                    LSO_ETHHDR_LEN_V(eth_xtra_len / 4) |                 │                                      LSO_ETHHDR_LEN_V(eth_xtra_len / 4) |                
                                    LSO_IPHDR_LEN_V(l3hdr_len / 4) |                     │                                      LSO_IPHDR_LEN_V(l3hdr_len / 4) |                    
                                    LSO_TCPHDR_LEN_V(tcp_hdr(skb)->doff));               │                                      LSO_TCPHDR_LEN_V(tcp_hdr(skb)->doff));              
                lso->ipid_ofst = cpu_to_be16(0);                                         │                  lso->ipid_ofst = cpu_to_be16(0);                                        
                lso->mss = cpu_to_be16(ssi->gso_size);                                   │                  lso->mss = cpu_to_be16(ssi->gso_size);                                  
                lso->seqno_offset = cpu_to_be32(0);                                      │                  lso->seqno_offset = cpu_to_be32(0);                                     
                if (is_t4(adapter->params.chip))                                         │                  if (is_t4(adapter->params.chip))                                        
                        lso->len = cpu_to_be32(skb->len);                                │                          lso->len = cpu_to_be32(skb->len);                               
                else                                                                     │                  else                                                                    
                        lso->len = cpu_to_be32(LSO_T5_XFER_SIZE_V(skb->len));            │                          lso->len = cpu_to_be32(LSO_T5_XFER_SIZE_V(skb->len));           
                                                                                         │                                                                                          
                /* Set up TX Packet CPL pointer, control word and perform                │                  /*                                                                      
                                                                                         │                   * Set up TX Packet CPL pointer, control word and perform               
                 * accounting.                                                           │                   * accounting.                                                          
                 */                                                                      │                   */                                                                     
                cpl = (void *)(lso + 1);                                                 │                  cpl = (void *)(lso + 1);                                                
                                                                                         │                                                                                          
                if (chip_ver <= CHELSIO_T5)                                              │                  if (CHELSIO_CHIP_VERSION(adapter->params.chip) <= CHELSIO_T5)           
                        cntrl = TXPKT_ETHHDR_LEN_V(eth_xtra_len);                        │                          cntrl = TXPKT_ETHHDR_LEN_V(eth_xtra_len);                       
                else                                                                     │                  else                                                                    
                        cntrl = T6_TXPKT_ETHHDR_LEN_V(eth_xtra_len);                     │                          cntrl = T6_TXPKT_ETHHDR_LEN_V(eth_xtra_len);                    
                                                                                         │                                                                                          
                cntrl |= TXPKT_CSUM_TYPE_V(v6 ?                                          │                  cntrl |= TXPKT_CSUM_TYPE_V(v6 ?                                         
                                           TX_CSUM_TCPIP6 : TX_CSUM_TCPIP) |             │                                             TX_CSUM_TCPIP6 : TX_CSUM_TCPIP) |            
                         TXPKT_IPHDR_LEN_V(l3hdr_len);                                   │                           TXPKT_IPHDR_LEN_V(l3hdr_len);                                  
                txq->tso++;                                                              │                  txq->tso++;                                                             
                txq->tx_cso += ssi->gso_segs;                                            │                  txq->tx_cso += ssi->gso_segs;                                           
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_virtchnl.c:3390                                │ linux/drivers/net/ethernet/intel/ice/ice_virtchnl.c:3560                                 
                                                                                         │                                                                                          
        .get_ver_msg = ice_vc_get_ver_msg,                                               │          .get_ver_msg = ice_vc_get_ver_msg,                                              
        .get_vf_res_msg = ice_vc_get_vf_res_msg,                                         │          .get_vf_res_msg = ice_vc_get_vf_res_msg,                                        
        .reset_vf = ice_vc_reset_vf_msg,                                                 │          .reset_vf = ice_vc_reset_vf_msg,                                                
        .add_mac_addr_msg = ice_vc_add_mac_addr_msg,                                     │          .add_mac_addr_msg = ice_vc_repr_add_mac,                                        
        .del_mac_addr_msg = ice_vc_del_mac_addr_msg,                                     │          .del_mac_addr_msg = ice_vc_repr_del_mac,                                        
        .cfg_qs_msg = ice_vc_cfg_qs_msg,                                                 │          .cfg_qs_msg = ice_vc_cfg_qs_msg,                                                
        .ena_qs_msg = ice_vc_ena_qs_msg,                                                 │          .ena_qs_msg = ice_vc_ena_qs_msg,                                                
        .dis_qs_msg = ice_vc_dis_qs_msg,                                                 │          .dis_qs_msg = ice_vc_dis_qs_msg,                                                
        .request_qs_msg = ice_vc_request_qs_msg,                                         │          .request_qs_msg = ice_vc_request_qs_msg,                                        
        .cfg_irq_map_msg = ice_vc_cfg_irq_map_msg,                                       │          .cfg_irq_map_msg = ice_vc_cfg_irq_map_msg,                                      
        .config_rss_key = ice_vc_config_rss_key,                                         │          .config_rss_key = ice_vc_config_rss_key,                                        
        .config_rss_lut = ice_vc_config_rss_lut,                                         │          .config_rss_lut = ice_vc_config_rss_lut,                                        
        .get_stats_msg = ice_vc_get_stats_msg,                                           │          .get_stats_msg = ice_vc_get_stats_msg,                                          
        .cfg_promiscuous_mode_msg = ice_vc_cfg_promiscuous_mode_msg,                     │          .cfg_promiscuous_mode_msg = ice_vc_repr_cfg_promiscuous_mode,                   
        .add_vlan_msg = ice_vc_add_vlan_msg,                                             │          .add_vlan_msg = ice_vc_repr_add_vlan,                                           
        .remove_vlan_msg = ice_vc_remove_vlan_msg,                                       │          .remove_vlan_msg = ice_vc_repr_del_vlan,                                        
        .ena_vlan_stripping = ice_vc_ena_vlan_stripping,                                 │          .ena_vlan_stripping = ice_vc_repr_ena_vlan_stripping,                           
        .dis_vlan_stripping = ice_vc_dis_vlan_stripping,                                 │          .dis_vlan_stripping = ice_vc_repr_dis_vlan_stripping,                           
        .handle_rss_cfg_msg = ice_vc_handle_rss_cfg,                                     │          .handle_rss_cfg_msg = ice_vc_handle_rss_cfg,                                    
        .add_fdir_fltr_msg = ice_vc_add_fdir_fltr,                                       │          .add_fdir_fltr_msg = ice_vc_add_fdir_fltr,                                      
        .del_fdir_fltr_msg = ice_vc_del_fdir_fltr,                                       │          .del_fdir_fltr_msg = ice_vc_del_fdir_fltr,                                      
        .get_offload_vlan_v2_caps = ice_vc_get_offload_vlan_v2_caps,                     │          .get_offload_vlan_v2_caps = ice_vc_get_offload_vlan_v2_caps,                    
        .add_vlan_v2_msg = ice_vc_add_vlan_v2_msg,                                       │          .add_vlan_v2_msg = ice_vc_add_vlan_v2_msg,                                      
        .remove_vlan_v2_msg = ice_vc_remove_vlan_v2_msg,                                 │          .remove_vlan_v2_msg = ice_vc_remove_vlan_v2_msg,                                
        .ena_vlan_stripping_v2_msg = ice_vc_ena_vlan_stripping_v2_msg,                   │          .ena_vlan_stripping_v2_msg = ice_vc_ena_vlan_stripping_v2_msg,                  
        .dis_vlan_stripping_v2_msg = ice_vc_dis_vlan_stripping_v2_msg,                   │          .dis_vlan_stripping_v2_msg = ice_vc_dis_vlan_stripping_v2_msg,                  
        .ena_vlan_insertion_v2_msg = ice_vc_ena_vlan_insertion_v2_msg,                   │          .ena_vlan_insertion_v2_msg = ice_vc_ena_vlan_insertion_v2_msg,                  
        .dis_vlan_insertion_v2_msg = ice_vc_dis_vlan_insertion_v2_msg,                   │          .dis_vlan_insertion_v2_msg = ice_vc_dis_vlan_insertion_v2_msg,                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c:1055                            │ linux/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c:987                              
                                                                                         │                                                                                          
        int  i, ret, count;                                                              │          int  i, ret, count;                                                             
        unsigned char *p_cache, *p_src;                                                  │          unsigned char *p_cache, *p_src;                                                 
                                                                                         │                                                                                          
        p_cache = kcalloc(size, sizeof(unsigned char), GFP_KERNEL);                      │          p_cache = kcalloc(size, sizeof(unsigned char), GFP_KERNEL);                     
        if (!p_cache)                                                                    │          if (!p_cache)                                                                   
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        qlcnic_swap32_buffer((u32 *)buf, size / sizeof(u32));                            │          count = size / sizeof(u32);                                                     
                                                                                         │          qlcnic_swap32_buffer((u32 *)buf, count);                                        
        memcpy(p_cache, buf, size);                                                      │          memcpy(p_cache, buf, size);                                                     
        p_src = p_cache;                                                                 │          p_src = p_cache;                                                                
        count = size / sizeof(u32);                                                      │                                                                                          
                                                                                         │                                                                                          
        if (qlcnic_83xx_lock_flash(adapter) != 0) {                                      │          if (qlcnic_83xx_lock_flash(adapter) != 0) {                                     
                kfree(p_cache);                                                          │                  kfree(p_cache);                                                         
                return -EIO;                                                             │                  return -EIO;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) {                         │          if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) {                        
                ret = qlcnic_83xx_enable_flash_write(adapter);                           │                  ret = qlcnic_83xx_enable_flash_write(adapter);                          
                if (ret) {                                                               │                  if (ret) {                                                              
                        kfree(p_cache);                                                  │                          kfree(p_cache);                                                 
                        qlcnic_83xx_unlock_flash(adapter);                               │                          qlcnic_83xx_unlock_flash(adapter);                              
                        return -EIO;                                                     │                          return -EIO;                                                    
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (i = 0; i < count; i++) {                                                    │          for (i = 0; i < count / QLC_83XX_FLASH_WRITE_MAX; i++) {                        
                ret = qlcnic_83xx_flash_write32(adapter, offset, (u32 *)p_src);          │                  ret = qlcnic_83xx_flash_bulk_write(adapter, offset,                     
                                                                                         │                                                     (u32 *)p_src,                        
                                                                                         │                                                     QLC_83XX_FLASH_WRITE_MAX);           
                                                                                         │                                                                                          
                if (ret) {                                                               │                  if (ret) {                                                              
                        if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) {         │                          if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) {        
                                ret = qlcnic_83xx_disable_flash_write(adapter);          │                                  ret = qlcnic_83xx_disable_flash_write(adapter);         
                                if (ret) {                                               │                                  if (ret) {                                              
                                        kfree(p_cache);                                  │                                          kfree(p_cache);                                 
                                        qlcnic_83xx_unlock_flash(adapter);               │                                          qlcnic_83xx_unlock_flash(adapter);              
                                        return -EIO;                                     │                                          return -EIO;                                    
                                }                                                        │                                  }                                                       
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        kfree(p_cache);                                                  │                          kfree(p_cache);                                                 
                        qlcnic_83xx_unlock_flash(adapter);                               │                          qlcnic_83xx_unlock_flash(adapter);                              
                        return -EIO;                                                     │                          return -EIO;                                                    
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                p_src = p_src + sizeof(u32);                                             │                  p_src = p_src + sizeof(u32)*QLC_83XX_FLASH_WRITE_MAX;                   
                offset = offset + sizeof(u32);                                           │                  offset = offset + sizeof(u32)*QLC_83XX_FLASH_WRITE_MAX;                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) {                         │          if (adapter->ahw->fdt.mfg_id == adapter->flash_mfg_id) {                        
                ret = qlcnic_83xx_disable_flash_write(adapter);                          │                  ret = qlcnic_83xx_disable_flash_write(adapter);                         
                if (ret) {                                                               │                  if (ret) {                                                              
                        kfree(p_cache);                                                  │                          kfree(p_cache);                                                 
                        qlcnic_83xx_unlock_flash(adapter);                               │                          qlcnic_83xx_unlock_flash(adapter);                              
                        return -EIO;                                                     │                          return -EIO;                                                    
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        kfree(p_cache);                                                                  │          kfree(p_cache);                                                                 
        qlcnic_83xx_unlock_flash(adapter);                                               │          qlcnic_83xx_unlock_flash(adapter);                                              
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/freescale/ucc_geth.h:706                                     │ linux/drivers/net/ethernet/freescale/ucc_geth.h:507                                      
                                                                                         │                                                                                          
        u32 frrxfcser;          /* frames with crc error */                              │          u32 frrxfcser;          /* frames with crc error */                             
        u32 fraligner;          /* frames with alignment error */                        │          u32 fraligner;          /* frames with alignment error */                       
        u32 inrangelenrxer;     /* in range length error */                              │          u32 inrangelenrxer;     /* in range length error */                             
        u32 outrangelenrxer;    /* out of range length error */                          │          u32 outrangelenrxer;    /* out of range length error */                         
        u32 frtoolong;          /* frame too long */                                     │          u32 frtoolong;          /* frame too long */                                    
        u32 runt;               /* runt */                                               │          u32 runt;               /* runt */                                              
        u32 verylongevent;      /* very long event */                                    │          u32 verylongevent;      /* very long event */                                   
        u32 symbolerror;        /* symbol error */                                       │          u32 symbolerror;        /* symbol error */                                      
        u32 dropbsy;            /* drop because of BD not ready */                       │          u32 dropbsy;            /* drop because of BD not ready */                      
        u8 res0[0x8];                                                                    │          u8 res0[0x8];                                                                   
        u32 mismatchdrop;       /* drop because of MAC filtering (e.g. address           │          u32 mismatchdrop;       /* drop because of MAC filtering (e.g. address          
                                   or type mismatch) */                                  │                                     or type mismatch) */                                 
        u32 underpkts;          /* total frames less than 64 octets */                   │          u32 underpkts;          /* total frames less than 64 octets */                  
        u32 pkts256;            /* total frames (including bad) between 256 and          │          u32 pkts256;            /* total frames (including bad) between 256 and         
                                   511 octets */                                         │                                     511 octets */                                        
        u32 pkts512;            /* total frames (including bad) between 512 and          │          u32 pkts512;            /* total frames (including bad) between 512 and         
                                   1023 octets */                                        │                                     1023 octets */                                       
        u32 pkts1024;           /* total frames (including bad) between 1024             │          u32 pkts1024;           /* total frames (including bad) between 1024            
                                   and 1518 octets */                                    │                                     and 1518 octets */                                   
        u32 pktsjumbo;          /* total frames (including bad) between 1024             │          u32 pktsjumbo;          /* total frames (including bad) between 1024            
                                   and MAXLength octets */                               │                                     and MAXLength octets */                              
        u32 frlossinmacer;      /* frames lost because of internal MAC error             │          u32 frlossinmacer;      /* frames lost because of internal MAC error            
                                   that is not counted in any other counter */           │                                     that is not counted in any other counter */          
        u32 pausefr;            /* pause frames */                                       │          u32 pausefr;            /* pause frames */                                      
        u8 res1[0x4];                                                                    │          u8 res1[0x4];                                                                   
        u32 removevlan;         /* total frames that had their VLAN tag removed          │          u32 removevlan;         /* total frames that had their VLAN tag removed         
                                 */                                                      │                                   */                                                     
        u32 replacevlan;        /* total frames that had their VLAN tag                  │          u32 replacevlan;        /* total frames that had their VLAN tag                 
                                   replaced */                                           │                                     replaced */                                          
        u32 insertvlan;         /* total frames that had their VLAN tag                  │          u32 insertvlan;         /* total frames that had their VLAN tag                 
                                   inserted */                                           │                                     inserted */                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:6047                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7751                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_BIT0_MASK        0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK  0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT0_SHIFT       0                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0                                       
#define MSTORM_TOE_CONN_AG_CTX_BIT1_MASK        0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK  0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT1_SHIFT       1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1                                       
#define MSTORM_TOE_CONN_AG_CTX_CF0_MASK         0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK   0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF0_SHIFT        2                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT  2                                       
#define MSTORM_TOE_CONN_AG_CTX_CF1_MASK         0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK   0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF1_SHIFT        4                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT  4                                       
#define MSTORM_TOE_CONN_AG_CTX_CF2_MASK         0x3                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK   0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF2_SHIFT        6                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT  6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_MASK       0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_SHIFT      0                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT        0                               
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_MASK       0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_SHIFT      1                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT        1                               
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_MASK       0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_SHIFT      2                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT        2                               
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_MASK     0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK       0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_SHIFT    3                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT      3                               
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_MASK     0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK       0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_SHIFT    4                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT      4                               
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_MASK     0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK       0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_SHIFT    5                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT      5                               
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_MASK     0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK       0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_SHIFT    6                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT      6                               
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_MASK     0x1                                      │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK       0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_SHIFT    7                                        │  #define MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT      7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:6047                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7714                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_BIT0_MASK        0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK   0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT0_SHIFT       0                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT  0                                       
#define MSTORM_TOE_CONN_AG_CTX_BIT1_MASK        0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK   0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT1_SHIFT       1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT  1                                       
#define MSTORM_TOE_CONN_AG_CTX_CF0_MASK         0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK            0x3                             
#define MSTORM_TOE_CONN_AG_CTX_CF0_SHIFT        2                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT   2                                       
#define MSTORM_TOE_CONN_AG_CTX_CF1_MASK         0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK            0x3                             
#define MSTORM_TOE_CONN_AG_CTX_CF1_SHIFT        4                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT   4                                       
#define MSTORM_TOE_CONN_AG_CTX_CF2_MASK         0x3                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK            0x3                             
#define MSTORM_TOE_CONN_AG_CTX_CF2_SHIFT        6                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT   6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_MASK       0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK  0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_SHIFT      0                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0                                       
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_MASK       0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK  0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_SHIFT      1                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1                                       
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_MASK       0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK  0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_SHIFT      2                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_MASK     0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK        0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_SHIFT    3                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT       3                               
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_MASK     0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK        0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_SHIFT    4                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT       4                               
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_MASK     0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK        0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_SHIFT    5                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT       5                               
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_MASK     0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK        0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_SHIFT    6                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT       6                               
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_MASK     0x1                                      │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK        0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_SHIFT    7                                        │  #define MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT       7                               
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:6047                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:7677                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_BIT0_MASK        0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_BIT0_SHIFT       0                                        │  #define MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0                                         
#define MSTORM_TOE_CONN_AG_CTX_BIT1_MASK        0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_BIT1_SHIFT       1                                        │  #define MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1                                         
#define MSTORM_TOE_CONN_AG_CTX_CF0_MASK         0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3                                       
#define MSTORM_TOE_CONN_AG_CTX_CF0_SHIFT        2                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2                                         
#define MSTORM_TOE_CONN_AG_CTX_CF1_MASK         0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3                                       
#define MSTORM_TOE_CONN_AG_CTX_CF1_SHIFT        4                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4                                         
#define MSTORM_TOE_CONN_AG_CTX_CF2_MASK         0x3                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3                                       
#define MSTORM_TOE_CONN_AG_CTX_CF2_SHIFT        6                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6                                         
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_MASK       0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_SHIFT      0                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0                                         
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_MASK       0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_SHIFT      1                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1                                         
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_MASK       0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_SHIFT      2                                        │  #define MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2                                         
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_MASK     0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_SHIFT    3                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3                                         
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_MASK     0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_SHIFT    4                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4                                         
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_MASK     0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_SHIFT    5                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5                                         
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_MASK     0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_SHIFT    6                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6                                         
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_MASK     0x1                                      │  #define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_SHIFT    7                                        │  #define MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7                                         
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:6047                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10813                                    
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 reserved;                                                                    
        u8 byte1;                                                                        │          u8 state;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_BIT0_MASK        0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK      0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT0_SHIFT       0                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT     0                                       
#define MSTORM_TOE_CONN_AG_CTX_BIT1_MASK        0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK      0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT1_SHIFT       1                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT     1                                       
#define MSTORM_TOE_CONN_AG_CTX_CF0_MASK         0x3                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK       0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF0_SHIFT        2                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT      2                                       
#define MSTORM_TOE_CONN_AG_CTX_CF1_MASK         0x3                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK       0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF1_SHIFT        4                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT      4                                       
#define MSTORM_TOE_CONN_AG_CTX_CF2_MASK         0x3                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK       0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF2_SHIFT        6                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT      6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_MASK       0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK             0x1                             
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_SHIFT      0                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT            0                               
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_MASK       0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK             0x1                             
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_SHIFT      1                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT            1                               
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_MASK       0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK             0x1                             
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_SHIFT      2                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT            2                               
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_MASK     0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK   0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_SHIFT    3                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT  3                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_MASK     0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK   0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_SHIFT    4                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT  4                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_MASK     0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK   0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_SHIFT    5                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT  5                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_MASK     0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK   0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_SHIFT    6                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT  6                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_MASK     0x1                                      │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK   0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_SHIFT    7                                        │  #define MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT  7                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:6047                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:1602                                     
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_BIT0_MASK        0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_BIT0_MASK       0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT0_SHIFT       0                                        │  #define MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT      0                                       
#define MSTORM_TOE_CONN_AG_CTX_BIT1_MASK        0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_BIT1_MASK       0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT1_SHIFT       1                                        │  #define MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT      1                                       
#define MSTORM_TOE_CONN_AG_CTX_CF0_MASK         0x3                                      │  #define MSTORM_CORE_CONN_AG_CTX_CF0_MASK        0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF0_SHIFT        2                                        │  #define MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT       2                                       
#define MSTORM_TOE_CONN_AG_CTX_CF1_MASK         0x3                                      │  #define MSTORM_CORE_CONN_AG_CTX_CF1_MASK        0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF1_SHIFT        4                                        │  #define MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT       4                                       
#define MSTORM_TOE_CONN_AG_CTX_CF2_MASK         0x3                                      │  #define MSTORM_CORE_CONN_AG_CTX_CF2_MASK        0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF2_SHIFT        6                                        │  #define MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT       6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_MASK       0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK              0x1                             
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_SHIFT      0                                        │  #define MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT             0                               
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_MASK       0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK              0x1                             
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_SHIFT      1                                        │  #define MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT             1                               
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_MASK       0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK              0x1                             
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_SHIFT      2                                        │  #define MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT             2                               
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_MASK     0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_SHIFT    3                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT   3                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_MASK     0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_SHIFT    4                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT   4                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_MASK     0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_SHIFT    5                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT   5                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_MASK     0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_SHIFT    6                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT   6                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_MASK     0x1                                      │  #define MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_SHIFT    7                                        │  #define MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT   7                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:6047                                    │ linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h:10183                                    
                                                                                         │                                                                                          
        u8 byte0;                                                                        │          u8 byte0;                                                                       
        u8 byte1;                                                                        │          u8 byte1;                                                                       
        u8 flags0;                                                                       │          u8 flags0;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_BIT0_MASK        0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK       0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT0_SHIFT       0                                        │  #define MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT      0                                       
#define MSTORM_TOE_CONN_AG_CTX_BIT1_MASK        0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK       0x1                                     
#define MSTORM_TOE_CONN_AG_CTX_BIT1_SHIFT       1                                        │  #define MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT      1                                       
#define MSTORM_TOE_CONN_AG_CTX_CF0_MASK         0x3                                      │  #define MSTORM_FCOE_CONN_AG_CTX_CF0_MASK        0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF0_SHIFT        2                                        │  #define MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT       2                                       
#define MSTORM_TOE_CONN_AG_CTX_CF1_MASK         0x3                                      │  #define MSTORM_FCOE_CONN_AG_CTX_CF1_MASK        0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF1_SHIFT        4                                        │  #define MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT       4                                       
#define MSTORM_TOE_CONN_AG_CTX_CF2_MASK         0x3                                      │  #define MSTORM_FCOE_CONN_AG_CTX_CF2_MASK        0x3                                     
#define MSTORM_TOE_CONN_AG_CTX_CF2_SHIFT        6                                        │  #define MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT       6                                       
        u8 flags1;                                                                       │          u8 flags1;                                                                      
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_MASK       0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK              0x1                             
#define MSTORM_TOE_CONN_AG_CTX_CF0EN_SHIFT      0                                        │  #define MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT             0                               
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_MASK       0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK              0x1                             
#define MSTORM_TOE_CONN_AG_CTX_CF1EN_SHIFT      1                                        │  #define MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT             1                               
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_MASK       0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK              0x1                             
#define MSTORM_TOE_CONN_AG_CTX_CF2EN_SHIFT      2                                        │  #define MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT             2                               
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_MASK     0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE0EN_SHIFT    3                                        │  #define MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT   3                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_MASK     0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE1EN_SHIFT    4                                        │  #define MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT   4                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_MASK     0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE2EN_SHIFT    5                                        │  #define MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT   5                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_MASK     0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE3EN_SHIFT    6                                        │  #define MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT   6                                       
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_MASK     0x1                                      │  #define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK            0x1                             
#define MSTORM_TOE_CONN_AG_CTX_RULE4EN_SHIFT    7                                        │  #define MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT   7                                       
        __le16 word0;                                                                    │          __le16 word0;                                                                   
        __le16 word1;                                                                    │          __le16 word1;                                                                   
        __le32 reg0;                                                                     │          __le32 reg0;                                                                    
        __le32 reg1;                                                                     │          __le32 reg1;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/selftest.c:409                                           │ linux/drivers/net/ethernet/sfc/falcon/selftest.c:411                                     
                                                                                         │                                                                                          
        struct efx_nic *efx = tx_queue->efx;                                             │          struct ef4_nic *efx = tx_queue->efx;                                            
        struct efx_loopback_state *state = efx->loopback_selftest;                       │          struct ef4_loopback_state *state = efx->loopback_selftest;                      
        struct efx_loopback_payload *payload;                                            │          struct ef4_loopback_payload *payload;                                           
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
        int i;                                                                           │          int i;                                                                          
        netdev_tx_t rc;                                                                  │          netdev_tx_t rc;                                                                 
                                                                                         │                                                                                          
        /* Transmit N copies of buffer */                                                │          /* Transmit N copies of buffer */                                               
        for (i = 0; i < state->packet_count; i++) {                                      │          for (i = 0; i < state->packet_count; i++) {                                     
                /* Allocate an skb, holding an extra reference for                       │                  /* Allocate an skb, holding an extra reference for                      
                 * transmit completion counting */                                       │                   * transmit completion counting */                                      
                skb = alloc_skb(sizeof(state->payload), GFP_KERNEL);                     │                  skb = alloc_skb(sizeof(state->payload), GFP_KERNEL);                    
                if (!skb)                                                                │                  if (!skb)                                                               
                        return -ENOMEM;                                                  │                          return -ENOMEM;                                                 
                state->skbs[i] = skb;                                                    │                  state->skbs[i] = skb;                                                   
                skb_get(skb);                                                            │                  skb_get(skb);                                                           
                                                                                         │                                                                                          
                /* Copy the payload in, incrementing the source address to               │                  /* Copy the payload in, incrementing the source address to              
                 * exercise the rss vectors */                                           │                   * exercise the rss vectors */                                          
                payload = skb_put(skb, sizeof(state->payload));                          │                  payload = skb_put(skb, sizeof(state->payload));                         
                memcpy(payload, &state->payload, sizeof(state->payload));                │                  memcpy(payload, &state->payload, sizeof(state->payload));               
                payload->ip.saddr = htonl(INADDR_LOOPBACK | (i << 2));                   │                  payload->ip.saddr = htonl(INADDR_LOOPBACK | (i << 2));                  
                                                                                         │                                                                                          
                /* Ensure everything we've written is visible to the                     │                  /* Ensure everything we've written is visible to the                    
                 * interrupt handler. */                                                 │                   * interrupt handler. */                                                
                smp_wmb();                                                               │                  smp_wmb();                                                              
                                                                                         │                                                                                          
                netif_tx_lock_bh(efx->net_dev);                                          │                  netif_tx_lock_bh(efx->net_dev);                                         
                rc = efx_enqueue_skb(tx_queue, skb);                                     │                  rc = ef4_enqueue_skb(tx_queue, skb);                                    
                netif_tx_unlock_bh(efx->net_dev);                                        │                  netif_tx_unlock_bh(efx->net_dev);                                       
                                                                                         │                                                                                          
                if (rc != NETDEV_TX_OK) {                                                │                  if (rc != NETDEV_TX_OK) {                                               
                        netif_err(efx, drv, efx->net_dev,                                │                          netif_err(efx, drv, efx->net_dev,                               
                                  "TX queue %d could not transmit packet %d of "         │                                    "TX queue %d could not transmit packet %d of "        
                                  "%d in %s loopback test\n", tx_queue->label,           │                                    "%d in %s loopback test\n", tx_queue->queue,          
                                  i + 1, state->packet_count,                            │                                    i + 1, state->packet_count,                           
                                  LOOPBACK_MODE(efx));                                   │                                    LOOPBACK_MODE(efx));                                  
                                                                                         │                                                                                          
                        /* Defer cleaning up the other skbs for the caller */            │                          /* Defer cleaning up the other skbs for the caller */           
                        kfree_skb(skb);                                                  │                          kfree_skb(skb);                                                 
                        return -EPIPE;                                                   │                          return -EPIPE;                                                  
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:2212                             │ linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:2109                              
                                                                                         │                                                                                          
        /* The GPIO should be swapped if swap register is set and active */              │          /* The GPIO should be swapped if swap register is set and active */             
        int gpio_port = (REG_RD(bp, NIG_REG_PORT_SWAP) &&                                │          int gpio_port = (REG_RD(bp, NIG_REG_PORT_SWAP) &&                               
                         REG_RD(bp, NIG_REG_STRAP_OVERRIDE)) ^ port;                     │                           REG_RD(bp, NIG_REG_STRAP_OVERRIDE)) ^ port;                    
        int gpio_shift = gpio_num +                                                      │          int gpio_shift = gpio_num +                                                     
                        (gpio_port ? MISC_REGISTERS_GPIO_PORT_SHIFT : 0);                │                          (gpio_port ? MISC_REGISTERS_GPIO_PORT_SHIFT : 0);               
        u32 gpio_mask = (1 << gpio_shift);                                               │          u32 gpio_mask = (1 << gpio_shift);                                              
        u32 gpio_reg;                                                                    │          u32 gpio_reg;                                                                   
                                                                                         │                                                                                          
        if (gpio_num > MISC_REGISTERS_GPIO_3) {                                          │          if (gpio_num > MISC_REGISTERS_GPIO_3) {                                         
                BNX2X_ERR("Invalid GPIO %d\n", gpio_num);                                │                  BNX2X_ERR("Invalid GPIO %d\n", gpio_num);                               
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_GPIO);                                │          bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_GPIO);                               
        /* read GPIO int */                                                              │          /* read GPIO and mask except the float bits */                                  
        gpio_reg = REG_RD(bp, MISC_REG_GPIO_INT);                                        │          gpio_reg = (REG_RD(bp, MISC_REG_GPIO) & MISC_REGISTERS_GPIO_FLOAT);             
                                                                                         │                                                                                          
        switch (mode) {                                                                  │          switch (mode) {                                                                 
        case MISC_REGISTERS_GPIO_INT_OUTPUT_CLR:                                         │          case MISC_REGISTERS_GPIO_OUTPUT_LOW:                                            
                DP(NETIF_MSG_LINK,                                                       │                  DP(NETIF_MSG_LINK,                                                      
                   "Clear GPIO INT %d (shift %d) -> output low\n",                       │                     "Set GPIO %d (shift %d) -> output low\n",                            
                   gpio_num, gpio_shift);                                                │                     gpio_num, gpio_shift);                                               
                /* clear SET and set CLR */                                              │                  /* clear FLOAT and set CLR */                                           
                gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_INT_SET_POS);             │                  gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS);              
                gpio_reg |=  (gpio_mask << MISC_REGISTERS_GPIO_INT_CLR_POS);             │                  gpio_reg |=  (gpio_mask << MISC_REGISTERS_GPIO_CLR_POS);                
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case MISC_REGISTERS_GPIO_INT_OUTPUT_SET:                                         │          case MISC_REGISTERS_GPIO_OUTPUT_HIGH:                                           
                DP(NETIF_MSG_LINK,                                                       │                  DP(NETIF_MSG_LINK,                                                      
                   "Set GPIO INT %d (shift %d) -> output high\n",                        │                     "Set GPIO %d (shift %d) -> output high\n",                           
                   gpio_num, gpio_shift);                                                │                     gpio_num, gpio_shift);                                               
                /* clear CLR and set SET */                                              │                  /* clear FLOAT and set SET */                                           
                gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_INT_CLR_POS);             │                  gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS);              
                gpio_reg |=  (gpio_mask << MISC_REGISTERS_GPIO_INT_SET_POS);             │                  gpio_reg |=  (gpio_mask << MISC_REGISTERS_GPIO_SET_POS);                
                                                                                         │                  break;                                                                  
                                                                                         │                                                                                          
                                                                                         │          case MISC_REGISTERS_GPIO_INPUT_HI_Z:                                            
                                                                                         │                  DP(NETIF_MSG_LINK,                                                      
                                                                                         │                     "Set GPIO %d (shift %d) -> input\n",                                 
                                                                                         │                     gpio_num, gpio_shift);                                               
                                                                                         │                  /* set FLOAT */                                                         
                                                                                         │                  gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS);               
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        default:                                                                         │          default:                                                                        
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        REG_WR(bp, MISC_REG_GPIO_INT, gpio_reg);                                         │          REG_WR(bp, MISC_REG_GPIO, gpio_reg);                                            
        bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_GPIO);                                │          bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_GPIO);                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:5737                                    │ linux/drivers/net/ethernet/intel/igc/igc_main.c:3955                                     
                                                                                         │                                                                                          
        unsigned int packets = ring_container->total_packets;                            │          unsigned int packets = ring_container->total_packets;                           
        unsigned int bytes = ring_container->total_bytes;                                │          unsigned int bytes = ring_container->total_bytes;                               
        u8 itrval = ring_container->itr;                                                 │          u8 itrval = ring_container->itr;                                                
                                                                                         │                                                                                          
        /* no packets, exit with status unchanged */                                     │          /* no packets, exit with status unchanged */                                    
        if (packets == 0)                                                                │          if (packets == 0)                                                               
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        switch (itrval) {                                                                │          switch (itrval) {                                                               
        case lowest_latency:                                                             │          case lowest_latency:                                                            
                /* handle TSO and jumbo frames */                                        │                  /* handle TSO and jumbo frames */                                       
                if (bytes/packets > 8000)                                                │                  if (bytes / packets > 8000)                                             
                        itrval = bulk_latency;                                           │                          itrval = bulk_latency;                                          
                else if ((packets < 5) && (bytes > 512))                                 │                  else if ((packets < 5) && (bytes > 512))                                
                        itrval = low_latency;                                            │                          itrval = low_latency;                                           
                break;                                                                   │                  break;                                                                  
        case low_latency:  /* 50 usec aka 20000 ints/s */                                │          case low_latency:  /* 50 usec aka 20000 ints/s */                               
                if (bytes > 10000) {                                                     │                  if (bytes > 10000) {                                                    
                        /* this if handles the TSO accounting */                         │                          /* this if handles the TSO accounting */                        
                        if (bytes/packets > 8000)                                        │                          if (bytes / packets > 8000)                                     
                                itrval = bulk_latency;                                   │                                  itrval = bulk_latency;                                  
                        else if ((packets < 10) || ((bytes/packets) > 1200))             │                          else if ((packets < 10) || ((bytes / packets) > 1200))          
                                itrval = bulk_latency;                                   │                                  itrval = bulk_latency;                                  
                        else if ((packets > 35))                                         │                          else if ((packets > 35))                                        
                                itrval = lowest_latency;                                 │                                  itrval = lowest_latency;                                
                } else if (bytes/packets > 2000) {                                       │                  } else if (bytes / packets > 2000) {                                    
                        itrval = bulk_latency;                                           │                          itrval = bulk_latency;                                          
                } else if (packets <= 2 && bytes < 512) {                                │                  } else if (packets <= 2 && bytes < 512) {                               
                        itrval = lowest_latency;                                         │                          itrval = lowest_latency;                                        
                }                                                                        │                  }                                                                       
                break;                                                                   │                  break;                                                                  
        case bulk_latency: /* 250 usec aka 4000 ints/s */                                │          case bulk_latency: /* 250 usec aka 4000 ints/s */                               
                if (bytes > 25000) {                                                     │                  if (bytes > 25000) {                                                    
                        if (packets > 35)                                                │                          if (packets > 35)                                               
                                itrval = low_latency;                                    │                                  itrval = low_latency;                                   
                } else if (bytes < 1500) {                                               │                  } else if (bytes < 1500) {                                              
                        itrval = low_latency;                                            │                          itrval = low_latency;                                           
                }                                                                        │                  }                                                                       
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* clear work counters since we have the values we need */                       │          /* clear work counters since we have the values we need */                      
        ring_container->total_bytes = 0;                                                 │          ring_container->total_bytes = 0;                                                
        ring_container->total_packets = 0;                                               │          ring_container->total_packets = 0;                                              
                                                                                         │                                                                                          
        /* write updated itr to ring container */                                        │          /* write updated itr to ring container */                                       
        ring_container->itr = itrval;                                                    │          ring_container->itr = itrval;                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v0.c:1097                 │ linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v1.c:1284                  
                                                                                         │                                                                                          
        struct mlx5dr_match_spec *spec = sb->inner ? &value->inner : &value->outer;      │          struct mlx5dr_match_spec *spec = sb->inner ? &value->inner : &value->outer;     
        struct mlx5dr_match_misc *misc = &value->misc;                                   │          struct mlx5dr_match_misc *misc = &value->misc;                                  
                                                                                         │                                                                                          
        DR_STE_SET_TAG(eth_l2_tnl, tag, dmac_47_16, spec, dmac_47_16);                   │          DR_STE_SET_TAG(eth_l2_tnl_v1, tag, dmac_47_16, spec, dmac_47_16);               
        DR_STE_SET_TAG(eth_l2_tnl, tag, dmac_15_0, spec, dmac_15_0);                     │          DR_STE_SET_TAG(eth_l2_tnl_v1, tag, dmac_15_0, spec, dmac_15_0);                 
        DR_STE_SET_TAG(eth_l2_tnl, tag, first_vlan_id, spec, first_vid);                 │          DR_STE_SET_TAG(eth_l2_tnl_v1, tag, first_vlan_id, spec, first_vid);             
        DR_STE_SET_TAG(eth_l2_tnl, tag, first_cfi, spec, first_cfi);                     │          DR_STE_SET_TAG(eth_l2_tnl_v1, tag, first_cfi, spec, first_cfi);                 
        DR_STE_SET_TAG(eth_l2_tnl, tag, ip_fragmented, spec, frag);                      │          DR_STE_SET_TAG(eth_l2_tnl_v1, tag, ip_fragmented, spec, frag);                  
        DR_STE_SET_TAG(eth_l2_tnl, tag, first_priority, spec, first_prio);               │          DR_STE_SET_TAG(eth_l2_tnl_v1, tag, first_priority, spec, first_prio);           
        DR_STE_SET_TAG(eth_l2_tnl, tag, l3_ethertype, spec, ethertype);                  │          DR_STE_SET_TAG(eth_l2_tnl_v1, tag, l3_ethertype, spec, ethertype);              
                                                                                         │                                                                                          
        if (misc->vxlan_vni) {                                                           │          if (misc->vxlan_vni) {                                                          
                MLX5_SET(ste_eth_l2_tnl, tag, l2_tunneling_network_id,                   │                  MLX5_SET(ste_eth_l2_tnl_v1, tag, l2_tunneling_network_id,               
                         (misc->vxlan_vni << 8));                                        │                           (misc->vxlan_vni << 8));                                       
                misc->vxlan_vni = 0;                                                     │                  misc->vxlan_vni = 0;                                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (spec->cvlan_tag) {                                                           │          if (spec->cvlan_tag) {                                                          
                MLX5_SET(ste_eth_l2_tnl, tag, first_vlan_qualifier, DR_STE_CVLAN);       │                  MLX5_SET(ste_eth_l2_tnl_v1, tag, first_vlan_qualifier, DR_STE_CVLAN);   
                spec->cvlan_tag = 0;                                                     │                  spec->cvlan_tag = 0;                                                    
        } else if (spec->svlan_tag) {                                                    │          } else if (spec->svlan_tag) {                                                   
                MLX5_SET(ste_eth_l2_tnl, tag, first_vlan_qualifier, DR_STE_SVLAN);       │                  MLX5_SET(ste_eth_l2_tnl_v1, tag, first_vlan_qualifier, DR_STE_SVLAN);   
                spec->svlan_tag = 0;                                                     │                  spec->svlan_tag = 0;                                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (spec->ip_version) {                                                          │          if (spec->ip_version == IP_VERSION_IPV4) {                                      
                if (spec->ip_version == IP_VERSION_IPV4) {                               │                  MLX5_SET(ste_eth_l2_tnl_v1, tag, l3_type, STE_IPV4);                    
                        MLX5_SET(ste_eth_l2_tnl, tag, l3_type, STE_IPV4);                │                  spec->ip_version = 0;                                                   
                        spec->ip_version = 0;                                            │          } else if (spec->ip_version == IP_VERSION_IPV6) {                               
                } else if (spec->ip_version == IP_VERSION_IPV6) {                        │                  MLX5_SET(ste_eth_l2_tnl_v1, tag, l3_type, STE_IPV6);                    
                        MLX5_SET(ste_eth_l2_tnl, tag, l3_type, STE_IPV6);                │                  spec->ip_version = 0;                                                   
                        spec->ip_version = 0;                                            │          } else if (spec->ip_version) {                                                  
                } else {                                                                 │                  return -EINVAL;                                                         
                        return -EINVAL;                                                  │                                                                                          
                }                                                                        │                                                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000/e1000_ethtool.c:856                              │ linux/drivers/net/ethernet/intel/e1000e/ethtool.c:1032                                   
                                                                                         │                                                                                          
                /* Interrupt to test */                                                  │                  /* Interrupt to test */                                                 
                mask = 1 << i;                                                           │                  mask = BIT(i);                                                          
                                                                                         │                                                                                          
                                                                                         │                  if (adapter->flags & FLAG_IS_ICH) {                                     
                                                                                         │                          switch (mask) {                                                 
                                                                                         │                          case E1000_ICR_RXSEQ:                                           
                                                                                         │                                  continue;                                               
                                                                                         │                          case 0x00000100:                                                
                                                                                         │                                  if (adapter->hw.mac.type == e1000_ich8lan ||            
                                                                                         │                                      adapter->hw.mac.type == e1000_ich9lan)              
                                                                                         │                                          continue;                                       
                                                                                         │                                  break;                                                  
                                                                                         │                          default:                                                        
                                                                                         │                                  break;                                                  
                                                                                         │                          }                                                               
                                                                                         │                  }                                                                       
                                                                                         │                                                                                          
                if (!shared_int) {                                                       │                  if (!shared_int) {                                                      
                        /* Disable the interrupt to be reported in                       │                          /* Disable the interrupt to be reported in                      
                         * the cause register and then force the same                    │                           * the cause register and then force the same                   
                         * interrupt and see if one gets posted.  If                     │                           * interrupt and see if one gets posted.  If                    
                         * an interrupt was posted to the bus, the                       │                           * an interrupt was posted to the bus, the                      
                         * test failed.                                                  │                           * test failed.                                                 
                         */                                                              │                           */                                                             
                        adapter->test_icr = 0;                                           │                          adapter->test_icr = 0;                                          
                        ew32(IMC, mask);                                                 │                          ew32(IMC, mask);                                                
                        ew32(ICS, mask);                                                 │                          ew32(ICS, mask);                                                
                        E1000_WRITE_FLUSH();                                             │                          e1e_flush();                                                    
                        msleep(10);                                                      │                          usleep_range(10000, 11000);                                     
                                                                                         │                                                                                          
                        if (adapter->test_icr & mask) {                                  │                          if (adapter->test_icr & mask) {                                 
                                *data = 3;                                               │                                  *data = 3;                                              
                                break;                                                   │                                  break;                                                  
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* Enable the interrupt to be reported in                                │                  /* Enable the interrupt to be reported in                               
                 * the cause register and then force the same                            │                   * the cause register and then force the same                           
                 * interrupt and see if one gets posted.  If                             │                   * interrupt and see if one gets posted.  If                            
                 * an interrupt was not posted to the bus, the                           │                   * an interrupt was not posted to the bus, the                          
                 * test failed.                                                          │                   * test failed.                                                         
                 */                                                                      │                   */                                                                     
                adapter->test_icr = 0;                                                   │                  adapter->test_icr = 0;                                                  
                ew32(IMS, mask);                                                         │                  ew32(IMS, mask);                                                        
                ew32(ICS, mask);                                                         │                  ew32(ICS, mask);                                                        
                E1000_WRITE_FLUSH();                                                     │                  e1e_flush();                                                            
                msleep(10);                                                              │                  usleep_range(10000, 11000);                                             
                                                                                         │                                                                                          
                if (!(adapter->test_icr & mask)) {                                       │                  if (!(adapter->test_icr & mask)) {                                      
                        *data = 4;                                                       │                          *data = 4;                                                      
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (!shared_int) {                                                       │                  if (!shared_int) {                                                      
                        /* Disable the other interrupts to be reported in                │                          /* Disable the other interrupts to be reported in               
                         * the cause register and then force the other                   │                           * the cause register and then force the other                  
                         * interrupts and see if any get posted.  If                     │                           * interrupts and see if any get posted.  If                    
                         * an interrupt was posted to the bus, the                       │                           * an interrupt was posted to the bus, the                      
                         * test failed.                                                  │                           * test failed.                                                 
                         */                                                              │                           */                                                             
                        adapter->test_icr = 0;                                           │                          adapter->test_icr = 0;                                          
                        ew32(IMC, ~mask & 0x00007FFF);                                   │                          ew32(IMC, ~mask & 0x00007FFF);                                  
                        ew32(ICS, ~mask & 0x00007FFF);                                   │                          ew32(ICS, ~mask & 0x00007FFF);                                  
                        E1000_WRITE_FLUSH();                                             │                          e1e_flush();                                                    
                        msleep(10);                                                      │                          usleep_range(10000, 11000);                                     
                                                                                         │                                                                                          
                        if (adapter->test_icr) {                                         │                          if (adapter->test_icr) {                                        
                                *data = 5;                                               │                                  *data = 5;                                              
                                break;                                                   │                                  break;                                                  
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/a2065.c:268                                              │ linux/drivers/net/ethernet/amd/7990.c:300                                                
                                                                                         │                                                                                          
                                                                                         │                                                                                          
                /* We got an incomplete frame? */                                        │                  /* We got an incomplete frame? */                                       
                if ((bits & LE_R1_POK) != LE_R1_POK) {                                   │                  if ((bits & LE_R1_POK) != LE_R1_POK) {                                  
                        dev->stats.rx_over_errors++;                                     │                          dev->stats.rx_over_errors++;                                    
                        dev->stats.rx_errors++;                                          │                          dev->stats.rx_errors++;                                         
                        continue;                                                        │                          continue;                                                       
                } else if (bits & LE_R1_ERR) {                                           │                  } else if (bits & LE_R1_ERR) {                                          
                        /* Count only the end frame as a rx error,                       │                          /* Count only the end frame as a rx error,                      
                         * not the beginning                                             │                           * not the beginning                                            
                         */                                                              │                           */                                                             
                        if (bits & LE_R1_BUF)                                            │                          if (bits & LE_R1_BUF)                                           
                                dev->stats.rx_fifo_errors++;                             │                                  dev->stats.rx_fifo_errors++;                            
                        if (bits & LE_R1_CRC)                                            │                          if (bits & LE_R1_CRC)                                           
                                dev->stats.rx_crc_errors++;                              │                                  dev->stats.rx_crc_errors++;                             
                        if (bits & LE_R1_OFL)                                            │                          if (bits & LE_R1_OFL)                                           
                                dev->stats.rx_over_errors++;                             │                                  dev->stats.rx_over_errors++;                            
                        if (bits & LE_R1_FRA)                                            │                          if (bits & LE_R1_FRA)                                           
                                dev->stats.rx_frame_errors++;                            │                                  dev->stats.rx_frame_errors++;                           
                        if (bits & LE_R1_EOP)                                            │                          if (bits & LE_R1_EOP)                                           
                                dev->stats.rx_errors++;                                  │                                  dev->stats.rx_errors++;                                 
                } else {                                                                 │                  } else {                                                                
                        int len = (rd->mblength & 0xfff) - 4;                            │                          int len = (rd->mblength & 0xfff) - 4;                           
                        struct sk_buff *skb = netdev_alloc_skb(dev, len + 2);            │                          struct sk_buff *skb = netdev_alloc_skb(dev, len + 2);           
                                                                                         │                                                                                          
                        if (!skb) {                                                      │                          if (!skb) {                                                     
                                dev->stats.rx_dropped++;                                 │                                  dev->stats.rx_dropped++;                                
                                rd->mblength = 0;                                        │                                  rd->mblength = 0;                                       
                                rd->rmd1_bits = LE_R1_OWN;                               │                                  rd->rmd1_bits = LE_R1_OWN;                              
                                lp->rx_new = (lp->rx_new + 1) & lp->rx_ring_mod_mask;    │                                  lp->rx_new = (lp->rx_new + 1) & lp->rx_ring_mod_mask;   
                                return 0;                                                │                                  return 0;                                               
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        skb_reserve(skb, 2);            /* 16 byte align */              │                          skb_reserve(skb, 2);           /* 16 byte align */              
                        skb_put(skb, len);              /* make room */                  │                          skb_put(skb, len);             /* make room */                  
                        skb_copy_to_linear_data(skb,                                     │                          skb_copy_to_linear_data(skb,                                    
                                 (unsigned char *)&ib->rx_buf[lp->rx_new][0],            │                                           (unsigned char *)&(ib->rx_buf[lp->rx_new][0]), 
                                 len);                                                   │                                           len);                                          
                        skb->protocol = eth_type_trans(skb, dev);                        │                          skb->protocol = eth_type_trans(skb, dev);                       
                        netif_rx(skb);                                                   │                          netif_rx(skb);                                                  
                        dev->stats.rx_packets++;                                         │                          dev->stats.rx_packets++;                                        
                        dev->stats.rx_bytes += len;                                      │                          dev->stats.rx_bytes += len;                                     
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* Return the packet to the pool */                                      │                  /* Return the packet to the pool */                                     
                rd->mblength = 0;                                                        │                  rd->mblength = 0;                                                       
                rd->rmd1_bits = LE_R1_OWN;                                               │                  rd->rmd1_bits = LE_R1_OWN;                                              
                lp->rx_new = (lp->rx_new + 1) & lp->rx_ring_mod_mask;                    │                  lp->rx_new = (lp->rx_new + 1) & lp->rx_ring_mod_mask;                   
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:8219                                    │ linux/drivers/net/ethernet/intel/igc/igc_main.c:2779                                     
                                                                                         │                                                                                          
                struct e1000_hw *hw = &adapter->hw;                                      │                  struct igc_hw *hw = &adapter->hw;                                       
                                                                                         │                                                                                          
                /* Detect a transmit hang in hardware, this serializes the               │                  /* Detect a transmit hang in hardware, this serializes the              
                 * check with the clearing of time_stamp and movement of i               │                   * check with the clearing of time_stamp and movement of i              
                 */                                                                      │                   */                                                                     
                clear_bit(IGB_RING_FLAG_TX_DETECT_HANG, &tx_ring->flags);                │                  clear_bit(IGC_RING_FLAG_TX_DETECT_HANG, &tx_ring->flags);               
                if (tx_buffer->next_to_watch &&                                          │                  if (tx_buffer->next_to_watch &&                                         
                    time_after(jiffies, tx_buffer->time_stamp +                          │                      time_after(jiffies, tx_buffer->time_stamp +                         
                               (adapter->tx_timeout_factor * HZ)) &&                     │                      (adapter->tx_timeout_factor * HZ)) &&                               
                    !(rd32(E1000_STATUS) & E1000_STATUS_TXOFF)) {                        │                      !(rd32(IGC_STATUS) & IGC_STATUS_TXOFF)) {                           
                                                                                         │                                                                                          
                        /* detected Tx unit hang */                                      │                          /* detected Tx unit hang */                                     
                        dev_err(tx_ring->dev,                                            │                          netdev_err(tx_ring->netdev,                                     
                                "Detected Tx Unit Hang\n"                                │                                     "Detected Tx Unit Hang\n"                            
                                "  Tx Queue             <%d>\n"                          │                                     "  Tx Queue             <%d>\n"                      
                                "  TDH                  <%x>\n"                          │                                     "  TDH                  <%x>\n"                      
                                "  TDT                  <%x>\n"                          │                                     "  TDT                  <%x>\n"                      
                                "  next_to_use          <%x>\n"                          │                                     "  next_to_use          <%x>\n"                      
                                "  next_to_clean        <%x>\n"                          │                                     "  next_to_clean        <%x>\n"                      
                                "buffer_info[next_to_clean]\n"                           │                                     "buffer_info[next_to_clean]\n"                       
                                "  time_stamp           <%lx>\n"                         │                                     "  time_stamp           <%lx>\n"                     
                                "  next_to_watch        <%p>\n"                          │                                     "  next_to_watch        <%p>\n"                      
                                "  jiffies              <%lx>\n"                         │                                     "  jiffies              <%lx>\n"                     
                                "  desc.status          <%x>\n",                         │                                     "  desc.status          <%x>\n",                     
                                tx_ring->queue_index,                                    │                                     tx_ring->queue_index,                                
                                rd32(E1000_TDH(tx_ring->reg_idx)),                       │                                     rd32(IGC_TDH(tx_ring->reg_idx)),                     
                                readl(tx_ring->tail),                                    │                                     readl(tx_ring->tail),                                
                                tx_ring->next_to_use,                                    │                                     tx_ring->next_to_use,                                
                                tx_ring->next_to_clean,                                  │                                     tx_ring->next_to_clean,                              
                                tx_buffer->time_stamp,                                   │                                     tx_buffer->time_stamp,                               
                                tx_buffer->next_to_watch,                                │                                     tx_buffer->next_to_watch,                            
                                jiffies,                                                 │                                     jiffies,                                             
                                tx_buffer->next_to_watch->wb.status);                    │                                     tx_buffer->next_to_watch->wb.status);                
                        netif_stop_subqueue(tx_ring->netdev,                             │                          netif_stop_subqueue(tx_ring->netdev,                            
                                            tx_ring->queue_index);                       │                                              tx_ring->queue_index);                      
                                                                                         │                                                                                          
                        /* we are about to reset, no point in enabling stuff */          │                          /* we are about to reset, no point in enabling stuff */         
                        return true;                                                     │                          return true;                                                    
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c:425                   │ linux/drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c:147                    
                                                                                         │                                                                                          
        int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                              │          int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                             
        void *outer_headers_c;                                                           │          void *outer_headers_c;                                                          
        int ix = 0;                                                                      │          int ix = 0;                                                                     
        u32 *in;                                                                         │          u32 *in;                                                                        
        int err;                                                                         │          int err;                                                                        
        u8 *mc;                                                                          │          u8 *mc;                                                                         
                                                                                         │                                                                                          
        ft->g = kcalloc(MLX5E_FS_UDP_NUM_GROUPS, sizeof(*ft->g), GFP_KERNEL);            │          ft->g = kcalloc(MLX5E_FS_UDP_NUM_GROUPS, sizeof(*ft->g), GFP_KERNEL);           
        in = kvzalloc(inlen, GFP_KERNEL);                                                │          in = kvzalloc(inlen, GFP_KERNEL);                                               
        if  (!in || !ft->g) {                                                            │          if  (!in || !ft->g) {                                                           
                kfree(ft->g);                                                            │                  kfree(ft->g);                                                           
                kvfree(in);                                                              │                  kvfree(in);                                                             
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Match on ethertype */                                                         │                                                                                          
        mc = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                     │          mc = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                    
        outer_headers_c = MLX5_ADDR_OF(fte_match_param, mc, outer_headers);              │          outer_headers_c = MLX5_ADDR_OF(fte_match_param, mc, outer_headers);             
        MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, ethertype);             │          MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, ip_protocol);          
                                                                                         │          MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, ip_version);           
                                                                                         │                                                                                          
                                                                                         │          switch (type) {                                                                 
                                                                                         │          case FS_IPV4_UDP:                                                               
                                                                                         │          case FS_IPV6_UDP:                                                               
                                                                                         │                  MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, udp_dport);    
                                                                                         │                  break;                                                                  
                                                                                         │          default:                                                                        
                                                                                         │                  err = -EINVAL;                                                          
                                                                                         │                  goto out;                                                               
                                                                                         │          }                                                                               
                                                                                         │          /* Match on udp protocol, Ipv4/6 and dport */                                   
        MLX5_SET_CFG(in, match_criteria_enable, MLX5_MATCH_OUTER_HEADERS);               │          MLX5_SET_CFG(in, match_criteria_enable, MLX5_MATCH_OUTER_HEADERS);              
        MLX5_SET_CFG(in, start_flow_index, ix);                                          │          MLX5_SET_CFG(in, start_flow_index, ix);                                         
        ix += MLX5E_FS_ANY_GROUP1_SIZE;                                                  │          ix += MLX5E_FS_UDP_GROUP1_SIZE;                                                 
        MLX5_SET_CFG(in, end_flow_index, ix - 1);                                        │          MLX5_SET_CFG(in, end_flow_index, ix - 1);                                       
        ft->g[ft->num_groups] = mlx5_create_flow_group(ft->t, in);                       │          ft->g[ft->num_groups] = mlx5_create_flow_group(ft->t, in);                      
        if (IS_ERR(ft->g[ft->num_groups]))                                               │          if (IS_ERR(ft->g[ft->num_groups]))                                              
                goto err;                                                                │                  goto err;                                                               
        ft->num_groups++;                                                                │          ft->num_groups++;                                                               
                                                                                         │                                                                                          
        /* Default Flow Group */                                                         │          /* Default Flow Group */                                                        
        memset(in, 0, inlen);                                                            │          memset(in, 0, inlen);                                                           
        MLX5_SET_CFG(in, start_flow_index, ix);                                          │          MLX5_SET_CFG(in, start_flow_index, ix);                                         
        ix += MLX5E_FS_ANY_GROUP2_SIZE;                                                  │          ix += MLX5E_FS_UDP_GROUP2_SIZE;                                                 
        MLX5_SET_CFG(in, end_flow_index, ix - 1);                                        │          MLX5_SET_CFG(in, end_flow_index, ix - 1);                                       
        ft->g[ft->num_groups] = mlx5_create_flow_group(ft->t, in);                       │          ft->g[ft->num_groups] = mlx5_create_flow_group(ft->t, in);                      
        if (IS_ERR(ft->g[ft->num_groups]))                                               │          if (IS_ERR(ft->g[ft->num_groups]))                                              
                goto err;                                                                │                  goto err;                                                               
        ft->num_groups++;                                                                │          ft->num_groups++;                                                               
                                                                                         │                                                                                          
        kvfree(in);                                                                      │          kvfree(in);                                                                     
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
err:                                                                                     │  err:                                                                                    
        err = PTR_ERR(ft->g[ft->num_groups]);                                            │          err = PTR_ERR(ft->g[ft->num_groups]);                                           
        ft->g[ft->num_groups] = NULL;                                                    │          ft->g[ft->num_groups] = NULL;                                                   
                                                                                         │  out:                                                                                    
        kvfree(in);                                                                      │          kvfree(in);                                                                     
                                                                                         │                                                                                          
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c:516                     │ linux/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c:751                      
                                                                                         │                                                                                          
        u32 dma_desc_addr_msw = (u32)(((u64)aq_ring->dx_ring_pa) >> 32);                 │          u32 dma_desc_addr_msw = (u32)(((u64)aq_ring->dx_ring_pa) >> 32);                
                                                                                         │          u32 vlan_rx_stripping = self->aq_nic_cfg->is_vlan_rx_strip;                     
        u32 dma_desc_addr_lsw = (u32)aq_ring->dx_ring_pa;                                │          u32 dma_desc_addr_lsw = (u32)aq_ring->dx_ring_pa;                               
                                                                                         │                                                                                          
        hw_atl_rdm_rx_desc_en_set(self, false, aq_ring->idx);                            │          hw_atl_rdm_rx_desc_en_set(self, false, aq_ring->idx);                           
                                                                                         │                                                                                          
        hw_atl_rdm_rx_desc_head_splitting_set(self, 0U, aq_ring->idx);                   │          hw_atl_rdm_rx_desc_head_splitting_set(self, 0U, aq_ring->idx);                  
                                                                                         │                                                                                          
        hw_atl_reg_rx_dma_desc_base_addresslswset(self, dma_desc_addr_lsw,               │          hw_atl_reg_rx_dma_desc_base_addresslswset(self, dma_desc_addr_lsw,              
                                                  aq_ring->idx);                         │                                                    aq_ring->idx);                        
                                                                                         │                                                                                          
        hw_atl_reg_rx_dma_desc_base_addressmswset(self,                                  │          hw_atl_reg_rx_dma_desc_base_addressmswset(self,                                 
                                                  dma_desc_addr_msw,                     │                                                    dma_desc_addr_msw, aq_ring->idx);     
                                                  aq_ring->idx);                         │                                                                                          
                                                                                         │                                                                                          
        hw_atl_rdm_rx_desc_len_set(self, aq_ring->size / 8U, aq_ring->idx);              │          hw_atl_rdm_rx_desc_len_set(self, aq_ring->size / 8U, aq_ring->idx);             
                                                                                         │                                                                                          
        hw_atl_rdm_rx_desc_data_buff_size_set(self,                                      │          hw_atl_rdm_rx_desc_data_buff_size_set(self,                                     
                                              AQ_CFG_RX_FRAME_MAX / 1024U,               │                                                AQ_CFG_RX_FRAME_MAX / 1024U,              
                                              aq_ring->idx);                             │                                         aq_ring->idx);                                   
                                                                                         │                                                                                          
        hw_atl_rdm_rx_desc_head_buff_size_set(self, 0U, aq_ring->idx);                   │          hw_atl_rdm_rx_desc_head_buff_size_set(self, 0U, aq_ring->idx);                  
        hw_atl_rdm_rx_desc_head_splitting_set(self, 0U, aq_ring->idx);                   │          hw_atl_rdm_rx_desc_head_splitting_set(self, 0U, aq_ring->idx);                  
        hw_atl_rpo_rx_desc_vlan_stripping_set(self, 0U, aq_ring->idx);                   │          hw_atl_rpo_rx_desc_vlan_stripping_set(self, !!vlan_rx_stripping,                
                                                                                         │                                                aq_ring->idx);                            
                                                                                         │                                                                                          
        /* Rx ring set mode */                                                           │          /* Rx ring set mode */                                                          
                                                                                         │                                                                                          
        /* Mapping interrupt vector */                                                   │          /* Mapping interrupt vector */                                                  
        hw_atl_itr_irq_map_rx_set(self, aq_ring_param->vec_idx, aq_ring->idx);           │          hw_atl_itr_irq_map_rx_set(self, aq_ring_param->vec_idx, aq_ring->idx);          
        hw_atl_itr_irq_map_en_rx_set(self, true, aq_ring->idx);                          │          hw_atl_itr_irq_map_en_rx_set(self, true, aq_ring->idx);                         
                                                                                         │                                                                                          
        hw_atl_rdm_cpu_id_set(self, aq_ring_param->cpu, aq_ring->idx);                   │          hw_atl_rdm_cpu_id_set(self, aq_ring_param->cpu, aq_ring->idx);                  
        hw_atl_rdm_rx_desc_dca_en_set(self, 0U, aq_ring->idx);                           │          hw_atl_rdm_rx_desc_dca_en_set(self, 0U, aq_ring->idx);                          
        hw_atl_rdm_rx_head_dca_en_set(self, 0U, aq_ring->idx);                           │          hw_atl_rdm_rx_head_dca_en_set(self, 0U, aq_ring->idx);                          
        hw_atl_rdm_rx_pld_dca_en_set(self, 0U, aq_ring->idx);                            │          hw_atl_rdm_rx_pld_dca_en_set(self, 0U, aq_ring->idx);                           
                                                                                         │                                                                                          
        return aq_hw_err_from_flags(self);                                               │          return aq_hw_err_from_flags(self);                                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/fm10k/fm10k_mbx.c:2142                                 │ linux/drivers/net/ethernet/intel/fm10k/fm10k_mbx.c:1560                                  
                                                                                         │                                                                                          
        mbx->mbx_reg = FM10K_GMBX;                                                       │          /* initialize registers */                                                      
        mbx->mbmem_reg = FM10K_MBMEM_PF(0);                                              │          switch (hw->mac.type) {                                                         
                                                                                         │          case fm10k_mac_vf:                                                              
                                                                                         │                  mbx->mbx_reg = FM10K_VFMBX;                                             
                                                                                         │                  mbx->mbmem_reg = FM10K_VFMBMEM(FM10K_VFMBMEM_VF_XOR);                   
                                                                                         │                  break;                                                                  
                                                                                         │          case fm10k_mac_pf:                                                              
                                                                                         │                  /* there are only 64 VF <-> PF mailboxes */                             
                                                                                         │                  if (id < 64) {                                                          
                                                                                         │                          mbx->mbx_reg = FM10K_MBX(id);                                   
                                                                                         │                          mbx->mbmem_reg = FM10K_MBMEM_VF(id, 0);                         
                                                                                         │                          break;                                                          
                                                                                         │                  }                                                                       
                                                                                         │                  fallthrough;                                                            
                                                                                         │          default:                                                                        
                                                                                         │                  return FM10K_MBX_ERR_NO_MBX;                                            
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        /* start out in closed state */                                                  │          /* start out in closed state */                                                 
        mbx->state = FM10K_STATE_CLOSED;                                                 │          mbx->state = FM10K_STATE_CLOSED;                                                
                                                                                         │                                                                                          
        /* validate layout of handlers before assigning them */                          │          /* validate layout of handlers before assigning them */                         
        if (fm10k_mbx_validate_handlers(msg_data))                                       │          if (fm10k_mbx_validate_handlers(msg_data))                                      
                return FM10K_ERR_PARAM;                                                  │                  return FM10K_ERR_PARAM;                                                 
                                                                                         │                                                                                          
        /* initialize the message handlers */                                            │          /* initialize the message handlers */                                           
        mbx->msg_data = msg_data;                                                        │          mbx->msg_data = msg_data;                                                       
                                                                                         │                                                                                          
        /* start mailbox as timed out and let the reset_hw call                          │          /* start mailbox as timed out and let the reset_hw call                         
         * set the timeout value to begin communications                                 │           * set the timeout value to begin communications                                
         */                                                                              │           */                                                                             
        mbx->timeout = 0;                                                                │          mbx->timeout = 0;                                                               
        mbx->udelay = FM10K_MBX_INIT_DELAY;                                              │          mbx->udelay = FM10K_MBX_INIT_DELAY;                                             
                                                                                         │                                                                                          
                                                                                         │          /* initialize tail and head */                                                  
                                                                                         │          mbx->tail = 1;                                                                  
                                                                                         │          mbx->head = 1;                                                                  
                                                                                         │                                                                                          
                                                                                         │          /* initialize CRC seeds */                                                      
                                                                                         │          mbx->local = FM10K_MBX_CRC_SEED;                                                
                                                                                         │          mbx->remote = FM10K_MBX_CRC_SEED;                                               
                                                                                         │                                                                                          
        /* Split buffer for use by Tx/Rx FIFOs */                                        │          /* Split buffer for use by Tx/Rx FIFOs */                                       
        mbx->max_size = FM10K_MBX_MSG_MAX_SIZE;                                          │          mbx->max_size = FM10K_MBX_MSG_MAX_SIZE;                                         
        mbx->mbmem_len = FM10K_MBMEM_PF_XOR;                                             │          mbx->mbmem_len = FM10K_VFMBMEM_VF_XOR;                                          
                                                                                         │                                                                                          
        /* initialize the FIFOs, sizes are in 4 byte increments */                       │          /* initialize the FIFOs, sizes are in 4 byte increments */                      
        fm10k_fifo_init(&mbx->tx, mbx->buffer, FM10K_MBX_TX_BUFFER_SIZE);                │          fm10k_fifo_init(&mbx->tx, mbx->buffer, FM10K_MBX_TX_BUFFER_SIZE);               
        fm10k_fifo_init(&mbx->rx, &mbx->buffer[FM10K_MBX_TX_BUFFER_SIZE],                │          fm10k_fifo_init(&mbx->rx, &mbx->buffer[FM10K_MBX_TX_BUFFER_SIZE],               
                        FM10K_MBX_RX_BUFFER_SIZE);                                       │                          FM10K_MBX_RX_BUFFER_SIZE);                                      
                                                                                         │                                                                                          
        /* initialize function pointers */                                               │          /* initialize function pointers */                                              
        mbx->ops.connect = fm10k_sm_mbx_connect;                                         │          mbx->ops.connect = fm10k_mbx_connect;                                           
        mbx->ops.disconnect = fm10k_sm_mbx_disconnect;                                   │          mbx->ops.disconnect = fm10k_mbx_disconnect;                                     
        mbx->ops.rx_ready = fm10k_mbx_rx_ready;                                          │          mbx->ops.rx_ready = fm10k_mbx_rx_ready;                                         
        mbx->ops.tx_ready = fm10k_mbx_tx_ready;                                          │          mbx->ops.tx_ready = fm10k_mbx_tx_ready;                                         
        mbx->ops.tx_complete = fm10k_mbx_tx_complete;                                    │          mbx->ops.tx_complete = fm10k_mbx_tx_complete;                                   
        mbx->ops.enqueue_tx = fm10k_mbx_enqueue_tx;                                      │          mbx->ops.enqueue_tx = fm10k_mbx_enqueue_tx;                                     
        mbx->ops.process = fm10k_sm_mbx_process;                                         │          mbx->ops.process = fm10k_mbx_process;                                           
        mbx->ops.register_handlers = fm10k_mbx_register_handlers;                        │          mbx->ops.register_handlers = fm10k_mbx_register_handlers;                       
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c:597                            │ linux/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c:699                             
                                                                                         │                                                                                          
        u32 base_add_l, base_add_h;                                                      │          u32 base_add_l, base_add_h;                                                     
        u32 j = 0;                                                                       │          u32 j = 0;                                                                      
                                                                                         │                                                                                          
        sprintf(result[j++], "%u", index);                                               │          sprintf(result[j++], "%u", index);                                              
                                                                                         │          sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                   
                                                                                         │                  HNS3_RING_TX_RING_BD_NUM_REG));                                         
                                                                                         │                                                                                          
        sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                    │          sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                   
                HNS3_RING_RX_RING_BD_NUM_REG));                                          │                  HNS3_RING_TX_RING_TC_REG));                                             
                                                                                         │                                                                                          
        sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                    │          sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                   
                HNS3_RING_RX_RING_BD_LEN_REG));                                          │                  HNS3_RING_TX_RING_TAIL_REG));                                           
                                                                                         │                                                                                          
        sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                    │          sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                   
                HNS3_RING_RX_RING_TAIL_REG));                                            │                  HNS3_RING_TX_RING_HEAD_REG));                                           
                                                                                         │                                                                                          
        sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                    │          sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                   
                HNS3_RING_RX_RING_HEAD_REG));                                            │                  HNS3_RING_TX_RING_FBDNUM_REG));                                         
                                                                                         │                                                                                          
        sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                    │          sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                   
                HNS3_RING_RX_RING_FBDNUM_REG));                                          │                  HNS3_RING_TX_RING_OFFSET_REG));                                         
                                                                                         │                                                                                          
        sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                    │          sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +                   
                HNS3_RING_RX_RING_PKTNUM_RECORD_REG));                                   │                  HNS3_RING_TX_RING_PKTNUM_RECORD_REG));                                  
        sprintf(result[j++], "%u", ring->rx_copybreak);                                  │                                                                                          
                                                                                         │                                                                                          
        sprintf(result[j++], "%s", readl_relaxed(ring->tqp->io_base +                    │          sprintf(result[j++], "%s", readl_relaxed(ring->tqp->io_base +                   
                HNS3_RING_EN_REG) ? "on" : "off");                                       │                  HNS3_RING_EN_REG) ? "on" : "off");                                      
                                                                                         │                                                                                          
        if (hnae3_ae_dev_tqp_txrx_indep_supported(ae_dev))                               │          if (hnae3_ae_dev_tqp_txrx_indep_supported(ae_dev))                              
                sprintf(result[j++], "%s", readl_relaxed(ring->tqp->io_base +            │                  sprintf(result[j++], "%s", readl_relaxed(ring->tqp->io_base +           
                        HNS3_RING_RX_EN_REG) ? "on" : "off");                            │                          HNS3_RING_TX_EN_REG) ? "on" : "off");                           
        else                                                                             │          else                                                                            
                sprintf(result[j++], "%s", "NA");                                        │                  sprintf(result[j++], "%s", "NA");                                       
                                                                                         │                                                                                          
        base_add_h = readl_relaxed(ring->tqp->io_base +                                  │          base_add_h = readl_relaxed(ring->tqp->io_base +                                 
                                        HNS3_RING_RX_RING_BASEADDR_H_REG);               │                                          HNS3_RING_TX_RING_BASEADDR_H_REG);              
        base_add_l = readl_relaxed(ring->tqp->io_base +                                  │          base_add_l = readl_relaxed(ring->tqp->io_base +                                 
                                        HNS3_RING_RX_RING_BASEADDR_L_REG);               │                                          HNS3_RING_TX_RING_BASEADDR_L_REG);              
        sprintf(result[j++], "0x%08x%08x", base_add_h, base_add_l);                      │          sprintf(result[j++], "0x%08x%08x", base_add_h, base_add_l);                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/ni/nixge.c:1083                                              │ linux/drivers/net/ethernet/ni/nixge.c:1132                                               
                                                                                         │                                                                                          
        struct nixge_priv *priv = bus->priv;                                             │          struct nixge_priv *priv = bus->priv;                                            
        u32 status, tmp;                                                                 │          u32 status, tmp;                                                                
        int err;                                                                         │                                                                                          
        u16 device;                                                                      │          u16 device;                                                                     
                                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (reg & MII_ADDR_C45) {                                                        │          if (reg & MII_ADDR_C45) {                                                       
                device = (reg >> 16) & 0x1f;                                             │                  device = (reg >> 16) & 0x1f;                                            
                                                                                         │                                                                                          
                nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_ADDR, reg & 0xffff);           │                  nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_ADDR, reg & 0xffff);          
                                                                                         │                                                                                          
                tmp = NIXGE_MDIO_CLAUSE45 | NIXGE_MDIO_OP(NIXGE_MDIO_OP_ADDRESS)         │                  tmp = NIXGE_MDIO_CLAUSE45 | NIXGE_MDIO_OP(NIXGE_MDIO_OP_ADDRESS)        
                        | NIXGE_MDIO_ADDR(phy_id) | NIXGE_MDIO_MMD(device);              │                          | NIXGE_MDIO_ADDR(phy_id) | NIXGE_MDIO_MMD(device);             
                                                                                         │                                                                                          
                nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_OP, tmp);                      │                  nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_OP, tmp);                     
                nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_CTRL, 1);                      │                  nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_CTRL, 1);                     
                                                                                         │                                                                                          
                err = nixge_ctrl_poll_timeout(priv, NIXGE_REG_MDIO_CTRL, status,         │                  err = nixge_ctrl_poll_timeout(priv, NIXGE_REG_MDIO_CTRL, status,        
                                              !status, 10, 1000);                        │                                                !status, 10, 1000);                       
                if (err) {                                                               │                  if (err) {                                                              
                        dev_err(priv->dev, "timeout setting address");                   │                          dev_err(priv->dev, "timeout setting address");                  
                        return err;                                                      │                          return err;                                                     
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                tmp = NIXGE_MDIO_CLAUSE45 | NIXGE_MDIO_OP(NIXGE_MDIO_C45_READ) |         │                  tmp = NIXGE_MDIO_CLAUSE45 | NIXGE_MDIO_OP(NIXGE_MDIO_C45_WRITE)         
                        NIXGE_MDIO_ADDR(phy_id) | NIXGE_MDIO_MMD(device);                │                          | NIXGE_MDIO_ADDR(phy_id) | NIXGE_MDIO_MMD(device);             
                                                                                         │                                                                                          
                                                                                         │                  nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_DATA, val);                   
                                                                                         │                  nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_OP, tmp);                     
                                                                                         │                  err = nixge_ctrl_poll_timeout(priv, NIXGE_REG_MDIO_CTRL, status,        
                                                                                         │                                                !status, 10, 1000);                       
                                                                                         │                  if (err)                                                                
                                                                                         │                          dev_err(priv->dev, "timeout setting write command");            
        } else {                                                                         │          } else {                                                                        
                device = reg & 0x1f;                                                     │                  device = reg & 0x1f;                                                    
                                                                                         │                                                                                          
                tmp = NIXGE_MDIO_CLAUSE22 | NIXGE_MDIO_OP(NIXGE_MDIO_C22_READ) |         │                  tmp = NIXGE_MDIO_CLAUSE22 |                                             
                                                                                         │                          NIXGE_MDIO_OP(NIXGE_MDIO_C22_WRITE) |                           
                        NIXGE_MDIO_ADDR(phy_id) | NIXGE_MDIO_MMD(device);                │                          NIXGE_MDIO_ADDR(phy_id) | NIXGE_MDIO_MMD(device);               
        }                                                                                │                                                                                          
                                                                                         │                                                                                          
        nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_OP, tmp);                              │                  nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_DATA, val);                   
        nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_CTRL, 1);                              │                  nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_OP, tmp);                     
                                                                                         │                  nixge_ctrl_write_reg(priv, NIXGE_REG_MDIO_CTRL, 1);                     
                                                                                         │                                                                                          
        err = nixge_ctrl_poll_timeout(priv, NIXGE_REG_MDIO_CTRL, status,                 │                  err = nixge_ctrl_poll_timeout(priv, NIXGE_REG_MDIO_CTRL, status,        
                                      !status, 10, 1000);                                │                                                !status, 10, 1000);                       
        if (err) {                                                                       │                  if (err)                                                                
                dev_err(priv->dev, "timeout setting read command");                      │                          dev_err(priv->dev, "timeout setting write command");            
                return err;                                                              │                                                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        status = nixge_ctrl_read_reg(priv, NIXGE_REG_MDIO_DATA);                         │          return err;                                                                     
                                                                                         │                                                                                          
        return status;                                                                   │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/nfd3/dp.c:1085                                 │ linux/drivers/net/ethernet/netronome/nfp/nfdk/dp.c:1209                                  
                                                                                         │                                                                                          
        struct nfp_net_r_vector *r_vec =                                                 │          struct nfp_net_r_vector *r_vec =                                                
                container_of(napi, struct nfp_net_r_vector, napi);                       │                  container_of(napi, struct nfp_net_r_vector, napi);                      
        unsigned int pkts_polled = 0;                                                    │          unsigned int pkts_polled = 0;                                                   
                                                                                         │                                                                                          
        if (r_vec->tx_ring)                                                              │          if (r_vec->tx_ring)                                                             
                nfp_nfd3_tx_complete(r_vec->tx_ring, budget);                            │                  nfp_nfdk_tx_complete(r_vec->tx_ring, budget);                           
        if (r_vec->rx_ring)                                                              │          if (r_vec->rx_ring)                                                             
                pkts_polled = nfp_nfd3_rx(r_vec->rx_ring, budget);                       │                  pkts_polled = nfp_nfdk_rx(r_vec->rx_ring, budget);                      
                                                                                         │                                                                                          
        if (pkts_polled < budget)                                                        │          if (pkts_polled < budget)                                                       
                if (napi_complete_done(napi, pkts_polled))                               │                  if (napi_complete_done(napi, pkts_polled))                              
                        nfp_net_irq_unmask(r_vec->nfp_net, r_vec->irq_entry);            │                          nfp_net_irq_unmask(r_vec->nfp_net, r_vec->irq_entry);           
                                                                                         │                                                                                          
        if (r_vec->nfp_net->rx_coalesce_adapt_on && r_vec->rx_ring) {                    │          if (r_vec->nfp_net->rx_coalesce_adapt_on && r_vec->rx_ring) {                   
                struct dim_sample dim_sample = {};                                       │                  struct dim_sample dim_sample = {};                                      
                unsigned int start;                                                      │                  unsigned int start;                                                     
                u64 pkts, bytes;                                                         │                  u64 pkts, bytes;                                                        
                                                                                         │                                                                                          
                do {                                                                     │                  do {                                                                    
                        start = u64_stats_fetch_begin(&r_vec->rx_sync);                  │                          start = u64_stats_fetch_begin(&r_vec->rx_sync);                 
                        pkts = r_vec->rx_pkts;                                           │                          pkts = r_vec->rx_pkts;                                          
                        bytes = r_vec->rx_bytes;                                         │                          bytes = r_vec->rx_bytes;                                        
                } while (u64_stats_fetch_retry(&r_vec->rx_sync, start));                 │                  } while (u64_stats_fetch_retry(&r_vec->rx_sync, start));                
                                                                                         │                                                                                          
                dim_update_sample(r_vec->event_ctr, pkts, bytes, &dim_sample);           │                  dim_update_sample(r_vec->event_ctr, pkts, bytes, &dim_sample);          
                net_dim(&r_vec->rx_dim, dim_sample);                                     │                  net_dim(&r_vec->rx_dim, dim_sample);                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (r_vec->nfp_net->tx_coalesce_adapt_on && r_vec->tx_ring) {                    │          if (r_vec->nfp_net->tx_coalesce_adapt_on && r_vec->tx_ring) {                   
                struct dim_sample dim_sample = {};                                       │                  struct dim_sample dim_sample = {};                                      
                unsigned int start;                                                      │                  unsigned int start;                                                     
                u64 pkts, bytes;                                                         │                  u64 pkts, bytes;                                                        
                                                                                         │                                                                                          
                do {                                                                     │                  do {                                                                    
                        start = u64_stats_fetch_begin(&r_vec->tx_sync);                  │                          start = u64_stats_fetch_begin(&r_vec->tx_sync);                 
                        pkts = r_vec->tx_pkts;                                           │                          pkts = r_vec->tx_pkts;                                          
                        bytes = r_vec->tx_bytes;                                         │                          bytes = r_vec->tx_bytes;                                        
                } while (u64_stats_fetch_retry(&r_vec->tx_sync, start));                 │                  } while (u64_stats_fetch_retry(&r_vec->tx_sync, start));                
                                                                                         │                                                                                          
                dim_update_sample(r_vec->event_ctr, pkts, bytes, &dim_sample);           │                  dim_update_sample(r_vec->event_ctr, pkts, bytes, &dim_sample);          
                net_dim(&r_vec->tx_dim, dim_sample);                                     │                  net_dim(&r_vec->tx_dim, dim_sample);                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return pkts_polled;                                                              │          return pkts_polled;                                                             
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c:488                           │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c:187                            
                                                                                         │                                                                                          
        u16 rif_index = mlxsw_sp_ipip_lb_rif_index(ipip_entry->ol_lb);                   │          u16 rif_index = mlxsw_sp_ipip_lb_rif_index(ipip_entry->ol_lb);                  
        u16 ul_rif_id = mlxsw_sp_ipip_lb_ul_rif_id(ipip_entry->ol_lb);                   │          u16 ul_rif_id = mlxsw_sp_ipip_lb_ul_rif_id(ipip_entry->ol_lb);                  
        char rtdp_pl[MLXSW_REG_RTDP_LEN];                                                │          char rtdp_pl[MLXSW_REG_RTDP_LEN];                                               
        struct __ip6_tnl_parm parms;                                                     │          struct ip_tunnel_parm parms;                                                    
        unsigned int type_check;                                                         │          unsigned int type_check;                                                        
        bool has_ikey;                                                                   │          bool has_ikey;                                                                  
                                                                                         │          u32 daddr4;                                                                     
        u32 ikey;                                                                        │          u32 ikey;                                                                       
                                                                                         │                                                                                          
        parms = mlxsw_sp_ipip_netdev_parms6(ipip_entry->ol_dev);                         │          parms = mlxsw_sp_ipip_netdev_parms4(ipip_entry->ol_dev);                        
        has_ikey = mlxsw_sp_ipip_parms6_has_ikey(&parms);                                │          has_ikey = mlxsw_sp_ipip_parms4_has_ikey(&parms);                               
        ikey = mlxsw_sp_ipip_parms6_ikey(&parms);                                        │          ikey = mlxsw_sp_ipip_parms4_ikey(&parms);                                       
                                                                                         │                                                                                          
        mlxsw_reg_rtdp_pack(rtdp_pl, MLXSW_REG_RTDP_TYPE_IPIP, tunnel_index);            │          mlxsw_reg_rtdp_pack(rtdp_pl, MLXSW_REG_RTDP_TYPE_IPIP, tunnel_index);           
        mlxsw_reg_rtdp_egress_router_interface_set(rtdp_pl, ul_rif_id);                  │          mlxsw_reg_rtdp_egress_router_interface_set(rtdp_pl, ul_rif_id);                 
                                                                                         │                                                                                          
        type_check = has_ikey ?                                                          │          type_check = has_ikey ?                                                         
                MLXSW_REG_RTDP_IPIP_TYPE_CHECK_ALLOW_GRE_KEY :                           │                  MLXSW_REG_RTDP_IPIP_TYPE_CHECK_ALLOW_GRE_KEY :                          
                MLXSW_REG_RTDP_IPIP_TYPE_CHECK_ALLOW_GRE;                                │                  MLXSW_REG_RTDP_IPIP_TYPE_CHECK_ALLOW_GRE;                               
                                                                                         │                                                                                          
        /* Linux demuxes tunnels based on packet SIP (which must match tunnel            │          /* Linux demuxes tunnels based on packet SIP (which must match tunnel           
         * remote IP). Thus configure decap so that it filters out packets that          │           * remote IP). Thus configure decap so that it filters out packets that         
         * are not IPv6 or have the wrong SIP. IPIP_DECAP_ERROR trap is                  │           * are not IPv4 or have the wrong SIP. IPIP_DECAP_ERROR trap is                 
         * generated for packets that fail this criterion. Linux then handles            │           * generated for packets that fail this criterion. Linux then handles           
         * such packets in slow path and generates ICMP destination unreachable.         │           * such packets in slow path and generates ICMP destination unreachable.        
         */                                                                              │           */                                                                             
        mlxsw_reg_rtdp_ipip6_pack(rtdp_pl, rif_index,                                    │          daddr4 = be32_to_cpu(mlxsw_sp_ipip_netdev_daddr4(ipip_entry->ol_dev));          
                                  MLXSW_REG_RTDP_IPIP_SIP_CHECK_FILTER_IPV6,             │          mlxsw_reg_rtdp_ipip4_pack(rtdp_pl, rif_index,                                   
                                  type_check, has_ikey,                                  │                                    MLXSW_REG_RTDP_IPIP_SIP_CHECK_FILTER_IPV4,            
                                  ipip_entry->dip_kvdl_index, ikey);                     │                                    type_check, has_ikey, daddr4, ikey);                  
                                                                                         │                                                                                          
        return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rtdp), rtdp_pl);                │          return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rtdp), rtdp_pl);               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/alteon/acenic.c:1623                                         │ linux/drivers/net/ethernet/alteon/acenic.c:1743                                          
                                                                                         │                                                                                          
        struct ace_private *ap = netdev_priv(dev);                                       │          struct ace_private *ap = netdev_priv(dev);                                      
        struct ace_regs __iomem *regs = ap->regs;                                        │          struct ace_regs __iomem *regs = ap->regs;                                       
        short i, idx;                                                                    │          short i, idx;                                                                   
                                                                                         │                                                                                          
                                                                                         │          idx = ap->rx_jumbo_skbprd;                                                      
        prefetchw(&ap->cur_rx_bufs);                                                     │                                                                                          
                                                                                         │                                                                                          
        idx = ap->rx_std_skbprd;                                                         │                                                                                          
                                                                                         │                                                                                          
        for (i = 0; i < nr_bufs; i++) {                                                  │          for (i = 0; i < nr_bufs; i++) {                                                 
                struct sk_buff *skb;                                                     │                  struct sk_buff *skb;                                                    
                struct rx_desc *rd;                                                      │                  struct rx_desc *rd;                                                     
                dma_addr_t mapping;                                                      │                  dma_addr_t mapping;                                                     
                                                                                         │                                                                                          
                skb = netdev_alloc_skb_ip_align(dev, ACE_STD_BUFSIZE);                   │                  skb = netdev_alloc_skb_ip_align(dev, ACE_JUMBO_BUFSIZE);                
                if (!skb)                                                                │                  if (!skb)                                                               
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                mapping = dma_map_page(&ap->pdev->dev,                                   │                  mapping = dma_map_page(&ap->pdev->dev,                                  
                                       virt_to_page(skb->data),                          │                                         virt_to_page(skb->data),                         
                                       offset_in_page(skb->data),                        │                                         offset_in_page(skb->data),                       
                                       ACE_STD_BUFSIZE, DMA_FROM_DEVICE);                │                                         ACE_JUMBO_BUFSIZE, DMA_FROM_DEVICE);             
                ap->skb->rx_std_skbuff[idx].skb = skb;                                   │                  ap->skb->rx_jumbo_skbuff[idx].skb = skb;                                
                dma_unmap_addr_set(&ap->skb->rx_std_skbuff[idx],                         │                  dma_unmap_addr_set(&ap->skb->rx_jumbo_skbuff[idx],                      
                                   mapping, mapping);                                    │                                     mapping, mapping);                                   
                                                                                         │                                                                                          
                rd = &ap->rx_std_ring[idx];                                              │                  rd = &ap->rx_jumbo_ring[idx];                                           
                set_aceaddr(&rd->addr, mapping);                                         │                  set_aceaddr(&rd->addr, mapping);                                        
                rd->size = ACE_STD_BUFSIZE;                                              │                  rd->size = ACE_JUMBO_BUFSIZE;                                           
                rd->idx = idx;                                                           │                  rd->idx = idx;                                                          
                idx = (idx + 1) % RX_STD_RING_ENTRIES;                                   │                  idx = (idx + 1) % RX_JUMBO_RING_ENTRIES;                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!i)                                                                          │          if (!i)                                                                         
                goto error_out;                                                          │                  goto error_out;                                                         
                                                                                         │                                                                                          
        atomic_add(i, &ap->cur_rx_bufs);                                                 │          atomic_add(i, &ap->cur_jumbo_bufs);                                             
        ap->rx_std_skbprd = idx;                                                         │          ap->rx_jumbo_skbprd = idx;                                                      
                                                                                         │                                                                                          
        if (ACE_IS_TIGON_I(ap)) {                                                        │          if (ACE_IS_TIGON_I(ap)) {                                                       
                struct cmd cmd;                                                          │                  struct cmd cmd;                                                         
                cmd.evt = C_SET_RX_PRD_IDX;                                              │                  cmd.evt = C_SET_RX_JUMBO_PRD_IDX;                                       
                cmd.code = 0;                                                            │                  cmd.code = 0;                                                           
                cmd.idx = ap->rx_std_skbprd;                                             │                  cmd.idx = ap->rx_jumbo_skbprd;                                          
                ace_issue_cmd(regs, &cmd);                                               │                  ace_issue_cmd(regs, &cmd);                                              
        } else {                                                                         │          } else {                                                                        
                writel(idx, ®s->RxStdPrd);                                            │                  writel(idx, ®s->RxJumboPrd);                                         
                wmb();                                                                   │                  wmb();                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
 out:                                                                                    │   out:                                                                                   
        clear_bit(0, &ap->std_refill_busy);                                              │          clear_bit(0, &ap->jumbo_refill_busy);                                           
        return;                                                                          │          return;                                                                         
                                                                                         │                                                                                          
 error_out:                                                                              │   error_out:                                                                             
        printk(KERN_INFO "Out of memory when allocating "                                │          if (net_ratelimit())                                                            
               "standard receive buffers\n");                                            │                  printk(KERN_INFO "Out of memory when allocating "                       
                                                                                         │                         "jumbo receive buffers\n");                                      
        goto out;                                                                        │          goto out;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/nic.c:330                                         │ linux/drivers/net/ethernet/sfc/nic.c:342                                                 
                                                                                         │                                                                                          
        /* DRIVER is not used */                                                         │          /* DRIVER is not used */                                                        
        /* EVQ_RPTR, TIMER_COMMAND, USR_EV and {RX,TX}_DESC_UPD are WO */                │          /* EVQ_RPTR, TIMER_COMMAND, USR_EV and {RX,TX}_DESC_UPD are WO */               
        REGISTER_TABLE_BB(TX_IPFIL_TBL),                                                 │          REGISTER_TABLE_BB(TX_IPFIL_TBL),                                                
        REGISTER_TABLE_BB(TX_SRC_MAC_TBL),                                               │          REGISTER_TABLE_BB(TX_SRC_MAC_TBL),                                              
        REGISTER_TABLE_AA(RX_DESC_PTR_TBL_KER),                                          │          REGISTER_TABLE_AA(RX_DESC_PTR_TBL_KER),                                         
        REGISTER_TABLE_BB_CZ(RX_DESC_PTR_TBL),                                           │          REGISTER_TABLE_BB_CZ(RX_DESC_PTR_TBL),                                          
        REGISTER_TABLE_AA(TX_DESC_PTR_TBL_KER),                                          │          REGISTER_TABLE_AA(TX_DESC_PTR_TBL_KER),                                         
        REGISTER_TABLE_BB_CZ(TX_DESC_PTR_TBL),                                           │          REGISTER_TABLE_BB_CZ(TX_DESC_PTR_TBL),                                          
        REGISTER_TABLE_AA(EVQ_PTR_TBL_KER),                                              │          REGISTER_TABLE_AA(EVQ_PTR_TBL_KER),                                             
        REGISTER_TABLE_BB_CZ(EVQ_PTR_TBL),                                               │          REGISTER_TABLE_BB_CZ(EVQ_PTR_TBL),                                              
        /* We can't reasonably read all of the buffer table (up to 8MB!).                │          /* We can't reasonably read all of the buffer table (up to 8MB!).               
         * However this driver will only use a few entries.  Reading                     │           * However this driver will only use a few entries.  Reading                    
         * 1K entries allows for some expansion of queue count and                       │           * 1K entries allows for some expansion of queue count and                      
         * size before we need to change the version. */                                 │           * size before we need to change the version. */                                
        REGISTER_TABLE_DIMENSIONS(BUF_FULL_TBL_KER, FR_AA_BUF_FULL_TBL_KER,              │          REGISTER_TABLE_DIMENSIONS(BUF_FULL_TBL_KER, FR_AA_BUF_FULL_TBL_KER,             
                                  F, A, A, 8, 1024),                                     │                                    F, A, A, 8, 1024),                                    
        REGISTER_TABLE_DIMENSIONS(BUF_FULL_TBL, FR_BZ_BUF_FULL_TBL,                      │          REGISTER_TABLE_DIMENSIONS(BUF_FULL_TBL, FR_BZ_BUF_FULL_TBL,                     
                                  F, B, Z, 8, 1024),                                     │                                    F, B, Z, 8, 1024),                                    
        REGISTER_TABLE_CZ(RX_MAC_FILTER_TBL0),                                           │          REGISTER_TABLE_CZ(RX_MAC_FILTER_TBL0),                                          
        REGISTER_TABLE_BB_CZ(TIMER_TBL),                                                 │          REGISTER_TABLE_BB_CZ(TIMER_TBL),                                                
        REGISTER_TABLE_BB_CZ(TX_PACE_TBL),                                               │          REGISTER_TABLE_BB_CZ(TX_PACE_TBL),                                              
        REGISTER_TABLE_BZ(RX_INDIRECTION_TBL),                                           │          REGISTER_TABLE_BZ(RX_INDIRECTION_TBL),                                          
        /* TX_FILTER_TBL0 is huge and not used by this driver */                         │          /* TX_FILTER_TBL0 is huge and not used by this driver */                        
        REGISTER_TABLE_CZ(TX_MAC_FILTER_TBL0),                                           │          REGISTER_TABLE_CZ(TX_MAC_FILTER_TBL0),                                          
        REGISTER_TABLE_CZ(MC_TREG_SMEM),                                                 │          REGISTER_TABLE_CZ(MC_TREG_SMEM),                                                
        /* MSIX_PBA_TABLE is not mapped */                                               │          /* MSIX_PBA_TABLE is not mapped */                                              
        /* SRM_DBG is not mapped (and is redundant with BUF_FLL_TBL) */                  │          /* SRM_DBG is not mapped (and is redundant with BUF_FLL_TBL) */                 
        REGISTER_TABLE_BZ(RX_FILTER_TBL0),                                               │          REGISTER_TABLE_BZ(RX_FILTER_TBL0),                                              
                                                                                         │          REGISTER_TABLE_DZ(BIU_MC_SFT_STATUS),                                           
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c:1334                            │ linux/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c:1296                             
                                                                                         │                                                                                          
        struct cpl_t6_act_open_req *t6req = NULL;                                        │          struct cpl_t6_act_open_req6 *t6req = NULL;                                      
        struct cpl_act_open_req *req = NULL;                                             │          struct cpl_act_open_req6 *req = NULL;                                           
                                                                                         │                                                                                          
        t6req = (struct cpl_t6_act_open_req *)__skb_put(skb, sizeof(*t6req));            │          t6req = (struct cpl_t6_act_open_req6 *)__skb_put(skb, sizeof(*t6req));          
        INIT_TP_WR(t6req, 0);                                                            │          INIT_TP_WR(t6req, 0);                                                           
        req = (struct cpl_act_open_req *)t6req;                                          │          req = (struct cpl_act_open_req6 *)t6req;                                        
        OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ACT_OPEN_REQ, qid_filterid));          │          OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ACT_OPEN_REQ6, qid_filterid));        
        req->local_port = cpu_to_be16(f->fs.val.lport);                                  │          req->local_port = cpu_to_be16(f->fs.val.lport);                                 
        req->peer_port = cpu_to_be16(f->fs.val.fport);                                   │          req->peer_port = cpu_to_be16(f->fs.val.fport);                                  
        memcpy(&req->local_ip, f->fs.val.lip, 4);                                        │          req->local_ip_hi = *(__be64 *)(&f->fs.val.lip);                                 
        memcpy(&req->peer_ip, f->fs.val.fip, 4);                                         │          req->local_ip_lo = *(((__be64 *)&f->fs.val.lip) + 1);                           
                                                                                         │          req->peer_ip_hi = *(__be64 *)(&f->fs.val.fip);                                  
                                                                                         │          req->peer_ip_lo = *(((__be64 *)&f->fs.val.fip) + 1);                            
        req->opt0 = cpu_to_be64(NAGLE_V(f->fs.newvlan == VLAN_REMOVE ||                  │          req->opt0 = cpu_to_be64(NAGLE_V(f->fs.newvlan == VLAN_REMOVE ||                 
                                        f->fs.newvlan == VLAN_REWRITE) |                 │                                          f->fs.newvlan == VLAN_REWRITE) |                
                                DELACK_V(f->fs.hitcnts) |                                │                                  DELACK_V(f->fs.hitcnts) |                               
                                L2T_IDX_V(f->l2t ? f->l2t->idx : 0) |                    │                                  L2T_IDX_V(f->l2t ? f->l2t->idx : 0) |                   
                                SMAC_SEL_V((cxgb4_port_viid(f->dev) &                    │                                  SMAC_SEL_V((cxgb4_port_viid(f->dev) &                   
                                            0x7F) << 1) |                                │                                              0x7F) << 1) |                               
                                TX_CHAN_V(f->fs.eport) |                                 │                                  TX_CHAN_V(f->fs.eport) |                                
                                NO_CONG_V(f->fs.rpttid) |                                │                                  NO_CONG_V(f->fs.rpttid) |                               
                                ULP_MODE_V(f->fs.nat_mode ?                              │                                  ULP_MODE_V(f->fs.nat_mode ?                             
                                           ULP_MODE_TCPDDP : ULP_MODE_NONE) |            │                                             ULP_MODE_TCPDDP : ULP_MODE_NONE) |           
                                TCAM_BYPASS_F | NON_OFFLOAD_F);                          │                                  TCAM_BYPASS_F | NON_OFFLOAD_F);                         
                                                                                         │                                                                                          
        t6req->params = cpu_to_be64(FILTER_TUPLE_V(hash_filter_ntuple(&f->fs,            │          t6req->params = cpu_to_be64(FILTER_TUPLE_V(hash_filter_ntuple(&f->fs,           
                                                                      f->dev)));         │                                                                        f->dev)));        
        t6req->opt2 = htonl(RSS_QUEUE_VALID_F |                                          │          t6req->opt2 = htonl(RSS_QUEUE_VALID_F |                                         
                            RSS_QUEUE_V(f->fs.iq) |                                      │                              RSS_QUEUE_V(f->fs.iq) |                                     
                            TX_QUEUE_V(f->fs.nat_mode) |                                 │                              TX_QUEUE_V(f->fs.nat_mode) |                                
                            T5_OPT_2_VALID_F |                                           │                              T5_OPT_2_VALID_F |                                          
                            RX_CHANNEL_V(cxgb4_port_e2cchan(f->dev)) |                   │                              RX_CHANNEL_V(cxgb4_port_e2cchan(f->dev)) |                  
                            PACE_V((f->fs.maskhash) |                                    │                              PACE_V((f->fs.maskhash) |                                   
                                   ((f->fs.dirsteerhash) << 1)));                        │                                     ((f->fs.dirsteerhash) << 1)));                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/rx.c:71                                                  │ linux/drivers/net/ethernet/sfc/falcon/rx.c:477                                           
                                                                                         │                                                                                          
        struct efx_nic *efx = channel->efx;                                              │          struct ef4_nic *efx = channel->efx;                                             
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
                                                                                         │                                                                                          
        /* Allocate an SKB to store the headers */                                       │          /* Allocate an SKB to store the headers */                                      
        skb = netdev_alloc_skb(efx->net_dev,                                             │          skb = netdev_alloc_skb(efx->net_dev,                                            
                               efx->rx_ip_align + efx->rx_prefix_size +                  │                                 efx->rx_ip_align + efx->rx_prefix_size +                 
                               hdr_len);                                                 │                                 hdr_len);                                                
        if (unlikely(skb == NULL)) {                                                     │          if (unlikely(skb == NULL)) {                                                    
                atomic_inc(&efx->n_rx_noskb_drops);                                      │                  atomic_inc(&efx->n_rx_noskb_drops);                                     
                return NULL;                                                             │                  return NULL;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        EFX_WARN_ON_ONCE_PARANOID(rx_buf->len < hdr_len);                                │          EF4_BUG_ON_PARANOID(rx_buf->len < hdr_len);                                     
                                                                                         │                                                                                          
        memcpy(skb->data + efx->rx_ip_align, eh - efx->rx_prefix_size,                   │          memcpy(skb->data + efx->rx_ip_align, eh - efx->rx_prefix_size,                  
               efx->rx_prefix_size + hdr_len);                                           │                 efx->rx_prefix_size + hdr_len);                                          
        skb_reserve(skb, efx->rx_ip_align + efx->rx_prefix_size);                        │          skb_reserve(skb, efx->rx_ip_align + efx->rx_prefix_size);                       
        __skb_put(skb, hdr_len);                                                         │          __skb_put(skb, hdr_len);                                                        
                                                                                         │                                                                                          
        /* Append the remaining page(s) onto the frag list */                            │          /* Append the remaining page(s) onto the frag list */                           
        if (rx_buf->len > hdr_len) {                                                     │          if (rx_buf->len > hdr_len) {                                                    
                rx_buf->page_offset += hdr_len;                                          │                  rx_buf->page_offset += hdr_len;                                         
                rx_buf->len -= hdr_len;                                                  │                  rx_buf->len -= hdr_len;                                                 
                                                                                         │                                                                                          
                for (;;) {                                                               │                  for (;;) {                                                              
                        skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,                  │                          skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags,              
                                        rx_buf->page, rx_buf->page_offset,               │                                             rx_buf->page, rx_buf->page_offset,           
                                        rx_buf->len, efx->rx_buffer_truesize);           │                                             rx_buf->len);                                
                        rx_buf->page = NULL;                                             │                          rx_buf->page = NULL;                                            
                                                                                         │                          skb->len += rx_buf->len;                                        
                                                                                         │                          skb->data_len += rx_buf->len;                                   
                        if (skb_shinfo(skb)->nr_frags == n_frags)                        │                          if (skb_shinfo(skb)->nr_frags == n_frags)                       
                                break;                                                   │                                  break;                                                  
                                                                                         │                                                                                          
                        rx_buf = efx_rx_buf_next(&channel->rx_queue, rx_buf);            │                          rx_buf = ef4_rx_buf_next(&channel->rx_queue, rx_buf);           
                }                                                                        │                  }                                                                       
        } else {                                                                         │          } else {                                                                        
                __free_pages(rx_buf->page, efx->rx_buffer_order);                        │                  __free_pages(rx_buf->page, efx->rx_buffer_order);                       
                rx_buf->page = NULL;                                                     │                  rx_buf->page = NULL;                                                    
                n_frags = 0;                                                             │                  n_frags = 0;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          skb->truesize += n_frags * efx->rx_buffer_truesize;                             
                                                                                         │                                                                                          
        /* Move past the ethernet header */                                              │          /* Move past the ethernet header */                                             
        skb->protocol = eth_type_trans(skb, efx->net_dev);                               │          skb->protocol = eth_type_trans(skb, efx->net_dev);                              
                                                                                         │                                                                                          
        skb_mark_napi_id(skb, &channel->napi_str);                                       │          skb_mark_napi_id(skb, &channel->napi_str);                                      
                                                                                         │                                                                                          
        return skb;                                                                      │          return skb;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_virtchnl.c:3343                                │ linux/drivers/net/ethernet/intel/ice/ice_virtchnl.c:3284                                 
                                                                                         │                                                                                          
        enum virtchnl_status_code v_ret = VIRTCHNL_STATUS_SUCCESS;                       │          enum virtchnl_status_code v_ret = VIRTCHNL_STATUS_SUCCESS;                      
        struct virtchnl_vlan_supported_caps *insertion_support;                          │          struct virtchnl_vlan_supported_caps *insertion_support;                         
        struct virtchnl_vlan_setting *insertion_msg =                                    │          struct virtchnl_vlan_setting *insertion_msg =                                   
                (struct virtchnl_vlan_setting *)msg;                                     │                  (struct virtchnl_vlan_setting *)msg;                                    
        u32 ethertype_setting;                                                           │          u32 ethertype_setting;                                                          
        struct ice_vsi *vsi;                                                             │          struct ice_vsi *vsi;                                                            
                                                                                         │                                                                                          
        if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {                             │          if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {                            
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!ice_vc_isvalid_vsi_id(vf, insertion_msg->vport_id)) {                       │          if (!ice_vc_isvalid_vsi_id(vf, insertion_msg->vport_id)) {                      
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        vsi = ice_get_vf_vsi(vf);                                                        │          vsi = ice_get_vf_vsi(vf);                                                       
        if (!vsi) {                                                                      │          if (!vsi) {                                                                     
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        insertion_support = &vf->vlan_v2_caps.offloads.insertion_support;                │          insertion_support = &vf->vlan_v2_caps.offloads.insertion_support;               
        if (!ice_vc_valid_vlan_setting_msg(insertion_support, insertion_msg)) {          │          if (!ice_vc_valid_vlan_setting_msg(insertion_support, insertion_msg)) {         
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ethertype_setting = insertion_msg->outer_ethertype_setting;                      │          ethertype_setting = insertion_msg->outer_ethertype_setting;                     
        if (ethertype_setting && vsi->outer_vlan_ops.dis_insertion(vsi)) {               │          if (ethertype_setting &&                                                        
                                                                                         │              ice_vc_ena_vlan_offload(vsi, vsi->outer_vlan_ops.ena_insertion,             
                                                                                         │                                      ethertype_setting)) {                               
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ethertype_setting = insertion_msg->inner_ethertype_setting;                      │          ethertype_setting = insertion_msg->inner_ethertype_setting;                     
        if (ethertype_setting && vsi->inner_vlan_ops.dis_insertion(vsi)) {               │          if (ethertype_setting &&                                                        
                                                                                         │              ice_vc_ena_vlan_offload(vsi, vsi->inner_vlan_ops.ena_insertion,             
                                                                                         │                                      ethertype_setting)) {                               
                v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                       │                  v_ret = VIRTCHNL_STATUS_ERR_PARAM;                                      
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
out:                                                                                     │  out:                                                                                    
        return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_DISABLE_VLAN_INSERTION_V2,          │          return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_ENABLE_VLAN_INSERTION_V2,          
                                     v_ret, NULL, 0);                                    │                                       v_ret, NULL, 0);                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/nic.c:398                                                │ linux/drivers/net/ethernet/sfc/falcon/nic.c:385                                          
                                                                                         │                                                                                          
        const struct efx_nic_reg *reg;                                                   │          const struct ef4_nic_reg *reg;                                                  
        const struct efx_nic_reg_table *table;                                           │          const struct ef4_nic_reg_table *table;                                          
                                                                                         │                                                                                          
        for (reg = efx_nic_regs;                                                         │          for (reg = ef4_nic_regs;                                                        
             reg < efx_nic_regs + ARRAY_SIZE(efx_nic_regs);                              │               reg < ef4_nic_regs + ARRAY_SIZE(ef4_nic_regs);                             
             reg++) {                                                                    │               reg++) {                                                                   
                if (efx->type->revision >= reg->min_revision &&                          │                  if (efx->type->revision >= reg->min_revision &&                         
                    efx->type->revision <= reg->max_revision) {                          │                      efx->type->revision <= reg->max_revision) {                         
                        efx_reado(efx, (efx_oword_t *)buf, reg->offset);                 │                          ef4_reado(efx, (ef4_oword_t *)buf, reg->offset);                
                        buf += sizeof(efx_oword_t);                                      │                          buf += sizeof(ef4_oword_t);                                     
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (table = efx_nic_reg_tables;                                                 │          for (table = ef4_nic_reg_tables;                                                
             table < efx_nic_reg_tables + ARRAY_SIZE(efx_nic_reg_tables);                │               table < ef4_nic_reg_tables + ARRAY_SIZE(ef4_nic_reg_tables);               
             table++) {                                                                  │               table++) {                                                                 
                size_t size, i;                                                          │                  size_t size, i;                                                         
                                                                                         │                                                                                          
                if (!(efx->type->revision >= table->min_revision &&                      │                  if (!(efx->type->revision >= table->min_revision &&                     
                      efx->type->revision <= table->max_revision))                       │                        efx->type->revision <= table->max_revision))                      
                        continue;                                                        │                          continue;                                                       
                                                                                         │                                                                                          
                size = min_t(size_t, table->step, 16);                                   │                  size = min_t(size_t, table->step, 16);                                  
                                                                                         │                                                                                          
                for (i = 0; i < table->rows; i++) {                                      │                  for (i = 0; i < table->rows; i++) {                                     
                        switch (table->step) {                                           │                          switch (table->step) {                                          
                        case 4: /* 32-bit SRAM */                                        │                          case 4: /* 32-bit SRAM */                                       
                                efx_readd(efx, buf, table->offset + 4 * i);              │                                  ef4_readd(efx, buf, table->offset + 4 * i);             
                                break;                                                   │                                  break;                                                  
                        case 8: /* 64-bit SRAM */                                        │                          case 8: /* 64-bit SRAM */                                       
                                efx_sram_readq(efx,                                      │                                  ef4_sram_readq(efx,                                     
                                               efx->membase + table->offset,             │                                                 efx->membase + table->offset,            
                                               buf, i);                                  │                                                 buf, i);                                 
                                break;                                                   │                                  break;                                                  
                        case 16: /* 128-bit-readable register */                         │                          case 16: /* 128-bit-readable register */                        
                                efx_reado_table(efx, buf, table->offset, i);             │                                  ef4_reado_table(efx, buf, table->offset, i);            
                                break;                                                   │                                  break;                                                  
                        case 32: /* 128-bit register, interleaved */                     │                          case 32: /* 128-bit register, interleaved */                    
                                efx_reado_table(efx, buf, table->offset, 2 * i);         │                                  ef4_reado_table(efx, buf, table->offset, 2 * i);        
                                break;                                                   │                                  break;                                                  
                        default:                                                         │                          default:                                                        
                                WARN_ON(1);                                              │                                  WARN_ON(1);                                             
                                return;                                                  │                                  return;                                                 
                        }                                                                │                          }                                                               
                        buf += size;                                                     │                          buf += size;                                                    
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c:1645                      │ linux/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c:323                      
                                                                                         │                                                                                          
        struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev);                       │          struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev);                      
        struct hclge_comm_tqp *tqp;                                                      │          struct hclge_comm_tqp *tqp;                                                     
        int i;                                                                           │          int i;                                                                          
                                                                                         │                                                                                          
        hdev->htqp = devm_kcalloc(&hdev->pdev->dev, hdev->num_tqps,                      │          hdev->htqp = devm_kcalloc(&hdev->pdev->dev, hdev->num_tqps,                     
                                  sizeof(struct hclge_comm_tqp), GFP_KERNEL);            │                                    sizeof(struct hclge_comm_tqp), GFP_KERNEL);           
        if (!hdev->htqp)                                                                 │          if (!hdev->htqp)                                                                
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        tqp = hdev->htqp;                                                                │          tqp = hdev->htqp;                                                               
                                                                                         │                                                                                          
        for (i = 0; i < hdev->num_tqps; i++) {                                           │          for (i = 0; i < hdev->num_tqps; i++) {                                          
                tqp->dev = &hdev->pdev->dev;                                             │                  tqp->dev = &hdev->pdev->dev;                                            
                tqp->index = i;                                                          │                  tqp->index = i;                                                         
                                                                                         │                                                                                          
                tqp->q.ae_algo = &ae_algo;                                               │                  tqp->q.ae_algo = &ae_algovf;                                            
                tqp->q.buf_size = hdev->rx_buf_len;                                      │                  tqp->q.buf_size = hdev->rx_buf_len;                                     
                tqp->q.tx_desc_num = hdev->num_tx_desc;                                  │                  tqp->q.tx_desc_num = hdev->num_tx_desc;                                 
                tqp->q.rx_desc_num = hdev->num_rx_desc;                                  │                  tqp->q.rx_desc_num = hdev->num_rx_desc;                                 
                                                                                         │                                                                                          
                /* need an extended offset to configure queues >=                        │                  /* need an extended offset to configure queues >=                       
                 * HCLGE_TQP_MAX_SIZE_DEV_V2                                             │                   * HCLGEVF_TQP_MAX_SIZE_DEV_V2.                                         
                 */                                                                      │                   */                                                                     
                if (i < HCLGE_TQP_MAX_SIZE_DEV_V2)                                       │                  if (i < HCLGEVF_TQP_MAX_SIZE_DEV_V2)                                    
                        tqp->q.io_base = hdev->hw.hw.io_base +                           │                          tqp->q.io_base = hdev->hw.hw.io_base +                          
                                         HCLGE_TQP_REG_OFFSET +                          │                                           HCLGEVF_TQP_REG_OFFSET +                       
                                         i * HCLGE_TQP_REG_SIZE;                         │                                           i * HCLGEVF_TQP_REG_SIZE;                      
                else                                                                     │                  else                                                                    
                        tqp->q.io_base = hdev->hw.hw.io_base +                           │                          tqp->q.io_base = hdev->hw.hw.io_base +                          
                                         HCLGE_TQP_REG_OFFSET +                          │                                           HCLGEVF_TQP_REG_OFFSET +                       
                                         HCLGE_TQP_EXT_REG_OFFSET +                      │                                           HCLGEVF_TQP_EXT_REG_OFFSET +                   
                                         (i - HCLGE_TQP_MAX_SIZE_DEV_V2) *               │                                           (i - HCLGEVF_TQP_MAX_SIZE_DEV_V2) *            
                                         HCLGE_TQP_REG_SIZE;                             │                                           HCLGEVF_TQP_REG_SIZE;                          
                                                                                         │                                                                                          
                /* when device supports tx push and has device memory,                   │                  /* when device supports tx push and has device memory,                  
                 * the queue can execute push mode or doorbell mode on                   │                   * the queue can execute push mode or doorbell mode on                  
                 * device memory.                                                        │                   * device memory.                                                       
                 */                                                                      │                   */                                                                     
                if (test_bit(HNAE3_DEV_SUPPORT_TX_PUSH_B, ae_dev->caps))                 │                  if (test_bit(HNAE3_DEV_SUPPORT_TX_PUSH_B, ae_dev->caps))                
                        tqp->q.mem_base = hdev->hw.hw.mem_base +                         │                          tqp->q.mem_base = hdev->hw.hw.mem_base +                        
                                          HCLGE_TQP_MEM_OFFSET(hdev, i);                 │                                            HCLGEVF_TQP_MEM_OFFSET(hdev, i);              
                                                                                         │                                                                                          
                tqp++;                                                                   │                  tqp++;                                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c:561                      │ linux/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c:499                       
                                                                                         │                                                                                          
                                                                                         │          struct mlx5e_txqsq *icosq = ctx;                                                
        struct mlx5_rsc_key key = {};                                                    │          struct mlx5_rsc_key key = {};                                                   
        struct mlx5e_rq *rq = ctx;                                                       │                                                                                          
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (!test_bit(MLX5E_STATE_OPENED, &priv->state))                                 │          if (!test_bit(MLX5E_STATE_OPENED, &priv->state))                                
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "RX Slice");                  │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "SX Slice");                 
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        key.size = PAGE_SIZE;                                                            │          key.size = PAGE_SIZE;                                                           
        key.rsc = MLX5_SGMT_TYPE_RX_SLICE_ALL;                                           │          key.rsc = MLX5_SGMT_TYPE_SX_SLICE_ALL;                                          
        err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                              │          err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                                │          err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "RQ");                        │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "ICOSQ");                    
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "QPC");                       │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "QPC");                      
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        key.rsc = MLX5_SGMT_TYPE_FULL_QPC;                                               │          key.rsc = MLX5_SGMT_TYPE_FULL_QPC;                                              
        key.index1 = rq->rqn;                                                            │          key.index1 = icosq->sqn;                                                        
        key.num_of_obj1 = 1;                                                             │          key.num_of_obj1 = 1;                                                            
                                                                                         │                                                                                          
        err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                              │          err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                                │          err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "receive_buff");              │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "send_buff");                
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        key.rsc = MLX5_SGMT_TYPE_RCV_BUFF;                                               │          key.rsc = MLX5_SGMT_TYPE_SND_BUFF;                                              
        key.num_of_obj2 = MLX5_RSC_DUMP_ALL;                                             │          key.num_of_obj2 = MLX5_RSC_DUMP_ALL;                                            
                                                                                         │                                                                                          
        err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                              │          err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                                │          err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        return mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               │          return mlx5e_health_fmsg_named_obj_nest_end(fmsg);                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c:410                      │ linux/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c:499                       
                                                                                         │                                                                                          
                                                                                         │          struct mlx5e_txqsq *icosq = ctx;                                                
        struct mlx5_rsc_key key = {};                                                    │          struct mlx5_rsc_key key = {};                                                   
        struct mlx5e_txqsq *sq = ctx;                                                    │                                                                                          
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (!test_bit(MLX5E_STATE_OPENED, &priv->state))                                 │          if (!test_bit(MLX5E_STATE_OPENED, &priv->state))                                
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "SX Slice");                  │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "SX Slice");                 
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        key.size = PAGE_SIZE;                                                            │          key.size = PAGE_SIZE;                                                           
        key.rsc = MLX5_SGMT_TYPE_SX_SLICE_ALL;                                           │          key.rsc = MLX5_SGMT_TYPE_SX_SLICE_ALL;                                          
        err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                              │          err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                                │          err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "SQ");                        │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "ICOSQ");                    
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "QPC");                       │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "QPC");                      
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        key.rsc = MLX5_SGMT_TYPE_FULL_QPC;                                               │          key.rsc = MLX5_SGMT_TYPE_FULL_QPC;                                              
        key.index1 = sq->sqn;                                                            │          key.index1 = icosq->sqn;                                                        
        key.num_of_obj1 = 1;                                                             │          key.num_of_obj1 = 1;                                                            
                                                                                         │                                                                                          
        err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                              │          err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                                │          err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "send_buff");                 │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "send_buff");                
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        key.rsc = MLX5_SGMT_TYPE_SND_BUFF;                                               │          key.rsc = MLX5_SGMT_TYPE_SND_BUFF;                                              
        key.num_of_obj2 = MLX5_RSC_DUMP_ALL;                                             │          key.num_of_obj2 = MLX5_RSC_DUMP_ALL;                                            
                                                                                         │                                                                                          
        err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                              │          err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                                │          err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        return mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               │          return mlx5e_health_fmsg_named_obj_nest_end(fmsg);                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c:410                      │ linux/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c:561                       
                                                                                         │                                                                                          
        struct mlx5_rsc_key key = {};                                                    │          struct mlx5_rsc_key key = {};                                                   
        struct mlx5e_txqsq *sq = ctx;                                                    │          struct mlx5e_rq *rq = ctx;                                                      
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (!test_bit(MLX5E_STATE_OPENED, &priv->state))                                 │          if (!test_bit(MLX5E_STATE_OPENED, &priv->state))                                
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "SX Slice");                  │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "RX Slice");                 
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        key.size = PAGE_SIZE;                                                            │          key.size = PAGE_SIZE;                                                           
        key.rsc = MLX5_SGMT_TYPE_SX_SLICE_ALL;                                           │          key.rsc = MLX5_SGMT_TYPE_RX_SLICE_ALL;                                          
        err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                              │          err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                                │          err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "SQ");                        │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "RQ");                       
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "QPC");                       │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "QPC");                      
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        key.rsc = MLX5_SGMT_TYPE_FULL_QPC;                                               │          key.rsc = MLX5_SGMT_TYPE_FULL_QPC;                                              
        key.index1 = sq->sqn;                                                            │          key.index1 = rq->rqn;                                                           
        key.num_of_obj1 = 1;                                                             │          key.num_of_obj1 = 1;                                                            
                                                                                         │                                                                                          
        err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                              │          err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                                │          err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "send_buff");                 │          err = mlx5e_health_fmsg_named_obj_nest_start(fmsg, "receive_buff");             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        key.rsc = MLX5_SGMT_TYPE_SND_BUFF;                                               │          key.rsc = MLX5_SGMT_TYPE_RCV_BUFF;                                              
        key.num_of_obj2 = MLX5_RSC_DUMP_ALL;                                             │          key.num_of_obj2 = MLX5_RSC_DUMP_ALL;                                            
        err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                              │          err = mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);                             
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                                │          err = mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               
        if (err)                                                                         │          if (err)                                                                        
                return err;                                                              │                  return err;                                                             
                                                                                         │                                                                                          
        return mlx5e_health_fmsg_named_obj_nest_end(fmsg);                               │          return mlx5e_health_fmsg_named_obj_nest_end(fmsg);                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:4928                        │ linux/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:5064                         
                                                                                         │                                                                                          
        struct mlx4_priv *priv = mlx4_priv(dev);                                         │          struct mlx4_priv *priv = mlx4_priv(dev);                                        
        struct mlx4_resource_tracker *tracker =                                          │          struct mlx4_resource_tracker *tracker =                                         
                &priv->mfunc.master.res_tracker;                                         │                  &priv->mfunc.master.res_tracker;                                        
        struct list_head *mtt_list =                                                     │          struct list_head *fs_rule_list =                                                
                &tracker->slave_list[slave].res_list[RES_MTT];                           │                  &tracker->slave_list[slave].res_list[RES_FS_RULE];                      
        struct res_mtt *mtt;                                                             │          struct res_fs_rule *fs_rule;                                                    
        struct res_mtt *tmp;                                                             │          struct res_fs_rule *tmp;                                                        
        int state;                                                                       │          int state;                                                                      
        int base;                                                                        │          u64 base;                                                                       
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        err = move_all_busy(dev, slave, RES_MTT);                                        │          err = move_all_busy(dev, slave, RES_FS_RULE);                                   
        if (err)                                                                         │          if (err)                                                                        
                mlx4_warn(dev, "rem_slave_mtts: Could not move all mtts  - too busy for  │                  mlx4_warn(dev, "rem_slave_fs_rule: Could not move all mtts to busy for s
                          slave);                                                        │                            slave);                                                       
                                                                                         │                                                                                          
        spin_lock_irq(mlx4_tlock(dev));                                                  │          spin_lock_irq(mlx4_tlock(dev));                                                 
        list_for_each_entry_safe(mtt, tmp, mtt_list, com.list) {                         │          list_for_each_entry_safe(fs_rule, tmp, fs_rule_list, com.list) {                
                spin_unlock_irq(mlx4_tlock(dev));                                        │                  spin_unlock_irq(mlx4_tlock(dev));                                       
                if (mtt->com.owner == slave) {                                           │                  if (fs_rule->com.owner == slave) {                                      
                        base = mtt->com.res_id;                                          │                          base = fs_rule->com.res_id;                                     
                        state = mtt->com.from_state;                                     │                          state = fs_rule->com.from_state;                                
                        while (state != 0) {                                             │                          while (state != 0) {                                            
                                switch (state) {                                         │                                  switch (state) {                                        
                                case RES_MTT_ALLOCATED:                                  │                                  case RES_FS_RULE_ALLOCATED:                             
                                        __mlx4_free_mtt_range(dev, base,                 │                                          /* detach rule */                               
                                                              mtt->order);               │                                          err = mlx4_cmd(dev, base, 0, 0,                 
                                                                                         │                                                         MLX4_QP_FLOW_STEERING_DETACH,    
                                                                                         │                                                         MLX4_CMD_TIME_CLASS_A,           
                                                                                         │                                                         MLX4_CMD_NATIVE);                
                                                                                         │                                                                                          
                                        spin_lock_irq(mlx4_tlock(dev));                  │                                          spin_lock_irq(mlx4_tlock(dev));                 
                                        rb_erase(&mtt->com.node,                         │                                          rb_erase(&fs_rule->com.node,                    
                                                 &tracker->res_tree[RES_MTT]);           │                                                   &tracker->res_tree[RES_FS_RULE]);      
                                        list_del(&mtt->com.list);                        │                                          list_del(&fs_rule->com.list);                   
                                        spin_unlock_irq(mlx4_tlock(dev));                │                                          spin_unlock_irq(mlx4_tlock(dev));               
                                        mlx4_release_resource(dev, slave, RES_MTT,       │                                          kfree(fs_rule->mirr_mbox);                      
                                                              1 << mtt->order, 0);       │                                          kfree(fs_rule);                                 
                                        kfree(mtt);                                      │                                                                                          
                                        state = 0;                                       │                                          state = 0;                                      
                                        break;                                           │                                          break;                                          
                                                                                         │                                                                                          
                                default:                                                 │                                  default:                                                
                                        state = 0;                                       │                                          state = 0;                                      
                                }                                                        │                                  }                                                       
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                spin_lock_irq(mlx4_tlock(dev));                                          │                  spin_lock_irq(mlx4_tlock(dev));                                         
        }                                                                                │          }                                                                               
        spin_unlock_irq(mlx4_tlock(dev));                                                │          spin_unlock_irq(mlx4_tlock(dev));                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/e1000_phy.c:1987                                   │ linux/drivers/net/ethernet/intel/igb/e1000_phy.c:2509                                    
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        u16 data;                                                                        │          u16 data;                                                                       
        bool link;                                                                       │          bool link;                                                                      
                                                                                         │                                                                                          
        ret_val = igb_phy_has_link(hw, 1, 0, &link);                                     │          ret_val = igb_phy_has_link(hw, 1, 0, &link);                                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        if (!link) {                                                                     │          if (!link) {                                                                    
                hw_dbg("Phy info is only valid if link is up\n");                        │                  hw_dbg("Phy info is only valid if link is up\n");                       
                ret_val = -E1000_ERR_CONFIG;                                             │                  ret_val = -E1000_ERR_CONFIG;                                            
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        phy->polarity_correction = true;                                                 │          phy->polarity_correction = true;                                                
                                                                                         │                                                                                          
        ret_val = igb_check_polarity_igp(hw);                                            │          ret_val = igb_check_polarity_82580(hw);                                         
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = phy->ops.read_reg(hw, IGP01E1000_PHY_PORT_STATUS, &data);              │          ret_val = phy->ops.read_reg(hw, I82580_PHY_STATUS_2, &data);                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  goto out;                                                               
                                                                                         │                                                                                          
        phy->is_mdix = (data & IGP01E1000_PSSR_MDIX) ? true : false;                     │          phy->is_mdix = (data & I82580_PHY_STATUS2_MDIX) ? true : false;                 
                                                                                         │                                                                                          
        if ((data & IGP01E1000_PSSR_SPEED_MASK) ==                                       │          if ((data & I82580_PHY_STATUS2_SPEED_MASK) ==                                   
            IGP01E1000_PSSR_SPEED_1000MBPS) {                                            │              I82580_PHY_STATUS2_SPEED_1000MBPS) {                                        
                ret_val = phy->ops.get_cable_length(hw);                                 │                  ret_val = hw->phy.ops.get_cable_length(hw);                             
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        goto out;                                                        │                          goto out;                                                       
                                                                                         │                                                                                          
                ret_val = phy->ops.read_reg(hw, PHY_1000T_STATUS, &data);                │                  ret_val = phy->ops.read_reg(hw, PHY_1000T_STATUS, &data);               
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        goto out;                                                        │                          goto out;                                                       
                                                                                         │                                                                                          
                phy->local_rx = (data & SR_1000T_LOCAL_RX_STATUS)                        │                  phy->local_rx = (data & SR_1000T_LOCAL_RX_STATUS)                       
                                ? e1000_1000t_rx_status_ok                               │                                  ? e1000_1000t_rx_status_ok                              
                                : e1000_1000t_rx_status_not_ok;                          │                                  : e1000_1000t_rx_status_not_ok;                         
                                                                                         │                                                                                          
                phy->remote_rx = (data & SR_1000T_REMOTE_RX_STATUS)                      │                  phy->remote_rx = (data & SR_1000T_REMOTE_RX_STATUS)                     
                                 ? e1000_1000t_rx_status_ok                              │                                   ? e1000_1000t_rx_status_ok                             
                                 : e1000_1000t_rx_status_not_ok;                         │                                   : e1000_1000t_rx_status_not_ok;                        
        } else {                                                                         │          } else {                                                                        
                phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                        │                  phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                       
                phy->local_rx = e1000_1000t_rx_status_undefined;                         │                  phy->local_rx = e1000_1000t_rx_status_undefined;                        
                phy->remote_rx = e1000_1000t_rx_status_undefined;                        │                  phy->remote_rx = e1000_1000t_rx_status_undefined;                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
out:                                                                                     │  out:                                                                                    
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c:1877                   │ linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c:1823                    
                                                                                         │                                                                                          
        u16 packed_record[4];                                                            │          u16 packed_record[4];                                                           
        int ret;                                                                         │          int ret;                                                                        
                                                                                         │                                                                                          
        if (sa_index >= NUMROWS_EGRESSSARECORD)                                          │          if (sc_index >= NUMROWS_EGRESSSCRECORD)                                         
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        ret = get_raw_egress_record(hw, packed_record, 4, 3, sa_index * 8 + 0);          │          ret = get_raw_egress_record(hw, packed_record, 4, 3, sc_index * 8 + 4);         
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
        counters->sa_hit_drop_redirect[0] =                                              │          counters->sc_protected_pkts[0] =                                                
                packed_record[0] | (packed_record[1] << 16);                             │                  packed_record[0] | (packed_record[1] << 16);                            
        counters->sa_hit_drop_redirect[1] =                                              │          counters->sc_protected_pkts[1] =                                                
                packed_record[2] | (packed_record[3] << 16);                             │                  packed_record[2] | (packed_record[3] << 16);                            
                                                                                         │                                                                                          
        ret = get_raw_egress_record(hw, packed_record, 4, 3, sa_index * 8 + 1);          │          ret = get_raw_egress_record(hw, packed_record, 4, 3, sc_index * 8 + 5);         
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
        counters->sa_protected2_pkts[0] =                                                │          counters->sc_encrypted_pkts[0] =                                                
                packed_record[0] | (packed_record[1] << 16);                             │                  packed_record[0] | (packed_record[1] << 16);                            
        counters->sa_protected2_pkts[1] =                                                │          counters->sc_encrypted_pkts[1] =                                                
                packed_record[2] | (packed_record[3] << 16);                             │                  packed_record[2] | (packed_record[3] << 16);                            
                                                                                         │                                                                                          
        ret = get_raw_egress_record(hw, packed_record, 4, 3, sa_index * 8 + 2);          │          ret = get_raw_egress_record(hw, packed_record, 4, 3, sc_index * 8 + 6);         
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
        counters->sa_protected_pkts[0] =                                                 │          counters->sc_protected_octets[0] =                                              
                packed_record[0] | (packed_record[1] << 16);                             │                  packed_record[0] | (packed_record[1] << 16);                            
        counters->sa_protected_pkts[1] =                                                 │          counters->sc_protected_octets[1] =                                              
                packed_record[2] | (packed_record[3] << 16);                             │                  packed_record[2] | (packed_record[3] << 16);                            
                                                                                         │                                                                                          
        ret = get_raw_egress_record(hw, packed_record, 4, 3, sa_index * 8 + 3);          │          ret = get_raw_egress_record(hw, packed_record, 4, 3, sc_index * 8 + 7);         
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
        counters->sa_encrypted_pkts[0] =                                                 │          counters->sc_encrypted_octets[0] =                                              
                packed_record[0] | (packed_record[1] << 16);                             │                  packed_record[0] | (packed_record[1] << 16);                            
        counters->sa_encrypted_pkts[1] =                                                 │          counters->sc_encrypted_octets[1] =                                              
                packed_record[2] | (packed_record[3] << 16);                             │                  packed_record[2] | (packed_record[3] << 16);                            
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/nfd3/dp.c:622                                  │ linux/drivers/net/ethernet/netronome/nfp/nfdk/dp.c:652                                   
                                                                                         │                                                                                          
        skb_checksum_none_assert(skb);                                                   │          skb_checksum_none_assert(skb);                                                  
                                                                                         │                                                                                          
        if (!(dp->netdev->features & NETIF_F_RXCSUM))                                    │          if (!(dp->netdev->features & NETIF_F_RXCSUM))                                   
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        if (meta->csum_type) {                                                           │          if (meta->csum_type) {                                                          
                skb->ip_summed = meta->csum_type;                                        │                  skb->ip_summed = meta->csum_type;                                       
                skb->csum = meta->csum;                                                  │                  skb->csum = meta->csum;                                                 
                u64_stats_update_begin(&r_vec->rx_sync);                                 │                  u64_stats_update_begin(&r_vec->rx_sync);                                
                r_vec->hw_csum_rx_complete++;                                            │                  r_vec->hw_csum_rx_complete++;                                           
                u64_stats_update_end(&r_vec->rx_sync);                                   │                  u64_stats_update_end(&r_vec->rx_sync);                                  
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (nfp_nfd3_rx_csum_has_errors(le16_to_cpu(rxd->rxd.flags))) {                  │          if (nfp_nfdk_rx_csum_has_errors(le16_to_cpu(rxd->rxd.flags))) {                 
                u64_stats_update_begin(&r_vec->rx_sync);                                 │                  u64_stats_update_begin(&r_vec->rx_sync);                                
                r_vec->hw_csum_rx_error++;                                               │                  r_vec->hw_csum_rx_error++;                                              
                u64_stats_update_end(&r_vec->rx_sync);                                   │                  u64_stats_update_end(&r_vec->rx_sync);                                  
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Assume that the firmware will never report inner CSUM_OK unless outer         │          /* Assume that the firmware will never report inner CSUM_OK unless outer        
         * L4 headers were successfully parsed. FW will always report zero UDP           │           * L4 headers were successfully parsed. FW will always report zero UDP          
         * checksum as CSUM_OK.                                                          │           * checksum as CSUM_OK.                                                         
         */                                                                              │           */                                                                             
        if (rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM_OK ||                                 │          if (rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM_OK ||                                
            rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM_OK) {                                 │              rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM_OK) {                                
                __skb_incr_checksum_unnecessary(skb);                                    │                  __skb_incr_checksum_unnecessary(skb);                                   
                u64_stats_update_begin(&r_vec->rx_sync);                                 │                  u64_stats_update_begin(&r_vec->rx_sync);                                
                r_vec->hw_csum_rx_ok++;                                                  │                  r_vec->hw_csum_rx_ok++;                                                 
                u64_stats_update_end(&r_vec->rx_sync);                                   │                  u64_stats_update_end(&r_vec->rx_sync);                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (rxd->rxd.flags & PCIE_DESC_RX_I_TCP_CSUM_OK ||                               │          if (rxd->rxd.flags & PCIE_DESC_RX_I_TCP_CSUM_OK ||                              
            rxd->rxd.flags & PCIE_DESC_RX_I_UDP_CSUM_OK) {                               │              rxd->rxd.flags & PCIE_DESC_RX_I_UDP_CSUM_OK) {                              
                __skb_incr_checksum_unnecessary(skb);                                    │                  __skb_incr_checksum_unnecessary(skb);                                   
                u64_stats_update_begin(&r_vec->rx_sync);                                 │                  u64_stats_update_begin(&r_vec->rx_sync);                                
                r_vec->hw_csum_rx_inner_ok++;                                            │                  r_vec->hw_csum_rx_inner_ok++;                                           
                u64_stats_update_end(&r_vec->rx_sync);                                   │                  u64_stats_update_end(&r_vec->rx_sync);                                  
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/i40e/i40e_debugfs.c:289                                │ linux/drivers/net/ethernet/intel/i40e/i40e_debugfs.c:327                                 
                                                                                         │                                                                                          
                struct i40e_ring *tx_ring = READ_ONCE(vsi->tx_rings[i]);                 │                  for (i = 0; i < vsi->num_queue_pairs; i++) {                            
                                                                                         │                          struct i40e_ring *xdp_ring = READ_ONCE(vsi->xdp_rings[i]);      
                                                                                         │                                                                                          
                if (!tx_ring)                                                            │                          if (!xdp_ring)                                                  
                        continue;                                                        │                                  continue;                                               
                                                                                         │                                                                                          
                dev_info(&pf->pdev->dev,                                                 │                          dev_info(&pf->pdev->dev,                                        
                         "    tx_rings[%i]: state = %lu, queue_index = %d, reg_idx = %d\ │                                   "    xdp_rings[%i]: state = %lu, queue_index = %d, reg_
                         i, *tx_ring->state,                                             │                                   i, *xdp_ring->state,                                   
                         tx_ring->queue_index,                                           │                                   xdp_ring->queue_index,                                 
                         tx_ring->reg_idx);                                              │                                   xdp_ring->reg_idx);                                    
                dev_info(&pf->pdev->dev,                                                 │                          dev_info(&pf->pdev->dev,                                        
                         "    tx_rings[%i]: next_to_use = %d, next_to_clean = %d, ring_a │                                   "    xdp_rings[%i]: next_to_use = %d, next_to_clean = %
                         i,                                                              │                                   i,                                                     
                         tx_ring->next_to_use,                                           │                                   xdp_ring->next_to_use,                                 
                         tx_ring->next_to_clean,                                         │                                   xdp_ring->next_to_clean,                               
                         tx_ring->ring_active);                                          │                                   xdp_ring->ring_active);                                
                dev_info(&pf->pdev->dev,                                                 │                          dev_info(&pf->pdev->dev,                                        
                         "    tx_rings[%i]: tx_stats: packets = %lld, bytes = %lld, rest │                                   "    xdp_rings[%i]: tx_stats: packets = %lld, bytes = %
                         i, tx_ring->stats.packets,                                      │                                   i, xdp_ring->stats.packets,                            
                         tx_ring->stats.bytes,                                           │                                   xdp_ring->stats.bytes,                                 
                         tx_ring->tx_stats.restart_queue);                               │                                   xdp_ring->tx_stats.restart_queue);                     
                dev_info(&pf->pdev->dev,                                                 │                          dev_info(&pf->pdev->dev,                                        
                         "    tx_rings[%i]: tx_stats: tx_busy = %lld, tx_done_old = %lld │                                   "    xdp_rings[%i]: tx_stats: tx_busy = %lld, tx_done_o
                         i,                                                              │                                   i,                                                     
                         tx_ring->tx_stats.tx_busy,                                      │                                   xdp_ring->tx_stats.tx_busy,                            
                         tx_ring->tx_stats.tx_done_old);                                 │                                   xdp_ring->tx_stats.tx_done_old);                       
                dev_info(&pf->pdev->dev,                                                 │                          dev_info(&pf->pdev->dev,                                        
                         "    tx_rings[%i]: size = %i\n",                                │                                   "    xdp_rings[%i]: size = %i\n",                      
                         i, tx_ring->size);                                              │                                   i, xdp_ring->size);                                    
                dev_info(&pf->pdev->dev,                                                 │                          dev_info(&pf->pdev->dev,                                        
                         "    tx_rings[%i]: DCB tc = %d\n",                              │                                   "    xdp_rings[%i]: DCB tc = %d\n",                    
                         i, tx_ring->dcb_tc);                                            │                                   i, xdp_ring->dcb_tc);                                  
                dev_info(&pf->pdev->dev,                                                 │                          dev_info(&pf->pdev->dev,                                        
                         "    tx_rings[%i]: itr_setting = %d (%s)\n",                    │                                   "    xdp_rings[%i]: itr_setting = %d (%s)\n",          
                         i, tx_ring->itr_setting,                                        │                                   i, xdp_ring->itr_setting,                              
                         ITR_IS_DYNAMIC(tx_ring->itr_setting) ? "dynamic" : "fixed");    │                                   ITR_IS_DYNAMIC(xdp_ring->itr_setting) ?                
                                                                                         │                                   "dynamic" : "fixed");                                  
                                                                                         │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/lio_main.c:2110                              │ linux/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c:1250                            
                                                                                         │                                                                                          
        struct hwtstamp_config conf;                                                     │                                                                                          
        struct lio *lio = GET_LIO(netdev);                                               │          struct lio *lio = GET_LIO(netdev);                                              
                                                                                         │          struct hwtstamp_config conf;                                                    
                                                                                         │                                                                                          
        if (copy_from_user(&conf, ifr->ifr_data, sizeof(conf)))                          │          if (copy_from_user(&conf, ifr->ifr_data, sizeof(conf)))                         
                return -EFAULT;                                                          │                  return -EFAULT;                                                         
                                                                                         │                                                                                          
        switch (conf.tx_type) {                                                          │          switch (conf.tx_type) {                                                         
        case HWTSTAMP_TX_ON:                                                             │          case HWTSTAMP_TX_ON:                                                            
        case HWTSTAMP_TX_OFF:                                                            │          case HWTSTAMP_TX_OFF:                                                           
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                return -ERANGE;                                                          │                  return -ERANGE;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        switch (conf.rx_filter) {                                                        │          switch (conf.rx_filter) {                                                       
        case HWTSTAMP_FILTER_NONE:                                                       │          case HWTSTAMP_FILTER_NONE:                                                      
                break;                                                                   │                  break;                                                                  
        case HWTSTAMP_FILTER_ALL:                                                        │          case HWTSTAMP_FILTER_ALL:                                                       
        case HWTSTAMP_FILTER_SOME:                                                       │          case HWTSTAMP_FILTER_SOME:                                                      
        case HWTSTAMP_FILTER_PTP_V1_L4_EVENT:                                            │          case HWTSTAMP_FILTER_PTP_V1_L4_EVENT:                                           
        case HWTSTAMP_FILTER_PTP_V1_L4_SYNC:                                             │          case HWTSTAMP_FILTER_PTP_V1_L4_SYNC:                                            
        case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ:                                        │          case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ:                                       
        case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:                                            │          case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:                                           
        case HWTSTAMP_FILTER_PTP_V2_L4_SYNC:                                             │          case HWTSTAMP_FILTER_PTP_V2_L4_SYNC:                                            
        case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:                                        │          case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:                                       
        case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:                                            │          case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:                                           
        case HWTSTAMP_FILTER_PTP_V2_L2_SYNC:                                             │          case HWTSTAMP_FILTER_PTP_V2_L2_SYNC:                                            
        case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ:                                        │          case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ:                                       
        case HWTSTAMP_FILTER_PTP_V2_EVENT:                                               │          case HWTSTAMP_FILTER_PTP_V2_EVENT:                                              
        case HWTSTAMP_FILTER_PTP_V2_SYNC:                                                │          case HWTSTAMP_FILTER_PTP_V2_SYNC:                                               
        case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:                                           │          case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:                                          
        case HWTSTAMP_FILTER_NTP_ALL:                                                    │          case HWTSTAMP_FILTER_NTP_ALL:                                                   
                conf.rx_filter = HWTSTAMP_FILTER_ALL;                                    │                  conf.rx_filter = HWTSTAMP_FILTER_ALL;                                   
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                return -ERANGE;                                                          │                  return -ERANGE;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (conf.rx_filter == HWTSTAMP_FILTER_ALL)                                       │          if (conf.rx_filter == HWTSTAMP_FILTER_ALL)                                      
                ifstate_set(lio, LIO_IFSTATE_RX_TIMESTAMP_ENABLED);                      │                  ifstate_set(lio, LIO_IFSTATE_RX_TIMESTAMP_ENABLED);                     
                                                                                         │                                                                                          
        else                                                                             │          else                                                                            
                ifstate_reset(lio, LIO_IFSTATE_RX_TIMESTAMP_ENABLED);                    │                  ifstate_reset(lio, LIO_IFSTATE_RX_TIMESTAMP_ENABLED);                   
                                                                                         │                                                                                          
        return copy_to_user(ifr->ifr_data, &conf, sizeof(conf)) ? -EFAULT : 0;           │          return copy_to_user(ifr->ifr_data, &conf, sizeof(conf)) ? -EFAULT : 0;          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:513                                              │ linux/drivers/net/ethernet/sfc/falcon/farch.c:520                                        
                                                                                         │                                                                                          
        efx_oword_t rx_desc_ptr;                                                         │          ef4_oword_t rx_desc_ptr;                                                        
        struct efx_nic *efx = rx_queue->efx;                                             │          struct ef4_nic *efx = rx_queue->efx;                                            
                                                                                         │          bool is_b0 = ef4_nic_rev(efx) >= EF4_REV_FALCON_B0;                             
                                                                                         │          bool iscsi_digest_en = is_b0;                                                   
        bool jumbo_en;                                                                   │          bool jumbo_en;                                                                  
                                                                                         │                                                                                          
        /* For kernel-mode queues in Siena, the JUMBO flag enables scatter. */           │          /* For kernel-mode queues in Falcon A1, the JUMBO flag enables                  
        jumbo_en = efx->rx_scatter;                                                      │           * DMA to continue after a PCIe page boundary (and scattering                   
                                                                                         │           * is not possible).  In Falcon B0 and Siena, it enables                        
                                                                                         │           * scatter.                                                                     
                                                                                         │           */                                                                             
                                                                                         │          jumbo_en = !is_b0 || efx->rx_scatter;                                           
                                                                                         │                                                                                          
        netif_dbg(efx, hw, efx->net_dev,                                                 │          netif_dbg(efx, hw, efx->net_dev,                                                
                  "RX queue %d ring in special buffers %d-%d\n",                         │                    "RX queue %d ring in special buffers %d-%d\n",                        
                  efx_rx_queue_index(rx_queue), rx_queue->rxd.index,                     │                    ef4_rx_queue_index(rx_queue), rx_queue->rxd.index,                    
                  rx_queue->rxd.index + rx_queue->rxd.entries - 1);                      │                    rx_queue->rxd.index + rx_queue->rxd.entries - 1);                     
                                                                                         │                                                                                          
        rx_queue->scatter_n = 0;                                                         │          rx_queue->scatter_n = 0;                                                        
                                                                                         │                                                                                          
        /* Pin RX descriptor ring */                                                     │          /* Pin RX descriptor ring */                                                    
        efx_init_special_buffer(efx, &rx_queue->rxd);                                    │          ef4_init_special_buffer(efx, &rx_queue->rxd);                                   
                                                                                         │                                                                                          
        /* Push RX descriptor ring to card */                                            │          /* Push RX descriptor ring to card */                                           
        EFX_POPULATE_OWORD_10(rx_desc_ptr,                                               │          EF4_POPULATE_OWORD_10(rx_desc_ptr,                                              
                              FRF_AZ_RX_ISCSI_DDIG_EN, true,                             │                                FRF_AZ_RX_ISCSI_DDIG_EN, iscsi_digest_en,                 
                              FRF_AZ_RX_ISCSI_HDIG_EN, true,                             │                                FRF_AZ_RX_ISCSI_HDIG_EN, iscsi_digest_en,                 
                              FRF_AZ_RX_DESCQ_BUF_BASE_ID, rx_queue->rxd.index,          │                                FRF_AZ_RX_DESCQ_BUF_BASE_ID, rx_queue->rxd.index,         
                              FRF_AZ_RX_DESCQ_EVQ_ID,                                    │                                FRF_AZ_RX_DESCQ_EVQ_ID,                                   
                              efx_rx_queue_channel(rx_queue)->channel,                   │                                ef4_rx_queue_channel(rx_queue)->channel,                  
                              FRF_AZ_RX_DESCQ_OWNER_ID, 0,                               │                                FRF_AZ_RX_DESCQ_OWNER_ID, 0,                              
                              FRF_AZ_RX_DESCQ_LABEL,                                     │                                FRF_AZ_RX_DESCQ_LABEL,                                    
                              efx_rx_queue_index(rx_queue),                              │                                ef4_rx_queue_index(rx_queue),                             
                              FRF_AZ_RX_DESCQ_SIZE,                                      │                                FRF_AZ_RX_DESCQ_SIZE,                                     
                              __ffs(rx_queue->rxd.entries),                              │                                __ffs(rx_queue->rxd.entries),                             
                              FRF_AZ_RX_DESCQ_TYPE, 0 /* kernel queue */ ,               │                                FRF_AZ_RX_DESCQ_TYPE, 0 /* kernel queue */ ,              
                              FRF_AZ_RX_DESCQ_JUMBO, jumbo_en,                           │                                FRF_AZ_RX_DESCQ_JUMBO, jumbo_en,                          
                              FRF_AZ_RX_DESCQ_EN, 1);                                    │                                FRF_AZ_RX_DESCQ_EN, 1);                                   
        efx_writeo_table(efx, &rx_desc_ptr, efx->type->rxd_ptr_tbl_base,                 │          ef4_writeo_table(efx, &rx_desc_ptr, efx->type->rxd_ptr_tbl_base,                
                         efx_rx_queue_index(rx_queue));                                  │                           ef4_rx_queue_index(rx_queue));                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:4345                                    │ linux/drivers/net/ethernet/intel/igc/igc_main.c:502                                      
                                                                                         │                                                                                          
        struct igb_adapter *adapter = netdev_priv(rx_ring->netdev);                      │          struct net_device *ndev = rx_ring->netdev;                                      
        struct device *dev = rx_ring->dev;                                               │          struct device *dev = rx_ring->dev;                                              
        int size, res;                                                                   │          u8 index = rx_ring->queue_index;                                                
                                                                                         │          int size, desc_len, res;                                                        
                                                                                         │                                                                                          
        /* XDP RX-queue info */                                                          │          /* XDP RX-queue info */                                                         
        if (xdp_rxq_info_is_reg(&rx_ring->xdp_rxq))                                      │          if (xdp_rxq_info_is_reg(&rx_ring->xdp_rxq))                                     
                xdp_rxq_info_unreg(&rx_ring->xdp_rxq);                                   │                  xdp_rxq_info_unreg(&rx_ring->xdp_rxq);                                  
        res = xdp_rxq_info_reg(&rx_ring->xdp_rxq, rx_ring->netdev,                       │          res = xdp_rxq_info_reg(&rx_ring->xdp_rxq, ndev, index,                          
                               rx_ring->queue_index, 0);                                 │                                 rx_ring->q_vector->napi.napi_id);                        
        if (res < 0) {                                                                   │          if (res < 0) {                                                                  
                dev_err(dev, "Failed to register xdp_rxq index %u\n",                    │                  netdev_err(ndev, "Failed to register xdp_rxq index %u\n",               
                        rx_ring->queue_index);                                           │                             index);                                                      
                return res;                                                              │                  return res;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        size = sizeof(struct igb_rx_buffer) * rx_ring->count;                            │          size = sizeof(struct igc_rx_buffer) * rx_ring->count;                           
                                                                                         │          rx_ring->rx_buffer_info = vzalloc(size);                                        
        rx_ring->rx_buffer_info = vmalloc(size);                                         │                                                                                          
        if (!rx_ring->rx_buffer_info)                                                    │          if (!rx_ring->rx_buffer_info)                                                   
                goto err;                                                                │                  goto err;                                                               
                                                                                         │                                                                                          
                                                                                         │          desc_len = sizeof(union igc_adv_rx_desc);                                       
                                                                                         │                                                                                          
        /* Round up to nearest 4K */                                                     │          /* Round up to nearest 4K */                                                    
        rx_ring->size = rx_ring->count * sizeof(union e1000_adv_rx_desc);                │          rx_ring->size = rx_ring->count * desc_len;                                      
        rx_ring->size = ALIGN(rx_ring->size, 4096);                                      │          rx_ring->size = ALIGN(rx_ring->size, 4096);                                     
                                                                                         │                                                                                          
        rx_ring->desc = dma_alloc_coherent(dev, rx_ring->size,                           │          rx_ring->desc = dma_alloc_coherent(dev, rx_ring->size,                          
                                           &rx_ring->dma, GFP_KERNEL);                   │                                             &rx_ring->dma, GFP_KERNEL);                  
                                                                                         │                                                                                          
        if (!rx_ring->desc)                                                              │          if (!rx_ring->desc)                                                             
                goto err;                                                                │                  goto err;                                                               
                                                                                         │                                                                                          
        rx_ring->next_to_alloc = 0;                                                      │          rx_ring->next_to_alloc = 0;                                                     
        rx_ring->next_to_clean = 0;                                                      │          rx_ring->next_to_clean = 0;                                                     
        rx_ring->next_to_use = 0;                                                        │          rx_ring->next_to_use = 0;                                                       
                                                                                         │                                                                                          
        rx_ring->xdp_prog = adapter->xdp_prog;                                           │                                                                                          
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
err:                                                                                     │  err:                                                                                    
        xdp_rxq_info_unreg(&rx_ring->xdp_rxq);                                           │          xdp_rxq_info_unreg(&rx_ring->xdp_rxq);                                          
        vfree(rx_ring->rx_buffer_info);                                                  │          vfree(rx_ring->rx_buffer_info);                                                 
        rx_ring->rx_buffer_info = NULL;                                                  │          rx_ring->rx_buffer_info = NULL;                                                 
        dev_err(dev, "Unable to allocate memory for the Rx descriptor ring\n");          │          netdev_err(ndev, "Unable to allocate memory for Rx descriptor ring\n");         
        return -ENOMEM;                                                                  │          return -ENOMEM;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/i40e/i40e_txrx.c:3509                                  │ linux/drivers/net/ethernet/intel/ice/ice_txrx.c:1611                                     
                                                                                         │                                                                                          
                unsigned int max_data = I40E_MAX_DATA_PER_TXD_ALIGNED;                   │                  unsigned int max_data = ICE_MAX_DATA_PER_TXD_ALIGNED;                   
                                                                                         │                                                                                          
                if (dma_mapping_error(tx_ring->dev, dma))                                │                  if (dma_mapping_error(tx_ring->dev, dma))                               
                        goto dma_error;                                                  │                          goto dma_error;                                                 
                                                                                         │                                                                                          
                /* record length, and DMA address */                                     │                  /* record length, and DMA address */                                    
                dma_unmap_len_set(tx_bi, len, size);                                     │                  dma_unmap_len_set(tx_buf, len, size);                                   
                dma_unmap_addr_set(tx_bi, dma, dma);                                     │                  dma_unmap_addr_set(tx_buf, dma, dma);                                   
                                                                                         │                                                                                          
                /* align size to end of page */                                          │                  /* align size to end of page */                                         
                max_data += -dma & (I40E_MAX_READ_REQ_SIZE - 1);                         │                  max_data += -dma & (ICE_MAX_READ_REQ_SIZE - 1);                         
                tx_desc->buffer_addr = cpu_to_le64(dma);                                 │                  tx_desc->buf_addr = cpu_to_le64(dma);                                   
                                                                                         │                                                                                          
                while (unlikely(size > I40E_MAX_DATA_PER_TXD)) {                         │                  /* account for data chunks larger than the hardware                     
                                                                                         │                   * can handle                                                           
                                                                                         │                   */                                                                     
                                                                                         │                  while (unlikely(size > ICE_MAX_DATA_PER_TXD)) {                         
                        tx_desc->cmd_type_offset_bsz =                                   │                          tx_desc->cmd_type_offset_bsz =                                  
                                build_ctob(td_cmd, td_offset,                            │                                  ice_build_ctob(td_cmd, td_offset, max_data,             
                                           max_data, td_tag);                            │                                                 td_tag);                                 
                                                                                         │                                                                                          
                        tx_desc++;                                                       │                          tx_desc++;                                                      
                        i++;                                                             │                          i++;                                                            
                        desc_count++;                                                    │                                                                                          
                                                                                         │                                                                                          
                        if (i == tx_ring->count) {                                       │                          if (i == tx_ring->count) {                                      
                                tx_desc = I40E_TX_DESC(tx_ring, 0);                      │                                  tx_desc = ICE_TX_DESC(tx_ring, 0);                      
                                i = 0;                                                   │                                  i = 0;                                                  
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        dma += max_data;                                                 │                          dma += max_data;                                                
                        size -= max_data;                                                │                          size -= max_data;                                               
                                                                                         │                                                                                          
                        max_data = I40E_MAX_DATA_PER_TXD_ALIGNED;                        │                          max_data = ICE_MAX_DATA_PER_TXD_ALIGNED;                        
                        tx_desc->buffer_addr = cpu_to_le64(dma);                         │                          tx_desc->buf_addr = cpu_to_le64(dma);                           
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (likely(!data_len))                                                   │                  if (likely(!data_len))                                                  
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                tx_desc->cmd_type_offset_bsz = build_ctob(td_cmd, td_offset,             │                  tx_desc->cmd_type_offset_bsz = ice_build_ctob(td_cmd, td_offset,        
                                                          size, td_tag);                 │                                                                size, td_tag);            
                                                                                         │                                                                                          
                tx_desc++;                                                               │                  tx_desc++;                                                              
                i++;                                                                     │                  i++;                                                                    
                desc_count++;                                                            │                                                                                          
                                                                                         │                                                                                          
                if (i == tx_ring->count) {                                               │                  if (i == tx_ring->count) {                                              
                        tx_desc = I40E_TX_DESC(tx_ring, 0);                              │                          tx_desc = ICE_TX_DESC(tx_ring, 0);                              
                        i = 0;                                                           │                          i = 0;                                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                size = skb_frag_size(frag);                                              │                  size = skb_frag_size(frag);                                             
                data_len -= size;                                                        │                  data_len -= size;                                                       
                                                                                         │                                                                                          
                dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size,                      │                  dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size,                     
                                       DMA_TO_DEVICE);                                   │                                         DMA_TO_DEVICE);                                  
                                                                                         │                                                                                          
                tx_bi = &tx_ring->tx_bi[i];                                              │                  tx_buf = &tx_ring->tx_buf[i];                                           
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/efx.c:205                                                │ linux/drivers/net/ethernet/sfc/falcon/efx.c:1157                                         
                                                                                         │                                                                                          
        struct efx_nic *other, *next;                                                    │          struct ef4_nic *other, *next;                                                   
                                                                                         │                                                                                          
        if (efx->primary == efx) {                                                       │          if (efx->primary == efx) {                                                      
                /* Adding primary function; look for secondaries */                      │                  /* Adding primary function; look for secondaries */                     
                                                                                         │                                                                                          
                netif_dbg(efx, probe, efx->net_dev, "adding to primary list\n");         │                  netif_dbg(efx, probe, efx->net_dev, "adding to primary list\n");        
                list_add_tail(&efx->node, &efx_primary_list);                            │                  list_add_tail(&efx->node, &ef4_primary_list);                           
                                                                                         │                                                                                          
                list_for_each_entry_safe(other, next, &efx_unassociated_list,            │                  list_for_each_entry_safe(other, next, &ef4_unassociated_list,           
                                         node) {                                         │                                           node) {                                        
                        if (efx_same_controller(efx, other)) {                           │                          if (ef4_same_controller(efx, other)) {                          
                                list_del(&other->node);                                  │                                  list_del(&other->node);                                 
                                netif_dbg(other, probe, other->net_dev,                  │                                  netif_dbg(other, probe, other->net_dev,                 
                                          "moving to secondary list of %s %s\n",         │                                            "moving to secondary list of %s %s\n",        
                                          pci_name(efx->pci_dev),                        │                                            pci_name(efx->pci_dev),                       
                                          efx->net_dev->name);                           │                                            efx->net_dev->name);                          
                                list_add_tail(&other->node,                              │                                  list_add_tail(&other->node,                             
                                              &efx->secondary_list);                     │                                                &efx->secondary_list);                    
                                other->primary = efx;                                    │                                  other->primary = efx;                                   
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        } else {                                                                         │          } else {                                                                        
                /* Adding secondary function; look for primary */                        │                  /* Adding secondary function; look for primary */                       
                                                                                         │                                                                                          
                list_for_each_entry(other, &efx_primary_list, node) {                    │                  list_for_each_entry(other, &ef4_primary_list, node) {                   
                        if (efx_same_controller(efx, other)) {                           │                          if (ef4_same_controller(efx, other)) {                          
                                netif_dbg(efx, probe, efx->net_dev,                      │                                  netif_dbg(efx, probe, efx->net_dev,                     
                                          "adding to secondary list of %s %s\n",         │                                            "adding to secondary list of %s %s\n",        
                                          pci_name(other->pci_dev),                      │                                            pci_name(other->pci_dev),                     
                                          other->net_dev->name);                         │                                            other->net_dev->name);                        
                                list_add_tail(&efx->node,                                │                                  list_add_tail(&efx->node,                               
                                              &other->secondary_list);                   │                                                &other->secondary_list);                  
                                efx->primary = other;                                    │                                  efx->primary = other;                                   
                                return;                                                  │                                  return;                                                 
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                netif_dbg(efx, probe, efx->net_dev,                                      │                  netif_dbg(efx, probe, efx->net_dev,                                     
                          "adding to unassociated list\n");                              │                            "adding to unassociated list\n");                             
                list_add_tail(&efx->node, &efx_unassociated_list);                       │                  list_add_tail(&efx->node, &ef4_unassociated_list);                      
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/nvidia/forcedeth.c:1823                                      │ linux/drivers/net/ethernet/nvidia/forcedeth.c:1864                                       
                                                                                         │                                                                                          
        struct fe_priv *np = netdev_priv(dev);                                           │          struct fe_priv *np = netdev_priv(dev);                                          
        struct ring_desc *less_rx;                                                       │          struct ring_desc_ex *less_rx;                                                   
                                                                                         │                                                                                          
        less_rx = np->get_rx.orig;                                                       │          less_rx = np->get_rx.ex;                                                        
        if (less_rx-- == np->rx_ring.orig)                                               │          if (less_rx-- == np->rx_ring.ex)                                                
                less_rx = np->last_rx.orig;                                              │                  less_rx = np->last_rx.ex;                                               
                                                                                         │                                                                                          
        while (np->put_rx.orig != less_rx) {                                             │          while (np->put_rx.ex != less_rx) {                                              
                struct sk_buff *skb = netdev_alloc_skb(dev, np->rx_buf_sz + NV_RX_ALLOC_ │                  struct sk_buff *skb = netdev_alloc_skb(dev, np->rx_buf_sz + NV_RX_ALLOC_
                if (likely(skb)) {                                                       │                  if (likely(skb)) {                                                      
                        np->put_rx_ctx->skb = skb;                                       │                          np->put_rx_ctx->skb = skb;                                      
                        np->put_rx_ctx->dma = dma_map_single(&np->pci_dev->dev,          │                          np->put_rx_ctx->dma = dma_map_single(&np->pci_dev->dev,         
                                                             skb->data,                  │                                                               skb->data,                 
                                                             skb_tailroom(skb),          │                                                               skb_tailroom(skb),         
                                                             DMA_FROM_DEVICE);           │                                                               DMA_FROM_DEVICE);          
                        if (unlikely(dma_mapping_error(&np->pci_dev->dev,                │                          if (unlikely(dma_mapping_error(&np->pci_dev->dev,               
                                                       np->put_rx_ctx->dma))) {          │                                                         np->put_rx_ctx->dma))) {         
                                kfree_skb(skb);                                          │                                  kfree_skb(skb);                                         
                                goto packet_dropped;                                     │                                  goto packet_dropped;                                    
                        }                                                                │                          }                                                               
                        np->put_rx_ctx->dma_len = skb_tailroom(skb);                     │                          np->put_rx_ctx->dma_len = skb_tailroom(skb);                    
                        np->put_rx.orig->buf = cpu_to_le32(np->put_rx_ctx->dma);         │                          np->put_rx.ex->bufhigh = cpu_to_le32(dma_high(np->put_rx_ctx->dm
                                                                                         │                          np->put_rx.ex->buflow = cpu_to_le32(dma_low(np->put_rx_ctx->dma)
                        wmb();                                                           │                          wmb();                                                          
                        np->put_rx.orig->flaglen = cpu_to_le32(np->rx_buf_sz | NV_RX_AVA │                          np->put_rx.ex->flaglen = cpu_to_le32(np->rx_buf_sz | NV_RX2_AVAI
                        if (unlikely(np->put_rx.orig++ == np->last_rx.orig))             │                          if (unlikely(np->put_rx.ex++ == np->last_rx.ex))                
                                np->put_rx.orig = np->rx_ring.orig;                      │                                  np->put_rx.ex = np->rx_ring.ex;                         
                        if (unlikely(np->put_rx_ctx++ == np->last_rx_ctx))               │                          if (unlikely(np->put_rx_ctx++ == np->last_rx_ctx))              
                                np->put_rx_ctx = np->rx_skb;                             │                                  np->put_rx_ctx = np->rx_skb;                            
                } else {                                                                 │                  } else {                                                                
packet_dropped:                                                                          │  packet_dropped:                                                                         
                        u64_stats_update_begin(&np->swstats_rx_syncp);                   │                          u64_stats_update_begin(&np->swstats_rx_syncp);                  
                        nv_txrx_stats_inc(stat_rx_dropped);                              │                          nv_txrx_stats_inc(stat_rx_dropped);                             
                        u64_stats_update_end(&np->swstats_rx_syncp);                     │                          u64_stats_update_end(&np->swstats_rx_syncp);                    
                        return 1;                                                        │                          return 1;                                                       
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:3864                            │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:8085                                 
                                                                                         │                                                                                          
        struct sk_buff *skb = first->skb;                                                │          struct sk_buff *skb = first->skb;                                               
        u32 vlan_macip_lens = 0;                                                         │          u32 vlan_macip_lens = 0;                                                        
        u32 fceof_saidx = 0;                                                             │          u32 fceof_saidx = 0;                                                            
        u32 type_tucmd = 0;                                                              │          u32 type_tucmd = 0;                                                             
                                                                                         │                                                                                          
        if (skb->ip_summed != CHECKSUM_PARTIAL)                                          │          if (skb->ip_summed != CHECKSUM_PARTIAL) {                                       
                                                                                         │  csum_failed:                                                                            
                                                                                         │                  if (!(first->tx_flags & (IXGBE_TX_FLAGS_HW_VLAN |                       
                                                                                         │                                           IXGBE_TX_FLAGS_CC)))                           
                                                                                         │                          return;                                                         
                goto no_csum;                                                            │                  goto no_csum;                                                           
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        switch (skb->csum_offset) {                                                      │          switch (skb->csum_offset) {                                                     
        case offsetof(struct tcphdr, check):                                             │          case offsetof(struct tcphdr, check):                                            
                type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;                                 │                  type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;                                
                fallthrough;                                                             │                  fallthrough;                                                            
        case offsetof(struct udphdr, check):                                             │          case offsetof(struct udphdr, check):                                            
                break;                                                                   │                  break;                                                                  
        case offsetof(struct sctphdr, checksum):                                         │          case offsetof(struct sctphdr, checksum):                                        
                /* validate that this is actually an SCTP request */                     │                  /* validate that this is actually an SCTP request */                    
                if (skb_csum_is_sctp(skb)) {                                             │                  if (skb_csum_is_sctp(skb)) {                                            
                        type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_SCTP;                        │                          type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_SCTP;                       
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                fallthrough;                                                             │                  fallthrough;                                                            
        default:                                                                         │          default:                                                                        
                skb_checksum_help(skb);                                                  │                  skb_checksum_help(skb);                                                 
                goto no_csum;                                                            │                  goto csum_failed;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (first->protocol == htons(ETH_P_IP))                                          │                                                                                          
                type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4;                                   │                                                                                          
                                                                                         │                                                                                          
        /* update TX checksum flag */                                                    │          /* update TX checksum flag */                                                   
        first->tx_flags |= IXGBE_TX_FLAGS_CSUM;                                          │          first->tx_flags |= IXGBE_TX_FLAGS_CSUM;                                         
        vlan_macip_lens = skb_checksum_start_offset(skb) -                               │          vlan_macip_lens = skb_checksum_start_offset(skb) -                              
                          skb_network_offset(skb);                                       │                            skb_network_offset(skb);                                      
no_csum:                                                                                 │  no_csum:                                                                                
        /* vlan_macip_lens: MACLEN, VLAN tag */                                          │          /* vlan_macip_lens: MACLEN, VLAN tag */                                         
        vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT;         │          vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT;        
        vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;                   │          vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;                  
                                                                                         │                                                                                          
        fceof_saidx |= itd->pfsa;                                                        │          fceof_saidx |= itd->sa_idx;                                                     
        type_tucmd |= itd->flags | itd->trailer_len;                                     │          type_tucmd |= itd->flags | itd->trailer_len;                                    
                                                                                         │                                                                                          
        ixgbevf_tx_ctxtdesc(tx_ring, vlan_macip_lens,                                    │          ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, fceof_saidx, type_tucmd, 0);        
                            fceof_saidx, type_tucmd, 0);                                 │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:104                                              │ linux/drivers/net/ethernet/sfc/falcon/farch.c:101                                        
                                                                                         │                                                                                          
        unsigned address = 0;                                                            │          unsigned address = 0;                                                           
        int i, j;                                                                        │          int i, j;                                                                       
        efx_oword_t mask, imask, original, reg, buf;                                     │          ef4_oword_t mask, imask, original, reg, buf;                                    
                                                                                         │                                                                                          
        for (i = 0; i < n_regs; ++i) {                                                   │          for (i = 0; i < n_regs; ++i) {                                                  
                address = regs[i].address;                                               │                  address = regs[i].address;                                              
                mask = imask = regs[i].mask;                                             │                  mask = imask = regs[i].mask;                                            
                EFX_INVERT_OWORD(imask);                                                 │                  EF4_INVERT_OWORD(imask);                                                
                                                                                         │                                                                                          
                efx_reado(efx, &original, address);                                      │                  ef4_reado(efx, &original, address);                                     
                                                                                         │                                                                                          
                /* bit sweep on and off */                                               │                  /* bit sweep on and off */                                              
                for (j = 0; j < 128; j++) {                                              │                  for (j = 0; j < 128; j++) {                                             
                        if (!EFX_EXTRACT_OWORD32(mask, j, j))                            │                          if (!EF4_EXTRACT_OWORD32(mask, j, j))                           
                                continue;                                                │                                  continue;                                               
                                                                                         │                                                                                          
                        /* Test this testable bit can be set in isolation */             │                          /* Test this testable bit can be set in isolation */            
                        EFX_AND_OWORD(reg, original, mask);                              │                          EF4_AND_OWORD(reg, original, mask);                             
                        EFX_SET_OWORD32(reg, j, j, 1);                                   │                          EF4_SET_OWORD32(reg, j, j, 1);                                  
                                                                                         │                                                                                          
                        efx_writeo(efx, ®, address);                                  │                          ef4_writeo(efx, ®, address);                                 
                        efx_reado(efx, &buf, address);                                   │                          ef4_reado(efx, &buf, address);                                  
                                                                                         │                                                                                          
                        if (efx_masked_compare_oword(®, &buf, &mask))                 │                          if (ef4_masked_compare_oword(®, &buf, &mask))                
                                goto fail;                                               │                                  goto fail;                                              
                                                                                         │                                                                                          
                        /* Test this testable bit can be cleared in isolation */         │                          /* Test this testable bit can be cleared in isolation */        
                        EFX_OR_OWORD(reg, original, mask);                               │                          EF4_OR_OWORD(reg, original, mask);                              
                        EFX_SET_OWORD32(reg, j, j, 0);                                   │                          EF4_SET_OWORD32(reg, j, j, 0);                                  
                                                                                         │                                                                                          
                        efx_writeo(efx, ®, address);                                  │                          ef4_writeo(efx, ®, address);                                 
                        efx_reado(efx, &buf, address);                                   │                          ef4_reado(efx, &buf, address);                                  
                                                                                         │                                                                                          
                        if (efx_masked_compare_oword(®, &buf, &mask))                 │                          if (ef4_masked_compare_oword(®, &buf, &mask))                
                                goto fail;                                               │                                  goto fail;                                              
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                efx_writeo(efx, &original, address);                                     │                  ef4_writeo(efx, &original, address);                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
fail:                                                                                    │  fail:                                                                                   
        netif_err(efx, hw, efx->net_dev,                                                 │          netif_err(efx, hw, efx->net_dev,                                                
                  "wrote "EFX_OWORD_FMT" read "EFX_OWORD_FMT                             │                    "wrote "EF4_OWORD_FMT" read "EF4_OWORD_FMT                            
                  " at address 0x%x mask "EFX_OWORD_FMT"\n", EFX_OWORD_VAL(reg),         │                    " at address 0x%x mask "EF4_OWORD_FMT"\n", EF4_OWORD_VAL(reg),        
                  EFX_OWORD_VAL(buf), address, EFX_OWORD_VAL(mask));                     │                    EF4_OWORD_VAL(buf), address, EF4_OWORD_VAL(mask));                    
        return -EIO;                                                                     │          return -EIO;                                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c:2111                             │ linux/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c:1399                           
                                                                                         │                                                                                          
        struct qlcnic_adapter *adapter = netdev_priv(netdev);                            │          struct qlcnic_adapter *adapter = netdev_priv(netdev);                           
        struct qlcnic_host_sds_ring *sds_ring;                                           │          struct qlcnic_host_sds_ring *sds_ring;                                          
        struct qlcnic_host_rds_ring *rds_ring;                                           │          struct qlcnic_host_rds_ring *rds_ring;                                          
        int ring;                                                                        │          u16 adapter_state = adapter->is_up;                                             
                                                                                         │          u8 ring;                                                                        
        int ret;                                                                         │          int ret;                                                                        
                                                                                         │                                                                                          
        netif_device_detach(netdev);                                                     │          netif_device_detach(netdev);                                                    
                                                                                         │                                                                                          
        if (netif_running(netdev))                                                       │          if (netif_running(netdev))                                                      
                __qlcnic_down(adapter, netdev);                                          │                  __qlcnic_down(adapter, netdev);                                         
                                                                                         │                                                                                          
        qlcnic_detach(adapter);                                                          │          qlcnic_detach(adapter);                                                         
                                                                                         │                                                                                          
        adapter->drv_sds_rings = QLCNIC_SINGLE_RING;                                     │          adapter->drv_sds_rings = QLCNIC_SINGLE_RING;                                    
        adapter->ahw->diag_test = test;                                                  │          adapter->ahw->diag_test = test;                                                 
        adapter->ahw->linkup = 0;                                                        │          adapter->ahw->linkup = 0;                                                       
                                                                                         │                                                                                          
        ret = qlcnic_attach(adapter);                                                    │          ret = qlcnic_attach(adapter);                                                   
        if (ret) {                                                                       │          if (ret) {                                                                      
                netif_device_attach(netdev);                                             │                  netif_device_attach(netdev);                                            
                return ret;                                                              │                  return ret;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret = qlcnic_fw_create_ctx(adapter);                                             │          ret = qlcnic_fw_create_ctx(adapter);                                            
        if (ret) {                                                                       │          if (ret) {                                                                      
                qlcnic_detach(adapter);                                                  │                  qlcnic_detach(adapter);                                                 
                                                                                         │                  if (adapter_state == QLCNIC_ADAPTER_UP_MAGIC) {                         
                                                                                         │                          adapter->drv_sds_rings = num_sds_ring;                          
                                                                                         │                          qlcnic_attach(adapter);                                         
                                                                                         │                  }                                                                       
                netif_device_attach(netdev);                                             │                  netif_device_attach(netdev);                                            
                return ret;                                                              │                  return ret;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (ring = 0; ring < adapter->max_rds_rings; ring++) {                          │          for (ring = 0; ring < adapter->max_rds_rings; ring++) {                         
                rds_ring = &adapter->recv_ctx->rds_rings[ring];                          │                  rds_ring = &adapter->recv_ctx->rds_rings[ring];                         
                qlcnic_post_rx_buffers(adapter, rds_ring, ring);                         │                  qlcnic_post_rx_buffers(adapter, rds_ring, ring);                        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (adapter->ahw->diag_test == QLCNIC_INTERRUPT_TEST) {                          │          if (adapter->ahw->diag_test == QLCNIC_INTERRUPT_TEST) {                         
                for (ring = 0; ring < adapter->drv_sds_rings; ring++) {                  │                  for (ring = 0; ring < adapter->drv_sds_rings; ring++) {                 
                        sds_ring = &adapter->recv_ctx->sds_rings[ring];                  │                          sds_ring = &adapter->recv_ctx->sds_rings[ring];                 
                        qlcnic_enable_sds_intr(adapter, sds_ring);                       │                          qlcnic_enable_sds_intr(adapter, sds_ring);                      
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (adapter->ahw->diag_test == QLCNIC_LOOPBACK_TEST) {                           │          if (adapter->ahw->diag_test == QLCNIC_LOOPBACK_TEST) {                          
                adapter->ahw->loopback_state = 0;                                        │                  adapter->ahw->loopback_state = 0;                                       
                qlcnic_linkevent_request(adapter, 1);                                    │                  adapter->ahw->hw_ops->setup_link_event(adapter, 1);                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        set_bit(__QLCNIC_DEV_UP, &adapter->state);                                       │          set_bit(__QLCNIC_DEV_UP, &adapter->state);                                      
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx4/fw.c:2356                                      │ linux/drivers/net/ethernet/mellanox/mlx4/fw.c:2258                                       
                                                                                         │                                                                                          
        struct mlx4_priv *priv = mlx4_priv(dev);                                         │          struct mlx4_priv *priv = mlx4_priv(dev);                                        
        int port = mlx4_slave_convert_port(dev, slave, vhcr->in_modifier);               │          int port = mlx4_slave_convert_port(dev, slave, vhcr->in_modifier);              
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (port < 0)                                                                    │          if (port < 0)                                                                   
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        if (!(priv->mfunc.master.slave_state[slave].init_port_mask &                     │          if (priv->mfunc.master.slave_state[slave].init_port_mask & (1 << port))         
            (1 << port)))                                                                │                                                                                          
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        if (dev->caps.port_mask[port] != MLX4_PORT_TYPE_IB) {                            │          if (dev->caps.port_mask[port] != MLX4_PORT_TYPE_IB) {                           
                if (priv->mfunc.master.init_port_ref[port] == 1) {                       │                  /* Enable port only if it was previously disabled */                    
                        err = mlx4_cmd(dev, 0, port, 0, MLX4_CMD_CLOSE_PORT,             │                  if (!priv->mfunc.master.init_port_ref[port]) {                          
                                                                                         │                          err = mlx4_cmd(dev, 0, port, 0, MLX4_CMD_INIT_PORT,             
                                       MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE);          │                                         MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE);         
                        if (err)                                                         │                          if (err)                                                        
                                return err;                                              │                                  return err;                                             
                }                                                                        │                  }                                                                       
                priv->mfunc.master.slave_state[slave].init_port_mask &= ~(1 << port);    │                  priv->mfunc.master.slave_state[slave].init_port_mask |= (1 << port);    
        } else {                                                                         │          } else {                                                                        
                /* infiniband port */                                                    │                                                                                          
                if (slave == mlx4_master_func_num(dev)) {                                │                  if (slave == mlx4_master_func_num(dev)) {                               
                        if (!priv->mfunc.master.qp0_state[port].qp0_active &&            │                          if (check_qp0_state(dev, slave, port) &&                        
                            priv->mfunc.master.qp0_state[port].port_active) {            │                              !priv->mfunc.master.qp0_state[port].port_active) {          
                                err = mlx4_cmd(dev, 0, port, 0, MLX4_CMD_CLOSE_PORT,     │                                  err = mlx4_cmd(dev, 0, port, 0, MLX4_CMD_INIT_PORT,     
                                               MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE);  │                                                 MLX4_CMD_TIME_CLASS_A, MLX4_CMD_NATIVE); 
                                if (err)                                                 │                                  if (err)                                                
                                        return err;                                      │                                          return err;                                     
                                priv->mfunc.master.slave_state[slave].init_port_mask &=  │                                  priv->mfunc.master.qp0_state[port].port_active = 1;     
                                priv->mfunc.master.qp0_state[port].port_active = 0;      │                                  priv->mfunc.master.slave_state[slave].init_port_mask |= 
                        }                                                                │                          }                                                               
                } else                                                                   │                  } else                                                                  
                        priv->mfunc.master.slave_state[slave].init_port_mask &= ~(1 << p │                          priv->mfunc.master.slave_state[slave].init_port_mask |= (1 << po
        }                                                                                │          }                                                                               
        --priv->mfunc.master.init_port_ref[port];                                        │          ++priv->mfunc.master.init_port_ref[port];                                       
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:3146                                      │ linux/drivers/net/ethernet/intel/igb/e1000_phy.c:2509                                    
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        u16 data;                                                                        │          u16 data;                                                                       
        bool link;                                                                       │          bool link;                                                                      
                                                                                         │                                                                                          
        ret_val = e1000e_phy_has_link_generic(hw, 1, 0, &link);                          │          ret_val = igb_phy_has_link(hw, 1, 0, &link);                                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        if (!link) {                                                                     │          if (!link) {                                                                    
                e_dbg("Phy info is only valid if link is up\n");                         │                  hw_dbg("Phy info is only valid if link is up\n");                       
                return -E1000_ERR_CONFIG;                                                │                  ret_val = -E1000_ERR_CONFIG;                                            
                                                                                         │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        phy->polarity_correction = true;                                                 │          phy->polarity_correction = true;                                                
                                                                                         │                                                                                          
        ret_val = e1000_check_polarity_82577(hw);                                        │          ret_val = igb_check_polarity_82580(hw);                                         
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = e1e_rphy(hw, I82577_PHY_STATUS_2, &data);                              │          ret_val = phy->ops.read_reg(hw, I82580_PHY_STATUS_2, &data);                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        phy->is_mdix = !!(data & I82577_PHY_STATUS2_MDIX);                               │          phy->is_mdix = (data & I82580_PHY_STATUS2_MDIX) ? true : false;                 
                                                                                         │                                                                                          
        if ((data & I82577_PHY_STATUS2_SPEED_MASK) ==                                    │          if ((data & I82580_PHY_STATUS2_SPEED_MASK) ==                                   
            I82577_PHY_STATUS2_SPEED_1000MBPS) {                                         │              I82580_PHY_STATUS2_SPEED_1000MBPS) {                                        
                ret_val = hw->phy.ops.get_cable_length(hw);                              │                  ret_val = hw->phy.ops.get_cable_length(hw);                             
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          goto out;                                                       
                                                                                         │                                                                                          
                ret_val = e1e_rphy(hw, MII_STAT1000, &data);                             │                  ret_val = phy->ops.read_reg(hw, PHY_1000T_STATUS, &data);               
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          goto out;                                                       
                                                                                         │                                                                                          
                phy->local_rx = (data & LPA_1000LOCALRXOK)                               │                  phy->local_rx = (data & SR_1000T_LOCAL_RX_STATUS)                       
                    ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;           │                                  ? e1000_1000t_rx_status_ok                              
                                                                                         │                                  : e1000_1000t_rx_status_not_ok;                         
                phy->remote_rx = (data & LPA_1000REMRXOK)                                │                                                                                          
                    ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;           │                  phy->remote_rx = (data & SR_1000T_REMOTE_RX_STATUS)                     
                                                                                         │                                   ? e1000_1000t_rx_status_ok                             
                                                                                         │                                   : e1000_1000t_rx_status_not_ok;                        
        } else {                                                                         │          } else {                                                                        
                phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                        │                  phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                       
                phy->local_rx = e1000_1000t_rx_status_undefined;                         │                  phy->local_rx = e1000_1000t_rx_status_undefined;                        
                phy->remote_rx = e1000_1000t_rx_status_undefined;                        │                  phy->remote_rx = e1000_1000t_rx_status_undefined;                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │  out:                                                                                    
                                                                                         │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:317                                              │ linux/drivers/net/ethernet/sfc/falcon/farch.c:307                                        
                                                                                         │                                                                                          
        struct efx_tx_buffer *buffer;                                                    │          struct ef4_tx_buffer *buffer;                                                   
        efx_qword_t *txd;                                                                │          ef4_qword_t *txd;                                                               
        unsigned write_ptr;                                                              │          unsigned write_ptr;                                                             
        unsigned old_write_count = tx_queue->write_count;                                │          unsigned old_write_count = tx_queue->write_count;                               
                                                                                         │                                                                                          
        tx_queue->xmit_pending = false;                                                  │          tx_queue->xmit_more_available = false;                                          
        if (unlikely(tx_queue->write_count == tx_queue->insert_count))                   │          if (unlikely(tx_queue->write_count == tx_queue->insert_count))                  
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        do {                                                                             │          do {                                                                            
                write_ptr = tx_queue->write_count & tx_queue->ptr_mask;                  │                  write_ptr = tx_queue->write_count & tx_queue->ptr_mask;                 
                buffer = &tx_queue->buffer[write_ptr];                                   │                  buffer = &tx_queue->buffer[write_ptr];                                  
                txd = efx_tx_desc(tx_queue, write_ptr);                                  │                  txd = ef4_tx_desc(tx_queue, write_ptr);                                 
                ++tx_queue->write_count;                                                 │                  ++tx_queue->write_count;                                                
                                                                                         │                                                                                          
                EFX_WARN_ON_ONCE_PARANOID(buffer->flags & EFX_TX_BUF_OPTION);            │                  EF4_BUG_ON_PARANOID(buffer->flags & EF4_TX_BUF_OPTION);                 
                                                                                         │                                                                                          
                /* Create TX descriptor ring entry */                                    │                  /* Create TX descriptor ring entry */                                   
                BUILD_BUG_ON(EFX_TX_BUF_CONT != 1);                                      │                  BUILD_BUG_ON(EF4_TX_BUF_CONT != 1);                                     
                EFX_POPULATE_QWORD_4(*txd,                                               │                  EF4_POPULATE_QWORD_4(*txd,                                              
                                     FSF_AZ_TX_KER_CONT,                                 │                                       FSF_AZ_TX_KER_CONT,                                
                                     buffer->flags & EFX_TX_BUF_CONT,                    │                                       buffer->flags & EF4_TX_BUF_CONT,                   
                                     FSF_AZ_TX_KER_BYTE_COUNT, buffer->len,              │                                       FSF_AZ_TX_KER_BYTE_COUNT, buffer->len,             
                                     FSF_AZ_TX_KER_BUF_REGION, 0,                        │                                       FSF_AZ_TX_KER_BUF_REGION, 0,                       
                                     FSF_AZ_TX_KER_BUF_ADDR, buffer->dma_addr);          │                                       FSF_AZ_TX_KER_BUF_ADDR, buffer->dma_addr);         
        } while (tx_queue->write_count != tx_queue->insert_count);                       │          } while (tx_queue->write_count != tx_queue->insert_count);                      
                                                                                         │                                                                                          
        wmb(); /* Ensure descriptors are written before they are fetched */              │          wmb(); /* Ensure descriptors are written before they are fetched */             
                                                                                         │                                                                                          
        if (efx_nic_may_push_tx_desc(tx_queue, old_write_count)) {                       │          if (ef4_nic_may_push_tx_desc(tx_queue, old_write_count)) {                      
                txd = efx_tx_desc(tx_queue,                                              │                  txd = ef4_tx_desc(tx_queue,                                             
                                  old_write_count & tx_queue->ptr_mask);                 │                                    old_write_count & tx_queue->ptr_mask);                
                efx_farch_push_tx_desc(tx_queue, txd);                                   │                  ef4_farch_push_tx_desc(tx_queue, txd);                                  
                ++tx_queue->pushes;                                                      │                  ++tx_queue->pushes;                                                     
        } else {                                                                         │          } else {                                                                        
                efx_farch_notify_tx_desc(tx_queue);                                      │                  ef4_farch_notify_tx_desc(tx_queue);                                     
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:1952                                      │ linux/drivers/net/ethernet/intel/igb/e1000_phy.c:1987                                    
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        u16 data;                                                                        │          u16 data;                                                                       
        bool link;                                                                       │          bool link;                                                                      
                                                                                         │                                                                                          
        ret_val = e1000e_phy_has_link_generic(hw, 1, 0, &link);                          │          ret_val = igb_phy_has_link(hw, 1, 0, &link);                                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        if (!link) {                                                                     │          if (!link) {                                                                    
                e_dbg("Phy info is only valid if link is up\n");                         │                  hw_dbg("Phy info is only valid if link is up\n");                       
                return -E1000_ERR_CONFIG;                                                │                  ret_val = -E1000_ERR_CONFIG;                                            
                                                                                         │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        phy->polarity_correction = true;                                                 │          phy->polarity_correction = true;                                                
                                                                                         │                                                                                          
        ret_val = e1000_check_polarity_igp(hw);                                          │          ret_val = igb_check_polarity_igp(hw);                                           
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_STATUS, &data);                       │          ret_val = phy->ops.read_reg(hw, IGP01E1000_PHY_PORT_STATUS, &data);             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  goto out;                                                               
                                                                                         │                                                                                          
        phy->is_mdix = !!(data & IGP01E1000_PSSR_MDIX);                                  │          phy->is_mdix = (data & IGP01E1000_PSSR_MDIX) ? true : false;                    
                                                                                         │                                                                                          
        if ((data & IGP01E1000_PSSR_SPEED_MASK) ==                                       │          if ((data & IGP01E1000_PSSR_SPEED_MASK) ==                                      
            IGP01E1000_PSSR_SPEED_1000MBPS) {                                            │              IGP01E1000_PSSR_SPEED_1000MBPS) {                                           
                ret_val = phy->ops.get_cable_length(hw);                                 │                  ret_val = phy->ops.get_cable_length(hw);                                
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          goto out;                                                       
                                                                                         │                                                                                          
                ret_val = e1e_rphy(hw, MII_STAT1000, &data);                             │                  ret_val = phy->ops.read_reg(hw, PHY_1000T_STATUS, &data);               
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          goto out;                                                       
                                                                                         │                                                                                          
                phy->local_rx = (data & LPA_1000LOCALRXOK)                               │                  phy->local_rx = (data & SR_1000T_LOCAL_RX_STATUS)                       
                    ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;           │                                  ? e1000_1000t_rx_status_ok                              
                                                                                         │                                  : e1000_1000t_rx_status_not_ok;                         
                phy->remote_rx = (data & LPA_1000REMRXOK)                                │                                                                                          
                    ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;           │                  phy->remote_rx = (data & SR_1000T_REMOTE_RX_STATUS)                     
                                                                                         │                                   ? e1000_1000t_rx_status_ok                             
                                                                                         │                                   : e1000_1000t_rx_status_not_ok;                        
        } else {                                                                         │          } else {                                                                        
                phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                        │                  phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                       
                phy->local_rx = e1000_1000t_rx_status_undefined;                         │                  phy->local_rx = e1000_1000t_rx_status_undefined;                        
                phy->remote_rx = e1000_1000t_rx_status_undefined;                        │                  phy->remote_rx = e1000_1000t_rx_status_undefined;                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │  out:                                                                                    
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:1952                                      │ linux/drivers/net/ethernet/intel/e1000e/phy.c:3146                                       
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        u16 data;                                                                        │          u16 data;                                                                       
        bool link;                                                                       │          bool link;                                                                      
                                                                                         │                                                                                          
        ret_val = e1000e_phy_has_link_generic(hw, 1, 0, &link);                          │          ret_val = e1000e_phy_has_link_generic(hw, 1, 0, &link);                         
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  return ret_val;                                                         
                                                                                         │                                                                                          
        if (!link) {                                                                     │          if (!link) {                                                                    
                e_dbg("Phy info is only valid if link is up\n");                         │                  e_dbg("Phy info is only valid if link is up\n");                        
                return -E1000_ERR_CONFIG;                                                │                  return -E1000_ERR_CONFIG;                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        phy->polarity_correction = true;                                                 │          phy->polarity_correction = true;                                                
                                                                                         │                                                                                          
        ret_val = e1000_check_polarity_igp(hw);                                          │          ret_val = e1000_check_polarity_82577(hw);                                       
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  return ret_val;                                                         
                                                                                         │                                                                                          
        ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_STATUS, &data);                       │          ret_val = e1e_rphy(hw, I82577_PHY_STATUS_2, &data);                             
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  return ret_val;                                                         
                                                                                         │                                                                                          
        phy->is_mdix = !!(data & IGP01E1000_PSSR_MDIX);                                  │          phy->is_mdix = !!(data & I82577_PHY_STATUS2_MDIX);                              
                                                                                         │                                                                                          
        if ((data & IGP01E1000_PSSR_SPEED_MASK) ==                                       │          if ((data & I82577_PHY_STATUS2_SPEED_MASK) ==                                   
            IGP01E1000_PSSR_SPEED_1000MBPS) {                                            │              I82577_PHY_STATUS2_SPEED_1000MBPS) {                                        
                ret_val = phy->ops.get_cable_length(hw);                                 │                  ret_val = hw->phy.ops.get_cable_length(hw);                             
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          return ret_val;                                                 
                                                                                         │                                                                                          
                ret_val = e1e_rphy(hw, MII_STAT1000, &data);                             │                  ret_val = e1e_rphy(hw, MII_STAT1000, &data);                            
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          return ret_val;                                                 
                                                                                         │                                                                                          
                phy->local_rx = (data & LPA_1000LOCALRXOK)                               │                  phy->local_rx = (data & LPA_1000LOCALRXOK)                              
                    ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;           │                      ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;          
                                                                                         │                                                                                          
                phy->remote_rx = (data & LPA_1000REMRXOK)                                │                  phy->remote_rx = (data & LPA_1000REMRXOK)                               
                    ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;           │                      ? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;          
        } else {                                                                         │          } else {                                                                        
                phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                        │                  phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;                       
                phy->local_rx = e1000_1000t_rx_status_undefined;                         │                  phy->local_rx = e1000_1000t_rx_status_undefined;                        
                phy->remote_rx = e1000_1000t_rx_status_undefined;                        │                  phy->remote_rx = e1000_1000t_rx_status_undefined;                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return ret_val;                                                                  │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4/sge.c:1786                                     │ linux/drivers/net/ethernet/chelsio/cxgb4vf/sge.c:852                                     
                                                                                         │                                                                                          
        unsigned int flits;                                                              │          unsigned int flits;                                                             
                                                                                         │                                                                                          
        /* If the skb is small enough, we can pump it out as a work request              │          /*                                                                              
                                                                                         │           * If the skb is small enough, we can pump it out as a work request             
         * with only immediate data.  In that case we just have to have the              │           * with only immediate data.  In that case we just have to have the             
         * TX Packet header plus the skb data in the Work Request.                       │           * TX Packet header plus the skb data in the Work Request.                      
         */                                                                              │           */                                                                             
        if (t4vf_is_eth_imm(skb))                                                        │          if (is_eth_imm(skb))                                                            
                return DIV_ROUND_UP(skb->len + sizeof(struct cpl_tx_pkt),                │                  return DIV_ROUND_UP(skb->len + sizeof(struct cpl_tx_pkt),               
                                    sizeof(__be64));                                     │                                      sizeof(__be64));                                    
                                                                                         │                                                                                          
        /* Otherwise, we're going to have to construct a Scatter gather list             │          /*                                                                              
                                                                                         │           * Otherwise, we're going to have to construct a Scatter gather list            
         * of the skb body and fragments.  We also include the flits necessary           │           * of the skb body and fragments.  We also include the flits necessary          
         * for the TX Packet Work Request and CPL.  We always have a firmware            │           * for the TX Packet Work Request and CPL.  We always have a firmware           
         * Write Header (incorporated as part of the cpl_tx_pkt_lso and                  │           * Write Header (incorporated as part of the cpl_tx_pkt_lso and                 
         * cpl_tx_pkt structures), followed by either a TX Packet Write CPL              │           * cpl_tx_pkt structures), followed by either a TX Packet Write CPL             
         * message or, if we're doing a Large Send Offload, an LSO CPL message           │           * message or, if we're doing a Large Send Offload, an LSO CPL message          
         * with an embedded TX Packet Write CPL message.                                 │           * with an embedded TX Packet Write CPL message.                                
         */                                                                              │           */                                                                             
        flits = sgl_len(skb_shinfo(skb)->nr_frags + 1);                                  │          flits = sgl_len(skb_shinfo(skb)->nr_frags + 1);                                 
        if (skb_shinfo(skb)->gso_size)                                                   │          if (skb_shinfo(skb)->gso_size)                                                  
                flits += (sizeof(struct fw_eth_tx_pkt_vm_wr) +                           │                  flits += (sizeof(struct fw_eth_tx_pkt_vm_wr) +                          
                          sizeof(struct cpl_tx_pkt_lso_core) +                           │                            sizeof(struct cpl_tx_pkt_lso_core) +                          
                          sizeof(struct cpl_tx_pkt_core)) / sizeof(__be64);              │                            sizeof(struct cpl_tx_pkt_core)) / sizeof(__be64);             
        else                                                                             │          else                                                                            
                flits += (sizeof(struct fw_eth_tx_pkt_vm_wr) +                           │                  flits += (sizeof(struct fw_eth_tx_pkt_vm_wr) +                          
                          sizeof(struct cpl_tx_pkt_core)) / sizeof(__be64);              │                            sizeof(struct cpl_tx_pkt_core)) / sizeof(__be64);             
        return flits;                                                                    │          return flits;                                                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/i40e/i40e_common.c:6002                                │ linux/drivers/net/ethernet/intel/i40e/i40e_common.c:6096                                 
                                                                                         │                                                                                          
        struct i40e_aq_desc desc;                                                        │          struct i40e_aq_desc desc;                                                       
        struct i40e_aqc_add_remove_cloud_filters *cmd =                                  │          struct i40e_aqc_add_remove_cloud_filters *cmd =                                 
        (struct i40e_aqc_add_remove_cloud_filters *)&desc.params.raw;                    │          (struct i40e_aqc_add_remove_cloud_filters *)&desc.params.raw;                   
        i40e_status status;                                                              │          i40e_status status;                                                             
        u16 buff_len;                                                                    │          u16 buff_len;                                                                   
        int i;                                                                           │          int i;                                                                          
                                                                                         │                                                                                          
        i40e_fill_default_direct_cmd_desc(&desc,                                         │          i40e_fill_default_direct_cmd_desc(&desc,                                        
                                          i40e_aqc_opc_add_cloud_filters);               │                                            i40e_aqc_opc_remove_cloud_filters);           
                                                                                         │                                                                                          
        buff_len = filter_count * sizeof(*filters);                                      │          buff_len = filter_count * sizeof(*filters);                                     
        desc.datalen = cpu_to_le16(buff_len);                                            │          desc.datalen = cpu_to_le16(buff_len);                                           
        desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD));            │          desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD));           
        cmd->num_filters = filter_count;                                                 │          cmd->num_filters = filter_count;                                                
        cmd->seid = cpu_to_le16(seid);                                                   │          cmd->seid = cpu_to_le16(seid);                                                  
        cmd->big_buffer_flag = I40E_AQC_ADD_CLOUD_CMD_BB;                                │          cmd->big_buffer_flag = I40E_AQC_ADD_CLOUD_CMD_BB;                               
                                                                                         │                                                                                          
        for (i = 0; i < filter_count; i++) {                                             │          for (i = 0; i < filter_count; i++) {                                            
                u16 tnl_type;                                                            │                  u16 tnl_type;                                                           
                u32 ti;                                                                  │                  u32 ti;                                                                 
                                                                                         │                                                                                          
                tnl_type = (le16_to_cpu(filters[i].element.flags) &                      │                  tnl_type = (le16_to_cpu(filters[i].element.flags) &                     
                           I40E_AQC_ADD_CLOUD_TNL_TYPE_MASK) >>                          │                             I40E_AQC_ADD_CLOUD_TNL_TYPE_MASK) >>                         
                           I40E_AQC_ADD_CLOUD_TNL_TYPE_SHIFT;                            │                             I40E_AQC_ADD_CLOUD_TNL_TYPE_SHIFT;                           
                                                                                         │                                                                                          
                /* Due to hardware eccentricities, the VNI for Geneve is shifted         │                  /* Due to hardware eccentricities, the VNI for Geneve is shifted        
                 * one more byte further than normally used for Tenant ID in             │                   * one more byte further than normally used for Tenant ID in            
                 * other tunnel types.                                                   │                   * other tunnel types.                                                  
                 */                                                                      │                   */                                                                     
                if (tnl_type == I40E_AQC_ADD_CLOUD_TNL_TYPE_GENEVE) {                    │                  if (tnl_type == I40E_AQC_ADD_CLOUD_TNL_TYPE_GENEVE) {                   
                        ti = le32_to_cpu(filters[i].element.tenant_id);                  │                          ti = le32_to_cpu(filters[i].element.tenant_id);                 
                        filters[i].element.tenant_id = cpu_to_le32(ti << 8);             │                          filters[i].element.tenant_id = cpu_to_le32(ti << 8);            
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        status = i40e_asq_send_command(hw, &desc, filters, buff_len, NULL);              │          status = i40e_asq_send_command(hw, &desc, filters, buff_len, NULL);             
                                                                                         │                                                                                          
        return status;                                                                   │          return status;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/e1000_phy.c:1133                                   │ linux/drivers/net/ethernet/intel/e1000e/phy.c:1182                                       
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        u16 phy_data;                                                                    │          u16 phy_data;                                                                   
        bool link;                                                                       │          bool link;                                                                      
                                                                                         │                                                                                          
        ret_val = phy->ops.read_reg(hw, PHY_CONTROL, &phy_data);                         │          ret_val = e1e_rphy(hw, MII_BMCR, &phy_data);                                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  return ret_val;                                                         
                                                                                         │                                                                                          
        igb_phy_force_speed_duplex_setup(hw, &phy_data);                                 │          e1000e_phy_force_speed_duplex_setup(hw, &phy_data);                             
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, PHY_CONTROL, phy_data);                         │          ret_val = e1e_wphy(hw, MII_BMCR, phy_data);                                     
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  return ret_val;                                                         
                                                                                         │                                                                                          
        /* Clear Auto-Crossover to force MDI manually.  IGP requires MDI                 │          /* Clear Auto-Crossover to force MDI manually.  IGP requires MDI                
         * forced whenever speed and duplex are forced.                                  │           * forced whenever speed and duplex are forced.                                 
         */                                                                              │           */                                                                             
        ret_val = phy->ops.read_reg(hw, IGP01E1000_PHY_PORT_CTRL, &phy_data);            │          ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_CTRL, &phy_data);                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  return ret_val;                                                         
                                                                                         │                                                                                          
        phy_data &= ~IGP01E1000_PSCR_AUTO_MDIX;                                          │          phy_data &= ~IGP01E1000_PSCR_AUTO_MDIX;                                         
        phy_data &= ~IGP01E1000_PSCR_FORCE_MDI_MDIX;                                     │          phy_data &= ~IGP01E1000_PSCR_FORCE_MDI_MDIX;                                    
                                                                                         │                                                                                          
        ret_val = phy->ops.write_reg(hw, IGP01E1000_PHY_PORT_CTRL, phy_data);            │          ret_val = e1e_wphy(hw, IGP01E1000_PHY_PORT_CTRL, phy_data);                     
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                goto out;                                                                │                  return ret_val;                                                         
                                                                                         │                                                                                          
        hw_dbg("IGP PSCR: %X\n", phy_data);                                              │          e_dbg("IGP PSCR: %X\n", phy_data);                                              
                                                                                         │                                                                                          
        udelay(1);                                                                       │          udelay(1);                                                                      
                                                                                         │                                                                                          
        if (phy->autoneg_wait_to_complete) {                                             │          if (phy->autoneg_wait_to_complete) {                                            
                hw_dbg("Waiting for forced speed/duplex link on IGP phy.\n");            │                  e_dbg("Waiting for forced speed/duplex link on IGP phy.\n");            
                                                                                         │                                                                                          
                ret_val = igb_phy_has_link(hw, PHY_FORCE_LIMIT, 10000, &link);           │                  ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT,              
                                                                                         │                                                        100000, &link);                   
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        goto out;                                                        │                          return ret_val;                                                 
                                                                                         │                                                                                          
                if (!link)                                                               │                  if (!link)                                                              
                        hw_dbg("Link taking longer than expected.\n");                   │                          e_dbg("Link taking longer than expected.\n");                   
                                                                                         │                                                                                          
                /* Try once more */                                                      │                  /* Try once more */                                                     
                ret_val = igb_phy_has_link(hw, PHY_FORCE_LIMIT, 10000, &link);           │                  ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT,              
                if (ret_val)                                                             │                                                        100000, &link);                   
                        goto out;                                                        │                                                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
out:                                                                                     │                                                                                          
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/selftest.c:374                                           │ linux/drivers/net/ethernet/sfc/falcon/selftest.c:376                                     
                                                                                         │                                                                                          
        struct efx_loopback_state *state = efx->loopback_selftest;                       │          struct ef4_loopback_state *state = efx->loopback_selftest;                      
        struct net_device *net_dev = efx->net_dev;                                       │          struct net_device *net_dev = efx->net_dev;                                      
        struct efx_loopback_payload *payload = &state->payload;                          │          struct ef4_loopback_payload *payload = &state->payload;                         
                                                                                         │                                                                                          
        /* Initialise the layerII header */                                              │          /* Initialise the layerII header */                                             
        ether_addr_copy((u8 *)&payload->header.h_dest, net_dev->dev_addr);               │          ether_addr_copy((u8 *)&payload->header.h_dest, net_dev->dev_addr);              
        ether_addr_copy((u8 *)&payload->header.h_source, payload_source);                │          ether_addr_copy((u8 *)&payload->header.h_source, payload_source);               
        payload->header.h_proto = htons(ETH_P_IP);                                       │          payload->header.h_proto = htons(ETH_P_IP);                                      
                                                                                         │                                                                                          
        /* saddr set later and used as incrementing count */                             │          /* saddr set later and used as incrementing count */                            
        payload->ip.daddr = htonl(INADDR_LOOPBACK);                                      │          payload->ip.daddr = htonl(INADDR_LOOPBACK);                                     
        payload->ip.ihl = 5;                                                             │          payload->ip.ihl = 5;                                                            
        payload->ip.check = (__force __sum16) htons(0xdead);                             │          payload->ip.check = (__force __sum16) htons(0xdead);                            
        payload->ip.tot_len = htons(sizeof(*payload) - sizeof(struct ethhdr));           │          payload->ip.tot_len = htons(sizeof(*payload) - sizeof(struct ethhdr));          
        payload->ip.version = IPVERSION;                                                 │          payload->ip.version = IPVERSION;                                                
        payload->ip.protocol = IPPROTO_UDP;                                              │          payload->ip.protocol = IPPROTO_UDP;                                             
                                                                                         │                                                                                          
        /* Initialise udp header */                                                      │          /* Initialise udp header */                                                     
        payload->udp.source = 0;                                                         │          payload->udp.source = 0;                                                        
        payload->udp.len = htons(sizeof(*payload) - sizeof(struct ethhdr) -              │          payload->udp.len = htons(sizeof(*payload) - sizeof(struct ethhdr) -             
                                 sizeof(struct iphdr));                                  │                                   sizeof(struct iphdr));                                 
        payload->udp.check = 0; /* checksum ignored */                                   │          payload->udp.check = 0; /* checksum ignored */                                  
                                                                                         │                                                                                          
        /* Fill out payload */                                                           │          /* Fill out payload */                                                          
        payload->iteration = htons(ntohs(payload->iteration) + 1);                       │          payload->iteration = htons(ntohs(payload->iteration) + 1);                      
        memcpy(&payload->msg, payload_msg, sizeof(payload_msg));                         │          memcpy(&payload->msg, payload_msg, sizeof(payload_msg));                        
                                                                                         │                                                                                          
        /* Fill out remaining state members */                                           │          /* Fill out remaining state members */                                          
        atomic_set(&state->rx_good, 0);                                                  │          atomic_set(&state->rx_good, 0);                                                 
        atomic_set(&state->rx_bad, 0);                                                   │          atomic_set(&state->rx_bad, 0);                                                  
        smp_wmb();                                                                       │          smp_wmb();                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c:1091                               │ linux/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c:2858                                    
                                                                                         │                                                                                          
        struct vf_resources *vfres = &adapter->params.vfres;                             │          struct pf_resources *pfres = &adapter->params.pfres;                            
        struct fw_pfvf_cmd cmd, rpl;                                                     │          struct fw_pfvf_cmd cmd, rpl;                                                    
        int v;                                                                           │          int v;                                                                          
        u32 word;                                                                        │          u32 word;                                                                       
                                                                                         │                                                                                          
        /*                                                                               │          /* Execute PFVF Read command to get VF resource limits; bail out early          
         * Execute PFVF Read command to get VF resource limits; bail out early           │                                                                                          
         * with error on command failure.                                                │           * with error on command failure.                                               
         */                                                                              │           */                                                                             
        memset(&cmd, 0, sizeof(cmd));                                                    │          memset(&cmd, 0, sizeof(cmd));                                                   
        cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PFVF_CMD) |                           │          cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PFVF_CMD) |                          
                                    FW_CMD_REQUEST_F |                                   │                                      FW_CMD_REQUEST_F |                                  
                                    FW_CMD_READ_F);                                      │                                      FW_CMD_READ_F |                                     
                                                                                         │                                      FW_PFVF_CMD_PFN_V(adapter->pf) |                    
                                                                                         │                                      FW_PFVF_CMD_VFN_V(0));                              
        cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));                                   │          cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));                                  
        v = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl);                              │          v = t4_wr_mbox(adapter, adapter->mbox, &cmd, sizeof(cmd), &rpl);                
        if (v)                                                                           │          if (v != FW_SUCCESS)                                                            
                return v;                                                                │                  return v;                                                               
                                                                                         │                                                                                          
        /*                                                                               │          /* Extract PF resource limits and return success.                               
         * Extract VF resource limits and return success.                                │                                                                                          
         */                                                                              │           */                                                                             
        word = be32_to_cpu(rpl.niqflint_niq);                                            │          word = be32_to_cpu(rpl.niqflint_niq);                                           
        vfres->niqflint = FW_PFVF_CMD_NIQFLINT_G(word);                                  │          pfres->niqflint = FW_PFVF_CMD_NIQFLINT_G(word);                                 
        vfres->niq = FW_PFVF_CMD_NIQ_G(word);                                            │          pfres->niq = FW_PFVF_CMD_NIQ_G(word);                                           
                                                                                         │                                                                                          
        word = be32_to_cpu(rpl.type_to_neq);                                             │          word = be32_to_cpu(rpl.type_to_neq);                                            
        vfres->neq = FW_PFVF_CMD_NEQ_G(word);                                            │          pfres->neq = FW_PFVF_CMD_NEQ_G(word);                                           
        vfres->pmask = FW_PFVF_CMD_PMASK_G(word);                                        │          pfres->pmask = FW_PFVF_CMD_PMASK_G(word);                                       
                                                                                         │                                                                                          
        word = be32_to_cpu(rpl.tc_to_nexactf);                                           │          word = be32_to_cpu(rpl.tc_to_nexactf);                                          
        vfres->tc = FW_PFVF_CMD_TC_G(word);                                              │          pfres->tc = FW_PFVF_CMD_TC_G(word);                                             
        vfres->nvi = FW_PFVF_CMD_NVI_G(word);                                            │          pfres->nvi = FW_PFVF_CMD_NVI_G(word);                                           
        vfres->nexactf = FW_PFVF_CMD_NEXACTF_G(word);                                    │          pfres->nexactf = FW_PFVF_CMD_NEXACTF_G(word);                                   
                                                                                         │                                                                                          
        word = be32_to_cpu(rpl.r_caps_to_nethctrl);                                      │          word = be32_to_cpu(rpl.r_caps_to_nethctrl);                                     
        vfres->r_caps = FW_PFVF_CMD_R_CAPS_G(word);                                      │          pfres->r_caps = FW_PFVF_CMD_R_CAPS_G(word);                                     
        vfres->wx_caps = FW_PFVF_CMD_WX_CAPS_G(word);                                    │          pfres->wx_caps = FW_PFVF_CMD_WX_CAPS_G(word);                                   
        vfres->nethctrl = FW_PFVF_CMD_NETHCTRL_G(word);                                  │          pfres->nethctrl = FW_PFVF_CMD_NETHCTRL_G(word);                                 
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx4/port.c:897                                     │ linux/drivers/net/ethernet/mellanox/mlx4/port.c:1004                                     
                                                                                         │                                                                                          
        struct mlx4_mac_table *t1 = &mlx4_priv(dev)->port[1].mac_table;                  │          struct mlx4_vlan_table *t1 = &mlx4_priv(dev)->port[1].vlan_table;               
        struct mlx4_mac_table *t2 = &mlx4_priv(dev)->port[2].mac_table;                  │          struct mlx4_vlan_table *t2 = &mlx4_priv(dev)->port[2].vlan_table;               
        int ret = 0;                                                                     │          int ret = 0;                                                                    
        int ret1;                                                                        │          int ret1;                                                                       
        int i;                                                                           │          int i;                                                                          
        bool update1 = false;                                                            │          bool update1 = false;                                                           
        bool update2 = false;                                                            │          bool update2 = false;                                                           
                                                                                         │                                                                                          
        mutex_lock(&t1->mutex);                                                          │          mutex_lock(&t1->mutex);                                                         
        mutex_lock(&t2->mutex);                                                          │          mutex_lock(&t2->mutex);                                                         
        for (i = 0; i < MLX4_MAX_MAC_NUM; i++) {                                         │          for (i = 0; i < MLX4_MAX_VLAN_NUM; i++) {                                       
                if (t1->entries[i] != t2->entries[i]) {                                  │                  if (t1->entries[i] != t2->entries[i]) {                                 
                        mlx4_warn(dev, "mac table is in an unexpected state when trying  │                          mlx4_warn(dev, "vlan table is in an unexpected state when trying
                        ret = -EINVAL;                                                   │                          ret = -EINVAL;                                                  
                        goto unlock;                                                     │                          goto unlock;                                                    
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (i = 0; i < MLX4_MAX_MAC_NUM; i++) {                                         │          for (i = 0; i < MLX4_MAX_VLAN_NUM; i++) {                                       
                if (!t1->entries[i])                                                     │                  if (!t1->entries[i])                                                    
                        continue;                                                        │                          continue;                                                       
                t1->is_dup[i] = false;                                                   │                  t1->is_dup[i] = false;                                                  
                if (!t1->refs[i]) {                                                      │                  if (!t1->refs[i]) {                                                     
                        t1->entries[i] = 0;                                              │                          t1->entries[i] = 0;                                             
                        update1 = true;                                                  │                          update1 = true;                                                 
                }                                                                        │                  }                                                                       
                t2->is_dup[i] = false;                                                   │                  t2->is_dup[i] = false;                                                  
                if (!t2->refs[i]) {                                                      │                  if (!t2->refs[i]) {                                                     
                        t2->entries[i] = 0;                                              │                          t2->entries[i] = 0;                                             
                        update2 = true;                                                  │                          update2 = true;                                                 
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (update1) {                                                                   │          if (update1) {                                                                  
                ret = mlx4_set_port_mac_table(dev, 1, t1->entries);                      │                  ret = mlx4_set_port_vlan_table(dev, 1, t1->entries);                    
                if (ret)                                                                 │                  if (ret)                                                                
                        mlx4_warn(dev, "failed to unmirror MAC tables for port 1(%d)\n", │                          mlx4_warn(dev, "failed to unmirror VLAN tables for port 1(%d)\n"
        }                                                                                │          }                                                                               
        if (update2) {                                                                   │          if (update2) {                                                                  
                ret1 = mlx4_set_port_mac_table(dev, 2, t2->entries);                     │                  ret1 = mlx4_set_port_vlan_table(dev, 2, t2->entries);                   
                if (ret1) {                                                              │                  if (ret1) {                                                             
                        mlx4_warn(dev, "failed to unmirror MAC tables for port 2(%d)\n", │                          mlx4_warn(dev, "failed to unmirror VLAN tables for port 2(%d)\n"
                        ret = ret1;                                                      │                          ret = ret1;                                                     
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
unlock:                                                                                  │  unlock:                                                                                 
        mutex_unlock(&t2->mutex);                                                        │          mutex_unlock(&t2->mutex);                                                       
        mutex_unlock(&t1->mutex);                                                        │          mutex_unlock(&t1->mutex);                                                       
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qualcomm/emac/emac-sgmii-qdf2400.c:174                       │ linux/drivers/net/ethernet/qualcomm/emac/emac-sgmii-qdf2432.c:161                        
                                                                                         │                                                                                          
        struct emac_sgmii *phy = &adpt->phy;                                             │          struct emac_sgmii *phy = &adpt->phy;                                            
        void __iomem *phy_regs = phy->base;                                              │          void __iomem *phy_regs = phy->base;                                             
        void __iomem *laned = phy->digital;                                              │          void __iomem *laned = phy->digital;                                             
        unsigned int i;                                                                  │          unsigned int i;                                                                 
        u32 lnstatus;                                                                    │          u32 lnstatus;                                                                   
                                                                                         │                                                                                          
        /* PCS lane-x init */                                                            │          /* PCS lane-x init */                                                           
        emac_reg_write_all(phy->base, physical_coding_sublayer_programming,              │          emac_reg_write_all(phy->base, physical_coding_sublayer_programming,             
                           ARRAY_SIZE(physical_coding_sublayer_programming));            │                             ARRAY_SIZE(physical_coding_sublayer_programming));           
                                                                                         │                                                                                          
        /* SGMII lane-x init */                                                          │          /* SGMII lane-x init */                                                         
        emac_reg_write_all(phy->digital, sgmii_laned, ARRAY_SIZE(sgmii_laned));          │          emac_reg_write_all(phy->digital, sgmii_laned, ARRAY_SIZE(sgmii_laned));         
                                                                                         │                                                                                          
        /* Power up PCS and start reset lane state machine */                            │          /* Power up PCS and start reset lane state machine */                           
                                                                                         │                                                                                          
        writel(0, phy_regs + EMAC_SGMII_PHY_RESET_CTRL);                                 │          writel(0, phy_regs + EMAC_SGMII_PHY_RESET_CTRL);                                
        writel(1, laned + SGMII_LN_RSM_START);                                           │          writel(1, laned + SGMII_LN_RSM_START);                                          
                                                                                         │                                                                                          
        /* Wait for c_ready assertion */                                                 │          /* Wait for c_ready assertion */                                                
        for (i = 0; i < SERDES_START_WAIT_TIMES; i++) {                                  │          for (i = 0; i < SERDES_START_WAIT_TIMES; i++) {                                 
                lnstatus = readl(phy_regs + SGMII_PHY_LN_LANE_STATUS);                   │                  lnstatus = readl(phy_regs + SGMII_PHY_LN_LANE_STATUS);                  
                if (lnstatus & BIT(1))                                                   │                  if (lnstatus & BIT(1))                                                  
                        break;                                                           │                          break;                                                          
                usleep_range(100, 200);                                                  │                  usleep_range(100, 200);                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (i == SERDES_START_WAIT_TIMES) {                                              │          if (i == SERDES_START_WAIT_TIMES) {                                             
                netdev_err(adpt->netdev, "SGMII failed to start\n");                     │                  netdev_err(adpt->netdev, "SGMII failed to start\n");                    
                return -EIO;                                                             │                  return -EIO;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Disable digital and SERDES loopback */                                        │          /* Disable digital and SERDES loopback */                                       
        writel(0, phy_regs + SGMII_PHY_LN_BIST_GEN0);                                    │          writel(0, phy_regs + SGMII_PHY_LN_BIST_GEN0);                                   
        writel(0, phy_regs + SGMII_PHY_LN_BIST_GEN2);                                    │          writel(0, phy_regs + SGMII_PHY_LN_BIST_GEN2);                                   
        writel(0, phy_regs + SGMII_PHY_LN_CDR_CTRL1);                                    │          writel(0, phy_regs + SGMII_PHY_LN_CDR_CTRL1);                                   
                                                                                         │                                                                                          
        /* Mask out all the SGMII Interrupt */                                           │          /* Mask out all the SGMII Interrupt */                                          
        writel(0, phy_regs + EMAC_SGMII_PHY_INTERRUPT_MASK);                             │          writel(0, phy_regs + EMAC_SGMII_PHY_INTERRUPT_MASK);                            
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c:177                │ linux/drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c:228                 
                                                                                         │                                                                                          
        struct inet_sock *inet = inet_sk(sk);                                            │          struct inet_sock *inet = inet_sk(sk);                                           
        struct cpl_t6_act_open_req *cpl6;                                                │          struct cpl_t6_act_open_req6 *cpl6;                                              
        struct cpl_act_open_req *cpl;                                                    │          struct cpl_act_open_req6 *cpl;                                                  
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
        unsigned int len;                                                                │          unsigned int len;                                                               
        int qid_atid;                                                                    │          int qid_atid;                                                                   
        u64 options;                                                                     │          u64 options;                                                                    
                                                                                         │                                                                                          
        len = sizeof(*cpl6);                                                             │          len = sizeof(*cpl6);                                                            
        skb = alloc_skb(len, GFP_KERNEL);                                                │          skb = alloc_skb(len, GFP_KERNEL);                                               
        if (unlikely(!skb))                                                              │          if (unlikely(!skb))                                                             
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
        /* mark it a control pkt */                                                      │          /* mark it a control pkt */                                                     
        set_wr_txq(skb, CPL_PRIORITY_CONTROL, tx_info->port_id);                         │          set_wr_txq(skb, CPL_PRIORITY_CONTROL, tx_info->port_id);                        
                                                                                         │                                                                                          
        cpl6 = __skb_put_zero(skb, len);                                                 │          cpl6 = __skb_put_zero(skb, len);                                                
        cpl = (struct cpl_act_open_req *)cpl6;                                           │          cpl = (struct cpl_act_open_req6 *)cpl6;                                         
        INIT_TP_WR(cpl6, 0);                                                             │          INIT_TP_WR(cpl6, 0);                                                            
        qid_atid = TID_QID_V(tx_info->rx_qid) |                                          │          qid_atid = TID_QID_V(tx_info->rx_qid) | TID_TID_V(atid);                        
                   TID_TID_V(atid);                                                      │          OPCODE_TID(cpl) = htonl(MK_OPCODE_TID(CPL_ACT_OPEN_REQ6, qid_atid));            
        OPCODE_TID(cpl) = htonl(MK_OPCODE_TID(CPL_ACT_OPEN_REQ, qid_atid));              │                                                                                          
        cpl->local_port = inet->inet_sport;                                              │          cpl->local_port = inet->inet_sport;                                             
        cpl->peer_port = inet->inet_dport;                                               │          cpl->peer_port = inet->inet_dport;                                              
        cpl->local_ip = inet->inet_rcv_saddr;                                            │          cpl->local_ip_hi = *(__be64 *)&sk->sk_v6_rcv_saddr.in6_u.u6_addr8[0];           
        cpl->peer_ip = inet->inet_daddr;                                                 │          cpl->local_ip_lo = *(__be64 *)&sk->sk_v6_rcv_saddr.in6_u.u6_addr8[8];           
                                                                                         │          cpl->peer_ip_hi = *(__be64 *)&sk->sk_v6_daddr.in6_u.u6_addr8[0];                
                                                                                         │          cpl->peer_ip_lo = *(__be64 *)&sk->sk_v6_daddr.in6_u.u6_addr8[8];                
                                                                                         │                                                                                          
        /* fill first 64 bit option field. */                                            │          /* first 64 bit option field. */                                                
        options = TCAM_BYPASS_F | ULP_MODE_V(ULP_MODE_NONE) | NON_OFFLOAD_F |            │          options = TCAM_BYPASS_F | ULP_MODE_V(ULP_MODE_NONE) | NON_OFFLOAD_F |           
                  SMAC_SEL_V(tx_info->smt_idx) | TX_CHAN_V(tx_info->tx_chan);            │                    SMAC_SEL_V(tx_info->smt_idx) | TX_CHAN_V(tx_info->tx_chan);           
        cpl->opt0 = cpu_to_be64(options);                                                │          cpl->opt0 = cpu_to_be64(options);                                               
                                                                                         │                                                                                          
        /* next 64 bit option field. */                                                  │          /* next 64 bit option field. */                                                 
        options =                                                                        │          options =                                                                       
                TX_QUEUE_V(tx_info->adap->params.tp.tx_modq[tx_info->tx_chan]);          │                  TX_QUEUE_V(tx_info->adap->params.tp.tx_modq[tx_info->tx_chan]);         
        cpl->opt2 = htonl(options);                                                      │          cpl->opt2 = htonl(options);                                                     
                                                                                         │                                                                                          
        return cxgb4_l2t_send(tx_info->netdev, skb, tx_info->l2te);                      │          return cxgb4_l2t_send(tx_info->netdev, skb, tx_info->l2te);                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cpplib.c:160                       │ linux/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cpplib.c:213                        
                                                                                         │                                                                                          
        struct nfp_cpp_explicit *expl;                                                   │          struct nfp_cpp_explicit *expl;                                                  
        char *tmp = buff;                                                                │          const char *tmp = buff;                                                         
        int err, i, incr;                                                                │          int err, i, incr;                                                               
        u8 byte_mask;                                                                    │          u8 byte_mask;                                                                   
                                                                                         │                                                                                          
        if (len & (width_read - 1))                                                      │          if (len & (width_write - 1))                                                    
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        expl = nfp_cpp_explicit_acquire(cpp);                                            │          expl = nfp_cpp_explicit_acquire(cpp);                                           
        if (!expl)                                                                       │          if (!expl)                                                                      
                return -EBUSY;                                                           │                  return -EBUSY;                                                          
                                                                                         │                                                                                          
        incr = min_t(int, 16 * width_read, 128);                                         │          incr = min_t(int, 16 * width_write, 128);                                       
        incr = min_t(int, incr, len);                                                    │          incr = min_t(int, incr, len);                                                   
                                                                                         │                                                                                          
        /* Translate a NFP_CPP_ACTION_RW to action 0 */                                  │          /* Translate a NFP_CPP_ACTION_RW to action 1 */                                 
        if (NFP_CPP_ID_ACTION_of(cpp_id) == NFP_CPP_ACTION_RW)                           │          if (NFP_CPP_ID_ACTION_of(cpp_id) == NFP_CPP_ACTION_RW)                          
                cpp_id = NFP_CPP_ID(NFP_CPP_ID_TARGET_of(cpp_id), 0,                     │                  cpp_id = NFP_CPP_ID(NFP_CPP_ID_TARGET_of(cpp_id), 1,                    
                                    NFP_CPP_ID_TOKEN_of(cpp_id));                        │                                      NFP_CPP_ID_TOKEN_of(cpp_id));                       
                                                                                         │                                                                                          
        byte_mask = nfp_bytemask(width_read, addr);                                      │          byte_mask = nfp_bytemask(width_write, addr);                                    
                                                                                         │                                                                                          
        nfp_cpp_explicit_set_target(expl, cpp_id,                                        │          nfp_cpp_explicit_set_target(expl, cpp_id,                                       
                                    incr / width_read - 1, byte_mask);                   │                                      incr / width_write - 1, byte_mask);                 
        nfp_cpp_explicit_set_posted(expl, 1, 0, NFP_SIGNAL_PUSH,                         │          nfp_cpp_explicit_set_posted(expl, 1, 0, NFP_SIGNAL_PULL,                        
                                    0, NFP_SIGNAL_NONE);                                 │                                      0, NFP_SIGNAL_NONE);                                
                                                                                         │                                                                                          
        for (i = 0; i < len; i += incr, addr += incr, tmp += incr) {                     │          for (i = 0; i < len; i += incr, addr += incr, tmp += incr) {                    
                if (i + incr > len) {                                                    │                  if (i + incr > len) {                                                   
                        incr = len - i;                                                  │                          incr = len - i;                                                 
                        nfp_cpp_explicit_set_target(expl, cpp_id,                        │                          nfp_cpp_explicit_set_target(expl, cpp_id,                       
                                                    incr / width_read - 1,               │                                                      incr / width_write - 1,             
                                                    0xff);                               │                                                      0xff);                              
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                err = nfp_cpp_explicit_do(expl, addr);                                   │                  err = nfp_cpp_explicit_put(expl, tmp, incr);                            
                if (err < 0)                                                             │                  if (err < 0)                                                            
                        goto exit_release;                                               │                          goto exit_release;                                              
                                                                                         │                                                                                          
                err = nfp_cpp_explicit_get(expl, tmp, incr);                             │                  err = nfp_cpp_explicit_do(expl, addr);                                  
                if (err < 0)                                                             │                  if (err < 0)                                                            
                        goto exit_release;                                               │                          goto exit_release;                                              
        }                                                                                │          }                                                                               
        err = len;                                                                       │          err = len;                                                                      
exit_release:                                                                            │  exit_release:                                                                           
        nfp_cpp_explicit_release(expl);                                                  │          nfp_cpp_explicit_release(expl);                                                 
                                                                                         │                                                                                          
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.c:413                             │ linux/drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.c:521                              
                                                                                         │                                                                                          
        struct ice_hw *hw = &vsi->back->hw;                                              │          struct ice_hw *hw = &vsi->back->hw;                                             
        struct ice_vsi_ctx *ctxt;                                                        │          struct ice_vsi_ctx *ctxt;                                                       
        u8 tag_type;                                                                     │          u8 tag_type;                                                                    
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        /* do not allow modifying VLAN stripping when a port VLAN is configured          │                                                                                          
         * on this VSI                                                                   │                                                                                          
         */                                                                              │                                                                                          
        if (vsi->info.port_based_outer_vlan)                                             │          if (vsi->info.port_based_outer_vlan)                                            
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        if (tpid_to_vsi_outer_vlan_type(tpid, &tag_type))                                │          if (tpid_to_vsi_outer_vlan_type(tpid, &tag_type))                               
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        ctxt = kzalloc(sizeof(*ctxt), GFP_KERNEL);                                       │          ctxt = kzalloc(sizeof(*ctxt), GFP_KERNEL);                                      
        if (!ctxt)                                                                       │          if (!ctxt)                                                                      
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        ctxt->info.valid_sections =                                                      │          ctxt->info.valid_sections =                                                     
                cpu_to_le16(ICE_AQ_VSI_PROP_OUTER_TAG_VALID);                            │                  cpu_to_le16(ICE_AQ_VSI_PROP_OUTER_TAG_VALID);                           
        /* clear current outer VLAN strip settings */                                    │          /* clear current outer VLAN insertion settings */                               
        ctxt->info.outer_vlan_flags = vsi->info.outer_vlan_flags &                       │          ctxt->info.outer_vlan_flags = vsi->info.outer_vlan_flags &                      
                ~(ICE_AQ_VSI_OUTER_VLAN_EMODE_M | ICE_AQ_VSI_OUTER_TAG_TYPE_M);          │                  ~(ICE_AQ_VSI_OUTER_VLAN_PORT_BASED_INSERT |                             
                                                                                         │                    ICE_AQ_VSI_OUTER_VLAN_BLOCK_TX_DESC |                                 
                                                                                         │                    ICE_AQ_VSI_OUTER_VLAN_TX_MODE_M |                                     
                                                                                         │                    ICE_AQ_VSI_OUTER_TAG_TYPE_M);                                         
        ctxt->info.outer_vlan_flags |=                                                   │          ctxt->info.outer_vlan_flags |=                                                  
                ((ICE_AQ_VSI_OUTER_VLAN_EMODE_SHOW_BOTH <<                               │                  ((ICE_AQ_VSI_OUTER_VLAN_TX_MODE_ALL <<                                  
                  ICE_AQ_VSI_OUTER_VLAN_EMODE_S) |                                       │                    ICE_AQ_VSI_OUTER_VLAN_TX_MODE_S) &                                    
                 ((tag_type << ICE_AQ_VSI_OUTER_TAG_TYPE_S) &                            │                   ICE_AQ_VSI_OUTER_VLAN_TX_MODE_M) |                                     
                  ICE_AQ_VSI_OUTER_TAG_TYPE_M));                                         │                  ((tag_type << ICE_AQ_VSI_OUTER_TAG_TYPE_S) &                            
                                                                                         │                   ICE_AQ_VSI_OUTER_TAG_TYPE_M);                                          
                                                                                         │                                                                                          
        err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);                                  │          err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);                                 
        if (err)                                                                         │          if (err)                                                                        
                dev_err(ice_pf_to_dev(vsi->back), "update VSI for enabling outer VLAN st │                  dev_err(ice_pf_to_dev(vsi->back), "update VSI for enabling outer VLAN in
                        err, ice_aq_str(hw->adminq.sq_last_status));                     │                          err, ice_aq_str(hw->adminq.sq_last_status));                    
        else                                                                             │          else                                                                            
                vsi->info.outer_vlan_flags = ctxt->info.outer_vlan_flags;                │                  vsi->info.outer_vlan_flags = ctxt->info.outer_vlan_flags;               
                                                                                         │                                                                                          
        kfree(ctxt);                                                                     │          kfree(ctxt);                                                                    
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c:1853                           │ linux/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c:1901                            
                                                                                         │                                                                                          
                                                                                         │          int num_iq_stats, num_oq_stats, i, j;                                           
        struct lio *lio = GET_LIO(netdev);                                               │          struct lio *lio = GET_LIO(netdev);                                              
        struct octeon_device *oct_dev = lio->oct_dev;                                    │          struct octeon_device *oct_dev = lio->oct_dev;                                   
        int num_iq_stats, num_oq_stats, i, j;                                            │                                                                                          
        int num_stats;                                                                   │          int num_stats;                                                                  
                                                                                         │                                                                                          
        switch (stringset) {                                                             │          switch (stringset) {                                                            
        case ETH_SS_STATS:                                                               │          case ETH_SS_STATS:                                                              
                num_stats = ARRAY_SIZE(oct_stats_strings);                               │                  num_stats = ARRAY_SIZE(oct_vf_stats_strings);                           
                for (j = 0; j < num_stats; j++) {                                        │                  for (j = 0; j < num_stats; j++) {                                       
                        sprintf(data, "%s", oct_stats_strings[j]);                       │                          sprintf(data, "%s", oct_vf_stats_strings[j]);                   
                        data += ETH_GSTRING_LEN;                                         │                          data += ETH_GSTRING_LEN;                                        
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                num_iq_stats = ARRAY_SIZE(oct_iq_stats_strings);                         │                  num_iq_stats = ARRAY_SIZE(oct_iq_stats_strings);                        
                for (i = 0; i < MAX_OCTEON_INSTR_QUEUES(oct_dev); i++) {                 │                  for (i = 0; i < MAX_OCTEON_INSTR_QUEUES(oct_dev); i++) {                
                        if (!(oct_dev->io_qmask.iq & BIT_ULL(i)))                        │                          if (!(oct_dev->io_qmask.iq & BIT_ULL(i)))                       
                                continue;                                                │                                  continue;                                               
                        for (j = 0; j < num_iq_stats; j++) {                             │                          for (j = 0; j < num_iq_stats; j++) {                            
                                sprintf(data, "tx-%d-%s", i,                             │                                  sprintf(data, "tx-%d-%s", i,                            
                                        oct_iq_stats_strings[j]);                        │                                          oct_iq_stats_strings[j]);                       
                                data += ETH_GSTRING_LEN;                                 │                                  data += ETH_GSTRING_LEN;                                
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                num_oq_stats = ARRAY_SIZE(oct_droq_stats_strings);                       │                  num_oq_stats = ARRAY_SIZE(oct_droq_stats_strings);                      
                for (i = 0; i < MAX_OCTEON_OUTPUT_QUEUES(oct_dev); i++) {                │                  for (i = 0; i < MAX_OCTEON_OUTPUT_QUEUES(oct_dev); i++) {               
                        if (!(oct_dev->io_qmask.oq & BIT_ULL(i)))                        │                          if (!(oct_dev->io_qmask.oq & BIT_ULL(i)))                       
                                continue;                                                │                                  continue;                                               
                        for (j = 0; j < num_oq_stats; j++) {                             │                          for (j = 0; j < num_oq_stats; j++) {                            
                                sprintf(data, "rx-%d-%s", i,                             │                                  sprintf(data, "rx-%d-%s", i,                            
                                        oct_droq_stats_strings[j]);                      │                                          oct_droq_stats_strings[j]);                     
                                data += ETH_GSTRING_LEN;                                 │                                  data += ETH_GSTRING_LEN;                                
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
                break;                                                                   │                  break;                                                                  
                                                                                         │                                                                                          
        case ETH_SS_PRIV_FLAGS:                                                          │          case ETH_SS_PRIV_FLAGS:                                                         
                lio_get_priv_flags_strings(lio, data);                                   │                  lio_get_priv_flags_strings(lio, data);                                  
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                netif_info(lio, drv, lio->netdev, "Unknown Stringset !!\n");             │                  netif_info(lio, drv, lio->netdev, "Unknown Stringset !!\n");            
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_ptp.c:642                                      │ linux/drivers/net/ethernet/intel/igb/igb_ptp.c:968                                       
                                                                                         │                                                                                          
        struct sk_buff *skb = adapter->ptp_tx_skb;                                       │          struct sk_buff *skb = adapter->ptp_tx_skb;                                      
                                                                                         │          struct e1000_hw *hw = &adapter->hw;                                             
        struct skb_shared_hwtstamps shhwtstamps;                                         │          struct skb_shared_hwtstamps shhwtstamps;                                        
        struct igc_hw *hw = &adapter->hw;                                                │                                                                                          
        int adjust = 0;                                                                  │                                                                                          
        u64 regval;                                                                      │          u64 regval;                                                                     
                                                                                         │          int adjust = 0;                                                                 
                                                                                         │                                                                                          
        if (WARN_ON_ONCE(!skb))                                                          │          regval = rd32(E1000_TXSTMPL);                                                   
                return;                                                                  │          regval |= (u64)rd32(E1000_TXSTMPH) << 32;                                       
                                                                                         │                                                                                          
        regval = rd32(IGC_TXSTMPL);                                                      │                                                                                          
        regval |= (u64)rd32(IGC_TXSTMPH) << 32;                                          │                                                                                          
        igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval);                       │                                                                                          
                                                                                         │                                                                                          
        switch (adapter->link_speed) {                                                   │          igb_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval);                      
        case SPEED_10:                                                                   │          /* adjust timestamp for the TX latency based on link speed */                   
                adjust = IGC_I225_TX_LATENCY_10;                                         │          if (adapter->hw.mac.type == e1000_i210) {                                       
                break;                                                                   │                  switch (adapter->link_speed) {                                          
        case SPEED_100:                                                                  │                  case SPEED_10:                                                          
                adjust = IGC_I225_TX_LATENCY_100;                                        │                          adjust = IGB_I210_TX_LATENCY_10;                                
                break;                                                                   │                          break;                                                          
        case SPEED_1000:                                                                 │                  case SPEED_100:                                                         
                adjust = IGC_I225_TX_LATENCY_1000;                                       │                          adjust = IGB_I210_TX_LATENCY_100;                               
                break;                                                                   │                          break;                                                          
        case SPEED_2500:                                                                 │                  case SPEED_1000:                                                        
                adjust = IGC_I225_TX_LATENCY_2500;                                       │                          adjust = IGB_I210_TX_LATENCY_1000;                              
                break;                                                                   │                          break;                                                          
                                                                                         │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        shhwtstamps.hwtstamp =                                                           │          shhwtstamps.hwtstamp =                                                          
                ktime_add_ns(shhwtstamps.hwtstamp, adjust);                              │                  ktime_add_ns(shhwtstamps.hwtstamp, adjust);                             
                                                                                         │                                                                                          
        /* Clear the lock early before calling skb_tstamp_tx so that                     │          /* Clear the lock early before calling skb_tstamp_tx so that                    
         * applications are not woken up before the lock bit is clear. We use            │           * applications are not woken up before the lock bit is clear. We use           
         * a copy of the skb pointer to ensure other threads can't change it             │           * a copy of the skb pointer to ensure other threads can't change it            
         * while we're notifying the stack.                                              │           * while we're notifying the stack.                                             
         */                                                                              │           */                                                                             
        adapter->ptp_tx_skb = NULL;                                                      │          adapter->ptp_tx_skb = NULL;                                                     
        clear_bit_unlock(__IGC_PTP_TX_IN_PROGRESS, &adapter->state);                     │          clear_bit_unlock(__IGB_PTP_TX_IN_PROGRESS, &adapter->state);                    
                                                                                         │                                                                                          
        /* Notify the stack and free the skb after we've unlocked */                     │          /* Notify the stack and free the skb after we've unlocked */                    
        skb_tstamp_tx(skb, &shhwtstamps);                                                │          skb_tstamp_tx(skb, &shhwtstamps);                                               
        dev_kfree_skb_any(skb);                                                          │          dev_kfree_skb_any(skb);                                                         
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:2343                                 │ linux/drivers/net/ethernet/intel/igc/igc_ethtool.c:763                                   
                                                                                         │                                                                                          
        struct igb_adapter *adapter = netdev_priv(netdev);                               │          struct igc_adapter *adapter = netdev_priv(netdev);                              
        u8 *p = data;                                                                    │          u8 *p = data;                                                                   
        int i;                                                                           │          int i;                                                                          
                                                                                         │                                                                                          
        switch (stringset) {                                                             │          switch (stringset) {                                                            
        case ETH_SS_TEST:                                                                │          case ETH_SS_TEST:                                                               
                memcpy(data, igb_gstrings_test, sizeof(igb_gstrings_test));              │                  memcpy(data, *igc_gstrings_test,                                        
                                                                                         │                         IGC_TEST_LEN * ETH_GSTRING_LEN);                                 
                break;                                                                   │                  break;                                                                  
        case ETH_SS_STATS:                                                               │          case ETH_SS_STATS:                                                              
                for (i = 0; i < IGB_GLOBAL_STATS_LEN; i++)                               │                  for (i = 0; i < IGC_GLOBAL_STATS_LEN; i++)                              
                                                                                         │                          ethtool_sprintf(&p, igc_gstrings_stats[i].stat_string);         
                                                                                         │                  for (i = 0; i < IGC_NETDEV_STATS_LEN; i++)                              
                        ethtool_sprintf(&p,                                              │                          ethtool_sprintf(&p,                                             
                                        igb_gstrings_stats[i].stat_string);              │                                          igc_gstrings_net_stats[i].stat_string);         
                for (i = 0; i < IGB_NETDEV_STATS_LEN; i++)                               │                                                                                          
                        ethtool_sprintf(&p,                                              │                                                                                          
                                        igb_gstrings_net_stats[i].stat_string);          │                                                                                          
                for (i = 0; i < adapter->num_tx_queues; i++) {                           │                  for (i = 0; i < adapter->num_tx_queues; i++) {                          
                        ethtool_sprintf(&p, "tx_queue_%u_packets", i);                   │                          ethtool_sprintf(&p, "tx_queue_%u_packets", i);                  
                        ethtool_sprintf(&p, "tx_queue_%u_bytes", i);                     │                          ethtool_sprintf(&p, "tx_queue_%u_bytes", i);                    
                        ethtool_sprintf(&p, "tx_queue_%u_restart", i);                   │                          ethtool_sprintf(&p, "tx_queue_%u_restart", i);                  
                }                                                                        │                  }                                                                       
                for (i = 0; i < adapter->num_rx_queues; i++) {                           │                  for (i = 0; i < adapter->num_rx_queues; i++) {                          
                        ethtool_sprintf(&p, "rx_queue_%u_packets", i);                   │                          ethtool_sprintf(&p, "rx_queue_%u_packets", i);                  
                        ethtool_sprintf(&p, "rx_queue_%u_bytes", i);                     │                          ethtool_sprintf(&p, "rx_queue_%u_bytes", i);                    
                        ethtool_sprintf(&p, "rx_queue_%u_drops", i);                     │                          ethtool_sprintf(&p, "rx_queue_%u_drops", i);                    
                        ethtool_sprintf(&p, "rx_queue_%u_csum_err", i);                  │                          ethtool_sprintf(&p, "rx_queue_%u_csum_err", i);                 
                        ethtool_sprintf(&p, "rx_queue_%u_alloc_failed", i);              │                          ethtool_sprintf(&p, "rx_queue_%u_alloc_failed", i);             
                }                                                                        │                  }                                                                       
                /* BUG_ON(p - data != IGB_STATS_LEN * ETH_GSTRING_LEN); */               │                  /* BUG_ON(p - data != IGC_STATS_LEN * ETH_GSTRING_LEN); */              
                break;                                                                   │                  break;                                                                  
        case ETH_SS_PRIV_FLAGS:                                                          │          case ETH_SS_PRIV_FLAGS:                                                         
                memcpy(data, igb_priv_flags_strings,                                     │                  memcpy(data, igc_priv_flags_strings,                                    
                       IGB_PRIV_FLAGS_STR_LEN * ETH_GSTRING_LEN);                        │                         IGC_PRIV_FLAGS_STR_LEN * ETH_GSTRING_LEN);                       
                break;                                                                   │                  break;                                                                  
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/falcon/rx.c:649                                          │ linux/drivers/net/ethernet/sfc/rx.c:361                                                  
                                                                                         │                                                                                          
        struct ef4_nic *efx = channel->efx;                                              │          struct efx_nic *efx = channel->efx;                                             
        struct ef4_rx_buffer *rx_buf =                                                   │          struct efx_rx_buffer *rx_buf =                                                  
                ef4_rx_buffer(&channel->rx_queue, channel->rx_pkt_index);                │                  efx_rx_buffer(&channel->rx_queue, channel->rx_pkt_index);               
        u8 *eh = ef4_rx_buf_va(rx_buf);                                                  │          u8 *eh = efx_rx_buf_va(rx_buf);                                                 
                                                                                         │                                                                                          
        /* Read length from the prefix if necessary.  This already                       │          /* Read length from the prefix if necessary.  This already                      
         * excludes the length of the prefix itself.                                     │           * excludes the length of the prefix itself.                                    
         */                                                                              │           */                                                                             
        if (rx_buf->flags & EF4_RX_PKT_PREFIX_LEN)                                       │          if (rx_buf->flags & EFX_RX_PKT_PREFIX_LEN)                                      
                rx_buf->len = le16_to_cpup((__le16 *)                                    │                  rx_buf->len = le16_to_cpup((__le16 *)                                   
                                           (eh + efx->rx_packet_len_offset));            │                                             (eh + efx->rx_packet_len_offset));           
                                                                                         │                                                                                          
        /* If we're in loopback test, then pass the packet directly to the               │          /* If we're in loopback test, then pass the packet directly to the              
         * loopback layer, and free the rx_buf here                                      │           * loopback layer, and free the rx_buf here                                     
         */                                                                              │           */                                                                             
        if (unlikely(efx->loopback_selftest)) {                                          │          if (unlikely(efx->loopback_selftest)) {                                         
                struct ef4_rx_queue *rx_queue;                                           │                  struct efx_rx_queue *rx_queue;                                          
                                                                                         │                                                                                          
                ef4_loopback_rx_packet(efx, eh, rx_buf->len);                            │                  efx_loopback_rx_packet(efx, eh, rx_buf->len);                           
                rx_queue = ef4_channel_get_rx_queue(channel);                            │                  rx_queue = efx_channel_get_rx_queue(channel);                           
                ef4_free_rx_buffers(rx_queue, rx_buf,                                    │                  efx_free_rx_buffers(rx_queue, rx_buf,                                   
                                    channel->rx_pkt_n_frags);                            │                                      channel->rx_pkt_n_frags);                           
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          if (!efx_do_xdp(efx, channel, rx_buf, &eh))                                     
                                                                                         │                  goto out;                                                               
                                                                                         │                                                                                          
        if (unlikely(!(efx->net_dev->features & NETIF_F_RXCSUM)))                        │          if (unlikely(!(efx->net_dev->features & NETIF_F_RXCSUM)))                       
                rx_buf->flags &= ~EF4_RX_PKT_CSUMMED;                                    │                  rx_buf->flags &= ~EFX_RX_PKT_CSUMMED;                                   
                                                                                         │                                                                                          
        if ((rx_buf->flags & EF4_RX_PKT_TCP) && !channel->type->receive_skb)             │          if ((rx_buf->flags & EFX_RX_PKT_TCP) && !channel->type->receive_skb)            
                ef4_rx_packet_gro(channel, rx_buf, channel->rx_pkt_n_frags, eh);         │                  efx_rx_packet_gro(channel, rx_buf, channel->rx_pkt_n_frags, eh, 0);     
        else                                                                             │          else                                                                            
                ef4_rx_deliver(channel, eh, rx_buf, channel->rx_pkt_n_frags);            │                  efx_rx_deliver(channel, eh, rx_buf, channel->rx_pkt_n_frags);           
out:                                                                                     │  out:                                                                                    
        channel->rx_pkt_n_frags = 0;                                                     │          channel->rx_pkt_n_frags = 0;                                                    
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwmac5.c:509                                  │ linux/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:1116                           
                                                                                         │                                                                                          
        u32 tnsec = readl(ioaddr + MAC_PPSx_TARGET_TIME_NSEC(index));                    │          u32 tnsec = readl(ioaddr + XGMAC_PPSx_TARGET_TIME_NSEC(index));                 
        u32 val = readl(ioaddr + MAC_PPS_CONTROL);                                       │          u32 val = readl(ioaddr + XGMAC_PPS_CONTROL);                                    
        u64 period;                                                                      │          u64 period;                                                                     
                                                                                         │                                                                                          
        if (!cfg->available)                                                             │          if (!cfg->available)                                                            
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        if (tnsec & TRGTBUSY0)                                                           │          if (tnsec & XGMAC_TRGTBUSY0)                                                    
                return -EBUSY;                                                           │                  return -EBUSY;                                                          
        if (!sub_second_inc || !systime_flags)                                           │          if (!sub_second_inc || !systime_flags)                                          
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        val &= ~PPSx_MASK(index);                                                        │          val &= ~XGMAC_PPSx_MASK(index);                                                 
                                                                                         │                                                                                          
        if (!enable) {                                                                   │          if (!enable) {                                                                  
                val |= PPSCMDx(index, 0x5);                                              │                  val |= XGMAC_PPSCMDx(index, XGMAC_PPSCMD_STOP);                         
                val |= PPSEN0;                                                           │                  writel(val, ioaddr + XGMAC_PPS_CONTROL);                                
                writel(val, ioaddr + MAC_PPS_CONTROL);                                   │                                                                                          
                return 0;                                                                │                  return 0;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        val |= PPSCMDx(index, 0x2);                                                      │          val |= XGMAC_PPSCMDx(index, XGMAC_PPSCMD_START);                                
        val |= TRGTMODSELx(index, 0x2);                                                  │          val |= XGMAC_TRGTMODSELx(index, XGMAC_PPSCMD_START);                            
        val |= PPSEN0;                                                                   │          val |= XGMAC_PPSEN0;                                                            
                                                                                         │                                                                                          
        writel(cfg->start.tv_sec, ioaddr + MAC_PPSx_TARGET_TIME_SEC(index));             │          writel(cfg->start.tv_sec, ioaddr + XGMAC_PPSx_TARGET_TIME_SEC(index));          
                                                                                         │                                                                                          
        if (!(systime_flags & PTP_TCR_TSCTRLSSR))                                        │          if (!(systime_flags & PTP_TCR_TSCTRLSSR))                                       
                cfg->start.tv_nsec = (cfg->start.tv_nsec * 1000) / 465;                  │                  cfg->start.tv_nsec = (cfg->start.tv_nsec * 1000) / 465;                 
        writel(cfg->start.tv_nsec, ioaddr + MAC_PPSx_TARGET_TIME_NSEC(index));           │          writel(cfg->start.tv_nsec, ioaddr + XGMAC_PPSx_TARGET_TIME_NSEC(index));        
                                                                                         │                                                                                          
        period = cfg->period.tv_sec * 1000000000;                                        │          period = cfg->period.tv_sec * 1000000000;                                       
        period += cfg->period.tv_nsec;                                                   │          period += cfg->period.tv_nsec;                                                  
                                                                                         │                                                                                          
        do_div(period, sub_second_inc);                                                  │          do_div(period, sub_second_inc);                                                 
                                                                                         │                                                                                          
        if (period <= 1)                                                                 │          if (period <= 1)                                                                
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        writel(period - 1, ioaddr + MAC_PPSx_INTERVAL(index));                           │          writel(period - 1, ioaddr + XGMAC_PPSx_INTERVAL(index));                        
                                                                                         │                                                                                          
        period >>= 1;                                                                    │          period >>= 1;                                                                   
        if (period <= 1)                                                                 │          if (period <= 1)                                                                
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        writel(period - 1, ioaddr + MAC_PPSx_WIDTH(index));                              │          writel(period - 1, ioaddr + XGMAC_PPSx_WIDTH(index));                           
                                                                                         │                                                                                          
        /* Finally, activate it */                                                       │          /* Finally, activate it */                                                      
        writel(val, ioaddr + MAC_PPS_CONTROL);                                           │          writel(val, ioaddr + XGMAC_PPS_CONTROL);                                        
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c:661                            │ linux/drivers/net/ethernet/cavium/liquidio/lio_main.c:1218                               
                                                                                         │                                                                                          
        struct net_device *netdev = oct->props[ifidx].netdev;                            │          struct net_device *netdev = oct->props[ifidx].netdev;                           
        struct octeon_device_priv *oct_priv =                                            │          struct octeon_device_priv *oct_priv =                                           
                (struct octeon_device_priv *)oct->priv;                                  │                  (struct octeon_device_priv *)oct->priv;                                 
        struct napi_struct *napi, *n;                                                    │          struct napi_struct *napi, *n;                                                   
        struct lio *lio;                                                                 │          struct lio *lio;                                                                
                                                                                         │                                                                                          
        if (!netdev) {                                                                   │          if (!netdev) {                                                                  
                dev_err(&oct->pci_dev->dev, "%s No netdevice ptr for index %d\n",        │                  dev_err(&oct->pci_dev->dev, "%s No netdevice ptr for index %d\n",       
                        __func__, ifidx);                                                │                          __func__, ifidx);                                               
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        lio = GET_LIO(netdev);                                                           │          lio = GET_LIO(netdev);                                                          
                                                                                         │                                                                                          
        dev_dbg(&oct->pci_dev->dev, "NIC device cleanup\n");                             │          dev_dbg(&oct->pci_dev->dev, "NIC device cleanup\n");                            
                                                                                         │                                                                                          
        if (atomic_read(&lio->ifstate) & LIO_IFSTATE_RUNNING)                            │          if (atomic_read(&lio->ifstate) & LIO_IFSTATE_RUNNING)                           
                liquidio_stop(netdev);                                                   │                  liquidio_stop(netdev);                                                  
                                                                                         │                                                                                          
        if (oct->props[lio->ifidx].napi_enabled == 1) {                                  │          if (oct->props[lio->ifidx].napi_enabled == 1) {                                 
                list_for_each_entry_safe(napi, n, &netdev->napi_list, dev_list)          │                  list_for_each_entry_safe(napi, n, &netdev->napi_list, dev_list)         
                        napi_disable(napi);                                              │                          napi_disable(napi);                                             
                                                                                         │                                                                                          
                oct->props[lio->ifidx].napi_enabled = 0;                                 │                  oct->props[lio->ifidx].napi_enabled = 0;                                
                                                                                         │                                                                                          
                oct->droq[0]->ops.poll_mode = 0;                                         │                  if (OCTEON_CN23XX_PF(oct))                                              
                                                                                         │                          oct->droq[0]->ops.poll_mode = 0;                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Delete NAPI */                                                                │          /* Delete NAPI */                                                               
        list_for_each_entry_safe(napi, n, &netdev->napi_list, dev_list)                  │          list_for_each_entry_safe(napi, n, &netdev->napi_list, dev_list)                 
                netif_napi_del(napi);                                                    │                  netif_napi_del(napi);                                                   
                                                                                         │                                                                                          
        tasklet_enable(&oct_priv->droq_tasklet);                                         │          tasklet_enable(&oct_priv->droq_tasklet);                                        
                                                                                         │                                                                                          
        if (atomic_read(&lio->ifstate) & LIO_IFSTATE_REGISTERED)                         │          if (atomic_read(&lio->ifstate) & LIO_IFSTATE_REGISTERED)                        
                unregister_netdev(netdev);                                               │                  unregister_netdev(netdev);                                              
                                                                                         │                                                                                          
        cleanup_rx_oom_poll_fn(netdev);                                                  │          cleanup_sync_octeon_time_wq(netdev);                                            
                                                                                         │                                                                                          
        cleanup_link_status_change_wq(netdev);                                           │          cleanup_link_status_change_wq(netdev);                                          
                                                                                         │                                                                                          
                                                                                         │          cleanup_rx_oom_poll_fn(netdev);                                                 
                                                                                         │                                                                                          
        lio_delete_glists(lio);                                                          │          lio_delete_glists(lio);                                                         
                                                                                         │                                                                                          
        free_netdev(netdev);                                                             │          free_netdev(netdev);                                                            
                                                                                         │                                                                                          
        oct->props[ifidx].gmxport = -1;                                                  │          oct->props[ifidx].gmxport = -1;                                                 
                                                                                         │                                                                                          
        oct->props[ifidx].netdev = NULL;                                                 │          oct->props[ifidx].netdev = NULL;                                                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c:2017                               │ linux/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c:8676                                    
                                                                                         │                                                                                          
                /* something changed */                                                  │                  /* something changed */                                                 
                if (!link_ok && lc->link_ok) {                                           │                  if (!link_ok && lc->link_ok) {                                          
                        lc->link_down_rc = linkdnrc;                                     │                          lc->link_down_rc = linkdnrc;                                    
                        dev_warn_ratelimited(adapter->pdev_dev,                          │                          dev_warn_ratelimited(adapter->pdev_dev,                         
                                             "Port %d link down, reason: %s\n",          │                                               "Port %d link down, reason: %s\n",         
                                             pi->port_id,                                │                                               pi->tx_chan,                               
                                             t4vf_link_down_rc_str(linkdnrc));           │                                               t4_link_down_rc_str(linkdnrc));            
                }                                                                        │                  }                                                                       
                lc->link_ok = link_ok;                                                   │                  lc->link_ok = link_ok;                                                  
                lc->speed = speed;                                                       │                  lc->speed = speed;                                                      
                lc->advertised_fc = adv_fc;                                              │                  lc->advertised_fc = adv_fc;                                             
                lc->fc = fc;                                                             │                  lc->fc = fc;                                                            
                lc->fec = fec;                                                           │                  lc->fec = fec;                                                          
                                                                                         │                                                                                          
                lc->pcaps = pcaps;                                                       │                                                                                          
                lc->lpacaps = lpacaps;                                                   │                  lc->lpacaps = lpacaps;                                                  
                lc->acaps = acaps & ADVERT_MASK;                                         │                  lc->acaps = acaps & ADVERT_MASK;                                        
                                                                                         │                                                                                          
                /* If we're not physically capable of Auto-Negotiation, note             │                  /* If we're not physically capable of Auto-Negotiation, note            
                 * this as Auto-Negotiation disabled.  Otherwise, we track               │                   * this as Auto-Negotiation disabled.  Otherwise, we track              
                 * what Auto-Negotiation settings we have.  Note parallel                │                   * what Auto-Negotiation settings we have.  Note parallel               
                 * structure in init_link_config().                                      │                   * structure in t4_link_l1cfg_core() and init_link_config().            
                 */                                                                      │                   */                                                                     
                if (!(lc->pcaps & FW_PORT_CAP32_ANEG)) {                                 │                  if (!(lc->acaps & FW_PORT_CAP32_ANEG)) {                                
                        lc->autoneg = AUTONEG_DISABLE;                                   │                          lc->autoneg = AUTONEG_DISABLE;                                  
                } else if (lc->acaps & FW_PORT_CAP32_ANEG) {                             │                  } else if (lc->acaps & FW_PORT_CAP32_ANEG) {                            
                        lc->autoneg = AUTONEG_ENABLE;                                    │                          lc->autoneg = AUTONEG_ENABLE;                                   
                } else {                                                                 │                  } else {                                                                
                        /* When Autoneg is disabled, user needs to set                   │                          /* When Autoneg is disabled, user needs to set                  
                         * single speed.                                                 │                           * single speed.                                                
                         * Similar to cxgb4_ethtool.c: set_link_ksettings                │                           * Similar to cxgb4_ethtool.c: set_link_ksettings               
                         */                                                              │                           */                                                             
                        lc->acaps = 0;                                                   │                          lc->acaps = 0;                                                  
                        lc->speed_caps = fwcap_to_speed(acaps);                          │                          lc->speed_caps = fwcap_to_fwspeed(acaps);                       
                        lc->autoneg = AUTONEG_DISABLE;                                   │                          lc->autoneg = AUTONEG_DISABLE;                                  
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                t4vf_os_link_changed(adapter, pi->pidx, link_ok);                        │                  t4_os_link_changed(adapter, pi->port_id, link_ok);                      
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ice/ice_common.c:4072                                  │ linux/drivers/net/ethernet/intel/ice/ice_common.c:4123                                   
                                                                                         │                                                                                          
        u32 src_dword, mask;                                                             │          u64 src_qword, mask;                                                            
        __le32 dest_dword;                                                               │          __le64 dest_qword;                                                              
        u8 *from, *dest;                                                                 │          u8 *from, *dest;                                                                
        u16 shift_width;                                                                 │          u16 shift_width;                                                                
                                                                                         │                                                                                          
        /* copy from the next struct field */                                            │          /* copy from the next struct field */                                           
        from = src_ctx + ce_info->offset;                                                │          from = src_ctx + ce_info->offset;                                               
                                                                                         │                                                                                          
        /* prepare the bits and mask */                                                  │          /* prepare the bits and mask */                                                 
        shift_width = ce_info->lsb % 8;                                                  │          shift_width = ce_info->lsb % 8;                                                 
                                                                                         │                                                                                          
        /* if the field width is exactly 32 on an x86 machine, then the shift            │          /* if the field width is exactly 64 on an x86 machine, then the shift           
         * operation will not work because the SHL instructions count is masked          │           * operation will not work because the SHL instructions count is masked         
         * to 5 bits so the shift will do nothing                                        │           * to 6 bits so the shift will do nothing                                       
         */                                                                              │           */                                                                             
        if (ce_info->width < 32)                                                         │          if (ce_info->width < 64)                                                        
                mask = BIT(ce_info->width) - 1;                                          │                  mask = BIT_ULL(ce_info->width) - 1;                                     
        else                                                                             │          else                                                                            
                mask = (u32)~0;                                                          │                  mask = (u64)~0;                                                         
                                                                                         │                                                                                          
        /* don't swizzle the bits until after the mask because the mask bits             │          /* don't swizzle the bits until after the mask because the mask bits            
         * will be in a different bit position on big endian machines                    │           * will be in a different bit position on big endian machines                   
         */                                                                              │           */                                                                             
        src_dword = *(u32 *)from;                                                        │          src_qword = *(u64 *)from;                                                       
        src_dword &= mask;                                                               │          src_qword &= mask;                                                              
                                                                                         │                                                                                          
        /* shift to correct alignment */                                                 │          /* shift to correct alignment */                                                
        mask <<= shift_width;                                                            │          mask <<= shift_width;                                                           
        src_dword <<= shift_width;                                                       │          src_qword <<= shift_width;                                                      
                                                                                         │                                                                                          
        /* get the current bits from the target bit string */                            │          /* get the current bits from the target bit string */                           
        dest = dest_ctx + (ce_info->lsb / 8);                                            │          dest = dest_ctx + (ce_info->lsb / 8);                                           
                                                                                         │                                                                                          
        memcpy(&dest_dword, dest, sizeof(dest_dword));                                   │          memcpy(&dest_qword, dest, sizeof(dest_qword));                                  
                                                                                         │                                                                                          
        dest_dword &= ~(cpu_to_le32(mask));     /* get the bits not changing */          │          dest_qword &= ~(cpu_to_le64(mask));     /* get the bits not changing */         
        dest_dword |= cpu_to_le32(src_dword);   /* add in the new bits */                │          dest_qword |= cpu_to_le64(src_qword);   /* add in the new bits */               
                                                                                         │                                                                                          
        /* put it all back */                                                            │          /* put it all back */                                                           
        memcpy(dest, &dest_dword, sizeof(dest_dword));                                   │          memcpy(dest, &dest_qword, sizeof(dest_qword));                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/i2c.c:183                                     │ linux/drivers/net/ethernet/mellanox/mlxsw/i2c.c:229                                      
                                                                                         │                                                                                          
        __be32 push_cmd_buf[MLXSW_I2C_PUSH_CMD_SIZE / 4] = {                             │          __be32 push_cmd_buf[MLXSW_I2C_PUSH_CMD_SIZE / 4] = {                            
                0, cpu_to_be32(MLXSW_I2C_PUSH_IMM_CMD)                                   │                  0, cpu_to_be32(MLXSW_I2C_PUSH_EVENT_CMD)                                
        };                                                                               │          };                                                                              
        __be32 prep_cmd_buf[MLXSW_I2C_PREP_SIZE / 4] = {                                 │          __be32 prep_cmd_buf[MLXSW_I2C_PREP_SIZE / 4] = {                                
                0, 0, 0, 0, 0, 0,                                                        │                  0, 0, 0, 0, 0, 0,                                                       
                cpu_to_be32(client->adapter->nr & 0xffff),                               │                  cpu_to_be32(client->adapter->nr & 0xffff),                              
                cpu_to_be32(MLXSW_I2C_SET_IMM_CMD)                                       │                  cpu_to_be32(MLXSW_I2C_SET_EVENT_CMD)                                    
        };                                                                               │          };                                                                              
        struct i2c_msg push_cmd =                                                        │          struct i2c_msg push_cmd =                                                       
                MLXSW_I2C_WRITE_MSG(client, push_cmd_buf,                                │                  MLXSW_I2C_WRITE_MSG(client, push_cmd_buf,                               
                                    MLXSW_I2C_PUSH_CMD_SIZE);                            │                                      MLXSW_I2C_PUSH_CMD_SIZE);                           
        struct i2c_msg prep_cmd =                                                        │          struct i2c_msg prep_cmd =                                                       
                MLXSW_I2C_WRITE_MSG(client, prep_cmd_buf, MLXSW_I2C_PREP_SIZE);          │                  MLXSW_I2C_WRITE_MSG(client, prep_cmd_buf, MLXSW_I2C_PREP_SIZE);         
                                                                                         │          u8 status;                                                                      
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (!immediate) {                                                                │          push_cmd_buf[1] = cpu_to_be32(MLXSW_I2C_PUSH_EVENT_CMD | opcode);               
                push_cmd_buf[1] = cpu_to_be32(MLXSW_I2C_PUSH_CMD);                       │          prep_cmd_buf[3] = cpu_to_be32(in_mod);                                          
                prep_cmd_buf[7] = cpu_to_be32(MLXSW_I2C_SET_CMD);                        │          prep_cmd_buf[7] = cpu_to_be32(MLXSW_I2C_GO_BIT | opcode);                       
        }                                                                                │                                                                                          
        mlxsw_i2c_set_slave_addr((u8 *)prep_cmd_buf,                                     │          mlxsw_i2c_set_slave_addr((u8 *)prep_cmd_buf,                                    
                                 MLXSW_I2C_CIR2_BASE);                                   │                                   MLXSW_I2C_CIR2_BASE);                                  
        mlxsw_i2c_set_slave_addr((u8 *)push_cmd_buf,                                     │          mlxsw_i2c_set_slave_addr((u8 *)push_cmd_buf,                                    
                                 MLXSW_I2C_CIR2_OFF_STATUS);                             │                                   MLXSW_I2C_CIR2_OFF_STATUS);                            
                                                                                         │                                                                                          
        /* Prepare Command Interface Register for transaction */                         │          /* Prepare Command Interface Register for transaction */                        
        err = i2c_transfer(client->adapter, &prep_cmd, 1);                               │          err = i2c_transfer(client->adapter, &prep_cmd, 1);                              
        if (err < 0)                                                                     │          if (err < 0)                                                                    
                return err;                                                              │                  return err;                                                             
        else if (err != 1)                                                               │          else if (err != 1)                                                              
                return -EIO;                                                             │                  return -EIO;                                                            
                                                                                         │                                                                                          
        /* Write out Command Interface Register GO bit to push transaction */            │          /* Write out Command Interface Register GO bit to push transaction */           
        err = i2c_transfer(client->adapter, &push_cmd, 1);                               │          err = i2c_transfer(client->adapter, &push_cmd, 1);                              
        if (err < 0)                                                                     │          if (err < 0)                                                                    
                return err;                                                              │                  return err;                                                             
        else if (err != 1)                                                               │          else if (err != 1)                                                              
                return -EIO;                                                             │                  return -EIO;                                                            
                                                                                         │                                                                                          
                                                                                         │          /* Wait until go bit is cleared. */                                             
                                                                                         │          err = mlxsw_i2c_wait_go_bit(client, mlxsw_i2c, &status);                        
                                                                                         │          if (err) {                                                                      
                                                                                         │                  dev_err(&client->dev, "HW semaphore is not released");                  
                                                                                         │                  return err;                                                             
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          /* Validate transaction completion status. */                                   
                                                                                         │          if (status) {                                                                   
                                                                                         │                  dev_err(&client->dev, "Bad transaction completion status %x\n",         
                                                                                         │                          status);                                                        
                                                                                         │                  return -EIO;                                                            
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amazon/ena/ena_netdev.c:2362                                 │ linux/drivers/net/ethernet/amazon/ena/ena_netdev.c:2430                                  
                                                                                         │                                                                                          
        struct ena_com_create_io_ctx ctx;                                                │                                                                                          
        struct ena_com_dev *ena_dev;                                                     │          struct ena_com_dev *ena_dev;                                                    
        struct ena_ring *tx_ring;                                                        │          struct ena_com_create_io_ctx ctx;                                               
                                                                                         │          struct ena_ring *rx_ring;                                                       
        u32 msix_vector;                                                                 │          u32 msix_vector;                                                                
        u16 ena_qid;                                                                     │          u16 ena_qid;                                                                    
        int rc;                                                                          │          int rc;                                                                         
                                                                                         │                                                                                          
        ena_dev = adapter->ena_dev;                                                      │          ena_dev = adapter->ena_dev;                                                     
                                                                                         │                                                                                          
        tx_ring = &adapter->tx_ring[qid];                                                │          rx_ring = &adapter->rx_ring[qid];                                               
        msix_vector = ENA_IO_IRQ_IDX(qid);                                               │          msix_vector = ENA_IO_IRQ_IDX(qid);                                              
        ena_qid = ENA_IO_TXQ_IDX(qid);                                                   │          ena_qid = ENA_IO_RXQ_IDX(qid);                                                  
                                                                                         │                                                                                          
        memset(&ctx, 0x0, sizeof(ctx));                                                  │          memset(&ctx, 0x0, sizeof(ctx));                                                 
                                                                                         │                                                                                          
        ctx.direction = ENA_COM_IO_QUEUE_DIRECTION_TX;                                   │                                                                                          
        ctx.qid = ena_qid;                                                               │          ctx.qid = ena_qid;                                                              
        ctx.mem_queue_type = ena_dev->tx_mem_queue_type;                                 │          ctx.direction = ENA_COM_IO_QUEUE_DIRECTION_RX;                                  
                                                                                         │          ctx.mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST;                           
        ctx.msix_vector = msix_vector;                                                   │          ctx.msix_vector = msix_vector;                                                  
        ctx.queue_size = tx_ring->ring_size;                                             │          ctx.queue_size = rx_ring->ring_size;                                            
        ctx.numa_node = cpu_to_node(tx_ring->cpu);                                       │          ctx.numa_node = cpu_to_node(rx_ring->cpu);                                      
                                                                                         │                                                                                          
        rc = ena_com_create_io_queue(ena_dev, &ctx);                                     │          rc = ena_com_create_io_queue(ena_dev, &ctx);                                    
        if (rc) {                                                                        │          if (rc) {                                                                       
                netif_err(adapter, ifup, adapter->netdev,                                │                  netif_err(adapter, ifup, adapter->netdev,                               
                          "Failed to create I/O TX queue num %d rc: %d\n",               │                            "Failed to create I/O RX queue num %d rc: %d\n",              
                          qid, rc);                                                      │                            qid, rc);                                                     
                return rc;                                                               │                  return rc;                                                              
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        rc = ena_com_get_io_handlers(ena_dev, ena_qid,                                   │          rc = ena_com_get_io_handlers(ena_dev, ena_qid,                                  
                                     &tx_ring->ena_com_io_sq,                            │                                       &rx_ring->ena_com_io_sq,                           
                                     &tx_ring->ena_com_io_cq);                           │                                       &rx_ring->ena_com_io_cq);                          
        if (rc) {                                                                        │          if (rc) {                                                                       
                netif_err(adapter, ifup, adapter->netdev,                                │                  netif_err(adapter, ifup, adapter->netdev,                               
                          "Failed to get TX queue handlers. TX queue num %d rc: %d\n",   │                            "Failed to get RX queue handlers. RX queue num %d rc: %d\n",  
                          qid, rc);                                                      │                            qid, rc);                                                     
                ena_com_destroy_io_queue(ena_dev, ena_qid);                              │                  goto err;                                                               
                return rc;                                                               │                                                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ena_com_update_numa_node(tx_ring->ena_com_io_cq, ctx.numa_node);                 │          ena_com_update_numa_node(rx_ring->ena_com_io_cq, ctx.numa_node);                
                                                                                         │                                                                                          
                                                                                         │          return rc;                                                                      
                                                                                         │  err:                                                                                    
                                                                                         │          ena_com_destroy_io_queue(ena_dev, ena_qid);                                     
        return rc;                                                                       │          return rc;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c:817                                │ linux/drivers/net/ethernet/intel/i40e/i40e_lan_hmc.c:869                                 
                                                                                         │                                                                                          
        u32 src_dword, mask;                                                             │          u64 src_qword, mask;                                                            
        u8 *from, *dest;                                                                 │          u8 *from, *dest;                                                                
        u16 shift_width;                                                                 │          u16 shift_width;                                                                
        __le32 dest_dword;                                                               │          __le64 dest_qword;                                                              
                                                                                         │                                                                                          
        /* copy from the next struct field */                                            │          /* copy from the next struct field */                                           
        from = src + ce_info->offset;                                                    │          from = src + ce_info->offset;                                                   
                                                                                         │                                                                                          
        /* prepare the bits and mask */                                                  │          /* prepare the bits and mask */                                                 
        shift_width = ce_info->lsb % 8;                                                  │          shift_width = ce_info->lsb % 8;                                                 
                                                                                         │                                                                                          
        /* if the field width is exactly 32 on an x86 machine, then the shift            │          /* if the field width is exactly 64 on an x86 machine, then the shift           
         * operation will not work because the SHL instructions count is masked          │           * operation will not work because the SHL instructions count is masked         
         * to 5 bits so the shift will do nothing                                        │           * to 6 bits so the shift will do nothing                                       
         */                                                                              │           */                                                                             
        if (ce_info->width < 32)                                                         │          if (ce_info->width < 64)                                                        
                mask = BIT(ce_info->width) - 1;                                          │                  mask = BIT_ULL(ce_info->width) - 1;                                     
        else                                                                             │          else                                                                            
                mask = ~(u32)0;                                                          │                  mask = ~(u64)0;                                                         
                                                                                         │                                                                                          
        /* don't swizzle the bits until after the mask because the mask bits             │          /* don't swizzle the bits until after the mask because the mask bits            
         * will be in a different bit position on big endian machines                    │           * will be in a different bit position on big endian machines                   
         */                                                                              │           */                                                                             
        src_dword = *(u32 *)from;                                                        │          src_qword = *(u64 *)from;                                                       
        src_dword &= mask;                                                               │          src_qword &= mask;                                                              
                                                                                         │                                                                                          
        /* shift to correct alignment */                                                 │          /* shift to correct alignment */                                                
        mask <<= shift_width;                                                            │          mask <<= shift_width;                                                           
        src_dword <<= shift_width;                                                       │          src_qword <<= shift_width;                                                      
                                                                                         │                                                                                          
        /* get the current bits from the target bit string */                            │          /* get the current bits from the target bit string */                           
        dest = hmc_bits + (ce_info->lsb / 8);                                            │          dest = hmc_bits + (ce_info->lsb / 8);                                           
                                                                                         │                                                                                          
        memcpy(&dest_dword, dest, sizeof(dest_dword));                                   │          memcpy(&dest_qword, dest, sizeof(dest_qword));                                  
                                                                                         │                                                                                          
        dest_dword &= ~(cpu_to_le32(mask));     /* get the bits not changing */          │          dest_qword &= ~(cpu_to_le64(mask));     /* get the bits not changing */         
        dest_dword |= cpu_to_le32(src_dword);   /* add in the new bits */                │          dest_qword |= cpu_to_le64(src_qword);   /* add in the new bits */               
                                                                                         │                                                                                          
        /* put it all back */                                                            │          /* put it all back */                                                           
        memcpy(dest, &dest_dword, sizeof(dest_dword));                                   │          memcpy(dest, &dest_qword, sizeof(dest_qword));                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:1132                              │ linux/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:1075                               
                                                                                         │                                                                                          
        struct mvpp2_bm_pool *new_pool = &port->priv->bm_pools[pool];                    │          struct mvpp2_bm_pool *new_pool = &port->priv->bm_pools[pool];                   
        int num;                                                                         │          int num;                                                                        
                                                                                         │                                                                                          
        if (pool > port->nrxqs * 2) {                                                    │          if ((port->priv->percpu_pools && pool > mvpp2_get_nrxqs(port->priv) * 2) ||     
                                                                                         │              (!port->priv->percpu_pools && pool >= MVPP2_BM_POOLS_NUM)) {                
                netdev_err(port->dev, "Invalid pool %d\n", pool);                        │                  netdev_err(port->dev, "Invalid pool %d\n", pool);                       
                return NULL;                                                             │                  return NULL;                                                            
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Allocate buffers in case BM pool is used as long pool, but packet             │          /* Allocate buffers in case BM pool is used as long pool, but packet            
         * size doesn't match MTU or BM pool hasn't being used yet                       │           * size doesn't match MTU or BM pool hasn't being used yet                      
         */                                                                              │           */                                                                             
        if (new_pool->pkt_size == 0) {                                                   │          if (new_pool->pkt_size == 0) {                                                  
                int pkts_num;                                                            │                  int pkts_num;                                                           
                                                                                         │                                                                                          
                /* Set default buffer number or free all the buffers in case             │                  /* Set default buffer number or free all the buffers in case            
                 * the pool is not empty                                                 │                   * the pool is not empty                                                
                 */                                                                      │                   */                                                                     
                pkts_num = new_pool->buf_num;                                            │                  pkts_num = new_pool->buf_num;                                           
                if (pkts_num == 0)                                                       │                  if (pkts_num == 0) {                                                    
                        pkts_num = mvpp2_pools[type].buf_num;                            │                          if (port->priv->percpu_pools) {                                 
                else                                                                     │                                  if (pool < port->nrxqs)                                 
                                                                                         │                                          pkts_num = mvpp2_pools[MVPP2_BM_SHORT].buf_num; 
                                                                                         │                                  else                                                    
                                                                                         │                                          pkts_num = mvpp2_pools[MVPP2_BM_LONG].buf_num;  
                                                                                         │                          } else {                                                        
                                                                                         │                                  pkts_num = mvpp2_pools[pool].buf_num;                   
                                                                                         │                          }                                                               
                                                                                         │                  } else {                                                                
                        mvpp2_bm_bufs_free(port->dev->dev.parent,                        │                          mvpp2_bm_bufs_free(port->dev->dev.parent,                       
                                           port->priv, new_pool, pkts_num);              │                                             port->priv, new_pool, pkts_num);             
                                                                                         │                  }                                                                       
                                                                                         │                                                                                          
                new_pool->pkt_size = pkt_size;                                           │                  new_pool->pkt_size = pkt_size;                                          
                new_pool->frag_size =                                                    │                  new_pool->frag_size =                                                   
                        SKB_DATA_ALIGN(MVPP2_RX_BUF_SIZE(pkt_size)) +                    │                          SKB_DATA_ALIGN(MVPP2_RX_BUF_SIZE(pkt_size)) +                   
                        MVPP2_SKB_SHINFO_SIZE;                                           │                          MVPP2_SKB_SHINFO_SIZE;                                          
                                                                                         │                                                                                          
                /* Allocate buffers for this pool */                                     │                  /* Allocate buffers for this pool */                                    
                num = mvpp2_bm_bufs_add(port, new_pool, pkts_num);                       │                  num = mvpp2_bm_bufs_add(port, new_pool, pkts_num);                      
                if (num != pkts_num) {                                                   │                  if (num != pkts_num) {                                                  
                        WARN(1, "pool %d: %d of %d allocated\n",                         │                          WARN(1, "pool %d: %d of %d allocated\n",                        
                             new_pool->id, num, pkts_num);                               │                               new_pool->id, num, pkts_num);                              
                        return NULL;                                                     │                          return NULL;                                                    
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        mvpp2_bm_pool_bufsize_set(port->priv, new_pool,                                  │          mvpp2_bm_pool_bufsize_set(port->priv, new_pool,                                 
                                  MVPP2_RX_BUF_SIZE(new_pool->pkt_size));                │                                    MVPP2_RX_BUF_SIZE(new_pool->pkt_size));               
                                                                                         │                                                                                          
        return new_pool;                                                                 │          return new_pool;                                                                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c:583                            │ linux/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c:535                             
                                                                                         │                                                                                          
                { "CplCmdIn", 56, 8 },                                                   │                  { "CplCmdIn", 56, 8 },                                                  
                { "MpsVfVld", 55, 1 },                                                   │                  { "CplCmdOut", 48, 8 },                                                 
                { "MpsPf", 52, 3 },                                                      │                  { "ESynOut", 47, 1 },                                                   
                { "MpsVf", 44, 8 },                                                      │                  { "EAckOut", 46, 1 },                                                   
                                                                                         │                  { "EFinOut", 45, 1 },                                                   
                                                                                         │                  { "ERstOut", 44, 1 },                                                   
                { "SynIn", 43, 1 },                                                      │                  { "SynIn", 43, 1 },                                                     
                { "AckIn", 42, 1 },                                                      │                  { "AckIn", 42, 1 },                                                     
                { "FinIn", 41, 1 },                                                      │                  { "FinIn", 41, 1 },                                                     
                { "RstIn", 40, 1 },                                                      │                  { "RstIn", 40, 1 },                                                     
                { "DataIn", 39, 1 },                                                     │                  { "DataIn", 39, 1 },                                                    
                { "DataInVld", 38, 1 },                                                  │                  { "DataInVld", 38, 1 },                                                 
                { "PadIn", 37, 1 },                                                      │                  { "PadIn", 37, 1 },                                                     
                { "RxBufEmpty", 36, 1 },                                                 │                  { "RxBufEmpty", 36, 1 },                                                
                { "RxDdp", 35, 1 },                                                      │                  { "RxDdp", 35, 1 },                                                     
                { "RxFbCongestion", 34, 1 },                                             │                  { "RxFbCongestion", 34, 1 },                                            
                { "TxFbCongestion", 33, 1 },                                             │                  { "TxFbCongestion", 33, 1 },                                            
                { "TxPktSumSrdy", 32, 1 },                                               │                  { "TxPktSumSrdy", 32, 1 },                                              
                { "RcfUlpType", 28, 4 },                                                 │                  { "RcfUlpType", 28, 4 },                                                
                { "Eread", 27, 1 },                                                      │                  { "Eread", 27, 1 },                                                     
                { "Ebypass", 26, 1 },                                                    │                  { "Ebypass", 26, 1 },                                                   
                { "Esave", 25, 1 },                                                      │                  { "Esave", 25, 1 },                                                     
                { "Static0", 24, 1 },                                                    │                  { "Static0", 24, 1 },                                                   
                { "Cread", 23, 1 },                                                      │                  { "Cread", 23, 1 },                                                     
                { "Cbypass", 22, 1 },                                                    │                  { "Cbypass", 22, 1 },                                                   
                { "Csave", 21, 1 },                                                      │                  { "Csave", 21, 1 },                                                     
                { "CPktOut", 20, 1 },                                                    │                  { "CPktOut", 20, 1 },                                                   
                { "RxPagePoolFull", 18, 2 },                                             │                  { "RxPagePoolFull", 18, 2 },                                            
                { "RxLpbkPkt", 17, 1 },                                                  │                  { "RxLpbkPkt", 17, 1 },                                                 
                { "TxLpbkPkt", 16, 1 },                                                  │                  { "TxLpbkPkt", 16, 1 },                                                 
                { "RxVfValid", 15, 1 },                                                  │                  { "RxVfValid", 15, 1 },                                                 
                { "SynLearned", 14, 1 },                                                 │                  { "SynLearned", 14, 1 },                                                
                { "SetDelEntry", 13, 1 },                                                │                  { "SetDelEntry", 13, 1 },                                               
                { "SetInvEntry", 12, 1 },                                                │                  { "SetInvEntry", 12, 1 },                                               
                { "CpcmdDvld", 11, 1 },                                                  │                  { "CpcmdDvld", 11, 1 },                                                 
                { "CpcmdSave", 10, 1 },                                                  │                  { "CpcmdSave", 10, 1 },                                                 
                { "RxPstructsFull", 8, 2 },                                              │                  { "RxPstructsFull", 8, 2 },                                             
                { "EpcmdDvld", 7, 1 },                                                   │                  { "EpcmdDvld", 7, 1 },                                                  
                { "EpcmdFlush", 6, 1 },                                                  │                  { "EpcmdFlush", 6, 1 },                                                 
                { "EpcmdTrimPrefix", 5, 1 },                                             │                  { "EpcmdTrimPrefix", 5, 1 },                                            
                { "EpcmdTrimPostfix", 4, 1 },                                            │                  { "EpcmdTrimPostfix", 4, 1 },                                           
                { "ERssIp4Pkt", 3, 1 },                                                  │                  { "ERssIp4Pkt", 3, 1 },                                                 
                { "ERssIp6Pkt", 2, 1 },                                                  │                  { "ERssIp6Pkt", 2, 1 },                                                 
                { "ERssTcpUdpPkt", 1, 1 },                                               │                  { "ERssTcpUdpPkt", 1, 1 },                                              
                { "ERssFceFipPkt", 0, 1 },                                               │                  { "ERssFceFipPkt", 0, 1 },                                              
                { NULL }                                                                 │                  { NULL }                                                                
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c:949                            │ linux/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c:875                             
                                                                                         │                                                                                          
        char data_str[ARRAY_SIZE(tx_bd_info_items)][HNS3_DBG_DATA_STR_LEN];              │          char data_str[ARRAY_SIZE(rx_bd_info_items)][HNS3_DBG_DATA_STR_LEN];             
        struct hns3_nic_priv *priv = d->handle->priv;                                    │          struct hns3_nic_priv *priv = d->handle->priv;                                   
        char *result[ARRAY_SIZE(tx_bd_info_items)];                                      │          char *result[ARRAY_SIZE(rx_bd_info_items)];                                     
        char content[HNS3_DBG_INFO_LEN];                                                 │          char content[HNS3_DBG_INFO_LEN];                                                
        struct hns3_enet_ring *ring;                                                     │          struct hns3_enet_ring *ring;                                                    
        struct hns3_desc *desc;                                                          │          struct hns3_desc *desc;                                                         
        unsigned int i;                                                                  │          unsigned int i;                                                                 
        int pos = 0;                                                                     │          int pos = 0;                                                                    
                                                                                         │                                                                                          
        if (d->qid >= d->handle->kinfo.num_tqps) {                                       │          if (d->qid >= d->handle->kinfo.num_tqps) {                                      
                dev_err(&d->handle->pdev->dev,                                           │                  dev_err(&d->handle->pdev->dev,                                          
                        "queue%u is not in use\n", d->qid);                              │                          "queue%u is not in use\n", d->qid);                             
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (i = 0; i < ARRAY_SIZE(tx_bd_info_items); i++)                               │          for (i = 0; i < ARRAY_SIZE(rx_bd_info_items); i++)                              
                result[i] = &data_str[i][0];                                             │                  result[i] = &data_str[i][0];                                            
                                                                                         │                                                                                          
        pos += scnprintf(buf + pos, len - pos,                                           │          pos += scnprintf(buf + pos, len - pos,                                          
                          "Queue %u tx bd info:\n", d->qid);                             │                            "Queue %u rx bd info:\n", d->qid);                            
        hns3_dbg_fill_content(content, sizeof(content), tx_bd_info_items,                │          hns3_dbg_fill_content(content, sizeof(content), rx_bd_info_items,               
                              NULL, ARRAY_SIZE(tx_bd_info_items));                       │                                NULL, ARRAY_SIZE(rx_bd_info_items));                      
        pos += scnprintf(buf + pos, len - pos, "%s", content);                           │          pos += scnprintf(buf + pos, len - pos, "%s", content);                          
                                                                                         │                                                                                          
        ring = &priv->ring[d->qid];                                                      │          ring = &priv->ring[d->qid + d->handle->kinfo.num_tqps];                         
        for (i = 0; i < ring->desc_num; i++) {                                           │          for (i = 0; i < ring->desc_num; i++) {                                          
                desc = &ring->desc[i];                                                   │                  desc = &ring->desc[i];                                                  
                                                                                         │                                                                                          
                hns3_dump_tx_bd_info(priv, desc, result, i);                             │                  hns3_dump_rx_bd_info(priv, desc, result, i);                            
                hns3_dbg_fill_content(content, sizeof(content),                          │                  hns3_dbg_fill_content(content, sizeof(content),                         
                                      tx_bd_info_items, (const char **)result,           │                                        rx_bd_info_items, (const char **)result,          
                                      ARRAY_SIZE(tx_bd_info_items));                     │                                        ARRAY_SIZE(rx_bd_info_items));                    
                pos += scnprintf(buf + pos, len - pos, "%s", content);                   │                  pos += scnprintf(buf + pos, len - pos, "%s", content);                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c:18                               │ linux/drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c:20                             
                                                                                         │                                                                                          
        u32 value = readl(ioaddr + DMA_SYS_BUS_MODE);                                    │          u32 value = readl(ioaddr + DMA_AXI_BUS_MODE);                                   
        int i;                                                                           │          int i;                                                                          
                                                                                         │                                                                                          
        pr_info("dwmac4: Master AXI performs %s burst length\n",                         │          pr_info("dwmac1000: Master AXI performs %s burst length\n",                     
                (value & DMA_SYS_BUS_FB) ? "fixed" : "any");                             │                  !(value & DMA_AXI_UNDEF) ? "fixed" : "any");                            
                                                                                         │                                                                                          
        if (axi->axi_lpi_en)                                                             │          if (axi->axi_lpi_en)                                                            
                value |= DMA_AXI_EN_LPI;                                                 │                  value |= DMA_AXI_EN_LPI;                                                
        if (axi->axi_xit_frm)                                                            │          if (axi->axi_xit_frm)                                                           
                value |= DMA_AXI_LPI_XIT_FRM;                                            │                  value |= DMA_AXI_LPI_XIT_FRM;                                           
                                                                                         │                                                                                          
        value &= ~DMA_AXI_WR_OSR_LMT;                                                    │          value &= ~DMA_AXI_WR_OSR_LMT;                                                   
        value |= (axi->axi_wr_osr_lmt & DMA_AXI_OSR_MAX) <<                              │          value |= (axi->axi_wr_osr_lmt & DMA_AXI_WR_OSR_LMT_MASK) <<                     
                 DMA_AXI_WR_OSR_LMT_SHIFT;                                               │                   DMA_AXI_WR_OSR_LMT_SHIFT;                                              
                                                                                         │                                                                                          
        value &= ~DMA_AXI_RD_OSR_LMT;                                                    │          value &= ~DMA_AXI_RD_OSR_LMT;                                                   
        value |= (axi->axi_rd_osr_lmt & DMA_AXI_OSR_MAX) <<                              │          value |= (axi->axi_rd_osr_lmt & DMA_AXI_RD_OSR_LMT_MASK) <<                     
                 DMA_AXI_RD_OSR_LMT_SHIFT;                                               │                   DMA_AXI_RD_OSR_LMT_SHIFT;                                              
                                                                                         │                                                                                          
        /* Depending on the UNDEF bit the Master AXI will perform any burst              │          /* Depending on the UNDEF bit the Master AXI will perform any burst             
         * length according to the BLEN programmed (by default all BLEN are              │           * length according to the BLEN programmed (by default all BLEN are             
         * set).                                                                         │           * set).                                                                        
         */                                                                              │           */                                                                             
        for (i = 0; i < AXI_BLEN; i++) {                                                 │          for (i = 0; i < AXI_BLEN; i++) {                                                
                switch (axi->axi_blen[i]) {                                              │                  switch (axi->axi_blen[i]) {                                             
                case 256:                                                                │                  case 256:                                                               
                        value |= DMA_AXI_BLEN256;                                        │                          value |= DMA_AXI_BLEN256;                                       
                        break;                                                           │                          break;                                                          
                case 128:                                                                │                  case 128:                                                               
                        value |= DMA_AXI_BLEN128;                                        │                          value |= DMA_AXI_BLEN128;                                       
                        break;                                                           │                          break;                                                          
                case 64:                                                                 │                  case 64:                                                                
                        value |= DMA_AXI_BLEN64;                                         │                          value |= DMA_AXI_BLEN64;                                        
                        break;                                                           │                          break;                                                          
                case 32:                                                                 │                  case 32:                                                                
                        value |= DMA_AXI_BLEN32;                                         │                          value |= DMA_AXI_BLEN32;                                        
                        break;                                                           │                          break;                                                          
                case 16:                                                                 │                  case 16:                                                                
                        value |= DMA_AXI_BLEN16;                                         │                          value |= DMA_AXI_BLEN16;                                        
                        break;                                                           │                          break;                                                          
                case 8:                                                                  │                  case 8:                                                                 
                        value |= DMA_AXI_BLEN8;                                          │                          value |= DMA_AXI_BLEN8;                                         
                        break;                                                           │                          break;                                                          
                case 4:                                                                  │                  case 4:                                                                 
                        value |= DMA_AXI_BLEN4;                                          │                          value |= DMA_AXI_BLEN4;                                         
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        writel(value, ioaddr + DMA_SYS_BUS_MODE);                                        │          writel(value, ioaddr + DMA_AXI_BUS_MODE);                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/mac.c:1575                                      │ linux/drivers/net/ethernet/intel/igb/e1000_mac.c:1481                                    
                                                                                         │                                                                                          
        u32 ledctl_blink = 0;                                                            │          u32 ledctl_blink = 0;                                                           
        u32 i;                                                                           │          u32 i;                                                                          
                                                                                         │                                                                                          
        if (hw->phy.media_type == e1000_media_type_fiber) {                              │          if (hw->phy.media_type == e1000_media_type_fiber) {                             
                /* always blink LED0 for PCI-E fiber */                                  │                  /* always blink LED0 for PCI-E fiber */                                 
                ledctl_blink = E1000_LEDCTL_LED0_BLINK |                                 │                  ledctl_blink = E1000_LEDCTL_LED0_BLINK |                                
                    (E1000_LEDCTL_MODE_LED_ON << E1000_LEDCTL_LED0_MODE_SHIFT);          │                       (E1000_LEDCTL_MODE_LED_ON << E1000_LEDCTL_LED0_MODE_SHIFT);        
        } else {                                                                         │          } else {                                                                        
                /* Set the blink bit for each LED that's "on" (0x0E)                     │                  /* Set the blink bit for each LED that's "on" (0x0E)                    
                 * (or "off" if inverted) in ledctl_mode2.  The blink                    │                   * (or "off" if inverted) in ledctl_mode2.  The blink                   
                 * logic in hardware only works when mode is set to "on"                 │                   * logic in hardware only works when mode is set to "on"                
                 * so it must be changed accordingly when the mode is                    │                   * so it must be changed accordingly when the mode is                   
                 * "off" and inverted.                                                   │                   * "off" and inverted.                                                  
                 */                                                                      │                   */                                                                     
                ledctl_blink = hw->mac.ledctl_mode2;                                     │                  ledctl_blink = hw->mac.ledctl_mode2;                                    
                for (i = 0; i < 32; i += 8) {                                            │                  for (i = 0; i < 32; i += 8) {                                           
                        u32 mode = (hw->mac.ledctl_mode2 >> i) &                         │                          u32 mode = (hw->mac.ledctl_mode2 >> i) &                        
                            E1000_LEDCTL_LED0_MODE_MASK;                                 │                              E1000_LEDCTL_LED0_MODE_MASK;                                
                        u32 led_default = hw->mac.ledctl_default >> i;                   │                          u32 led_default = hw->mac.ledctl_default >> i;                  
                                                                                         │                                                                                          
                        if ((!(led_default & E1000_LEDCTL_LED0_IVRT) &&                  │                          if ((!(led_default & E1000_LEDCTL_LED0_IVRT) &&                 
                             (mode == E1000_LEDCTL_MODE_LED_ON)) ||                      │                               (mode == E1000_LEDCTL_MODE_LED_ON)) ||                     
                            ((led_default & E1000_LEDCTL_LED0_IVRT) &&                   │                              ((led_default & E1000_LEDCTL_LED0_IVRT) &&                  
                             (mode == E1000_LEDCTL_MODE_LED_OFF))) {                     │                               (mode == E1000_LEDCTL_MODE_LED_OFF))) {                    
                                ledctl_blink &=                                          │                                  ledctl_blink &=                                         
                                    ~(E1000_LEDCTL_LED0_MODE_MASK << i);                 │                                      ~(E1000_LEDCTL_LED0_MODE_MASK << i);                
                                ledctl_blink |= (E1000_LEDCTL_LED0_BLINK |               │                                  ledctl_blink |= (E1000_LEDCTL_LED0_BLINK |              
                                                 E1000_LEDCTL_MODE_LED_ON) << i;         │                                                   E1000_LEDCTL_MODE_LED_ON) << i;        
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ew32(LEDCTL, ledctl_blink);                                                      │          wr32(E1000_LEDCTL, ledctl_blink);                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_main.c:1525                                    │ linux/drivers/net/ethernet/intel/igb/igb_main.c:8548                                     
                                                                                         │                                                                                          
        skb_checksum_none_assert(skb);                                                   │          skb_checksum_none_assert(skb);                                                  
                                                                                         │                                                                                          
        /* Ignore Checksum bit is set */                                                 │          /* Ignore Checksum bit is set */                                                
        if (igc_test_staterr(rx_desc, IGC_RXD_STAT_IXSM))                                │          if (igb_test_staterr(rx_desc, E1000_RXD_STAT_IXSM))                             
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        /* Rx checksum disabled via ethtool */                                           │          /* Rx checksum disabled via ethtool */                                          
        if (!(ring->netdev->features & NETIF_F_RXCSUM))                                  │          if (!(ring->netdev->features & NETIF_F_RXCSUM))                                 
                return;                                                                  │                  return;                                                                 
                                                                                         │                                                                                          
        /* TCP/UDP checksum error bit is set */                                          │          /* TCP/UDP checksum error bit is set */                                         
        if (igc_test_staterr(rx_desc,                                                    │          if (igb_test_staterr(rx_desc,                                                   
                             IGC_RXDEXT_STATERR_L4E |                                    │                               E1000_RXDEXT_STATERR_TCPE |                                
                             IGC_RXDEXT_STATERR_IPE)) {                                  │                               E1000_RXDEXT_STATERR_IPE)) {                               
                /* work around errata with sctp packets where the TCPE aka               │                  /* work around errata with sctp packets where the TCPE aka              
                 * L4E bit is set incorrectly on 64 byte (60 byte w/o crc)               │                   * L4E bit is set incorrectly on 64 byte (60 byte w/o crc)              
                 * packets (aka let the stack check the crc32c)                          │                   * packets, (aka let the stack check the crc32c)                        
                 */                                                                      │                   */                                                                     
                if (!(skb->len == 60 &&                                                  │                  if (!((skb->len == 60) &&                                               
                      test_bit(IGC_RING_FLAG_RX_SCTP_CSUM, &ring->flags))) {             │                        test_bit(IGB_RING_FLAG_RX_SCTP_CSUM, &ring->flags))) {            
                        u64_stats_update_begin(&ring->rx_syncp);                         │                          u64_stats_update_begin(&ring->rx_syncp);                        
                        ring->rx_stats.csum_err++;                                       │                          ring->rx_stats.csum_err++;                                      
                        u64_stats_update_end(&ring->rx_syncp);                           │                          u64_stats_update_end(&ring->rx_syncp);                          
                }                                                                        │                  }                                                                       
                /* let the stack verify checksum errors */                               │                  /* let the stack verify checksum errors */                              
                return;                                                                  │                  return;                                                                 
        }                                                                                │          }                                                                               
        /* It must be a TCP or UDP packet with a valid checksum */                       │          /* It must be a TCP or UDP packet with a valid checksum */                      
        if (igc_test_staterr(rx_desc, IGC_RXD_STAT_TCPCS |                               │          if (igb_test_staterr(rx_desc, E1000_RXD_STAT_TCPCS |                            
                                      IGC_RXD_STAT_UDPCS))                               │                                        E1000_RXD_STAT_UDPCS))                            
                skb->ip_summed = CHECKSUM_UNNECESSARY;                                   │                  skb->ip_summed = CHECKSUM_UNNECESSARY;                                  
                                                                                         │                                                                                          
        netdev_dbg(ring->netdev, "cksum success: bits %08X\n",                           │          dev_dbg(ring->dev, "cksum success: bits %08X\n",                                
                   le32_to_cpu(rx_desc->wb.upper.status_error));                         │                  le32_to_cpu(rx_desc->wb.upper.status_error));                           
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:181                          │ linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:142                           
                                                                                         │                                                                                          
        int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                              │          int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                             
        struct mlx5_flow_group *fg;                                                      │          struct mlx5_flow_group *fg;                                                     
        u32 *in, *match;                                                                 │          u32 *in, *match;                                                                
                                                                                         │                                                                                          
        in = kvzalloc(inlen, GFP_KERNEL);                                                │          in = kvzalloc(inlen, GFP_KERNEL);                                               
        if (!in)                                                                         │          if (!in)                                                                        
                return ERR_PTR(-ENOMEM);                                                 │                  return ERR_PTR(-ENOMEM);                                                
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, match_criteria_enable,                        │          MLX5_SET(create_flow_group_in, in, match_criteria_enable,                       
                 MLX5_MATCH_OUTER_HEADERS | MLX5_MATCH_MISC_PARAMETERS_2);               │                   MLX5_MATCH_OUTER_HEADERS | MLX5_MATCH_MISC_PARAMETERS_2);              
        match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                  │          match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                 
                                                                                         │                                                                                          
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_47_16);              │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_47_16);             
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_15_0);               │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_15_0);              
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.cvlan_tag);               │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.cvlan_tag);              
                                                                                         │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.first_vid);              
                                                                                         │                                                                                          
        MLX5_SET(fte_match_param, match, misc_parameters_2.metadata_reg_c_0,             │          MLX5_SET(fte_match_param, match, misc_parameters_2.metadata_reg_c_0,            
                 mlx5_eswitch_get_vport_metadata_mask());                                │                   mlx5_eswitch_get_vport_metadata_mask());                               
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, start_flow_index,                             │          MLX5_SET(create_flow_group_in, in, start_flow_index,                            
                 MLX5_ESW_BRIDGE_INGRESS_TABLE_FILTER_GRP_IDX_FROM);                     │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_FROM);                      
        MLX5_SET(create_flow_group_in, in, end_flow_index,                               │          MLX5_SET(create_flow_group_in, in, end_flow_index,                              
                 MLX5_ESW_BRIDGE_INGRESS_TABLE_FILTER_GRP_IDX_TO);                       │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_TO);                        
                                                                                         │                                                                                          
        fg = mlx5_create_flow_group(ingress_ft, in);                                     │          fg = mlx5_create_flow_group(ingress_ft, in);                                    
                                                                                         │          kvfree(in);                                                                     
        if (IS_ERR(fg))                                                                  │          if (IS_ERR(fg))                                                                 
                esw_warn(esw->dev,                                                       │                  esw_warn(esw->dev,                                                      
                         "Failed to create bridge ingress table VLAN filter flow group ( │                           "Failed to create VLAN flow group for bridge ingress table (err
                         PTR_ERR(fg));                                                   │                           PTR_ERR(fg));                                                  
                                                                                         │                                                                                          
        kvfree(in);                                                                      │                                                                                          
        return fg;                                                                       │          return fg;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/renesas/sh_eth.c:933                                         │ linux/drivers/net/ethernet/renesas/sh_eth.c:588                                          
                                                                                         │                                                                                          
        .soft_reset     = sh_eth_soft_reset_gether,                                      │          .soft_reset     = sh_eth_soft_reset_gether,                                     
                                                                                         │                                                                                          
        .chip_reset     = sh_eth_chip_reset_giga,                                        │          .chip_reset     = sh_eth_chip_reset_r8a7740,                                    
        .set_duplex     = sh_eth_set_duplex,                                             │          .set_duplex     = sh_eth_set_duplex,                                            
        .set_rate       = sh_eth_set_rate_giga,                                          │          .set_rate       = sh_eth_set_rate_gether,                                       
                                                                                         │                                                                                          
        .register_type  = SH_ETH_REG_GIGABIT,                                            │          .register_type  = SH_ETH_REG_GIGABIT,                                           
                                                                                         │                                                                                          
        .edtrr_trns     = EDTRR_TRNS_GETHER,                                             │          .edtrr_trns     = EDTRR_TRNS_GETHER,                                            
        .ecsr_value     = ECSR_ICD | ECSR_MPD,                                           │          .ecsr_value     = ECSR_ICD | ECSR_MPD,                                          
        .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                  │          .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                 
        .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                                │          .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                               
                          EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                  │                            EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                 
                          EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                   │                            EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                  
                          0x0000f000 | EESIPR_CNDIP | EESIPR_DLCIP |                     │                            0x0000f000 | EESIPR_CNDIP | EESIPR_DLCIP |                    
                          EESIPR_CDIP | EESIPR_TROIP | EESIPR_RMAFIP |                   │                            EESIPR_CDIP | EESIPR_TROIP | EESIPR_RMAFIP |                  
                          EESIPR_CEEFIP | EESIPR_CELFIP |                                │                            EESIPR_CEEFIP | EESIPR_CELFIP |                               
                          EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                 │                            EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                
                          EESIPR_PREIP | EESIPR_CERFIP,                                  │                            EESIPR_PREIP | EESIPR_CERFIP,                                 
                                                                                         │                                                                                          
        .tx_check       = EESR_TC1 | EESR_FTC,                                           │          .tx_check       = EESR_TC1 | EESR_FTC,                                          
        .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                 │          .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                
                          EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                 │                            EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                
                          EESR_TDE,                                                      │                            EESR_TDE,                                                     
        .fdr_value      = 0x0000072f,                                                    │          .fdr_value      = 0x0000070f,                                                   
                                                                                         │                                                                                          
        .irq_flags      = IRQF_SHARED,                                                   │                                                                                          
        .apr            = 1,                                                             │          .apr            = 1,                                                            
        .mpr            = 1,                                                             │          .mpr            = 1,                                                            
        .tpauser        = 1,                                                             │          .tpauser        = 1,                                                            
        .gecmr          = 1,                                                             │          .gecmr          = 1,                                                            
        .bculr          = 1,                                                             │          .bculr          = 1,                                                            
        .hw_swap        = 1,                                                             │          .hw_swap        = 1,                                                            
        .rpadir         = 1,                                                             │          .rpadir         = 1,                                                            
        .no_trimd       = 1,                                                             │          .no_trimd       = 1,                                                            
        .no_ade         = 1,                                                             │          .no_ade         = 1,                                                            
        .xdfar_rw       = 1,                                                             │          .xdfar_rw       = 1,                                                            
                                                                                         │          .csmr           = 1,                                                            
                                                                                         │          .rx_csum        = 1,                                                            
        .tsu            = 1,                                                             │          .tsu            = 1,                                                            
                                                                                         │          .select_mii     = 1,                                                            
                                                                                         │          .magic          = 1,                                                            
        .cexcr          = 1,                                                             │          .cexcr          = 1,                                                            
        .dual_port      = 1,                                                             │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:1565                          │ linux/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:1602                           
                                                                                         │                                                                                          
        struct mac_device_info *mac = priv->hw;                                          │          struct mac_device_info *mac = priv->hw;                                         
                                                                                         │                                                                                          
        dev_info(priv->device, "\tXGMAC2\n");                                            │          dev_info(priv->device, "\tXLGMAC\n");                                           
                                                                                         │                                                                                          
        priv->dev->priv_flags |= IFF_UNICAST_FLT;                                        │          priv->dev->priv_flags |= IFF_UNICAST_FLT;                                       
        mac->pcsr = priv->ioaddr;                                                        │          mac->pcsr = priv->ioaddr;                                                       
        mac->multicast_filter_bins = priv->plat->multicast_filter_bins;                  │          mac->multicast_filter_bins = priv->plat->multicast_filter_bins;                 
        mac->unicast_filter_entries = priv->plat->unicast_filter_entries;                │          mac->unicast_filter_entries = priv->plat->unicast_filter_entries;               
        mac->mcast_bits_log2 = 0;                                                        │          mac->mcast_bits_log2 = 0;                                                       
                                                                                         │                                                                                          
        if (mac->multicast_filter_bins)                                                  │          if (mac->multicast_filter_bins)                                                 
                mac->mcast_bits_log2 = ilog2(mac->multicast_filter_bins);                │                  mac->mcast_bits_log2 = ilog2(mac->multicast_filter_bins);               
                                                                                         │                                                                                          
        mac->link.duplex = 0;                                                            │          mac->link.duplex = 0;                                                           
        mac->link.speed10 = XGMAC_CONFIG_SS_10_MII;                                      │          mac->link.speed1000 = XLGMAC_CONFIG_SS_1000;                                    
        mac->link.speed100 = XGMAC_CONFIG_SS_100_MII;                                    │          mac->link.speed2500 = XLGMAC_CONFIG_SS_2500;                                    
        mac->link.speed1000 = XGMAC_CONFIG_SS_1000_GMII;                                 │          mac->link.xgmii.speed10000 = XLGMAC_CONFIG_SS_10G;                              
        mac->link.speed2500 = XGMAC_CONFIG_SS_2500_GMII;                                 │          mac->link.xlgmii.speed25000 = XLGMAC_CONFIG_SS_25G;                             
        mac->link.xgmii.speed2500 = XGMAC_CONFIG_SS_2500;                                │          mac->link.xlgmii.speed40000 = XLGMAC_CONFIG_SS_40G;                             
        mac->link.xgmii.speed5000 = XGMAC_CONFIG_SS_5000;                                │          mac->link.xlgmii.speed50000 = XLGMAC_CONFIG_SS_50G;                             
        mac->link.xgmii.speed10000 = XGMAC_CONFIG_SS_10000;                              │          mac->link.xlgmii.speed100000 = XLGMAC_CONFIG_SS_100G;                           
        mac->link.speed_mask = XGMAC_CONFIG_SS_MASK;                                     │          mac->link.speed_mask = XLGMAC_CONFIG_SS;                                        
                                                                                         │                                                                                          
        mac->mii.addr = XGMAC_MDIO_ADDR;                                                 │          mac->mii.addr = XGMAC_MDIO_ADDR;                                                
        mac->mii.data = XGMAC_MDIO_DATA;                                                 │          mac->mii.data = XGMAC_MDIO_DATA;                                                
        mac->mii.addr_shift = 16;                                                        │          mac->mii.addr_shift = 16;                                                       
        mac->mii.addr_mask = GENMASK(20, 16);                                            │          mac->mii.addr_mask = GENMASK(20, 16);                                           
        mac->mii.reg_shift = 0;                                                          │          mac->mii.reg_shift = 0;                                                         
        mac->mii.reg_mask = GENMASK(15, 0);                                              │          mac->mii.reg_mask = GENMASK(15, 0);                                             
        mac->mii.clk_csr_shift = 19;                                                     │          mac->mii.clk_csr_shift = 19;                                                    
        mac->mii.clk_csr_mask = GENMASK(21, 19);                                         │          mac->mii.clk_csr_mask = GENMASK(21, 19);                                        
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c:273                                │ linux/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c:207                                 
                                                                                         │                                                                                          
                /* RX Abnormal Interrupt Summary */                                      │                  /* TX Abnormal Interrupt Summary */                                     
                if (int_status & SXGBE_DMA_INT_STATUS_RBU) {                             │                  if (int_status & SXGBE_DMA_INT_STATUS_TPS) {                            
                        ret_val |= rx_bump_tc;                                           │                          ret_val |= tx_hard_error;                                       
                        clear_val |= SXGBE_DMA_INT_STATUS_RBU;                           │                          clear_val |= SXGBE_DMA_INT_STATUS_TPS;                          
                        x->rx_underflow_irq++;                                           │                          x->tx_process_stopped_irq++;                                    
                }                                                                        │                                                                                          
                                                                                         │                                                                                          
                if (int_status & SXGBE_DMA_INT_STATUS_RPS) {                             │                                                                                          
                        ret_val |= rx_hard_error;                                        │                                                                                          
                        clear_val |= SXGBE_DMA_INT_STATUS_RPS;                           │                                                                                          
                        x->rx_process_stopped_irq++;                                     │                                                                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                if (int_status & SXGBE_DMA_INT_STATUS_FBE) {                             │                  if (int_status & SXGBE_DMA_INT_STATUS_FBE) {                            
                        ret_val |= rx_hard_error;                                        │                          ret_val |= tx_hard_error;                                       
                        x->fatal_bus_error_irq++;                                        │                          x->fatal_bus_error_irq++;                                       
                                                                                         │                                                                                          
                        /* Assumption: FBE bit is the combination of                     │                          /* Assumption: FBE bit is the combination of                    
                         * all the bus access erros and cleared when                     │                           * all the bus access erros and cleared when                    
                         * the respective error bits cleared                             │                           * the respective error bits cleared                            
                         */                                                              │                           */                                                             
                                                                                         │                                                                                          
                        /* check for actual cause */                                     │                          /* check for actual cause */                                    
                        if (int_status & SXGBE_DMA_INT_STATUS_REB0) {                    │                          if (int_status & SXGBE_DMA_INT_STATUS_TEB0) {                   
                                x->rx_read_transfer_err++;                               │                                  x->tx_read_transfer_err++;                              
                                clear_val |= SXGBE_DMA_INT_STATUS_REB0;                  │                                  clear_val |= SXGBE_DMA_INT_STATUS_TEB0;                 
                        } else {                                                         │                          } else {                                                        
                                x->rx_write_transfer_err++;                              │                                  x->tx_write_transfer_err++;                             
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        if (int_status & SXGBE_DMA_INT_STATUS_REB1) {                    │                          if (int_status & SXGBE_DMA_INT_STATUS_TEB1) {                   
                                x->rx_desc_access_err++;                                 │                                  x->tx_desc_access_err++;                                
                                clear_val |= SXGBE_DMA_INT_STATUS_REB1;                  │                                  clear_val |= SXGBE_DMA_INT_STATUS_TEB1;                 
                        } else {                                                         │                          } else {                                                        
                                x->rx_buffer_access_err++;                               │                                  x->tx_buffer_access_err++;                              
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        if (int_status & SXGBE_DMA_INT_STATUS_REB2) {                    │                          if (int_status & SXGBE_DMA_INT_STATUS_TEB2) {                   
                                x->rx_data_transfer_err++;                               │                                  x->tx_data_transfer_err++;                              
                                clear_val |= SXGBE_DMA_INT_STATUS_REB2;                  │                                  clear_val |= SXGBE_DMA_INT_STATUS_TEB2;                 
                        }                                                                │                          }                                                               
                                                                                         │                  }                                                                       
                                                                                         │                                                                                          
                                                                                         │                  /* context descriptor error */                                          
                                                                                         │                  if (int_status & SXGBE_DMA_INT_STATUS_CTXTERR) {                        
                                                                                         │                          x->tx_ctxt_desc_err++;                                          
                                                                                         │                          clear_val |= SXGBE_DMA_INT_STATUS_CTXTERR;                      
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_main.c:6640                                    │ linux/drivers/net/ethernet/intel/igb/igb_main.c:9336                                     
                                                                                         │                                                                                          
        struct pci_dev *pdev = to_pci_dev(dev);                                          │          struct pci_dev *pdev = to_pci_dev(dev);                                         
        struct net_device *netdev = pci_get_drvdata(pdev);                               │          struct net_device *netdev = pci_get_drvdata(pdev);                              
        struct igc_adapter *adapter = netdev_priv(netdev);                               │          struct igb_adapter *adapter = netdev_priv(netdev);                              
        struct igc_hw *hw = &adapter->hw;                                                │          struct e1000_hw *hw = &adapter->hw;                                             
        u32 err, val;                                                                    │          u32 err, val;                                                                   
                                                                                         │                                                                                          
        pci_set_power_state(pdev, PCI_D0);                                               │          pci_set_power_state(pdev, PCI_D0);                                              
        pci_restore_state(pdev);                                                         │          pci_restore_state(pdev);                                                        
        pci_save_state(pdev);                                                            │          pci_save_state(pdev);                                                           
                                                                                         │                                                                                          
        if (!pci_device_is_present(pdev))                                                │          if (!pci_device_is_present(pdev))                                               
                return -ENODEV;                                                          │                  return -ENODEV;                                                         
        err = pci_enable_device_mem(pdev);                                               │          err = pci_enable_device_mem(pdev);                                              
        if (err) {                                                                       │          if (err) {                                                                      
                netdev_err(netdev, "Cannot enable PCI device from suspend\n");           │                  dev_err(&pdev->dev,                                                     
                                                                                         │                          "igb: Cannot enable PCI device from suspend\n");                
                return err;                                                              │                  return err;                                                             
        }                                                                                │          }                                                                               
        pci_set_master(pdev);                                                            │          pci_set_master(pdev);                                                           
                                                                                         │                                                                                          
        pci_enable_wake(pdev, PCI_D3hot, 0);                                             │          pci_enable_wake(pdev, PCI_D3hot, 0);                                            
        pci_enable_wake(pdev, PCI_D3cold, 0);                                            │          pci_enable_wake(pdev, PCI_D3cold, 0);                                           
                                                                                         │                                                                                          
        if (igc_init_interrupt_scheme(adapter, true)) {                                  │          if (igb_init_interrupt_scheme(adapter, true)) {                                 
                netdev_err(netdev, "Unable to allocate memory for queues\n");            │                  dev_err(&pdev->dev, "Unable to allocate memory for queues\n");          
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        igc_reset(adapter);                                                              │          igb_reset(adapter);                                                             
                                                                                         │                                                                                          
        /* let the f/w know that the h/w is now under the control of the                 │          /* let the f/w know that the h/w is now under the control of the                
         * driver.                                                                       │           * driver.                                                                      
         */                                                                              │           */                                                                             
        igc_get_hw_control(adapter);                                                     │          igb_get_hw_control(adapter);                                                    
                                                                                         │                                                                                          
        val = rd32(IGC_WUS);                                                             │          val = rd32(E1000_WUS);                                                          
        if (val & WAKE_PKT_WUS)                                                          │          if (val & WAKE_PKT_WUS)                                                         
                igc_deliver_wake_packet(netdev);                                         │                  igb_deliver_wake_packet(netdev);                                        
                                                                                         │                                                                                          
        wr32(IGC_WUS, ~0);                                                               │          wr32(E1000_WUS, ~0);                                                            
                                                                                         │                                                                                          
        rtnl_lock();                                                                     │          if (!rpm)                                                                       
                                                                                         │                  rtnl_lock();                                                            
        if (!err && netif_running(netdev))                                               │          if (!err && netif_running(netdev))                                              
                err = __igc_open(netdev, true);                                          │                  err = __igb_open(netdev, true);                                         
                                                                                         │                                                                                          
        if (!err)                                                                        │          if (!err)                                                                       
                netif_device_attach(netdev);                                             │                  netif_device_attach(netdev);                                            
        rtnl_unlock();                                                                   │          if (!rpm)                                                                       
                                                                                         │                  rtnl_unlock();                                                          
                                                                                         │                                                                                          
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c:12098                     │ linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c:12044                      
                                                                                         │                                                                                          
#define HCLGE_64_BIT_REG_RTN_DATANUM 4                                                   │  #define HCLGE_32_BIT_REG_RTN_DATANUM 8                                                  
#define HCLGE_64_BIT_DESC_NODATA_LEN 1                                                   │  #define HCLGE_32_BIT_DESC_NODATA_LEN 2                                                  
                                                                                         │                                                                                          
        struct hclge_desc *desc;                                                         │          struct hclge_desc *desc;                                                        
        u64 *reg_val = data;                                                             │          u32 *reg_val = data;                                                            
        __le64 *desc_data;                                                               │          __le32 *desc_data;                                                              
        int nodata_len;                                                                  │          int nodata_num;                                                                 
        int cmd_num;                                                                     │          int cmd_num;                                                                    
        int i, k, n;                                                                     │          int i, k, n;                                                                    
        int ret;                                                                         │          int ret;                                                                        
                                                                                         │                                                                                          
        if (regs_num == 0)                                                               │          if (regs_num == 0)                                                              
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        nodata_len = HCLGE_64_BIT_DESC_NODATA_LEN;                                       │          nodata_num = HCLGE_32_BIT_DESC_NODATA_LEN;                                      
        cmd_num = DIV_ROUND_UP(regs_num + nodata_len,                                    │          cmd_num = DIV_ROUND_UP(regs_num + nodata_num,                                   
                               HCLGE_64_BIT_REG_RTN_DATANUM);                            │                                 HCLGE_32_BIT_REG_RTN_DATANUM);                           
        desc = kcalloc(cmd_num, sizeof(struct hclge_desc), GFP_KERNEL);                  │          desc = kcalloc(cmd_num, sizeof(struct hclge_desc), GFP_KERNEL);                 
        if (!desc)                                                                       │          if (!desc)                                                                      
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        hclge_cmd_setup_basic_desc(&desc[0], HCLGE_OPC_QUERY_64_BIT_REG, true);          │          hclge_cmd_setup_basic_desc(&desc[0], HCLGE_OPC_QUERY_32_BIT_REG, true);         
        ret = hclge_cmd_send(&hdev->hw, desc, cmd_num);                                  │          ret = hclge_cmd_send(&hdev->hw, desc, cmd_num);                                 
        if (ret) {                                                                       │          if (ret) {                                                                      
                dev_err(&hdev->pdev->dev,                                                │                  dev_err(&hdev->pdev->dev,                                               
                        "Query 64 bit register cmd failed, ret = %d.\n", ret);           │                          "Query 32 bit register cmd failed, ret = %d.\n", ret);          
                kfree(desc);                                                             │                  kfree(desc);                                                            
                return ret;                                                              │                  return ret;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (i = 0; i < cmd_num; i++) {                                                  │          for (i = 0; i < cmd_num; i++) {                                                 
                if (i == 0) {                                                            │                  if (i == 0) {                                                           
                        desc_data = (__le64 *)(&desc[i].data[0]);                        │                          desc_data = (__le32 *)(&desc[i].data[0]);                       
                        n = HCLGE_64_BIT_REG_RTN_DATANUM - nodata_len;                   │                          n = HCLGE_32_BIT_REG_RTN_DATANUM - nodata_num;                  
                } else {                                                                 │                  } else {                                                                
                        desc_data = (__le64 *)(&desc[i]);                                │                          desc_data = (__le32 *)(&desc[i]);                               
                        n = HCLGE_64_BIT_REG_RTN_DATANUM;                                │                          n = HCLGE_32_BIT_REG_RTN_DATANUM;                               
                }                                                                        │                  }                                                                       
                for (k = 0; k < n; k++) {                                                │                  for (k = 0; k < n; k++) {                                               
                        *reg_val++ = le64_to_cpu(*desc_data++);                          │                          *reg_val++ = le32_to_cpu(*desc_data++);                         
                                                                                         │                                                                                          
                        regs_num--;                                                      │                          regs_num--;                                                     
                        if (!regs_num)                                                   │                          if (!regs_num)                                                  
                                break;                                                   │                                  break;                                                  
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        kfree(desc);                                                                     │          kfree(desc);                                                                    
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:1419                                      │ linux/drivers/net/ethernet/intel/igb/e1000_phy.c:1334                                    
                                                                                         │                                                                                          
        struct e1000_mac_info *mac = &hw->mac;                                           │          struct e1000_mac_info *mac = &hw->mac;                                          
        u32 ctrl;                                                                        │          u32 ctrl;                                                                       
                                                                                         │                                                                                          
        /* Turn off flow control when forcing speed/duplex */                            │          /* Turn off flow control when forcing speed/duplex */                           
        hw->fc.current_mode = e1000_fc_none;                                             │          hw->fc.current_mode = e1000_fc_none;                                            
                                                                                         │                                                                                          
        /* Force speed/duplex on the mac */                                              │          /* Force speed/duplex on the mac */                                             
        ctrl = er32(CTRL);                                                               │          ctrl = rd32(E1000_CTRL);                                                        
        ctrl |= (E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX);                                 │          ctrl |= (E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX);                                
        ctrl &= ~E1000_CTRL_SPD_SEL;                                                     │          ctrl &= ~E1000_CTRL_SPD_SEL;                                                    
                                                                                         │                                                                                          
        /* Disable Auto Speed Detection */                                               │          /* Disable Auto Speed Detection */                                              
        ctrl &= ~E1000_CTRL_ASDE;                                                        │          ctrl &= ~E1000_CTRL_ASDE;                                                       
                                                                                         │                                                                                          
        /* Disable autoneg on the phy */                                                 │          /* Disable autoneg on the phy */                                                
        *phy_ctrl &= ~BMCR_ANENABLE;                                                     │          *phy_ctrl &= ~MII_CR_AUTO_NEG_EN;                                               
                                                                                         │                                                                                          
        /* Forcing Full or Half Duplex? */                                               │          /* Forcing Full or Half Duplex? */                                              
        if (mac->forced_speed_duplex & E1000_ALL_HALF_DUPLEX) {                          │          if (mac->forced_speed_duplex & E1000_ALL_HALF_DUPLEX) {                         
                ctrl &= ~E1000_CTRL_FD;                                                  │                  ctrl &= ~E1000_CTRL_FD;                                                 
                *phy_ctrl &= ~BMCR_FULLDPLX;                                             │                  *phy_ctrl &= ~MII_CR_FULL_DUPLEX;                                       
                e_dbg("Half Duplex\n");                                                  │                  hw_dbg("Half Duplex\n");                                                
        } else {                                                                         │          } else {                                                                        
                ctrl |= E1000_CTRL_FD;                                                   │                  ctrl |= E1000_CTRL_FD;                                                  
                *phy_ctrl |= BMCR_FULLDPLX;                                              │                  *phy_ctrl |= MII_CR_FULL_DUPLEX;                                        
                e_dbg("Full Duplex\n");                                                  │                  hw_dbg("Full Duplex\n");                                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Forcing 10mb or 100mb? */                                                     │          /* Forcing 10mb or 100mb? */                                                    
        if (mac->forced_speed_duplex & E1000_ALL_100_SPEED) {                            │          if (mac->forced_speed_duplex & E1000_ALL_100_SPEED) {                           
                ctrl |= E1000_CTRL_SPD_100;                                              │                  ctrl |= E1000_CTRL_SPD_100;                                             
                *phy_ctrl |= BMCR_SPEED100;                                              │                  *phy_ctrl |= MII_CR_SPEED_100;                                          
                *phy_ctrl &= ~BMCR_SPEED1000;                                            │                  *phy_ctrl &= ~(MII_CR_SPEED_1000 | MII_CR_SPEED_10);                    
                e_dbg("Forcing 100mb\n");                                                │                  hw_dbg("Forcing 100mb\n");                                              
        } else {                                                                         │          } else {                                                                        
                ctrl &= ~(E1000_CTRL_SPD_1000 | E1000_CTRL_SPD_100);                     │                  ctrl &= ~(E1000_CTRL_SPD_1000 | E1000_CTRL_SPD_100);                    
                *phy_ctrl &= ~(BMCR_SPEED1000 | BMCR_SPEED100);                          │                  *phy_ctrl |= MII_CR_SPEED_10;                                           
                e_dbg("Forcing 10mb\n");                                                 │                  *phy_ctrl &= ~(MII_CR_SPEED_1000 | MII_CR_SPEED_100);                   
                                                                                         │                  hw_dbg("Forcing 10mb\n");                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        hw->mac.ops.config_collision_dist(hw);                                           │          igb_config_collision_dist(hw);                                                  
                                                                                         │                                                                                          
        ew32(CTRL, ctrl);                                                                │          wr32(E1000_CTRL, ctrl);                                                         
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:2396                                      │ linux/drivers/net/ethernet/intel/e1000e/phy.c:2338                                       
                                                                                         │                                                                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        u32 page = offset >> IGP_PAGE_SHIFT;                                             │          u32 page = offset >> IGP_PAGE_SHIFT;                                            
                                                                                         │                                                                                          
        ret_val = hw->phy.ops.acquire(hw);                                               │          ret_val = hw->phy.ops.acquire(hw);                                              
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  return ret_val;                                                         
                                                                                         │                                                                                          
        /* Page 800 works differently than the rest so it has its own func */            │          /* Page 800 works differently than the rest so it has its own func */           
        if (page == BM_WUC_PAGE) {                                                       │          if (page == BM_WUC_PAGE) {                                                      
                ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data,               │                  ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data,             
                                                         true, false);                   │                                                           false, false);                 
                goto release;                                                            │                  goto release;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        hw->phy.addr = e1000_get_phy_addr_for_bm_page(page, offset);                     │          hw->phy.addr = e1000_get_phy_addr_for_bm_page(page, offset);                    
                                                                                         │                                                                                          
        if (offset > MAX_PHY_MULTI_PAGE_REG) {                                           │          if (offset > MAX_PHY_MULTI_PAGE_REG) {                                          
                u32 page_shift, page_select;                                             │                  u32 page_shift, page_select;                                            
                                                                                         │                                                                                          
                /* Page select is register 31 for phy address 1 and 22 for               │                  /* Page select is register 31 for phy address 1 and 22 for              
                 * phy address 2 and 3. Page select is shifted only for                  │                   * phy address 2 and 3. Page select is shifted only for                 
                 * phy address 1.                                                        │                   * phy address 1.                                                       
                 */                                                                      │                   */                                                                     
                if (hw->phy.addr == 1) {                                                 │                  if (hw->phy.addr == 1) {                                                
                        page_shift = IGP_PAGE_SHIFT;                                     │                          page_shift = IGP_PAGE_SHIFT;                                    
                        page_select = IGP01E1000_PHY_PAGE_SELECT;                        │                          page_select = IGP01E1000_PHY_PAGE_SELECT;                       
                } else {                                                                 │                  } else {                                                                
                        page_shift = 0;                                                  │                          page_shift = 0;                                                 
                        page_select = BM_PHY_PAGE_SELECT;                                │                          page_select = BM_PHY_PAGE_SELECT;                               
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                /* Page is shifted left, PHY expects (page x 32) */                      │                  /* Page is shifted left, PHY expects (page x 32) */                     
                ret_val = e1000e_write_phy_reg_mdic(hw, page_select,                     │                  ret_val = e1000e_write_phy_reg_mdic(hw, page_select,                    
                                                    (page << page_shift));               │                                                      (page << page_shift));              
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        goto release;                                                    │                          goto release;                                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,             │          ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,           
                                           data);                                        │                                              data);                                      
                                                                                         │                                                                                          
release:                                                                                 │  release:                                                                                
        hw->phy.ops.release(hw);                                                         │          hw->phy.ops.release(hw);                                                        
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c:216                    │ linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c:123                     
                                                                                         │                                                                                          
        struct mss_egress_lut_addr_ctl_register lut_sel_reg;                             │          struct mss_ingress_lut_addr_ctl_register lut_sel_reg;                           
        struct mss_egress_lut_ctl_register lut_op_reg;                                   │          struct mss_ingress_lut_ctl_register lut_op_reg;                                 
        int ret;                                                                         │          int ret;                                                                        
                                                                                         │                                                                                          
        unsigned int i;                                                                  │          unsigned int i;                                                                 
                                                                                         │                                                                                          
        /* Select the table and row index to read */                                     │          /* Select the table and row index to read */                                    
        lut_sel_reg.bits_0.lut_select = table_id;                                        │          lut_sel_reg.bits_0.lut_select = table_id;                                       
        lut_sel_reg.bits_0.lut_addr = table_index;                                       │          lut_sel_reg.bits_0.lut_addr = table_index;                                      
                                                                                         │                                                                                          
        lut_op_reg.bits_0.lut_read = 1;                                                  │          lut_op_reg.bits_0.lut_read = 1;                                                 
        lut_op_reg.bits_0.lut_write = 0;                                                 │          lut_op_reg.bits_0.lut_write = 0;                                                
                                                                                         │                                                                                          
        ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                      │          ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                     
                                MSS_EGRESS_LUT_ADDR_CTL_REGISTER_ADDR,                   │                                  MSS_INGRESS_LUT_ADDR_CTL_REGISTER_ADDR,                 
                                lut_sel_reg.word_0);                                     │                                  lut_sel_reg.word_0);                                    
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
        ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                      │          ret = aq_mss_mdio_write(hw, MDIO_MMD_VEND1,                                     
                                MSS_EGRESS_LUT_CTL_REGISTER_ADDR,                        │                                  MSS_INGRESS_LUT_CTL_REGISTER_ADDR,                      
                                lut_op_reg.word_0);                                      │                                  lut_op_reg.word_0);                                     
        if (unlikely(ret))                                                               │          if (unlikely(ret))                                                              
                return ret;                                                              │                  return ret;                                                             
                                                                                         │                                                                                          
        memset(packed_record, 0, sizeof(u16) * num_words);                               │          memset(packed_record, 0, sizeof(u16) * num_words);                              
                                                                                         │                                                                                          
        for (i = 0; i < num_words; i += 2) {                                             │          for (i = 0; i < num_words; i += 2) {                                            
                ret = aq_mss_mdio_read(hw, MDIO_MMD_VEND1,                               │                  ret = aq_mss_mdio_read(hw, MDIO_MMD_VEND1,                              
                                       MSS_EGRESS_LUT_DATA_CTL_REGISTER_ADDR +           │                                         MSS_INGRESS_LUT_DATA_CTL_REGISTER_ADDR +         
                                               i,                                        │                                                 i,                                       
                                       &packed_record[i]);                               │                                         &packed_record[i]);                              
                if (unlikely(ret))                                                       │                  if (unlikely(ret))                                                      
                        return ret;                                                      │                          return ret;                                                     
                ret = aq_mss_mdio_read(hw, MDIO_MMD_VEND1,                               │                  ret = aq_mss_mdio_read(hw, MDIO_MMD_VEND1,                              
                                       MSS_EGRESS_LUT_DATA_CTL_REGISTER_ADDR +           │                                         MSS_INGRESS_LUT_DATA_CTL_REGISTER_ADDR +         
                                               i + 1,                                    │                                                 i + 1,                                   
                                       &packed_record[i + 1]);                           │                                         &packed_record[i + 1]);                          
                if (unlikely(ret))                                                       │                  if (unlikely(ret))                                                      
                        return ret;                                                      │                          return ret;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:602                                              │ linux/drivers/net/ethernet/sfc/falcon/farch.c:615                                        
                                                                                         │                                                                                          
        bool i = true;                                                                   │          bool i = true;                                                                  
        efx_oword_t txd_ptr_tbl;                                                         │          ef4_oword_t txd_ptr_tbl;                                                        
        struct efx_channel *channel;                                                     │          struct ef4_channel *channel;                                                    
        struct efx_tx_queue *tx_queue;                                                   │          struct ef4_tx_queue *tx_queue;                                                  
                                                                                         │                                                                                          
        efx_for_each_channel(channel, efx) {                                             │          ef4_for_each_channel(channel, efx) {                                            
                efx_for_each_channel_tx_queue(tx_queue, channel) {                       │                  ef4_for_each_channel_tx_queue(tx_queue, channel) {                      
                        efx_reado_table(efx, &txd_ptr_tbl,                               │                          ef4_reado_table(efx, &txd_ptr_tbl,                              
                                        FR_BZ_TX_DESC_PTR_TBL, tx_queue->queue);         │                                          FR_BZ_TX_DESC_PTR_TBL, tx_queue->queue);        
                        if (EFX_OWORD_FIELD(txd_ptr_tbl,                                 │                          if (EF4_OWORD_FIELD(txd_ptr_tbl,                                
                                            FRF_AZ_TX_DESCQ_FLUSH) ||                    │                                              FRF_AZ_TX_DESCQ_FLUSH) ||                   
                            EFX_OWORD_FIELD(txd_ptr_tbl,                                 │                              EF4_OWORD_FIELD(txd_ptr_tbl,                                
                                            FRF_AZ_TX_DESCQ_EN)) {                       │                                              FRF_AZ_TX_DESCQ_EN)) {                      
                                netif_dbg(efx, hw, efx->net_dev,                         │                                  netif_dbg(efx, hw, efx->net_dev,                        
                                          "flush did not complete on TXQ %d\n",          │                                            "flush did not complete on TXQ %d\n",         
                                          tx_queue->queue);                              │                                            tx_queue->queue);                             
                                i = false;                                               │                                  i = false;                                              
                        } else if (atomic_cmpxchg(&tx_queue->flush_outstanding,          │                          } else if (atomic_cmpxchg(&tx_queue->flush_outstanding,         
                                                  1, 0)) {                               │                                                    1, 0)) {                              
                                /* The flush is complete, but we didn't                  │                                  /* The flush is complete, but we didn't                 
                                 * receive a flush completion event                      │                                   * receive a flush completion event                     
                                 */                                                      │                                   */                                                     
                                netif_dbg(efx, hw, efx->net_dev,                         │                                  netif_dbg(efx, hw, efx->net_dev,                        
                                          "flush complete on TXQ %d, so drain "          │                                            "flush complete on TXQ %d, so drain "         
                                          "the queue\n", tx_queue->queue);               │                                            "the queue\n", tx_queue->queue);              
                                /* Don't need to increment active_queues as it           │                                  /* Don't need to increment active_queues as it          
                                 * has already been incremented for the queues           │                                   * has already been incremented for the queues          
                                 * which did not drain                                   │                                   * which did not drain                                  
                                 */                                                      │                                   */                                                     
                                efx_farch_magic_event(channel,                           │                                  ef4_farch_magic_event(channel,                          
                                                      EFX_CHANNEL_MAGIC_TX_DRAIN(        │                                                        EF4_CHANNEL_MAGIC_TX_DRAIN(       
                                                              tx_queue));                │                                                                tx_queue));               
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return i;                                                                        │          return i;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbevf/ipsec.c:213                                    │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c:429                                 
                                                                                         │                                                                                          
        struct net_device *dev = xs->xso.real_dev;                                       │          struct net_device *dev = xs->xso.real_dev;                                      
        unsigned char *key_data;                                                         │          unsigned char *key_data;                                                        
        char *alg_name = NULL;                                                           │          char *alg_name = NULL;                                                          
        int key_len;                                                                     │          int key_len;                                                                    
                                                                                         │                                                                                          
        if (!xs->aead) {                                                                 │          if (!xs->aead) {                                                                
                netdev_err(dev, "Unsupported IPsec algorithm\n");                        │                  netdev_err(dev, "Unsupported IPsec algorithm\n");                       
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (xs->aead->alg_icv_len != IXGBE_IPSEC_AUTH_BITS) {                            │          if (xs->aead->alg_icv_len != IXGBE_IPSEC_AUTH_BITS) {                           
                netdev_err(dev, "IPsec offload requires %d bit authentication\n",        │                  netdev_err(dev, "IPsec offload requires %d bit authentication\n",       
                           IXGBE_IPSEC_AUTH_BITS);                                       │                             IXGBE_IPSEC_AUTH_BITS);                                      
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        key_data = &xs->aead->alg_key[0];                                                │          key_data = &xs->aead->alg_key[0];                                               
        key_len = xs->aead->alg_key_len;                                                 │          key_len = xs->aead->alg_key_len;                                                
        alg_name = xs->aead->alg_name;                                                   │          alg_name = xs->aead->alg_name;                                                  
                                                                                         │                                                                                          
        if (strcmp(alg_name, aes_gcm_name)) {                                            │          if (strcmp(alg_name, aes_gcm_name)) {                                           
                netdev_err(dev, "Unsupported IPsec algorithm - please use %s\n",         │                  netdev_err(dev, "Unsupported IPsec algorithm - please use %s\n",        
                           aes_gcm_name);                                                │                             aes_gcm_name);                                               
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* The key bytes come down in a big endian array of bytes, so                    │          /* The key bytes come down in a bigendian array of bytes, so                    
         * we don't need to do any byte swapping.                                        │           * we don't need to do any byteswapping.                                        
         * 160 accounts for 16 byte key and 4 byte salt                                  │           * 160 accounts for 16 byte key and 4 byte salt                                 
         */                                                                              │           */                                                                             
        if (key_len > IXGBE_IPSEC_KEY_BITS) {                                            │          if (key_len == IXGBE_IPSEC_KEY_BITS) {                                          
                *mysalt = ((u32 *)key_data)[4];                                          │                  *mysalt = ((u32 *)key_data)[4];                                         
        } else if (key_len == IXGBE_IPSEC_KEY_BITS) {                                    │          } else if (key_len != (IXGBE_IPSEC_KEY_BITS - (sizeof(*mysalt) * 8))) {         
                *mysalt = 0;                                                             │                                                                                          
        } else {                                                                         │                                                                                          
                netdev_err(dev, "IPsec hw offload only supports keys up to 128 bits with │                  netdev_err(dev, "IPsec hw offload only supports keys up to 128 bits with
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │          } else {                                                                        
                                                                                         │                  netdev_info(dev, "IPsec hw offload parameters missing 32 bit salt value\
                                                                                         │                  *mysalt = 0;                                                            
        }                                                                                │          }                                                                               
        memcpy(mykey, key_data, 16);                                                     │          memcpy(mykey, key_data, 16);                                                    
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/amd8111e.c:1032                                          │ linux/drivers/net/ethernet/amd/amd8111e.c:984                                            
                                                                                         │                                                                                          
                                                                                         │                                                                                          
                tx_pkt_size = tx_data_rate/tx_pkt_rate;                                  │                  rx_pkt_size = rx_data_rate/rx_pkt_rate;                                 
                if (tx_pkt_size < 128) {                                                 │                  if (rx_pkt_size < 128) {                                                
                                                                                         │                          if (coal_conf->rx_coal_type != NO_COALESCE) {                   
                        if (coal_conf->tx_coal_type != NO_COALESCE) {                    │                                                                                          
                                                                                         │                                  coal_conf->rx_timeout = 0;                              
                                coal_conf->tx_timeout = 0;                               │                                  coal_conf->rx_event_count = 0;                          
                                coal_conf->tx_event_count = 0;                           │                                  amd8111e_set_coalesce(dev, RX_INTR_COAL);               
                                amd8111e_set_coalesce(dev, TX_INTR_COAL);                │                                  coal_conf->rx_coal_type = NO_COALESCE;                  
                                coal_conf->tx_coal_type = NO_COALESCE;                   │                                                                                          
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                } else if ((tx_pkt_size >= 128) && (tx_pkt_size < 512)) {                │                  } else if ((rx_pkt_size >= 128) && (rx_pkt_size < 512)) {               
                                                                                         │                                                                                          
                        if (coal_conf->tx_coal_type != LOW_COALESCE) {                   │                                                                                          
                                coal_conf->tx_timeout = 1;                               │                                                                                          
                                coal_conf->tx_event_count = 2;                           │                                                                                          
                                amd8111e_set_coalesce(dev, TX_INTR_COAL);                │                                                                                          
                                coal_conf->tx_coal_type = LOW_COALESCE;                  │                                                                                          
                                                                                         │                                                                                          
                                                                                         │                          if (coal_conf->rx_coal_type !=  LOW_COALESCE) {                 
                                                                                         │                                  coal_conf->rx_timeout = 1;                              
                                                                                         │                                  coal_conf->rx_event_count = 4;                          
                                                                                         │                                  amd8111e_set_coalesce(dev, RX_INTR_COAL);               
                                                                                         │                                  coal_conf->rx_coal_type = LOW_COALESCE;                 
                        }                                                                │                          }                                                               
                } else if ((tx_pkt_size >= 512) && (tx_pkt_size < 1024)) {               │                  } else if ((rx_pkt_size >= 512) && (rx_pkt_size < 1024)) {              
                                                                                         │                                                                                          
                        if (coal_conf->tx_coal_type != MEDIUM_COALESCE) {                │                          if (coal_conf->rx_coal_type != MEDIUM_COALESCE) {               
                                coal_conf->tx_timeout = 2;                               │                                  coal_conf->rx_timeout = 1;                              
                                coal_conf->tx_event_count = 5;                           │                                  coal_conf->rx_event_count = 4;                          
                                amd8111e_set_coalesce(dev, TX_INTR_COAL);                │                                  amd8111e_set_coalesce(dev, RX_INTR_COAL);               
                                coal_conf->tx_coal_type = MEDIUM_COALESCE;               │                                  coal_conf->rx_coal_type = MEDIUM_COALESCE;              
                        }                                                                │                          }                                                               
                } else if (tx_pkt_size >= 1024) {                                        │                                                                                          
                        if (coal_conf->tx_coal_type != HIGH_COALESCE) {                  │                  } else if (rx_pkt_size >= 1024) {                                       
                                coal_conf->tx_timeout = 4;                               │                                                                                          
                                coal_conf->tx_event_count = 8;                           │                          if (coal_conf->rx_coal_type !=  HIGH_COALESCE) {                
                                amd8111e_set_coalesce(dev, TX_INTR_COAL);                │                                  coal_conf->rx_timeout = 2;                              
                                coal_conf->tx_coal_type = HIGH_COALESCE;                 │                                  coal_conf->rx_event_count = 3;                          
                                                                                         │                                  amd8111e_set_coalesce(dev, RX_INTR_COAL);               
                                                                                         │                                  coal_conf->rx_coal_type = HIGH_COALESCE;                
                        }                                                                │                          }                                                               
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3075                               │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3044                                
                                                                                         │                                                                                          
        struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                  │          struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                 
                                                                                         │                                                                                          
        mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;                              │          mlxsw_sp->switchdev_ops = &mlxsw_sp1_switchdev_ops;                             
        mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;                                        │          mlxsw_sp->kvdl_ops = &mlxsw_sp1_kvdl_ops;                                       
        mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;                                      │          mlxsw_sp->afa_ops = &mlxsw_sp1_act_afa_ops;                                     
        mlxsw_sp->afk_ops = &mlxsw_sp2_afk_ops;                                          │          mlxsw_sp->afk_ops = &mlxsw_sp1_afk_ops;                                         
        mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;                                  │          mlxsw_sp->mr_tcam_ops = &mlxsw_sp1_mr_tcam_ops;                                 
        mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;                              │          mlxsw_sp->acl_rulei_ops = &mlxsw_sp1_acl_rulei_ops;                             
        mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;                                │          mlxsw_sp->acl_tcam_ops = &mlxsw_sp1_acl_tcam_ops;                               
        mlxsw_sp->acl_bf_ops = &mlxsw_sp2_acl_bf_ops;                                    │          mlxsw_sp->nve_ops_arr = mlxsw_sp1_nve_ops_arr;                                  
        mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;                                   │          mlxsw_sp->mac_mask = mlxsw_sp1_mac_mask;                                        
        mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;                                         │          mlxsw_sp->sb_vals = &mlxsw_sp1_sb_vals;                                         
        mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;                                          │          mlxsw_sp->sb_ops = &mlxsw_sp1_sb_ops;                                           
        mlxsw_sp->sb_ops = &mlxsw_sp2_sb_ops;                                            │          mlxsw_sp->port_type_speed_ops = &mlxsw_sp1_port_type_speed_ops;                 
        mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;                  │          mlxsw_sp->ptp_ops = &mlxsw_sp1_ptp_ops;                                         
        mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;                                          │          mlxsw_sp->span_ops = &mlxsw_sp1_span_ops;                                       
        mlxsw_sp->span_ops = &mlxsw_sp2_span_ops;                                        │          mlxsw_sp->policer_core_ops = &mlxsw_sp1_policer_core_ops;                       
        mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;                        │          mlxsw_sp->trap_ops = &mlxsw_sp1_trap_ops;                                       
        mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;                                        │          mlxsw_sp->mall_ops = &mlxsw_sp1_mall_ops;                                       
        mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;                                        │          mlxsw_sp->router_ops = &mlxsw_sp1_router_ops;                                   
        mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;                                    │          mlxsw_sp->listeners = mlxsw_sp1_listener;                                       
        mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP2;                │          mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp1_listener);                     
                                                                                         │          mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP1;               
                                                                                         │                                                                                          
        return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                        │          return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3105                               │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3044                                
                                                                                         │                                                                                          
        struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                  │          struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                 
                                                                                         │                                                                                          
        mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;                              │          mlxsw_sp->switchdev_ops = &mlxsw_sp1_switchdev_ops;                             
        mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;                                        │          mlxsw_sp->kvdl_ops = &mlxsw_sp1_kvdl_ops;                                       
        mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;                                      │          mlxsw_sp->afa_ops = &mlxsw_sp1_act_afa_ops;                                     
        mlxsw_sp->afk_ops = &mlxsw_sp2_afk_ops;                                          │          mlxsw_sp->afk_ops = &mlxsw_sp1_afk_ops;                                         
        mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;                                  │          mlxsw_sp->mr_tcam_ops = &mlxsw_sp1_mr_tcam_ops;                                 
        mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;                              │          mlxsw_sp->acl_rulei_ops = &mlxsw_sp1_acl_rulei_ops;                             
        mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;                                │          mlxsw_sp->acl_tcam_ops = &mlxsw_sp1_acl_tcam_ops;                               
        mlxsw_sp->acl_bf_ops = &mlxsw_sp2_acl_bf_ops;                                    │          mlxsw_sp->nve_ops_arr = mlxsw_sp1_nve_ops_arr;                                  
        mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;                                   │          mlxsw_sp->mac_mask = mlxsw_sp1_mac_mask;                                        
        mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;                                         │          mlxsw_sp->sb_vals = &mlxsw_sp1_sb_vals;                                         
        mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;                                          │          mlxsw_sp->sb_ops = &mlxsw_sp1_sb_ops;                                           
        mlxsw_sp->sb_ops = &mlxsw_sp3_sb_ops;                                            │          mlxsw_sp->port_type_speed_ops = &mlxsw_sp1_port_type_speed_ops;                 
        mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;                  │          mlxsw_sp->ptp_ops = &mlxsw_sp1_ptp_ops;                                         
        mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;                                          │          mlxsw_sp->span_ops = &mlxsw_sp1_span_ops;                                       
        mlxsw_sp->span_ops = &mlxsw_sp3_span_ops;                                        │          mlxsw_sp->policer_core_ops = &mlxsw_sp1_policer_core_ops;                       
        mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;                        │          mlxsw_sp->trap_ops = &mlxsw_sp1_trap_ops;                                       
        mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;                                        │          mlxsw_sp->mall_ops = &mlxsw_sp1_mall_ops;                                       
        mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;                                        │          mlxsw_sp->router_ops = &mlxsw_sp1_router_ops;                                   
        mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;                                    │          mlxsw_sp->listeners = mlxsw_sp1_listener;                                       
        mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP3;                │          mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp1_listener);                     
                                                                                         │          mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP1;               
                                                                                         │                                                                                          
        return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                        │          return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3135                               │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3044                                
                                                                                         │                                                                                          
        struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                  │          struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                 
                                                                                         │                                                                                          
        mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;                              │          mlxsw_sp->switchdev_ops = &mlxsw_sp1_switchdev_ops;                             
        mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;                                        │          mlxsw_sp->kvdl_ops = &mlxsw_sp1_kvdl_ops;                                       
        mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;                                      │          mlxsw_sp->afa_ops = &mlxsw_sp1_act_afa_ops;                                     
        mlxsw_sp->afk_ops = &mlxsw_sp4_afk_ops;                                          │          mlxsw_sp->afk_ops = &mlxsw_sp1_afk_ops;                                         
        mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;                                  │          mlxsw_sp->mr_tcam_ops = &mlxsw_sp1_mr_tcam_ops;                                 
        mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;                              │          mlxsw_sp->acl_rulei_ops = &mlxsw_sp1_acl_rulei_ops;                             
        mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;                                │          mlxsw_sp->acl_tcam_ops = &mlxsw_sp1_acl_tcam_ops;                               
        mlxsw_sp->acl_bf_ops = &mlxsw_sp4_acl_bf_ops;                                    │          mlxsw_sp->nve_ops_arr = mlxsw_sp1_nve_ops_arr;                                  
        mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;                                   │          mlxsw_sp->mac_mask = mlxsw_sp1_mac_mask;                                        
        mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;                                         │          mlxsw_sp->sb_vals = &mlxsw_sp1_sb_vals;                                         
        mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;                                          │          mlxsw_sp->sb_ops = &mlxsw_sp1_sb_ops;                                           
        mlxsw_sp->sb_ops = &mlxsw_sp3_sb_ops;                                            │          mlxsw_sp->port_type_speed_ops = &mlxsw_sp1_port_type_speed_ops;                 
        mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;                  │          mlxsw_sp->ptp_ops = &mlxsw_sp1_ptp_ops;                                         
        mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;                                          │          mlxsw_sp->span_ops = &mlxsw_sp1_span_ops;                                       
        mlxsw_sp->span_ops = &mlxsw_sp3_span_ops;                                        │          mlxsw_sp->policer_core_ops = &mlxsw_sp1_policer_core_ops;                       
        mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;                        │          mlxsw_sp->trap_ops = &mlxsw_sp1_trap_ops;                                       
        mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;                                        │          mlxsw_sp->mall_ops = &mlxsw_sp1_mall_ops;                                       
        mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;                                        │          mlxsw_sp->router_ops = &mlxsw_sp1_router_ops;                                   
        mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;                                    │          mlxsw_sp->listeners = mlxsw_sp1_listener;                                       
        mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP4;                │          mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp1_listener);                     
                                                                                         │          mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP1;               
                                                                                         │                                                                                          
        return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                        │          return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3105                               │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3075                                
                                                                                         │                                                                                          
        struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                  │          struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                 
                                                                                         │                                                                                          
        mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;                              │          mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;                             
        mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;                                        │          mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;                                       
        mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;                                      │          mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;                                     
        mlxsw_sp->afk_ops = &mlxsw_sp2_afk_ops;                                          │          mlxsw_sp->afk_ops = &mlxsw_sp2_afk_ops;                                         
        mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;                                  │          mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;                                 
        mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;                              │          mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;                             
        mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;                                │          mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;                               
        mlxsw_sp->acl_bf_ops = &mlxsw_sp2_acl_bf_ops;                                    │          mlxsw_sp->acl_bf_ops = &mlxsw_sp2_acl_bf_ops;                                   
        mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;                                   │          mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;                                  
        mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;                                         │          mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;                                        
        mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;                                          │          mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;                                         
        mlxsw_sp->sb_ops = &mlxsw_sp3_sb_ops;                                            │          mlxsw_sp->sb_ops = &mlxsw_sp2_sb_ops;                                           
        mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;                  │          mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;                 
        mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;                                          │          mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;                                         
        mlxsw_sp->span_ops = &mlxsw_sp3_span_ops;                                        │          mlxsw_sp->span_ops = &mlxsw_sp2_span_ops;                                       
        mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;                        │          mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;                       
        mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;                                        │          mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;                                       
        mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;                                        │          mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;                                       
        mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;                                    │          mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;                                   
        mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP3;                │          mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP2;               
                                                                                         │                                                                                          
        return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                        │          return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3135                               │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3075                                
                                                                                         │                                                                                          
        struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                  │          struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                 
                                                                                         │                                                                                          
        mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;                              │          mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;                             
        mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;                                        │          mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;                                       
        mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;                                      │          mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;                                     
        mlxsw_sp->afk_ops = &mlxsw_sp4_afk_ops;                                          │          mlxsw_sp->afk_ops = &mlxsw_sp2_afk_ops;                                         
        mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;                                  │          mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;                                 
        mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;                              │          mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;                             
        mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;                                │          mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;                               
        mlxsw_sp->acl_bf_ops = &mlxsw_sp4_acl_bf_ops;                                    │          mlxsw_sp->acl_bf_ops = &mlxsw_sp2_acl_bf_ops;                                   
        mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;                                   │          mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;                                  
        mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;                                         │          mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;                                        
        mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;                                          │          mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;                                         
        mlxsw_sp->sb_ops = &mlxsw_sp3_sb_ops;                                            │          mlxsw_sp->sb_ops = &mlxsw_sp2_sb_ops;                                           
        mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;                  │          mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;                 
        mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;                                          │          mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;                                         
        mlxsw_sp->span_ops = &mlxsw_sp3_span_ops;                                        │          mlxsw_sp->span_ops = &mlxsw_sp2_span_ops;                                       
        mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;                        │          mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;                       
        mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;                                        │          mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;                                       
        mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;                                        │          mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;                                       
        mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;                                    │          mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;                                   
        mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP4;                │          mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP2;               
                                                                                         │                                                                                          
        return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                        │          return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3135                               │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum.c:3105                                
                                                                                         │                                                                                          
        struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                  │          struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);                 
                                                                                         │                                                                                          
        mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;                              │          mlxsw_sp->switchdev_ops = &mlxsw_sp2_switchdev_ops;                             
        mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;                                        │          mlxsw_sp->kvdl_ops = &mlxsw_sp2_kvdl_ops;                                       
        mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;                                      │          mlxsw_sp->afa_ops = &mlxsw_sp2_act_afa_ops;                                     
        mlxsw_sp->afk_ops = &mlxsw_sp4_afk_ops;                                          │          mlxsw_sp->afk_ops = &mlxsw_sp2_afk_ops;                                         
        mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;                                  │          mlxsw_sp->mr_tcam_ops = &mlxsw_sp2_mr_tcam_ops;                                 
        mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;                              │          mlxsw_sp->acl_rulei_ops = &mlxsw_sp2_acl_rulei_ops;                             
        mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;                                │          mlxsw_sp->acl_tcam_ops = &mlxsw_sp2_acl_tcam_ops;                               
        mlxsw_sp->acl_bf_ops = &mlxsw_sp4_acl_bf_ops;                                    │          mlxsw_sp->acl_bf_ops = &mlxsw_sp2_acl_bf_ops;                                   
        mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;                                   │          mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr;                                  
        mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;                                         │          mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask;                                        
        mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;                                          │          mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals;                                         
        mlxsw_sp->sb_ops = &mlxsw_sp3_sb_ops;                                            │          mlxsw_sp->sb_ops = &mlxsw_sp3_sb_ops;                                           
        mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;                  │          mlxsw_sp->port_type_speed_ops = &mlxsw_sp2_port_type_speed_ops;                 
        mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;                                          │          mlxsw_sp->ptp_ops = &mlxsw_sp2_ptp_ops;                                         
        mlxsw_sp->span_ops = &mlxsw_sp3_span_ops;                                        │          mlxsw_sp->span_ops = &mlxsw_sp3_span_ops;                                       
        mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;                        │          mlxsw_sp->policer_core_ops = &mlxsw_sp2_policer_core_ops;                       
        mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;                                        │          mlxsw_sp->trap_ops = &mlxsw_sp2_trap_ops;                                       
        mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;                                        │          mlxsw_sp->mall_ops = &mlxsw_sp2_mall_ops;                                       
        mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;                                    │          mlxsw_sp->router_ops = &mlxsw_sp2_router_ops;                                   
        mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP4;                │          mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP3;               
                                                                                         │                                                                                          
        return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                        │          return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack);                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c:1360                           │ linux/drivers/net/ethernet/cavium/liquidio/lio_main.c:2234                               
                                                                                         │                                                                                          
                                                                                         │          int retval;                                                                     
        struct octeon_soft_command *sc;                                                  │          struct octeon_soft_command *sc;                                                 
        int ring_doorbell;                                                               │                                                                                          
        struct lio *lio;                                                                 │          struct lio *lio;                                                                
        int retval;                                                                      │          int ring_doorbell;                                                              
        u32 len;                                                                         │          u32 len;                                                                        
                                                                                         │                                                                                          
        lio = finfo->lio;                                                                │          lio = finfo->lio;                                                               
                                                                                         │                                                                                          
        sc = octeon_alloc_soft_command_resp(oct, &ndata->cmd,                            │          sc = octeon_alloc_soft_command_resp(oct, &ndata->cmd,                           
                                            sizeof(struct oct_timestamp_resp));          │                                              sizeof(struct oct_timestamp_resp));         
        finfo->sc = sc;                                                                  │          finfo->sc = sc;                                                                 
                                                                                         │                                                                                          
        if (!sc) {                                                                       │          if (!sc) {                                                                      
                dev_err(&oct->pci_dev->dev, "No memory for timestamped data packet\n");  │                  dev_err(&oct->pci_dev->dev, "No memory for timestamped data packet\n"); 
                return IQ_SEND_FAILED;                                                   │                  return IQ_SEND_FAILED;                                                  
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (ndata->reqtype == REQTYPE_NORESP_NET)                                        │          if (ndata->reqtype == REQTYPE_NORESP_NET)                                       
                ndata->reqtype = REQTYPE_RESP_NET;                                       │                  ndata->reqtype = REQTYPE_RESP_NET;                                      
        else if (ndata->reqtype == REQTYPE_NORESP_NET_SG)                                │          else if (ndata->reqtype == REQTYPE_NORESP_NET_SG)                               
                ndata->reqtype = REQTYPE_RESP_NET_SG;                                    │                  ndata->reqtype = REQTYPE_RESP_NET_SG;                                   
                                                                                         │                                                                                          
        sc->callback = handle_timestamp;                                                 │          sc->callback = handle_timestamp;                                                
        sc->callback_arg = finfo->skb;                                                   │          sc->callback_arg = finfo->skb;                                                  
        sc->iq_no = ndata->q_no;                                                         │          sc->iq_no = ndata->q_no;                                                        
                                                                                         │                                                                                          
        len = (u32)((struct octeon_instr_ih3 *)(&sc->cmd.cmd3.ih3))->dlengsz;            │          if (OCTEON_CN23XX_PF(oct))                                                      
                                                                                         │                  len = (u32)((struct octeon_instr_ih3 *)                                 
                                                                                         │                              (&sc->cmd.cmd3.ih3))->dlengsz;                              
                                                                                         │          else                                                                            
                                                                                         │                  len = (u32)((struct octeon_instr_ih2 *)                                 
                                                                                         │                              (&sc->cmd.cmd2.ih2))->dlengsz;                              
                                                                                         │                                                                                          
        ring_doorbell = !xmit_more;                                                      │          ring_doorbell = !xmit_more;                                                     
                                                                                         │                                                                                          
        retval = octeon_send_command(oct, sc->iq_no, ring_doorbell, &sc->cmd,            │          retval = octeon_send_command(oct, sc->iq_no, ring_doorbell, &sc->cmd,           
                                     sc, len, ndata->reqtype);                           │                                       sc, len, ndata->reqtype);                          
                                                                                         │                                                                                          
        if (retval == IQ_SEND_FAILED) {                                                  │          if (retval == IQ_SEND_FAILED) {                                                 
                dev_err(&oct->pci_dev->dev, "timestamp data packet failed status: %x\n", │                  dev_err(&oct->pci_dev->dev, "timestamp data packet failed status: %x\n",
                        retval);                                                         │                          retval);                                                        
                octeon_free_soft_command(oct, sc);                                       │                  octeon_free_soft_command(oct, sc);                                      
        } else {                                                                         │          } else {                                                                        
                netif_info(lio, tx_queued, lio->netdev, "Queued timestamp packet\n");    │                  netif_info(lio, tx_queued, lio->netdev, "Queued timestamp packet\n");   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return retval;                                                                   │          return retval;                                                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c:2322                      │ linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c:2366                       
                                                                                         │                                                                                          
        struct hclge_rx_priv_wl_buf *req;                                                │          struct hclge_shared_buf *s_buf = &buf_alloc->s_buf;                             
        struct hclge_priv_buf *priv;                                                     │          struct hclge_rx_com_thrd *req;                                                  
        struct hclge_desc desc[2];                                                       │          struct hclge_desc desc[2];                                                      
                                                                                         │          struct hclge_tc_thrd *tc;                                                       
        int i, j;                                                                        │          int i, j;                                                                       
        int ret;                                                                         │          int ret;                                                                        
                                                                                         │                                                                                          
        for (i = 0; i < 2; i++) {                                                        │          for (i = 0; i < 2; i++) {                                                       
                hclge_cmd_setup_basic_desc(&desc[i], HCLGE_OPC_RX_PRIV_WL_ALLOC,         │                  hclge_cmd_setup_basic_desc(&desc[i],                                    
                                           false);                                       │                                             HCLGE_OPC_RX_COM_THRD_ALLOC, false);         
                req = (struct hclge_rx_priv_wl_buf *)desc[i].data;                       │                  req = (struct hclge_rx_com_thrd *)&desc[i].data;                        
                                                                                         │                                                                                          
                /* The first descriptor set the NEXT bit to 1 */                         │                  /* The first descriptor set the NEXT bit to 1 */                        
                if (i == 0)                                                              │                  if (i == 0)                                                             
                        desc[i].flag |= cpu_to_le16(HCLGE_COMM_CMD_FLAG_NEXT);           │                          desc[i].flag |= cpu_to_le16(HCLGE_COMM_CMD_FLAG_NEXT);          
                else                                                                     │                  else                                                                    
                        desc[i].flag &= ~cpu_to_le16(HCLGE_COMM_CMD_FLAG_NEXT);          │                          desc[i].flag &= ~cpu_to_le16(HCLGE_COMM_CMD_FLAG_NEXT);         
                                                                                         │                                                                                          
                for (j = 0; j < HCLGE_TC_NUM_ONE_DESC; j++) {                            │                  for (j = 0; j < HCLGE_TC_NUM_ONE_DESC; j++) {                           
                        u32 idx = i * HCLGE_TC_NUM_ONE_DESC + j;                         │                          tc = &s_buf->tc_thrd[i * HCLGE_TC_NUM_ONE_DESC + j];            
                                                                                         │                                                                                          
                        priv = &buf_alloc->priv_buf[idx];                                │                          req->com_thrd[j].high =                                         
                        req->tc_wl[j].high =                                             │                                  cpu_to_le16(tc->high >> HCLGE_BUF_UNIT_S);              
                                cpu_to_le16(priv->wl.high >> HCLGE_BUF_UNIT_S);          │                          req->com_thrd[j].high |=                                        
                        req->tc_wl[j].high |=                                            │                                   cpu_to_le16(BIT(HCLGE_RX_PRIV_EN_B));                  
                                cpu_to_le16(BIT(HCLGE_RX_PRIV_EN_B));                    │                          req->com_thrd[j].low =                                          
                        req->tc_wl[j].low =                                              │                                  cpu_to_le16(tc->low >> HCLGE_BUF_UNIT_S);               
                                cpu_to_le16(priv->wl.low >> HCLGE_BUF_UNIT_S);           │                          req->com_thrd[j].low |=                                         
                        req->tc_wl[j].low |=                                             │                                                                                          
                                 cpu_to_le16(BIT(HCLGE_RX_PRIV_EN_B));                   │                                   cpu_to_le16(BIT(HCLGE_RX_PRIV_EN_B));                  
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Send 2 descriptor at one time */                                              │          /* Send 2 descriptors at one time */                                            
        ret = hclge_cmd_send(&hdev->hw, desc, 2);                                        │          ret = hclge_cmd_send(&hdev->hw, desc, 2);                                       
        if (ret)                                                                         │          if (ret)                                                                        
                dev_err(&hdev->pdev->dev,                                                │                  dev_err(&hdev->pdev->dev,                                               
                        "rx private waterline config cmd failed %d\n",                   │                          "common threshold config cmd failed %d\n", ret);                
                        ret);                                                            │                                                                                          
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:2859                                             │ linux/drivers/net/ethernet/sfc/falcon/farch.c:2779                                       
                                                                                         │                                                                                          
        struct efx_farch_filter_state *state = efx->filter_state;                        │          struct ef4_farch_filter_state *state = efx->filter_state;                       
        enum efx_farch_filter_table_id table_id;                                         │          enum ef4_farch_filter_table_id table_id;                                        
        struct efx_farch_filter_table *table;                                            │          struct ef4_farch_filter_table *table;                                           
        efx_oword_t filter;                                                              │          ef4_oword_t filter;                                                             
        unsigned int filter_idx;                                                         │          unsigned int filter_idx;                                                        
                                                                                         │                                                                                          
        down_write(&state->lock);                                                        │          spin_lock_bh(&efx->filter_lock);                                                
                                                                                         │                                                                                          
        for (table_id = EFX_FARCH_FILTER_TABLE_RX_IP;                                    │          for (table_id = EF4_FARCH_FILTER_TABLE_RX_IP;                                   
             table_id <= EFX_FARCH_FILTER_TABLE_RX_DEF;                                  │               table_id <= EF4_FARCH_FILTER_TABLE_RX_DEF;                                 
             table_id++) {                                                               │               table_id++) {                                                              
                table = &state->table[table_id];                                         │                  table = &state->table[table_id];                                        
                                                                                         │                                                                                          
                for (filter_idx = 0; filter_idx < table->size; filter_idx++) {           │                  for (filter_idx = 0; filter_idx < table->size; filter_idx++) {          
                        if (!test_bit(filter_idx, table->used_bitmap) ||                 │                          if (!test_bit(filter_idx, table->used_bitmap) ||                
                            table->spec[filter_idx].dmaq_id >=                           │                              table->spec[filter_idx].dmaq_id >=                          
                            efx->n_rx_channels)                                          │                              efx->n_rx_channels)                                         
                                continue;                                                │                                  continue;                                               
                                                                                         │                                                                                          
                        if (efx->rx_scatter)                                             │                          if (efx->rx_scatter)                                            
                                table->spec[filter_idx].flags |=                         │                                  table->spec[filter_idx].flags |=                        
                                        EFX_FILTER_FLAG_RX_SCATTER;                      │                                          EF4_FILTER_FLAG_RX_SCATTER;                     
                        else                                                             │                          else                                                            
                                table->spec[filter_idx].flags &=                         │                                  table->spec[filter_idx].flags &=                        
                                        ~EFX_FILTER_FLAG_RX_SCATTER;                     │                                          ~EF4_FILTER_FLAG_RX_SCATTER;                    
                                                                                         │                                                                                          
                        if (table_id == EFX_FARCH_FILTER_TABLE_RX_DEF)                   │                          if (table_id == EF4_FARCH_FILTER_TABLE_RX_DEF)                  
                                /* Pushed by efx_farch_filter_push_rx_config() */        │                                  /* Pushed by ef4_farch_filter_push_rx_config() */       
                                continue;                                                │                                  continue;                                               
                                                                                         │                                                                                          
                        efx_farch_filter_build(&filter, &table->spec[filter_idx]);       │                          ef4_farch_filter_build(&filter, &table->spec[filter_idx]);      
                        efx_writeo(efx, &filter,                                         │                          ef4_writeo(efx, &filter,                                        
                                   table->offset + table->step * filter_idx);            │                                     table->offset + table->step * filter_idx);           
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        efx_farch_filter_push_rx_config(efx);                                            │          ef4_farch_filter_push_rx_config(efx);                                           
                                                                                         │                                                                                          
        up_write(&state->lock);                                                          │          spin_unlock_bh(&efx->filter_lock);                                              
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v1.c:1804                 │ linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v0.c:1648                  
                                                                                         │                                                                                          
        struct mlx5dr_match_misc *misc = &value->misc;                                   │          struct mlx5dr_match_misc *misc = &value->misc;                                  
        struct mlx5dr_cmd_vport_cap *vport_cap;                                          │          struct mlx5dr_cmd_vport_cap *vport_cap;                                         
        struct mlx5dr_domain *dmn = sb->dmn;                                             │          struct mlx5dr_domain *dmn = sb->dmn;                                            
        struct mlx5dr_domain *vport_dmn;                                                 │          struct mlx5dr_domain *vport_dmn;                                                
        u8 *bit_mask = sb->bit_mask;                                                     │          u8 *bit_mask = sb->bit_mask;                                                    
                                                                                         │          bool source_gvmi_set;                                                           
                                                                                         │                                                                                          
        DR_STE_SET_TAG(src_gvmi_qp_v1, tag, source_qp, misc, source_sqn);                │          DR_STE_SET_TAG(src_gvmi_qp, tag, source_qp, misc, source_sqn);                  
                                                                                         │                                                                                          
        if (sb->vhca_id_valid) {                                                         │          if (sb->vhca_id_valid) {                                                        
                /* Find port GVMI based on the eswitch_owner_vhca_id */                  │                  /* Find port GVMI based on the eswitch_owner_vhca_id */                 
                if (misc->source_eswitch_owner_vhca_id == dmn->info.caps.gvmi)           │                  if (misc->source_eswitch_owner_vhca_id == dmn->info.caps.gvmi)          
                        vport_dmn = dmn;                                                 │                          vport_dmn = dmn;                                                
                else if (dmn->peer_dmn && (misc->source_eswitch_owner_vhca_id ==         │                  else if (dmn->peer_dmn && (misc->source_eswitch_owner_vhca_id ==        
                                           dmn->peer_dmn->info.caps.gvmi))               │                                             dmn->peer_dmn->info.caps.gvmi))              
                        vport_dmn = dmn->peer_dmn;                                       │                          vport_dmn = dmn->peer_dmn;                                      
                else                                                                     │                  else                                                                    
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
                                                                                         │                                                                                          
                misc->source_eswitch_owner_vhca_id = 0;                                  │                  misc->source_eswitch_owner_vhca_id = 0;                                 
        } else {                                                                         │          } else {                                                                        
                vport_dmn = dmn;                                                         │                  vport_dmn = dmn;                                                        
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!MLX5_GET(ste_src_gvmi_qp_v1, bit_mask, source_gvmi))                        │          source_gvmi_set = MLX5_GET(ste_src_gvmi_qp, bit_mask, source_gvmi);             
                return 0;                                                                │          if (source_gvmi_set) {                                                          
                                                                                         │                  vport_cap = mlx5dr_domain_get_vport_cap(vport_dmn,                      
                                                                                         │                                                          misc->source_port);             
                                                                                         │                  if (!vport_cap) {                                                       
                                                                                         │                          mlx5dr_err(dmn, "Vport 0x%x is disabled or invalid\n",          
                                                                                         │                                     misc->source_port);                                  
                                                                                         │                          return -EINVAL;                                                 
                                                                                         │                  }                                                                       
                                                                                         │                                                                                          
        vport_cap = mlx5dr_domain_get_vport_cap(vport_dmn, misc->source_port);           │                  if (vport_cap->vport_gvmi)                                              
        if (!vport_cap) {                                                                │                          MLX5_SET(ste_src_gvmi_qp, tag, source_gvmi, vport_cap->vport_gvm
                mlx5dr_err(dmn, "Vport 0x%x is disabled or invalid\n",                   │                                                                                          
                           misc->source_port);                                           │                                                                                          
                return -EINVAL;                                                          │                                                                                          
        }                                                                                │                                                                                          
                                                                                         │                                                                                          
        if (vport_cap->vport_gvmi)                                                       │                  misc->source_port = 0;                                                  
                MLX5_SET(ste_src_gvmi_qp_v1, tag, source_gvmi, vport_cap->vport_gvmi);   │          }                                                                               
                                                                                         │                                                                                          
        misc->source_port = 0;                                                           │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c:171                             │ linux/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c:205                              
                                                                                         │                                                                                          
                if (f->fs.type) {                                                        │                  if (f->fs.type) {                                                       
                        set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W,                   │                          set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W,             
                                      WORD_MASK, f->fs.nat_lip[15] |                     │                                        WORD_MASK, f->fs.nat_fip[15] |                    
                                      f->fs.nat_lip[14] << 8 |                           │                                        f->fs.nat_fip[14] << 8 |                          
                                      f->fs.nat_lip[13] << 16 |                          │                                        f->fs.nat_fip[13] << 16 |                         
                                      (u64)f->fs.nat_lip[12] << 24, 1);                  │                                        (u64)f->fs.nat_fip[12] << 24, 1);                 
                                                                                         │                                                                                          
                        set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W + 1,               │                          set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W + 1,         
                                      WORD_MASK, f->fs.nat_lip[11] |                     │                                        WORD_MASK, f->fs.nat_fip[11] |                    
                                      f->fs.nat_lip[10] << 8 |                           │                                        f->fs.nat_fip[10] << 8 |                          
                                      f->fs.nat_lip[9] << 16 |                           │                                        f->fs.nat_fip[9] << 16 |                          
                                      (u64)f->fs.nat_lip[8] << 24, 1);                   │                                        (u64)f->fs.nat_fip[8] << 24, 1);                  
                                                                                         │                                                                                          
                        set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W + 2,               │                          set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W + 2,         
                                      WORD_MASK, f->fs.nat_lip[7] |                      │                                        WORD_MASK, f->fs.nat_fip[7] |                     
                                      f->fs.nat_lip[6] << 8 |                            │                                        f->fs.nat_fip[6] << 8 |                           
                                      f->fs.nat_lip[5] << 16 |                           │                                        f->fs.nat_fip[5] << 16 |                          
                                      (u64)f->fs.nat_lip[4] << 24, 1);                   │                                        (u64)f->fs.nat_fip[4] << 24, 1);                  
                                                                                         │                                                                                          
                                                                                         │                          set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W + 3,         
                                                                                         │                                        WORD_MASK, f->fs.nat_fip[3] |                     
                                                                                         │                                        f->fs.nat_fip[2] << 8 |                           
                                                                                         │                                        f->fs.nat_fip[1] << 16 |                          
                                                                                         │                                        (u64)f->fs.nat_fip[0] << 24, 1);                  
                                                                                         │                                                                                          
                        set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W + 3,               │                                                                                          
                                      WORD_MASK, f->fs.nat_lip[3] |                      │                                                                                          
                                      f->fs.nat_lip[2] << 8 |                            │                                                                                          
                                      f->fs.nat_lip[1] << 16 |                           │                                                                                          
                                      (u64)f->fs.nat_lip[0] << 24, 1);                   │                                                                                          
                } else {                                                                 │                  } else {                                                                
                        set_tcb_field(adap, f, tid, TCB_RX_FRAG3_LEN_RAW_W,              │                          set_tcb_field(adap, f, tid,                                     
                                      WORD_MASK, f->fs.nat_lip[3] |                      │                                        TCB_RX_FRAG3_START_IDX_OFFSET_RAW_W,              
                                      f->fs.nat_lip[2] << 8 |                            │                                        WORD_MASK, f->fs.nat_fip[3] |                     
                                      f->fs.nat_lip[1] << 16 |                           │                                        f->fs.nat_fip[2] << 8 |                           
                                      (u64)f->fs.nat_lip[0] << 24, 1);                   │                                        f->fs.nat_fip[1] << 16 |                          
                                                                                         │                                        (u64)f->fs.nat_fip[0] << 24, 1);                  
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/e1000_phy.c:170                                    │ linux/drivers/net/ethernet/intel/igb/e1000_phy.c:114                                     
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        u32 i, mdic = 0;                                                                 │          u32 i, mdic = 0;                                                                
        s32 ret_val = 0;                                                                 │          s32 ret_val = 0;                                                                
                                                                                         │                                                                                          
        if (offset > MAX_PHY_REG_ADDRESS) {                                              │          if (offset > MAX_PHY_REG_ADDRESS) {                                             
                hw_dbg("PHY Address %d is out of range\n", offset);                      │                  hw_dbg("PHY Address %d is out of range\n", offset);                     
                ret_val = -E1000_ERR_PARAM;                                              │                  ret_val = -E1000_ERR_PARAM;                                             
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Set up Op-code, Phy Address, and register offset in the MDI                   │          /* Set up Op-code, Phy Address, and register offset in the MDI                  
         * Control register.  The MAC will take care of interfacing with the             │           * Control register.  The MAC will take care of interfacing with the            
         * PHY to retrieve the desired data.                                             │           * PHY to retrieve the desired data.                                            
         */                                                                              │           */                                                                             
        mdic = (((u32)data) |                                                            │          mdic = ((offset << E1000_MDIC_REG_SHIFT) |                                      
                (offset << E1000_MDIC_REG_SHIFT) |                                       │                                                                                          
                (phy->addr << E1000_MDIC_PHY_SHIFT) |                                    │                  (phy->addr << E1000_MDIC_PHY_SHIFT) |                                   
                (E1000_MDIC_OP_WRITE));                                                  │                  (E1000_MDIC_OP_READ));                                                  
                                                                                         │                                                                                          
        wr32(E1000_MDIC, mdic);                                                          │          wr32(E1000_MDIC, mdic);                                                         
                                                                                         │                                                                                          
        /* Poll the ready bit to see if the MDI read completed                           │          /* Poll the ready bit to see if the MDI read completed                          
         * Increasing the time out as testing showed failures with                       │           * Increasing the time out as testing showed failures with                      
         * the lower time out                                                            │           * the lower time out                                                           
         */                                                                              │           */                                                                             
        for (i = 0; i < (E1000_GEN_POLL_TIMEOUT * 3); i++) {                             │          for (i = 0; i < (E1000_GEN_POLL_TIMEOUT * 3); i++) {                            
                udelay(50);                                                              │                  udelay(50);                                                             
                mdic = rd32(E1000_MDIC);                                                 │                  mdic = rd32(E1000_MDIC);                                                
                if (mdic & E1000_MDIC_READY)                                             │                  if (mdic & E1000_MDIC_READY)                                            
                        break;                                                           │                          break;                                                          
        }                                                                                │          }                                                                               
        if (!(mdic & E1000_MDIC_READY)) {                                                │          if (!(mdic & E1000_MDIC_READY)) {                                               
                hw_dbg("MDI Write did not complete\n");                                  │                  hw_dbg("MDI Read did not complete\n");                                  
                ret_val = -E1000_ERR_PHY;                                                │                  ret_val = -E1000_ERR_PHY;                                               
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
        if (mdic & E1000_MDIC_ERROR) {                                                   │          if (mdic & E1000_MDIC_ERROR) {                                                  
                hw_dbg("MDI Error\n");                                                   │                  hw_dbg("MDI Error\n");                                                  
                ret_val = -E1000_ERR_PHY;                                                │                  ret_val = -E1000_ERR_PHY;                                               
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │          *data = (u16) mdic;                                                             
                                                                                         │                                                                                          
out:                                                                                     │  out:                                                                                    
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c:1262                   │ linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c:1298                    
                                                                                         │                                                                                          
        struct hclge_rx_priv_wl_buf *rx_priv_wl;                                         │          struct hclge_rx_com_thrd *rx_com_thrd;                                          
        struct hclge_desc desc[2];                                                       │          struct hclge_desc desc[2];                                                      
        int pos = 0;                                                                     │          int pos = 0;                                                                    
        int i, ret;                                                                      │          int i, ret;                                                                     
                                                                                         │                                                                                          
        hclge_cmd_setup_basic_desc(&desc[0], HCLGE_OPC_RX_PRIV_WL_ALLOC, true);          │          hclge_cmd_setup_basic_desc(&desc[0], HCLGE_OPC_RX_COM_THRD_ALLOC, true);        
        desc[0].flag |= cpu_to_le16(HCLGE_COMM_CMD_FLAG_NEXT);                           │          desc[0].flag |= cpu_to_le16(HCLGE_COMM_CMD_FLAG_NEXT);                          
        hclge_cmd_setup_basic_desc(&desc[1], HCLGE_OPC_RX_PRIV_WL_ALLOC, true);          │          hclge_cmd_setup_basic_desc(&desc[1], HCLGE_OPC_RX_COM_THRD_ALLOC, true);        
        ret = hclge_cmd_send(&hdev->hw, desc, 2);                                        │          ret = hclge_cmd_send(&hdev->hw, desc, 2);                                       
        if (ret) {                                                                       │          if (ret) {                                                                      
                dev_err(&hdev->pdev->dev,                                                │                  dev_err(&hdev->pdev->dev,                                               
                        "failed to dump rx priv wl buf, ret = %d\n", ret);               │                          "failed to dump rx common threshold, ret = %d\n", ret);         
                return ret;                                                              │                  return ret;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        rx_priv_wl = (struct hclge_rx_priv_wl_buf *)desc[0].data;                        │          pos += scnprintf(buf + pos, len - pos, "\n");                                   
                                                                                         │          rx_com_thrd = (struct hclge_rx_com_thrd *)desc[0].data;                         
        for (i = 0; i < HCLGE_TC_NUM_ONE_DESC; i++)                                      │          for (i = 0; i < HCLGE_TC_NUM_ONE_DESC; i++)                                     
                pos += scnprintf(buf + pos, len - pos,                                   │                  pos += scnprintf(buf + pos, len - pos,                                  
                         "rx_priv_wl_tc_%d: high: 0x%x, low: 0x%x\n", i,                 │                           "rx_com_thrd_tc_%d: high: 0x%x, low: 0x%x\n", i,               
                         le16_to_cpu(rx_priv_wl->tc_wl[i].high),                         │                           le16_to_cpu(rx_com_thrd->com_thrd[i].high),                    
                         le16_to_cpu(rx_priv_wl->tc_wl[i].low));                         │                           le16_to_cpu(rx_com_thrd->com_thrd[i].low));                    
                                                                                         │                                                                                          
        rx_priv_wl = (struct hclge_rx_priv_wl_buf *)desc[1].data;                        │          rx_com_thrd = (struct hclge_rx_com_thrd *)desc[1].data;                         
        for (i = 0; i < HCLGE_TC_NUM_ONE_DESC; i++)                                      │          for (i = 0; i < HCLGE_TC_NUM_ONE_DESC; i++)                                     
                pos += scnprintf(buf + pos, len - pos,                                   │                  pos += scnprintf(buf + pos, len - pos,                                  
                         "rx_priv_wl_tc_%d: high: 0x%x, low: 0x%x\n",                    │                           "rx_com_thrd_tc_%d: high: 0x%x, low: 0x%x\n",                  
                         i + HCLGE_TC_NUM_ONE_DESC,                                      │                           i + HCLGE_TC_NUM_ONE_DESC,                                     
                         le16_to_cpu(rx_priv_wl->tc_wl[i].high),                         │                           le16_to_cpu(rx_com_thrd->com_thrd[i].high),                    
                         le16_to_cpu(rx_priv_wl->tc_wl[i].low));                         │                           le16_to_cpu(rx_com_thrd->com_thrd[i].low));                    
                                                                                         │                                                                                          
        return pos;                                                                      │          return pos;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_ethtool.c:735                                  │ linux/drivers/net/ethernet/intel/igc/igc_ethtool.c:458                                   
                                                                                         │                                                                                          
        struct igb_adapter *adapter = netdev_priv(netdev);                               │          struct igc_adapter *adapter = netdev_priv(netdev);                              
        struct e1000_hw *hw = &adapter->hw;                                              │          struct igc_hw *hw = &adapter->hw;                                               
        u16 *eeprom_buff;                                                                │                                                                                          
        int first_word, last_word;                                                       │          int first_word, last_word;                                                      
                                                                                         │          u16 *eeprom_buff;                                                               
        int ret_val = 0;                                                                 │          int ret_val = 0;                                                                
        u16 i;                                                                           │          u16 i;                                                                          
                                                                                         │                                                                                          
        if (eeprom->len == 0)                                                            │          if (eeprom->len == 0)                                                           
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        eeprom->magic = hw->vendor_id | (hw->device_id << 16);                           │          eeprom->magic = hw->vendor_id | (hw->device_id << 16);                          
                                                                                         │                                                                                          
        first_word = eeprom->offset >> 1;                                                │          first_word = eeprom->offset >> 1;                                               
        last_word = (eeprom->offset + eeprom->len - 1) >> 1;                             │          last_word = (eeprom->offset + eeprom->len - 1) >> 1;                            
                                                                                         │                                                                                          
        eeprom_buff = kmalloc_array(last_word - first_word + 1, sizeof(u16),             │          eeprom_buff = kmalloc_array(last_word - first_word + 1, sizeof(u16),            
                                    GFP_KERNEL);                                         │                                      GFP_KERNEL);                                        
        if (!eeprom_buff)                                                                │          if (!eeprom_buff)                                                               
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        if (hw->nvm.type == e1000_nvm_eeprom_spi)                                        │          if (hw->nvm.type == igc_nvm_eeprom_spi) {                                       
                ret_val = hw->nvm.ops.read(hw, first_word,                               │                  ret_val = hw->nvm.ops.read(hw, first_word,                              
                                           last_word - first_word + 1,                   │                                             last_word - first_word + 1,                  
                                           eeprom_buff);                                 │                                             eeprom_buff);                                
        else {                                                                           │          } else {                                                                        
                for (i = 0; i < last_word - first_word + 1; i++) {                       │                  for (i = 0; i < last_word - first_word + 1; i++) {                      
                        ret_val = hw->nvm.ops.read(hw, first_word + i, 1,                │                          ret_val = hw->nvm.ops.read(hw, first_word + i, 1,               
                                                   &eeprom_buff[i]);                     │                                                     &eeprom_buff[i]);                    
                        if (ret_val)                                                     │                          if (ret_val)                                                    
                                break;                                                   │                                  break;                                                  
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Device's eeprom is always little-endian, word addressable */                  │          /* Device's eeprom is always little-endian, word addressable */                 
        for (i = 0; i < last_word - first_word + 1; i++)                                 │          for (i = 0; i < last_word - first_word + 1; i++)                                
                le16_to_cpus(&eeprom_buff[i]);                                           │                  le16_to_cpus(&eeprom_buff[i]);                                          
                                                                                         │                                                                                          
        memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 1),                          │          memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 1),                         
                        eeprom->len);                                                    │                 eeprom->len);                                                            
        kfree(eeprom_buff);                                                              │          kfree(eeprom_buff);                                                             
                                                                                         │                                                                                          
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/bpf/jit.c:2171                                 │ linux/drivers/net/ethernet/netronome/nfp/bpf/jit.c:2059                                  
                                                                                         │                                                                                          
        const struct bpf_insn *insn = &meta->insn;                                       │          const struct bpf_insn *insn = &meta->insn;                                      
        u64 umin, umax;                                                                  │          u64 umin, umax;                                                                 
        u8 dst, src;                                                                     │          u8 dst, src;                                                                    
                                                                                         │                                                                                          
        dst = insn->dst_reg * 2;                                                         │          dst = insn->dst_reg * 2;                                                        
        umin = meta->umin_src;                                                           │          umin = meta->umin_src;                                                          
        umax = meta->umax_src;                                                           │          umax = meta->umax_src;                                                          
        if (umin == umax)                                                                │          if (umin == umax)                                                               
                return __shr_imm64(nfp_prog, dst, umin);                                 │                  return __shl_imm64(nfp_prog, dst, umin);                                
                                                                                         │                                                                                          
        src = insn->src_reg * 2;                                                         │          src = insn->src_reg * 2;                                                        
        if (umax < 32) {                                                                 │          if (umax < 32) {                                                                
                shr_reg64_lt32(nfp_prog, dst, src);                                      │                  shl_reg64_lt32(nfp_prog, dst, src);                                     
        } else if (umin >= 32) {                                                         │          } else if (umin >= 32) {                                                        
                shr_reg64_ge32(nfp_prog, dst, src);                                      │                  shl_reg64_ge32(nfp_prog, dst, src);                                     
        } else {                                                                         │          } else {                                                                        
                /* Generate different instruction sequences depending on runtime         │                  /* Generate different instruction sequences depending on runtime        
                 * value of shift amount.                                                │                   * value of shift amount.                                               
                 */                                                                      │                   */                                                                     
                u16 label_ge32, label_end;                                               │                  u16 label_ge32, label_end;                                              
                                                                                         │                                                                                          
                label_ge32 = nfp_prog_current_offset(nfp_prog) + 6;                      │                  label_ge32 = nfp_prog_current_offset(nfp_prog) + 7;                     
                emit_br_bset(nfp_prog, reg_a(src), 5, label_ge32, 0);                    │                  emit_br_bset(nfp_prog, reg_a(src), 5, label_ge32, 0);                   
                shr_reg64_lt32_low(nfp_prog, dst, src);                                  │                                                                                          
                                                                                         │                  shl_reg64_lt32_high(nfp_prog, dst, src);                                
                label_end = nfp_prog_current_offset(nfp_prog) + 6;                       │                  label_end = nfp_prog_current_offset(nfp_prog) + 6;                      
                emit_br(nfp_prog, BR_UNC, label_end, 2);                                 │                  emit_br(nfp_prog, BR_UNC, label_end, 2);                                
                /* shr_reg64_lt32_high packed in delay slot. */                          │                  /* shl_reg64_lt32_low packed in delay slot. */                          
                shr_reg64_lt32_high(nfp_prog, dst, src);                                 │                  shl_reg64_lt32_low(nfp_prog, dst, src);                                 
                                                                                         │                                                                                          
                if (!nfp_prog_confirm_current_offset(nfp_prog, label_ge32))              │                  if (!nfp_prog_confirm_current_offset(nfp_prog, label_ge32))             
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
                shr_reg64_ge32(nfp_prog, dst, src);                                      │                  shl_reg64_ge32(nfp_prog, dst, src);                                     
                                                                                         │                                                                                          
                if (!nfp_prog_confirm_current_offset(nfp_prog, label_end))               │                  if (!nfp_prog_confirm_current_offset(nfp_prog, label_end))              
                        return -EINVAL;                                                  │                          return -EINVAL;                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:928                             │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:2154                                 
                                                                                         │                                                                                          
        unsigned int metasize = xdp->data - xdp->data_meta;                              │          unsigned int metasize = xdp->data - xdp->data_meta;                             
#if (PAGE_SIZE < 8192)                                                                   │  #if (PAGE_SIZE < 8192)                                                                  
        unsigned int truesize = ixgbevf_rx_pg_size(rx_ring) / 2;                         │          unsigned int truesize = ixgbe_rx_pg_size(rx_ring) / 2;                          
#else                                                                                    │  #else                                                                                   
        unsigned int truesize = SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) +         │          unsigned int truesize = SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) +        
                                SKB_DATA_ALIGN(xdp->data_end -                           │                                  SKB_DATA_ALIGN(xdp->data_end -                          
                                               xdp->data_hard_start);                    │                                                 xdp->data_hard_start);                   
#endif                                                                                   │  #endif                                                                                  
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
                                                                                         │                                                                                          
        /* Prefetch first cache line of first page. If xdp->data_meta                    │          /* Prefetch first cache line of first page. If xdp->data_meta                   
         * is unused, this points to xdp->data, otherwise, we likely                     │           * is unused, this points extactly as xdp->data, otherwise we                   
         * have a consumer accessing first few bytes of meta data,                       │           * likely have a consumer accessing first few bytes of meta                     
         * and then actual data.                                                         │           * data, and then actual data.                                                  
         */                                                                              │           */                                                                             
        net_prefetch(xdp->data_meta);                                                    │          net_prefetch(xdp->data_meta);                                                   
                                                                                         │                                                                                          
        /* build an skb around the page buffer */                                        │          /* build an skb to around the page buffer */                                    
        skb = napi_build_skb(xdp->data_hard_start, truesize);                            │          skb = napi_build_skb(xdp->data_hard_start, truesize);                           
        if (unlikely(!skb))                                                              │          if (unlikely(!skb))                                                             
                return NULL;                                                             │                  return NULL;                                                            
                                                                                         │                                                                                          
        /* update pointers within the skb to store the data */                           │          /* update pointers within the skb to store the data */                          
        skb_reserve(skb, xdp->data - xdp->data_hard_start);                              │          skb_reserve(skb, xdp->data - xdp->data_hard_start);                             
        __skb_put(skb, xdp->data_end - xdp->data);                                       │          __skb_put(skb, xdp->data_end - xdp->data);                                      
        if (metasize)                                                                    │          if (metasize)                                                                   
                skb_metadata_set(skb, metasize);                                         │                  skb_metadata_set(skb, metasize);                                        
                                                                                         │                                                                                          
                                                                                         │          /* record DMA address if this is the start of a chain of buffers */             
                                                                                         │          if (!ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP))                           
                                                                                         │                  IXGBE_CB(skb)->dma = rx_buffer->dma;                                    
                                                                                         │                                                                                          
        /* update buffer offset */                                                       │          /* update buffer offset */                                                      
#if (PAGE_SIZE < 8192)                                                                   │  #if (PAGE_SIZE < 8192)                                                                  
        rx_buffer->page_offset ^= truesize;                                              │          rx_buffer->page_offset ^= truesize;                                             
#else                                                                                    │  #else                                                                                   
        rx_buffer->page_offset += truesize;                                              │          rx_buffer->page_offset += truesize;                                             
#endif                                                                                   │  #endif                                                                                  
                                                                                         │                                                                                          
        return skb;                                                                      │          return skb;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c:758                    │ linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c:1706                    
                                                                                         │                                                                                          
        u16 packed_record[18];                                                           │          u16 packed_record[16];                                                          
                                                                                         │          int ret;                                                                        
                                                                                         │                                                                                          
        if (table_index >= NUMROWS_INGRESSSAKEYRECORD)                                   │          if (table_index >= NUMROWS_EGRESSSAKEYRECORD)                                   
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        memset(packed_record, 0, sizeof(u16) * 18);                                      │          memset(packed_record, 0, sizeof(u16) * 16);                                     
                                                                                         │                                                                                          
        packed_record[0] = rec->key[0] & 0xFFFF;                                         │          packed_record[0] = rec->key[0] & 0xFFFF;                                        
        packed_record[1] = (rec->key[0] >> 16) & 0xFFFF;                                 │          packed_record[1] = (rec->key[0] >> 16) & 0xFFFF;                                
                                                                                         │                                                                                          
        packed_record[2] = rec->key[1] & 0xFFFF;                                         │          packed_record[2] = rec->key[1] & 0xFFFF;                                        
        packed_record[3] = (rec->key[1] >> 16) & 0xFFFF;                                 │          packed_record[3] = (rec->key[1] >> 16) & 0xFFFF;                                
                                                                                         │                                                                                          
        packed_record[4] = rec->key[2] & 0xFFFF;                                         │          packed_record[4] = rec->key[2] & 0xFFFF;                                        
        packed_record[5] = (rec->key[2] >> 16) & 0xFFFF;                                 │          packed_record[5] = (rec->key[2] >> 16) & 0xFFFF;                                
                                                                                         │                                                                                          
        packed_record[6] = rec->key[3] & 0xFFFF;                                         │          packed_record[6] = rec->key[3] & 0xFFFF;                                        
        packed_record[7] = (rec->key[3] >> 16) & 0xFFFF;                                 │          packed_record[7] = (rec->key[3] >> 16) & 0xFFFF;                                
                                                                                         │                                                                                          
        packed_record[8] = rec->key[4] & 0xFFFF;                                         │          packed_record[8] = rec->key[4] & 0xFFFF;                                        
        packed_record[9] = (rec->key[4] >> 16) & 0xFFFF;                                 │          packed_record[9] = (rec->key[4] >> 16) & 0xFFFF;                                
                                                                                         │                                                                                          
        packed_record[10] = rec->key[5] & 0xFFFF;                                        │          packed_record[10] = rec->key[5] & 0xFFFF;                                       
        packed_record[11] = (rec->key[5] >> 16) & 0xFFFF;                                │          packed_record[11] = (rec->key[5] >> 16) & 0xFFFF;                               
                                                                                         │                                                                                          
        packed_record[12] = rec->key[6] & 0xFFFF;                                        │          packed_record[12] = rec->key[6] & 0xFFFF;                                       
        packed_record[13] = (rec->key[6] >> 16) & 0xFFFF;                                │          packed_record[13] = (rec->key[6] >> 16) & 0xFFFF;                               
                                                                                         │                                                                                          
        packed_record[14] = rec->key[7] & 0xFFFF;                                        │          packed_record[14] = rec->key[7] & 0xFFFF;                                       
        packed_record[15] = (rec->key[7] >> 16) & 0xFFFF;                                │          packed_record[15] = (rec->key[7] >> 16) & 0xFFFF;                               
                                                                                         │                                                                                          
        packed_record[16] = rec->key_len & 0x3;                                          │          ret = set_raw_egress_record(hw, packed_record, 8, 2,                            
                                                                                         │                                      ROWOFFSET_EGRESSSAKEYRECORD + table_index);         
                                                                                         │          if (unlikely(ret))                                                              
                                                                                         │                  return ret;                                                             
                                                                                         │          ret = set_raw_egress_record(hw, packed_record + 8, 8, 2,                        
                                                                                         │                                      ROWOFFSET_EGRESSSAKEYRECORD + table_index -         
                                                                                         │                                              32);                                        
                                                                                         │          if (unlikely(ret))                                                              
                                                                                         │                  return ret;                                                             
                                                                                         │                                                                                          
        return set_raw_ingress_record(hw, packed_record, 18, 2,                          │          return 0;                                                                       
                                      ROWOFFSET_INGRESSSAKEYRECORD +                     │                                                                                          
                                              table_index);                              │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_main.c:5564                                    │ linux/drivers/net/ethernet/intel/igb/igb_main.c:1408                                     
                                                                                         │                                                                                          
        struct net_device *netdev = adapter->netdev;                                     │          struct net_device *netdev = adapter->netdev;                                    
        struct pci_dev *pdev = adapter->pdev;                                            │          struct pci_dev *pdev = adapter->pdev;                                           
        int err = 0;                                                                     │          int err = 0;                                                                    
                                                                                         │                                                                                          
        if (adapter->flags & IGC_FLAG_HAS_MSIX) {                                        │          if (adapter->flags & IGB_FLAG_HAS_MSIX) {                                       
                err = igc_request_msix(adapter);                                         │                  err = igb_request_msix(adapter);                                        
                if (!err)                                                                │                  if (!err)                                                               
                        goto request_done;                                               │                          goto request_done;                                              
                /* fall back to MSI */                                                   │                  /* fall back to MSI */                                                  
                igc_free_all_tx_resources(adapter);                                      │                  igb_free_all_tx_resources(adapter);                                     
                igc_free_all_rx_resources(adapter);                                      │                  igb_free_all_rx_resources(adapter);                                     
                                                                                         │                                                                                          
                igc_clear_interrupt_scheme(adapter);                                     │                  igb_clear_interrupt_scheme(adapter);                                    
                err = igc_init_interrupt_scheme(adapter, false);                         │                  err = igb_init_interrupt_scheme(adapter, false);                        
                if (err)                                                                 │                  if (err)                                                                
                        goto request_done;                                               │                          goto request_done;                                              
                igc_setup_all_tx_resources(adapter);                                     │                                                                                          
                igc_setup_all_rx_resources(adapter);                                     │                  igb_setup_all_tx_resources(adapter);                                    
                igc_configure(adapter);                                                  │                  igb_setup_all_rx_resources(adapter);                                    
                                                                                         │                  igb_configure(adapter);                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        igc_assign_vector(adapter->q_vector[0], 0);                                      │          igb_assign_vector(adapter->q_vector[0], 0);                                     
                                                                                         │                                                                                          
        if (adapter->flags & IGC_FLAG_HAS_MSI) {                                         │          if (adapter->flags & IGB_FLAG_HAS_MSI) {                                        
                err = request_irq(pdev->irq, &igc_intr_msi, 0,                           │                  err = request_irq(pdev->irq, igb_intr_msi, 0,                           
                                  netdev->name, adapter);                                │                                    netdev->name, adapter);                               
                if (!err)                                                                │                  if (!err)                                                               
                        goto request_done;                                               │                          goto request_done;                                              
                                                                                         │                                                                                          
                /* fall back to legacy interrupts */                                     │                  /* fall back to legacy interrupts */                                    
                igc_reset_interrupt_capability(adapter);                                 │                  igb_reset_interrupt_capability(adapter);                                
                adapter->flags &= ~IGC_FLAG_HAS_MSI;                                     │                  adapter->flags &= ~IGB_FLAG_HAS_MSI;                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        err = request_irq(pdev->irq, &igc_intr, IRQF_SHARED,                             │          err = request_irq(pdev->irq, igb_intr, IRQF_SHARED,                             
                          netdev->name, adapter);                                        │                            netdev->name, adapter);                                       
                                                                                         │                                                                                          
        if (err)                                                                         │          if (err)                                                                        
                netdev_err(netdev, "Error %d getting interrupt\n", err);                 │                  dev_err(&pdev->dev, "Error %d getting interrupt\n",                     
                                                                                         │                          err);                                                           
                                                                                         │                                                                                          
request_done:                                                                            │  request_done:                                                                           
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/huawei/hinic/hinic_hw_io.c:151                               │ linux/drivers/net/ethernet/huawei/hinic/hinic_hw_io.c:107                                
                                                                                         │                                                                                          
        struct hinic_hwif *hwif = func_to_io->hwif;                                      │          struct hinic_hwif *hwif = func_to_io->hwif;                                     
        struct hinic_rq_ctxt_block *rq_ctxt_block;                                       │          struct hinic_sq_ctxt_block *sq_ctxt_block;                                      
        struct pci_dev *pdev = hwif->pdev;                                               │          struct pci_dev *pdev = hwif->pdev;                                              
        struct hinic_cmdq_buf cmdq_buf;                                                  │          struct hinic_cmdq_buf cmdq_buf;                                                 
        struct hinic_rq_ctxt *rq_ctxt;                                                   │          struct hinic_sq_ctxt *sq_ctxt;                                                  
        struct hinic_qp *qp;                                                             │          struct hinic_qp *qp;                                                            
        u64 out_param;                                                                   │          u64 out_param;                                                                  
        int err, i;                                                                      │          int err, i;                                                                     
                                                                                         │                                                                                          
        err = hinic_alloc_cmdq_buf(&func_to_io->cmdqs, &cmdq_buf);                       │          err = hinic_alloc_cmdq_buf(&func_to_io->cmdqs, &cmdq_buf);                      
        if (err) {                                                                       │          if (err) {                                                                      
                dev_err(&pdev->dev, "Failed to allocate cmdq buf\n");                    │                  dev_err(&pdev->dev, "Failed to allocate cmdq buf\n");                   
                return err;                                                              │                  return err;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        rq_ctxt_block = cmdq_buf.buf;                                                    │          sq_ctxt_block = cmdq_buf.buf;                                                   
        rq_ctxt = rq_ctxt_block->rq_ctxt;                                                │          sq_ctxt = sq_ctxt_block->sq_ctxt;                                               
                                                                                         │                                                                                          
        hinic_qp_prepare_header(&rq_ctxt_block->hdr, HINIC_QP_CTXT_TYPE_RQ,              │          hinic_qp_prepare_header(&sq_ctxt_block->hdr, HINIC_QP_CTXT_TYPE_SQ,             
                                num_rqs, func_to_io->max_qps);                           │                                  num_sqs, func_to_io->max_qps);                          
        for (i = 0; i < num_rqs; i++) {                                                  │          for (i = 0; i < num_sqs; i++) {                                                 
                qp = &func_to_io->qps[i];                                                │                  qp = &func_to_io->qps[i];                                               
                                                                                         │                                                                                          
                hinic_rq_prepare_ctxt(&rq_ctxt[i], &qp->rq,                              │                  hinic_sq_prepare_ctxt(&sq_ctxt[i], &qp->sq,                             
                                      base_qpn + qp->q_id);                              │                                        base_qpn + qp->q_id);                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        cmdq_buf.size = HINIC_RQ_CTXT_SIZE(num_rqs);                                     │          cmdq_buf.size = HINIC_SQ_CTXT_SIZE(num_sqs);                                    
                                                                                         │                                                                                          
        err = hinic_cmdq_direct_resp(&func_to_io->cmdqs, HINIC_MOD_L2NIC,                │          err = hinic_cmdq_direct_resp(&func_to_io->cmdqs, HINIC_MOD_L2NIC,               
                                     IO_CMD_MODIFY_QUEUE_CTXT, &cmdq_buf,                │                                       IO_CMD_MODIFY_QUEUE_CTXT, &cmdq_buf,               
                                     &out_param);                                        │                                       &out_param);                                       
        if (err || out_param != 0) {                                                     │          if (err || out_param != 0) {                                                    
                dev_err(&pdev->dev, "Failed to set RQ ctxts\n");                         │                  dev_err(&pdev->dev, "Failed to set SQ ctxts\n");                        
                err = -EFAULT;                                                           │                  err = -EFAULT;                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        hinic_free_cmdq_buf(&func_to_io->cmdqs, &cmdq_buf);                              │          hinic_free_cmdq_buf(&func_to_io->cmdqs, &cmdq_buf);                             
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/microchip/lan743x_main.c:240                                 │ linux/drivers/net/ethernet/microchip/lan743x_main.c:199                                  
                                                                                         │                                                                                          
        struct lan743x_rx *rx = context;                                                 │          struct lan743x_tx *tx = context;                                                
        struct lan743x_adapter *adapter = rx->adapter;                                   │          struct lan743x_adapter *adapter = tx->adapter;                                  
        bool enable_flag = true;                                                         │          bool enable_flag = true;                                                        
                                                                                         │                                                                                          
                                                                                         │          lan743x_csr_read(adapter, INT_EN_SET);                                          
        if (flags & LAN743X_VECTOR_FLAG_SOURCE_ENABLE_CLEAR) {                           │          if (flags & LAN743X_VECTOR_FLAG_SOURCE_ENABLE_CLEAR) {                          
                lan743x_csr_write(adapter, INT_EN_CLR,                                   │                  lan743x_csr_write(adapter, INT_EN_CLR,                                  
                                  INT_BIT_DMA_RX_(rx->channel_number));                  │                                    INT_BIT_DMA_TX_(tx->channel_number));                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (int_sts & INT_BIT_DMA_RX_(rx->channel_number)) {                             │          if (int_sts & INT_BIT_DMA_TX_(tx->channel_number)) {                            
                u32 rx_frame_bit = DMAC_INT_BIT_RXFRM_(rx->channel_number);              │                  u32 ioc_bit = DMAC_INT_BIT_TX_IOC_(tx->channel_number);                 
                u32 dmac_int_sts;                                                        │                  u32 dmac_int_sts;                                                       
                u32 dmac_int_en;                                                         │                  u32 dmac_int_en;                                                        
                                                                                         │                                                                                          
                if (flags & LAN743X_VECTOR_FLAG_SOURCE_STATUS_READ)                      │                  if (flags & LAN743X_VECTOR_FLAG_SOURCE_STATUS_READ)                     
                        dmac_int_sts = lan743x_csr_read(adapter, DMAC_INT_STS);          │                          dmac_int_sts = lan743x_csr_read(adapter, DMAC_INT_STS);         
                else                                                                     │                  else                                                                    
                        dmac_int_sts = rx_frame_bit;                                     │                          dmac_int_sts = ioc_bit;                                         
                if (flags & LAN743X_VECTOR_FLAG_SOURCE_ENABLE_CHECK)                     │                  if (flags & LAN743X_VECTOR_FLAG_SOURCE_ENABLE_CHECK)                    
                        dmac_int_en = lan743x_csr_read(adapter,                          │                          dmac_int_en = lan743x_csr_read(adapter,                         
                                                       DMAC_INT_EN_SET);                 │                                                         DMAC_INT_EN_SET);                
                else                                                                     │                  else                                                                    
                        dmac_int_en = rx_frame_bit;                                      │                          dmac_int_en = ioc_bit;                                          
                                                                                         │                                                                                          
                dmac_int_en &= rx_frame_bit;                                             │                  dmac_int_en &= ioc_bit;                                                 
                dmac_int_sts &= dmac_int_en;                                             │                  dmac_int_sts &= dmac_int_en;                                            
                if (dmac_int_sts & rx_frame_bit) {                                       │                  if (dmac_int_sts & ioc_bit) {                                           
                        napi_schedule(&rx->napi);                                        │                          napi_schedule(&tx->napi);                                       
                        enable_flag = false;/* poll funct will enable later */           │                          enable_flag = false;/* poll func will enable later */           
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (enable_flag) {                                                               │          if (enable_flag)                                                                
                /* enable isr */                                                         │                  /* enable isr */                                                        
                lan743x_csr_write(adapter, INT_EN_SET,                                   │                  lan743x_csr_write(adapter, INT_EN_SET,                                  
                                  INT_BIT_DMA_RX_(rx->channel_number));                  │                                    INT_BIT_DMA_TX_(tx->channel_number));                 
        }                                                                                │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c:106                            │ linux/drivers/net/ethernet/cavium/liquidio/lio_main.c:245                                
                                                                                         │                                                                                          
        int i;                                                                           │          int i;                                                                          
                                                                                         │                                                                                          
        /* Disable the input and output queues now. No more packets will                 │          /* Disable the input and output queues now. No more packets will                
         * arrive from Octeon, but we should wait for all packet processing              │           * arrive from Octeon, but we should wait for all packet processing             
         * to finish.                                                                    │           * to finish.                                                                   
         */                                                                              │           */                                                                             
                                                                                         │          force_io_queues_off(oct);                                                       
                                                                                         │                                                                                          
        /* To allow for in-flight requests */                                            │          /* To allow for in-flight requests */                                           
        schedule_timeout_uninterruptible(100);                                           │          schedule_timeout_uninterruptible(WAIT_INFLIGHT_REQUEST);                        
                                                                                         │                                                                                          
        if (wait_for_pending_requests(oct))                                              │          if (wait_for_pending_requests(oct))                                             
                dev_err(&oct->pci_dev->dev, "There were pending requests\n");            │                  dev_err(&oct->pci_dev->dev, "There were pending requests\n");           
                                                                                         │                                                                                          
        /* Force all requests waiting to be fetched by OCTEON to complete. */            │          /* Force all requests waiting to be fetched by OCTEON to complete. */           
        for (i = 0; i < MAX_OCTEON_INSTR_QUEUES(oct); i++) {                             │          for (i = 0; i < MAX_OCTEON_INSTR_QUEUES(oct); i++) {                            
                struct octeon_instr_queue *iq;                                           │                  struct octeon_instr_queue *iq;                                          
                                                                                         │                                                                                          
                if (!(oct->io_qmask.iq & BIT_ULL(i)))                                    │                  if (!(oct->io_qmask.iq & BIT_ULL(i)))                                   
                        continue;                                                        │                          continue;                                                       
                iq = oct->instr_queue[i];                                                │                  iq = oct->instr_queue[i];                                               
                                                                                         │                                                                                          
                if (atomic_read(&iq->instr_pending)) {                                   │                  if (atomic_read(&iq->instr_pending)) {                                  
                        spin_lock_bh(&iq->lock);                                         │                          spin_lock_bh(&iq->lock);                                        
                        iq->fill_cnt = 0;                                                │                          iq->fill_cnt = 0;                                               
                        iq->octeon_read_index = iq->host_write_index;                    │                          iq->octeon_read_index = iq->host_write_index;                   
                        iq->stats.instr_processed +=                                     │                          iq->stats.instr_processed +=                                    
                            atomic_read(&iq->instr_pending);                             │                                  atomic_read(&iq->instr_pending);                        
                        lio_process_iq_request_list(oct, iq, 0);                         │                          lio_process_iq_request_list(oct, iq, 0);                        
                        spin_unlock_bh(&iq->lock);                                       │                          spin_unlock_bh(&iq->lock);                                      
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Force all pending ordered list requests to time out. */                       │          /* Force all pending ordered list requests to time out. */                      
        lio_process_ordered_list(oct, 1);                                                │          lio_process_ordered_list(oct, 1);                                               
                                                                                         │                                                                                          
        /* We do not need to wait for output queue packets to be processed. */           │          /* We do not need to wait for output queue packets to be processed. */          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c:234                          │ linux/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c:989                           
                                                                                         │                                                                                          
        struct otx2_hw *hw = &vf->hw;                                                    │          struct otx2_hw *hw = &pf->hw;                                                   
        struct msg_req *req;                                                             │          struct msg_req *req;                                                            
        char *irq_name;                                                                  │          char *irq_name;                                                                 
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        /* Register mailbox interrupt handler */                                         │          /* Register mailbox interrupt handler */                                        
        irq_name = &hw->irq_name[RVU_VF_INT_VEC_MBOX * NAME_SIZE];                       │          irq_name = &hw->irq_name[RVU_PF_INT_VEC_AFPF_MBOX * NAME_SIZE];                 
        snprintf(irq_name, NAME_SIZE, "RVUVFAF Mbox");                                   │          snprintf(irq_name, NAME_SIZE, "RVUPFAF Mbox");                                  
        err = request_irq(pci_irq_vector(vf->pdev, RVU_VF_INT_VEC_MBOX),                 │          err = request_irq(pci_irq_vector(pf->pdev, RVU_PF_INT_VEC_AFPF_MBOX),           
                          otx2vf_vfaf_mbox_intr_handler, 0, irq_name, vf);               │                            otx2_pfaf_mbox_intr_handler, 0, irq_name, pf);                
        if (err) {                                                                       │          if (err) {                                                                      
                dev_err(vf->dev,                                                         │                  dev_err(pf->dev,                                                        
                        "RVUPF: IRQ registration failed for VFAF mbox irq\n");           │                          "RVUPF: IRQ registration failed for PFAF mbox irq\n");          
                return err;                                                              │                  return err;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Enable mailbox interrupt for msgs coming from PF.                             │          /* Enable mailbox interrupt for msgs coming from AF.                            
         * First clear to avoid spurious interrupts, if any.                             │           * First clear to avoid spurious interrupts, if any.                            
         */                                                                              │           */                                                                             
        otx2_write64(vf, RVU_VF_INT, BIT_ULL(0));                                        │          otx2_write64(pf, RVU_PF_INT, BIT_ULL(0));                                       
        otx2_write64(vf, RVU_VF_INT_ENA_W1S, BIT_ULL(0));                                │          otx2_write64(pf, RVU_PF_INT_ENA_W1S, BIT_ULL(0));                               
                                                                                         │                                                                                          
        if (!probe_pf)                                                                   │          if (!probe_af)                                                                  
                return 0;                                                                │                  return 0;                                                               
                                                                                         │                                                                                          
        /* Check mailbox communication with PF */                                        │          /* Check mailbox communication with AF */                                       
        req = otx2_mbox_alloc_msg_ready(&vf->mbox);                                      │          req = otx2_mbox_alloc_msg_ready(&pf->mbox);                                     
        if (!req) {                                                                      │          if (!req) {                                                                     
                otx2vf_disable_mbox_intr(vf);                                            │                  otx2_disable_mbox_intr(pf);                                             
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
        }                                                                                │          }                                                                               
                                                                                         │          err = otx2_sync_mbox_msg(&pf->mbox);                                            
        err = otx2_sync_mbox_msg(&vf->mbox);                                             │                                                                                          
        if (err) {                                                                       │          if (err) {                                                                      
                dev_warn(vf->dev,                                                        │                  dev_warn(pf->dev,                                                       
                         "AF not responding to mailbox, deferring probe\n");             │                           "AF not responding to mailbox, deferring probe\n");            
                otx2vf_disable_mbox_intr(vf);                                            │                  otx2_disable_mbox_intr(pf);                                             
                return -EPROBE_DEFER;                                                    │                  return -EPROBE_DEFER;                                                   
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_main.c:1060                                    │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:8085                                 
                                                                                         │                                                                                          
        struct sk_buff *skb = first->skb;                                                │          struct sk_buff *skb = first->skb;                                               
        u32 vlan_macip_lens = 0;                                                         │          u32 vlan_macip_lens = 0;                                                        
                                                                                         │          u32 fceof_saidx = 0;                                                            
        u32 type_tucmd = 0;                                                              │          u32 type_tucmd = 0;                                                             
                                                                                         │                                                                                          
        if (skb->ip_summed != CHECKSUM_PARTIAL) {                                        │          if (skb->ip_summed != CHECKSUM_PARTIAL) {                                       
csum_failed:                                                                             │  csum_failed:                                                                            
                if (!(first->tx_flags & IGC_TX_FLAGS_VLAN) &&                            │                  if (!(first->tx_flags & (IXGBE_TX_FLAGS_HW_VLAN |                       
                    !tx_ring->launchtime_enable)                                         │                                           IXGBE_TX_FLAGS_CC)))                           
                        return;                                                          │                          return;                                                         
                goto no_csum;                                                            │                  goto no_csum;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        switch (skb->csum_offset) {                                                      │          switch (skb->csum_offset) {                                                     
        case offsetof(struct tcphdr, check):                                             │          case offsetof(struct tcphdr, check):                                            
                type_tucmd = IGC_ADVTXD_TUCMD_L4T_TCP;                                   │                  type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;                                
                fallthrough;                                                             │                  fallthrough;                                                            
        case offsetof(struct udphdr, check):                                             │          case offsetof(struct udphdr, check):                                            
                break;                                                                   │                  break;                                                                  
        case offsetof(struct sctphdr, checksum):                                         │          case offsetof(struct sctphdr, checksum):                                        
                /* validate that this is actually an SCTP request */                     │                  /* validate that this is actually an SCTP request */                    
                if (skb_csum_is_sctp(skb)) {                                             │                  if (skb_csum_is_sctp(skb)) {                                            
                        type_tucmd = IGC_ADVTXD_TUCMD_L4T_SCTP;                          │                          type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_SCTP;                       
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                fallthrough;                                                             │                  fallthrough;                                                            
        default:                                                                         │          default:                                                                        
                skb_checksum_help(skb);                                                  │                  skb_checksum_help(skb);                                                 
                goto csum_failed;                                                        │                  goto csum_failed;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* update TX checksum flag */                                                    │          /* update TX checksum flag */                                                   
        first->tx_flags |= IGC_TX_FLAGS_CSUM;                                            │          first->tx_flags |= IXGBE_TX_FLAGS_CSUM;                                         
        vlan_macip_lens = skb_checksum_start_offset(skb) -                               │          vlan_macip_lens = skb_checksum_start_offset(skb) -                              
                          skb_network_offset(skb);                                       │                            skb_network_offset(skb);                                      
no_csum:                                                                                 │  no_csum:                                                                                
        vlan_macip_lens |= skb_network_offset(skb) << IGC_ADVTXD_MACLEN_SHIFT;           │          /* vlan_macip_lens: MACLEN, VLAN tag */                                         
        vlan_macip_lens |= first->tx_flags & IGC_TX_FLAGS_VLAN_MASK;                     │          vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT;        
                                                                                         │          vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;                  
                                                                                         │                                                                                          
        igc_tx_ctxtdesc(tx_ring, first, vlan_macip_lens, type_tucmd, 0);                 │          fceof_saidx |= itd->sa_idx;                                                     
                                                                                         │          type_tucmd |= itd->flags | itd->trailer_len;                                    
                                                                                         │                                                                                          
                                                                                         │          ixgbe_tx_ctxtdesc(tx_ring, vlan_macip_lens, fceof_saidx, type_tucmd, 0);        
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_main.c:1060                                    │ linux/drivers/net/ethernet/intel/igb/igb_main.c:5980                                     
                                                                                         │                                                                                          
        struct sk_buff *skb = first->skb;                                                │          struct sk_buff *skb = first->skb;                                               
        u32 vlan_macip_lens = 0;                                                         │          u32 vlan_macip_lens = 0;                                                        
        u32 type_tucmd = 0;                                                              │          u32 type_tucmd = 0;                                                             
                                                                                         │                                                                                          
        if (skb->ip_summed != CHECKSUM_PARTIAL) {                                        │          if (skb->ip_summed != CHECKSUM_PARTIAL) {                                       
csum_failed:                                                                             │  csum_failed:                                                                            
                if (!(first->tx_flags & IGC_TX_FLAGS_VLAN) &&                            │                  if (!(first->tx_flags & IGB_TX_FLAGS_VLAN) &&                           
                    !tx_ring->launchtime_enable)                                         │                      !tx_ring->launchtime_enable)                                        
                        return;                                                          │                          return;                                                         
                goto no_csum;                                                            │                  goto no_csum;                                                           
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        switch (skb->csum_offset) {                                                      │          switch (skb->csum_offset) {                                                     
        case offsetof(struct tcphdr, check):                                             │          case offsetof(struct tcphdr, check):                                            
                type_tucmd = IGC_ADVTXD_TUCMD_L4T_TCP;                                   │                  type_tucmd = E1000_ADVTXD_TUCMD_L4T_TCP;                                
                fallthrough;                                                             │                  fallthrough;                                                            
        case offsetof(struct udphdr, check):                                             │          case offsetof(struct udphdr, check):                                            
                break;                                                                   │                  break;                                                                  
        case offsetof(struct sctphdr, checksum):                                         │          case offsetof(struct sctphdr, checksum):                                        
                /* validate that this is actually an SCTP request */                     │                  /* validate that this is actually an SCTP request */                    
                if (skb_csum_is_sctp(skb)) {                                             │                  if (skb_csum_is_sctp(skb)) {                                            
                        type_tucmd = IGC_ADVTXD_TUCMD_L4T_SCTP;                          │                          type_tucmd = E1000_ADVTXD_TUCMD_L4T_SCTP;                       
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                fallthrough;                                                             │                  fallthrough;                                                            
        default:                                                                         │          default:                                                                        
                skb_checksum_help(skb);                                                  │                  skb_checksum_help(skb);                                                 
                goto csum_failed;                                                        │                  goto csum_failed;                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* update TX checksum flag */                                                    │          /* update TX checksum flag */                                                   
        first->tx_flags |= IGC_TX_FLAGS_CSUM;                                            │          first->tx_flags |= IGB_TX_FLAGS_CSUM;                                           
        vlan_macip_lens = skb_checksum_start_offset(skb) -                               │          vlan_macip_lens = skb_checksum_start_offset(skb) -                              
                          skb_network_offset(skb);                                       │                            skb_network_offset(skb);                                      
no_csum:                                                                                 │  no_csum:                                                                                
        vlan_macip_lens |= skb_network_offset(skb) << IGC_ADVTXD_MACLEN_SHIFT;           │          vlan_macip_lens |= skb_network_offset(skb) << E1000_ADVTXD_MACLEN_SHIFT;        
        vlan_macip_lens |= first->tx_flags & IGC_TX_FLAGS_VLAN_MASK;                     │          vlan_macip_lens |= first->tx_flags & IGB_TX_FLAGS_VLAN_MASK;                    
                                                                                         │                                                                                          
        igc_tx_ctxtdesc(tx_ring, first, vlan_macip_lens, type_tucmd, 0);                 │          igb_tx_ctxtdesc(tx_ring, first, vlan_macip_lens, type_tucmd, 0);                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000e/phy.c:1353                                      │ linux/drivers/net/ethernet/intel/e1000e/phy.c:1182                                       
                                                                                         │                                                                                          
        struct e1000_phy_info *phy = &hw->phy;                                           │          struct e1000_phy_info *phy = &hw->phy;                                          
        s32 ret_val;                                                                     │          s32 ret_val;                                                                    
        u16 data;                                                                        │          u16 phy_data;                                                                   
        bool link;                                                                       │          bool link;                                                                      
                                                                                         │                                                                                          
        ret_val = e1e_rphy(hw, MII_BMCR, &data);                                         │          ret_val = e1e_rphy(hw, MII_BMCR, &phy_data);                                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  return ret_val;                                                         
                                                                                         │                                                                                          
        e1000e_phy_force_speed_duplex_setup(hw, &data);                                  │          e1000e_phy_force_speed_duplex_setup(hw, &phy_data);                             
                                                                                         │                                                                                          
        ret_val = e1e_wphy(hw, MII_BMCR, data);                                          │          ret_val = e1e_wphy(hw, MII_BMCR, phy_data);                                     
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  return ret_val;                                                         
                                                                                         │                                                                                          
        /* Disable MDI-X support for 10/100 */                                           │          /* Clear Auto-Crossover to force MDI manually.  IGP requires MDI                
        ret_val = e1e_rphy(hw, IFE_PHY_MDIX_CONTROL, &data);                             │           * forced whenever speed and duplex are forced.                                 
                                                                                         │           */                                                                             
                                                                                         │          ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_CTRL, &phy_data);                    
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  return ret_val;                                                         
                                                                                         │                                                                                          
        data &= ~IFE_PMC_AUTO_MDIX;                                                      │          phy_data &= ~IGP01E1000_PSCR_AUTO_MDIX;                                         
        data &= ~IFE_PMC_FORCE_MDIX;                                                     │          phy_data &= ~IGP01E1000_PSCR_FORCE_MDI_MDIX;                                    
                                                                                         │                                                                                          
        ret_val = e1e_wphy(hw, IFE_PHY_MDIX_CONTROL, data);                              │          ret_val = e1e_wphy(hw, IGP01E1000_PHY_PORT_CTRL, phy_data);                     
        if (ret_val)                                                                     │          if (ret_val)                                                                    
                return ret_val;                                                          │                  return ret_val;                                                         
                                                                                         │                                                                                          
        e_dbg("IFE PMC: %X\n", data);                                                    │          e_dbg("IGP PSCR: %X\n", phy_data);                                              
                                                                                         │                                                                                          
        udelay(1);                                                                       │          udelay(1);                                                                      
                                                                                         │                                                                                          
        if (phy->autoneg_wait_to_complete) {                                             │          if (phy->autoneg_wait_to_complete) {                                            
                e_dbg("Waiting for forced speed/duplex link on IFE phy.\n");             │                  e_dbg("Waiting for forced speed/duplex link on IGP phy.\n");            
                                                                                         │                                                                                          
                ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT,               │                  ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT,              
                                                      100000, &link);                    │                                                        100000, &link);                   
                if (ret_val)                                                             │                  if (ret_val)                                                            
                        return ret_val;                                                  │                          return ret_val;                                                 
                                                                                         │                                                                                          
                if (!link)                                                               │                  if (!link)                                                              
                        e_dbg("Link taking longer than expected.\n");                    │                          e_dbg("Link taking longer than expected.\n");                   
                                                                                         │                                                                                          
                /* Try once more */                                                      │                  /* Try once more */                                                     
                ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT,               │                  ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT,              
                                                      100000, &link);                    │                                                        100000, &link);                   
                if (ret_val)                                                             │                                                                                          
                        return ret_val;                                                  │                                                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/renesas/sh_eth.c:977                                         │ linux/drivers/net/ethernet/renesas/sh_eth.c:588                                          
                                                                                         │                                                                                          
        .soft_reset     = sh_eth_soft_reset_gether,                                      │          .soft_reset     = sh_eth_soft_reset_gether,                                     
                                                                                         │                                                                                          
        .chip_reset     = sh_eth_chip_reset,                                             │          .chip_reset     = sh_eth_chip_reset_r8a7740,                                    
        .set_duplex     = sh_eth_set_duplex,                                             │          .set_duplex     = sh_eth_set_duplex,                                            
        .set_rate       = sh_eth_set_rate_gether,                                        │          .set_rate       = sh_eth_set_rate_gether,                                       
                                                                                         │                                                                                          
        .register_type  = SH_ETH_REG_GIGABIT,                                            │          .register_type  = SH_ETH_REG_GIGABIT,                                           
                                                                                         │                                                                                          
        .edtrr_trns     = EDTRR_TRNS_GETHER,                                             │          .edtrr_trns     = EDTRR_TRNS_GETHER,                                            
        .ecsr_value     = ECSR_ICD | ECSR_MPD,                                           │          .ecsr_value     = ECSR_ICD | ECSR_MPD,                                          
        .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                  │          .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                 
        .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                                │          .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                               
                          EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                  │                            EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                 
                          EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                   │                            EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                  
                          EESIPR_DLCIP | EESIPR_CDIP | EESIPR_TROIP |                    │                            0x0000f000 | EESIPR_CNDIP | EESIPR_DLCIP |                    
                          EESIPR_RMAFIP | EESIPR_CEEFIP | EESIPR_CELFIP |                │                            EESIPR_CDIP | EESIPR_TROIP | EESIPR_RMAFIP |                  
                                                                                         │                            EESIPR_CEEFIP | EESIPR_CELFIP |                               
                          EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                 │                            EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                
                          EESIPR_PREIP | EESIPR_CERFIP,                                  │                            EESIPR_PREIP | EESIPR_CERFIP,                                 
                                                                                         │                                                                                          
        .tx_check       = EESR_TC1 | EESR_FTC,                                           │          .tx_check       = EESR_TC1 | EESR_FTC,                                          
        .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                 │          .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                
                          EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                 │                            EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                
                          EESR_TDE,                                                      │                            EESR_TDE,                                                     
                                                                                         │          .fdr_value      = 0x0000070f,                                                   
                                                                                         │                                                                                          
        .apr            = 1,                                                             │          .apr            = 1,                                                            
        .mpr            = 1,                                                             │          .mpr            = 1,                                                            
        .tpauser        = 1,                                                             │          .tpauser        = 1,                                                            
        .gecmr          = 1,                                                             │          .gecmr          = 1,                                                            
        .bculr          = 1,                                                             │          .bculr          = 1,                                                            
        .hw_swap        = 1,                                                             │          .hw_swap        = 1,                                                            
                                                                                         │          .rpadir         = 1,                                                            
        .no_trimd       = 1,                                                             │          .no_trimd       = 1,                                                            
        .no_ade         = 1,                                                             │          .no_ade         = 1,                                                            
        .xdfar_rw       = 1,                                                             │          .xdfar_rw       = 1,                                                            
        .tsu            = 1,                                                             │                                                                                          
        .csmr           = 1,                                                             │          .csmr           = 1,                                                            
        .rx_csum        = 1,                                                             │          .rx_csum        = 1,                                                            
                                                                                         │          .tsu            = 1,                                                            
        .select_mii     = 1,                                                             │          .select_mii     = 1,                                                            
        .magic          = 1,                                                             │          .magic          = 1,                                                            
        .cexcr          = 1,                                                             │          .cexcr          = 1,                                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/renesas/sh_eth.c:977                                         │ linux/drivers/net/ethernet/renesas/sh_eth.c:933                                          
                                                                                         │                                                                                          
        .soft_reset     = sh_eth_soft_reset_gether,                                      │          .soft_reset     = sh_eth_soft_reset_gether,                                     
                                                                                         │                                                                                          
        .chip_reset     = sh_eth_chip_reset,                                             │          .chip_reset     = sh_eth_chip_reset_giga,                                       
        .set_duplex     = sh_eth_set_duplex,                                             │          .set_duplex     = sh_eth_set_duplex,                                            
        .set_rate       = sh_eth_set_rate_gether,                                        │          .set_rate       = sh_eth_set_rate_giga,                                         
                                                                                         │                                                                                          
        .register_type  = SH_ETH_REG_GIGABIT,                                            │          .register_type  = SH_ETH_REG_GIGABIT,                                           
                                                                                         │                                                                                          
        .edtrr_trns     = EDTRR_TRNS_GETHER,                                             │          .edtrr_trns     = EDTRR_TRNS_GETHER,                                            
        .ecsr_value     = ECSR_ICD | ECSR_MPD,                                           │          .ecsr_value     = ECSR_ICD | ECSR_MPD,                                          
        .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                  │          .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                 
        .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                                │          .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                               
                          EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                  │                            EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                 
                          EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                   │                            EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                  
                          EESIPR_DLCIP | EESIPR_CDIP | EESIPR_TROIP |                    │                            0x0000f000 | EESIPR_CNDIP | EESIPR_DLCIP |                    
                          EESIPR_RMAFIP | EESIPR_CEEFIP | EESIPR_CELFIP |                │                            EESIPR_CDIP | EESIPR_TROIP | EESIPR_RMAFIP |                  
                                                                                         │                            EESIPR_CEEFIP | EESIPR_CELFIP |                               
                          EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                 │                            EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                
                          EESIPR_PREIP | EESIPR_CERFIP,                                  │                            EESIPR_PREIP | EESIPR_CERFIP,                                 
                                                                                         │                                                                                          
        .tx_check       = EESR_TC1 | EESR_FTC,                                           │          .tx_check       = EESR_TC1 | EESR_FTC,                                          
        .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                 │          .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                
                          EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                 │                            EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                
                          EESR_TDE,                                                      │                            EESR_TDE,                                                     
                                                                                         │          .fdr_value      = 0x0000072f,                                                   
                                                                                         │                                                                                          
                                                                                         │          .irq_flags      = IRQF_SHARED,                                                  
        .apr            = 1,                                                             │          .apr            = 1,                                                            
        .mpr            = 1,                                                             │          .mpr            = 1,                                                            
        .tpauser        = 1,                                                             │          .tpauser        = 1,                                                            
        .gecmr          = 1,                                                             │          .gecmr          = 1,                                                            
        .bculr          = 1,                                                             │          .bculr          = 1,                                                            
        .hw_swap        = 1,                                                             │          .hw_swap        = 1,                                                            
                                                                                         │          .rpadir         = 1,                                                            
        .no_trimd       = 1,                                                             │          .no_trimd       = 1,                                                            
        .no_ade         = 1,                                                             │          .no_ade         = 1,                                                            
        .xdfar_rw       = 1,                                                             │          .xdfar_rw       = 1,                                                            
        .tsu            = 1,                                                             │          .tsu            = 1,                                                            
        .csmr           = 1,                                                             │                                                                                          
        .rx_csum        = 1,                                                             │                                                                                          
        .select_mii     = 1,                                                             │                                                                                          
        .magic          = 1,                                                             │                                                                                          
        .cexcr          = 1,                                                             │          .cexcr          = 1,                                                            
                                                                                         │          .dual_port      = 1,                                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/renesas/sh_eth.c:977                                         │ linux/drivers/net/ethernet/renesas/sh_eth.c:716                                          
                                                                                         │                                                                                          
        .soft_reset     = sh_eth_soft_reset_gether,                                      │          .soft_reset     = sh_eth_soft_reset_gether,                                     
                                                                                         │                                                                                          
        .chip_reset     = sh_eth_chip_reset,                                             │                                                                                          
        .set_duplex     = sh_eth_set_duplex,                                             │          .set_duplex     = sh_eth_set_duplex,                                            
        .set_rate       = sh_eth_set_rate_gether,                                        │          .set_rate       = sh_eth_set_rate_gether,                                       
                                                                                         │                                                                                          
        .register_type  = SH_ETH_REG_GIGABIT,                                            │          .register_type  = SH_ETH_REG_GIGABIT,                                           
                                                                                         │                                                                                          
        .edtrr_trns     = EDTRR_TRNS_GETHER,                                             │          .edtrr_trns     = EDTRR_TRNS_GETHER,                                            
        .ecsr_value     = ECSR_ICD | ECSR_MPD,                                           │          .ecsr_value     = ECSR_PSRTO | ECSR_LCHNG | ECSR_ICD | ECSR_MPD,                
        .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                  │          .ecsipr_value   = ECSIPR_PSRTOIP | ECSIPR_LCHNGIP | ECSIPR_ICDIP |              
                                                                                         │                            ECSIPR_MPDIP,                                                 
        .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                                │          .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                               
                          EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                  │                            EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                 
                          EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                   │                            EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                  
                          EESIPR_DLCIP | EESIPR_CDIP | EESIPR_TROIP |                    │                            EESIPR_RMAFIP | EESIPR_RRFIP |                                
                          EESIPR_RMAFIP | EESIPR_CEEFIP | EESIPR_CELFIP |                │                            EESIPR_RTLFIP | EESIPR_RTSFIP |                               
                          EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                 │                                                                                          
                          EESIPR_PREIP | EESIPR_CERFIP,                                  │                            EESIPR_PREIP | EESIPR_CERFIP,                                 
                                                                                         │                                                                                          
        .tx_check       = EESR_TC1 | EESR_FTC,                                           │          .tx_check       = EESR_FTC | EESR_CD | EESR_TRO,                                
        .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                 │          .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                
                          EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                 │                            EESR_RFE | EESR_RDE | EESR_RFRMER |                           
                          EESR_TDE,                                                      │                            EESR_TFE | EESR_TDE | EESR_ECI,                               
                                                                                         │          .fdr_value      = 0x0000070f,                                                   
                                                                                         │                                                                                          
        .apr            = 1,                                                             │          .apr            = 1,                                                            
        .mpr            = 1,                                                             │          .mpr            = 1,                                                            
        .tpauser        = 1,                                                             │          .tpauser        = 1,                                                            
        .gecmr          = 1,                                                             │          .gecmr          = 1,                                                            
        .bculr          = 1,                                                             │          .bculr          = 1,                                                            
        .hw_swap        = 1,                                                             │          .hw_swap        = 1,                                                            
                                                                                         │          .nbst           = 1,                                                            
                                                                                         │          .rpadir         = 1,                                                            
        .no_trimd       = 1,                                                             │          .no_trimd       = 1,                                                            
        .no_ade         = 1,                                                             │          .no_ade         = 1,                                                            
        .xdfar_rw       = 1,                                                             │          .xdfar_rw       = 1,                                                            
        .tsu            = 1,                                                             │                                                                                          
        .csmr           = 1,                                                             │          .csmr           = 1,                                                            
        .rx_csum        = 1,                                                             │          .rx_csum        = 1,                                                            
        .select_mii     = 1,                                                             │          .select_mii     = 1,                                                            
        .magic          = 1,                                                             │          .magic          = 1,                                                            
        .cexcr          = 1,                                                             │          .cexcr          = 1,                                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/skge.h:1426                                          │ linux/drivers/net/ethernet/marvell/sky2.h:1407                                           
                                                                                         │                                                                                          
        PHY_M_EC_ENA_BC_EXT = 1<<15, /* Enable Block Carr. Ext. (88E1111 only) */        │          PHY_M_EC_ENA_BC_EXT = 1<<15, /* Enable Block Carr. Ext. (88E1111 only) */       
        PHY_M_EC_ENA_LIN_LB = 1<<14, /* Enable Line Loopback (88E1111 only) */           │          PHY_M_EC_ENA_LIN_LB = 1<<14, /* Enable Line Loopback (88E1111 only) */          
                                                                                         │                                                                                          
        PHY_M_EC_DIS_LINK_P = 1<<12, /* Disable Link Pulses (88E1111 only) */            │          PHY_M_EC_DIS_LINK_P = 1<<12, /* Disable Link Pulses (88E1111 only) */           
        PHY_M_EC_M_DSC_MSK  = 3<<10, /* Bit 11..10:     Master Downshift Counter */      │          PHY_M_EC_M_DSC_MSK  = 3<<10, /* Bit 11..10:     Master Downshift Counter */     
                                        /* (88E1011 only) */                             │                                          /* (88E1011 only) */                            
        PHY_M_EC_S_DSC_MSK  = 3<<8,  /* Bit  9.. 8:     Slave  Downshift Counter */      │          PHY_M_EC_S_DSC_MSK  = 3<<8,/* Bit  9.. 8:       Slave  Downshift Counter */     
                                       /* (88E1011 only) */                              │                                         /* (88E1011 only) */                             
        PHY_M_EC_M_DSC_MSK2  = 7<<9, /* Bit 11.. 9:     Master Downshift Counter */      │          PHY_M_EC_M_DSC_MSK2 = 7<<9,/* Bit 11.. 9:       Master Downshift Counter */     
                                        /* (88E1111 only) */                             │                                          /* (88E1111 only) */                            
        PHY_M_EC_DOWN_S_ENA  = 1<<8, /* Downshift Enable (88E1111 only) */               │          PHY_M_EC_DOWN_S_ENA = 1<<8, /* Downshift Enable (88E1111 only) */               
                                        /* !!! Errata in spec. (1 = disable) */          │                                          /* !!! Errata in spec. (1 = disable) */         
        PHY_M_EC_RX_TIM_CT   = 1<<7, /* RGMII Rx Timing Control*/                        │          PHY_M_EC_RX_TIM_CT  = 1<<7, /* RGMII Rx Timing Control*/                        
        PHY_M_EC_MAC_S_MSK   = 7<<4, /* Bit  6.. 4:     Def. MAC interface speed */      │          PHY_M_EC_MAC_S_MSK  = 7<<4,/* Bit  6.. 4:       Def. MAC interface speed */     
        PHY_M_EC_FIB_AN_ENA  = 1<<3, /* Fiber Auto-Neg. Enable (88E1011S only) */        │          PHY_M_EC_FIB_AN_ENA = 1<<3, /* Fiber Auto-Neg. Enable (88E1011S only) */        
        PHY_M_EC_DTE_D_ENA   = 1<<2, /* DTE Detect Enable (88E1111 only) */              │          PHY_M_EC_DTE_D_ENA  = 1<<2, /* DTE Detect Enable (88E1111 only) */              
        PHY_M_EC_TX_TIM_CT   = 1<<1, /* RGMII Tx Timing Control */                       │          PHY_M_EC_TX_TIM_CT  = 1<<1, /* RGMII Tx Timing Control */                       
                                                                                         │                                                                                          
                                                                                         │          PHY_M_10B_TE_ENABLE = 1<<7, /* 10Base-Te Enable (88E8079 and above) */          
                                                                                         │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/renesas/sh_eth.c:1020                                        │ linux/drivers/net/ethernet/renesas/sh_eth.c:588                                          
                                                                                         │                                                                                          
        .soft_reset     = sh_eth_soft_reset_gether,                                      │          .soft_reset     = sh_eth_soft_reset_gether,                                     
                                                                                         │                                                                                          
        .chip_reset     = sh_eth_chip_reset,                                             │          .chip_reset     = sh_eth_chip_reset_r8a7740,                                    
        .set_duplex     = sh_eth_set_duplex,                                             │          .set_duplex     = sh_eth_set_duplex,                                            
        .set_rate       = sh_eth_set_rate_gether,                                        │          .set_rate       = sh_eth_set_rate_gether,                                       
                                                                                         │                                                                                          
        .register_type  = SH_ETH_REG_GIGABIT,                                            │          .register_type  = SH_ETH_REG_GIGABIT,                                           
                                                                                         │                                                                                          
        .edtrr_trns     = EDTRR_TRNS_GETHER,                                             │          .edtrr_trns     = EDTRR_TRNS_GETHER,                                            
        .ecsr_value     = ECSR_ICD | ECSR_MPD,                                           │          .ecsr_value     = ECSR_ICD | ECSR_MPD,                                          
        .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                  │          .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                 
        .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                                │          .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                               
                          EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                  │                            EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                 
                          EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                   │                            EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                  
                          EESIPR_DLCIP | EESIPR_CDIP | EESIPR_TROIP |                    │                            0x0000f000 | EESIPR_CNDIP | EESIPR_DLCIP |                    
                          EESIPR_RMAFIP | EESIPR_CEEFIP | EESIPR_CELFIP |                │                            EESIPR_CDIP | EESIPR_TROIP | EESIPR_RMAFIP |                  
                                                                                         │                            EESIPR_CEEFIP | EESIPR_CELFIP |                               
                          EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                 │                            EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                
                          EESIPR_PREIP | EESIPR_CERFIP,                                  │                            EESIPR_PREIP | EESIPR_CERFIP,                                 
                                                                                         │                                                                                          
        .tx_check       = EESR_TC1 | EESR_FTC,                                           │          .tx_check       = EESR_TC1 | EESR_FTC,                                          
        .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                 │          .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                
                          EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE,                  │                            EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                
                                                                                         │                            EESR_TDE,                                                     
                                                                                         │          .fdr_value      = 0x0000070f,                                                   
                                                                                         │                                                                                          
        .apr            = 1,                                                             │          .apr            = 1,                                                            
        .mpr            = 1,                                                             │          .mpr            = 1,                                                            
        .tpauser        = 1,                                                             │          .tpauser        = 1,                                                            
        .gecmr          = 1,                                                             │          .gecmr          = 1,                                                            
        .bculr          = 1,                                                             │          .bculr          = 1,                                                            
        .hw_swap        = 1,                                                             │          .hw_swap        = 1,                                                            
                                                                                         │          .rpadir         = 1,                                                            
        .no_trimd       = 1,                                                             │          .no_trimd       = 1,                                                            
        .no_ade         = 1,                                                             │          .no_ade         = 1,                                                            
        .xdfar_rw       = 1,                                                             │          .xdfar_rw       = 1,                                                            
                                                                                         │          .csmr           = 1,                                                            
                                                                                         │          .rx_csum        = 1,                                                            
        .tsu            = 1,                                                             │          .tsu            = 1,                                                            
        .irq_flags      = IRQF_SHARED,                                                   │          .select_mii     = 1,                                                            
        .magic          = 1,                                                             │          .magic          = 1,                                                            
        .cexcr          = 1,                                                             │          .cexcr          = 1,                                                            
        .rx_csum        = 1,                                                             │                                                                                          
        .dual_port      = 1,                                                             │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/renesas/sh_eth.c:1020                                        │ linux/drivers/net/ethernet/renesas/sh_eth.c:933                                          
                                                                                         │                                                                                          
        .soft_reset     = sh_eth_soft_reset_gether,                                      │          .soft_reset     = sh_eth_soft_reset_gether,                                     
                                                                                         │                                                                                          
        .chip_reset     = sh_eth_chip_reset,                                             │          .chip_reset     = sh_eth_chip_reset_giga,                                       
        .set_duplex     = sh_eth_set_duplex,                                             │          .set_duplex     = sh_eth_set_duplex,                                            
        .set_rate       = sh_eth_set_rate_gether,                                        │          .set_rate       = sh_eth_set_rate_giga,                                         
                                                                                         │                                                                                          
        .register_type  = SH_ETH_REG_GIGABIT,                                            │          .register_type  = SH_ETH_REG_GIGABIT,                                           
                                                                                         │                                                                                          
        .edtrr_trns     = EDTRR_TRNS_GETHER,                                             │          .edtrr_trns     = EDTRR_TRNS_GETHER,                                            
        .ecsr_value     = ECSR_ICD | ECSR_MPD,                                           │          .ecsr_value     = ECSR_ICD | ECSR_MPD,                                          
        .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                  │          .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                 
        .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                                │          .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                               
                          EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                  │                            EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                 
                          EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                   │                            EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                  
                          EESIPR_DLCIP | EESIPR_CDIP | EESIPR_TROIP |                    │                            0x0000f000 | EESIPR_CNDIP | EESIPR_DLCIP |                    
                          EESIPR_RMAFIP | EESIPR_CEEFIP | EESIPR_CELFIP |                │                            EESIPR_CDIP | EESIPR_TROIP | EESIPR_RMAFIP |                  
                                                                                         │                            EESIPR_CEEFIP | EESIPR_CELFIP |                               
                          EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                 │                            EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                
                          EESIPR_PREIP | EESIPR_CERFIP,                                  │                            EESIPR_PREIP | EESIPR_CERFIP,                                 
                                                                                         │                                                                                          
        .tx_check       = EESR_TC1 | EESR_FTC,                                           │          .tx_check       = EESR_TC1 | EESR_FTC,                                          
        .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                 │          .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                
                          EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE,                  │                            EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                
                                                                                         │                            EESR_TDE,                                                     
                                                                                         │          .fdr_value      = 0x0000072f,                                                   
                                                                                         │                                                                                          
                                                                                         │          .irq_flags      = IRQF_SHARED,                                                  
        .apr            = 1,                                                             │          .apr            = 1,                                                            
        .mpr            = 1,                                                             │          .mpr            = 1,                                                            
        .tpauser        = 1,                                                             │          .tpauser        = 1,                                                            
        .gecmr          = 1,                                                             │          .gecmr          = 1,                                                            
        .bculr          = 1,                                                             │          .bculr          = 1,                                                            
        .hw_swap        = 1,                                                             │          .hw_swap        = 1,                                                            
                                                                                         │          .rpadir         = 1,                                                            
        .no_trimd       = 1,                                                             │          .no_trimd       = 1,                                                            
        .no_ade         = 1,                                                             │          .no_ade         = 1,                                                            
        .xdfar_rw       = 1,                                                             │          .xdfar_rw       = 1,                                                            
        .tsu            = 1,                                                             │          .tsu            = 1,                                                            
        .irq_flags      = IRQF_SHARED,                                                   │                                                                                          
        .magic          = 1,                                                             │                                                                                          
        .cexcr          = 1,                                                             │          .cexcr          = 1,                                                            
        .rx_csum        = 1,                                                             │                                                                                          
        .dual_port      = 1,                                                             │          .dual_port      = 1,                                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_cmd.c:597                     │ linux/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c:446                               
                                                                                         │                                                                                          
        int fw_log_max_fdb_encap_uplink = MLX5_CAP_ESW(dev, log_max_fdb_encap_uplink);   │          int fw_log_max_fdb_encap_uplink =                                               
                                                                                         │                  MLX5_CAP_ESW(dev, log_max_fdb_encap_uplink);                            
        int num_fwd_destinations = 0;                                                    │          int num_fwd_destinations = 0;                                                   
                                                                                         │          struct mlx5_flow_rule *dst;                                                     
        int num_encap = 0;                                                               │          int num_encap = 0;                                                              
        int i;                                                                           │                                                                                          
                                                                                         │                                                                                          
        *extended_dest = false;                                                          │          *extended_dest = false;                                                         
        if (!(fte->action.action & MLX5_FLOW_CONTEXT_ACTION_FWD_DEST))                   │          if (!(fte->action.action & MLX5_FLOW_CONTEXT_ACTION_FWD_DEST))                  
                return 0;                                                                │                  return 0;                                                               
        for (i = 0; i < fte->dests_size; i++) {                                          │                                                                                          
                if (fte->dest_arr[i].type == MLX5_FLOW_DESTINATION_TYPE_COUNTER)         │          list_for_each_entry(dst, &fte->node.children, node.list) {                      
                                                                                         │                  if (dst->dest_attr.type == MLX5_FLOW_DESTINATION_TYPE_COUNTER)          
                        continue;                                                        │                          continue;                                                       
                if ((fte->dest_arr[i].type == MLX5_FLOW_DESTINATION_TYPE_VPORT ||        │                  if ((dst->dest_attr.type == MLX5_FLOW_DESTINATION_TYPE_VPORT ||         
                     fte->dest_arr[i].type == MLX5_FLOW_DESTINATION_TYPE_UPLINK) &&      │                       dst->dest_attr.type == MLX5_FLOW_DESTINATION_TYPE_UPLINK) &&       
                    fte->dest_arr[i].vport.flags & MLX5_FLOW_DEST_VPORT_REFORMAT_ID)     │                      dst->dest_attr.vport.flags & MLX5_FLOW_DEST_VPORT_REFORMAT_ID)      
                        num_encap++;                                                     │                          num_encap++;                                                    
                num_fwd_destinations++;                                                  │                  num_fwd_destinations++;                                                 
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (num_fwd_destinations > 1 && num_encap > 0)                                   │          if (num_fwd_destinations > 1 && num_encap > 0)                                  
                *extended_dest = true;                                                   │                  *extended_dest = true;                                                  
                                                                                         │                                                                                          
        if (*extended_dest && !fw_log_max_fdb_encap_uplink) {                            │          if (*extended_dest && !fw_log_max_fdb_encap_uplink) {                           
                mlx5_core_warn(dev, "FW does not support extended destination");         │                  mlx5_core_warn(dev, "FW does not support extended destination");        
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
        }                                                                                │          }                                                                               
        if (num_encap > (1 << fw_log_max_fdb_encap_uplink)) {                            │          if (num_encap > (1 << fw_log_max_fdb_encap_uplink)) {                           
                mlx5_core_warn(dev, "FW does not support more than %d encaps",           │                  mlx5_core_warn(dev, "FW does not support more than %d encaps",          
                               1 << fw_log_max_fdb_encap_uplink);                        │                                 1 << fw_log_max_fdb_encap_uplink);                       
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c:17                             │ linux/drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c:17                              
                                                                                         │                                                                                          
        struct atl1c_adapter *adapter = netdev_priv(netdev);                             │          struct atl1e_adapter *adapter = netdev_priv(netdev);                            
        struct atl1c_hw *hw = &adapter->hw;                                              │          struct atl1e_hw *hw = &adapter->hw;                                             
        u32 supported, advertising;                                                      │          u32 supported, advertising;                                                     
                                                                                         │                                                                                          
        supported = (SUPPORTED_10baseT_Half  |                                           │          supported = (SUPPORTED_10baseT_Half  |                                          
                           SUPPORTED_10baseT_Full  |                                     │                             SUPPORTED_10baseT_Full  |                                    
                           SUPPORTED_100baseT_Half |                                     │                             SUPPORTED_100baseT_Half |                                    
                           SUPPORTED_100baseT_Full |                                     │                             SUPPORTED_100baseT_Full |                                    
                           SUPPORTED_Autoneg       |                                     │                             SUPPORTED_Autoneg       |                                    
                           SUPPORTED_TP);                                                │                             SUPPORTED_TP);                                               
        if (hw->link_cap_flags & ATL1C_LINK_CAP_1000M)                                   │          if (hw->nic_type == athr_l1e)                                                   
                supported |= SUPPORTED_1000baseT_Full;                                   │                  supported |= SUPPORTED_1000baseT_Full;                                  
                                                                                         │                                                                                          
        advertising = ADVERTISED_TP;                                                     │          advertising = ADVERTISED_TP;                                                    
                                                                                         │                                                                                          
                                                                                         │          advertising |= ADVERTISED_Autoneg;                                              
        advertising |= hw->autoneg_advertised;                                           │          advertising |= hw->autoneg_advertised;                                          
                                                                                         │                                                                                          
        cmd->base.port = PORT_TP;                                                        │          cmd->base.port = PORT_TP;                                                       
        cmd->base.phy_address = 0;                                                       │          cmd->base.phy_address = 0;                                                      
                                                                                         │                                                                                          
        if (adapter->link_speed != SPEED_0) {                                            │          if (adapter->link_speed != SPEED_0) {                                           
                cmd->base.speed = adapter->link_speed;                                   │                  cmd->base.speed = adapter->link_speed;                                  
                if (adapter->link_duplex == FULL_DUPLEX)                                 │                  if (adapter->link_duplex == FULL_DUPLEX)                                
                        cmd->base.duplex = DUPLEX_FULL;                                  │                          cmd->base.duplex = DUPLEX_FULL;                                 
                else                                                                     │                  else                                                                    
                        cmd->base.duplex = DUPLEX_HALF;                                  │                          cmd->base.duplex = DUPLEX_HALF;                                 
        } else {                                                                         │          } else {                                                                        
                cmd->base.speed = SPEED_UNKNOWN;                                         │                  cmd->base.speed = SPEED_UNKNOWN;                                        
                cmd->base.duplex = DUPLEX_UNKNOWN;                                       │                  cmd->base.duplex = DUPLEX_UNKNOWN;                                      
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        cmd->base.autoneg = AUTONEG_ENABLE;                                              │          cmd->base.autoneg = AUTONEG_ENABLE;                                             
                                                                                         │                                                                                          
        ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,               │          ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,              
                                                supported);                              │                                                  supported);                             
        ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,             │          ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,            
                                                advertising);                            │                                                  advertising);                           
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/renesas/sh_eth.c:1020                                        │ linux/drivers/net/ethernet/renesas/sh_eth.c:977                                          
                                                                                         │                                                                                          
        .soft_reset     = sh_eth_soft_reset_gether,                                      │          .soft_reset     = sh_eth_soft_reset_gether,                                     
                                                                                         │                                                                                          
        .chip_reset     = sh_eth_chip_reset,                                             │          .chip_reset     = sh_eth_chip_reset,                                            
        .set_duplex     = sh_eth_set_duplex,                                             │          .set_duplex     = sh_eth_set_duplex,                                            
        .set_rate       = sh_eth_set_rate_gether,                                        │          .set_rate       = sh_eth_set_rate_gether,                                       
                                                                                         │                                                                                          
        .register_type  = SH_ETH_REG_GIGABIT,                                            │          .register_type  = SH_ETH_REG_GIGABIT,                                           
                                                                                         │                                                                                          
        .edtrr_trns     = EDTRR_TRNS_GETHER,                                             │          .edtrr_trns     = EDTRR_TRNS_GETHER,                                            
        .ecsr_value     = ECSR_ICD | ECSR_MPD,                                           │          .ecsr_value     = ECSR_ICD | ECSR_MPD,                                          
        .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                  │          .ecsipr_value   = ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP,                 
        .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                                │          .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |                               
                          EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                  │                            EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |                 
                          EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                   │                            EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |                  
                          EESIPR_DLCIP | EESIPR_CDIP | EESIPR_TROIP |                    │                            EESIPR_DLCIP | EESIPR_CDIP | EESIPR_TROIP |                   
                          EESIPR_RMAFIP | EESIPR_CEEFIP | EESIPR_CELFIP |                │                            EESIPR_RMAFIP | EESIPR_CEEFIP | EESIPR_CELFIP |               
                          EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                 │                            EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP |                
                          EESIPR_PREIP | EESIPR_CERFIP,                                  │                            EESIPR_PREIP | EESIPR_CERFIP,                                 
                                                                                         │                                                                                          
        .tx_check       = EESR_TC1 | EESR_FTC,                                           │          .tx_check       = EESR_TC1 | EESR_FTC,                                          
        .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                 │          .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |                
                          EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE,                  │                            EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE |                
                                                                                         │                            EESR_TDE,                                                     
                                                                                         │                                                                                          
        .apr            = 1,                                                             │          .apr            = 1,                                                            
        .mpr            = 1,                                                             │          .mpr            = 1,                                                            
        .tpauser        = 1,                                                             │          .tpauser        = 1,                                                            
        .gecmr          = 1,                                                             │          .gecmr          = 1,                                                            
        .bculr          = 1,                                                             │          .bculr          = 1,                                                            
        .hw_swap        = 1,                                                             │          .hw_swap        = 1,                                                            
        .no_trimd       = 1,                                                             │          .no_trimd       = 1,                                                            
        .no_ade         = 1,                                                             │          .no_ade         = 1,                                                            
        .xdfar_rw       = 1,                                                             │          .xdfar_rw       = 1,                                                            
        .tsu            = 1,                                                             │          .tsu            = 1,                                                            
        .irq_flags      = IRQF_SHARED,                                                   │          .csmr           = 1,                                                            
                                                                                         │          .rx_csum        = 1,                                                            
                                                                                         │          .select_mii     = 1,                                                            
        .magic          = 1,                                                             │          .magic          = 1,                                                            
        .cexcr          = 1,                                                             │          .cexcr          = 1,                                                            
        .rx_csum        = 1,                                                             │                                                                                          
        .dual_port      = 1,                                                             │                                                                                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/ixgbevf/ethtool.c:677                                  │ linux/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c:1612                              
                                                                                         │                                                                                          
                for (i = 0; i < test->array_len; i++) {                                  │                  for (i = 0; i < test->array_len; i++) {                                 
                        bool b = false;                                                  │                          bool b = false;                                                 
                                                                                         │                                                                                          
                        switch (test->test_type) {                                       │                          switch (test->test_type) {                                      
                        case PATTERN_TEST:                                               │                          case PATTERN_TEST:                                              
                                b = reg_pattern_test(adapter, data,                      │                                  b = reg_pattern_test(adapter, data,                     
                                                     test->reg + (i * 0x40),             │                                                       test->reg + (i * 0x40),            
                                                     test->mask,                         │                                                       test->mask,                        
                                                     test->write);                       │                                                       test->write);                      
                                break;                                                   │                                  break;                                                  
                        case SET_READ_TEST:                                              │                          case SET_READ_TEST:                                             
                                b = reg_set_and_check(adapter, data,                     │                                  b = reg_set_and_check(adapter, data,                    
                                                      test->reg + (i * 0x40),            │                                                        test->reg + (i * 0x40),           
                                                      test->mask,                        │                                                        test->mask,                       
                                                      test->write);                      │                                                        test->write);                     
                                break;                                                   │                                  break;                                                  
                        case WRITE_NO_TEST:                                              │                          case WRITE_NO_TEST:                                             
                                ixgbe_write_reg(&adapter->hw,                            │                                  ixgbe_write_reg(&adapter->hw,                           
                                                test->reg + (i * 0x40),                  │                                                  test->reg + (i * 0x40),                 
                                                test->write);                            │                                                  test->write);                           
                                break;                                                   │                                  break;                                                  
                        case TABLE32_TEST:                                               │                          case TABLE32_TEST:                                              
                                b = reg_pattern_test(adapter, data,                      │                                  b = reg_pattern_test(adapter, data,                     
                                                     test->reg + (i * 4),                │                                                       test->reg + (i * 4),               
                                                     test->mask,                         │                                                       test->mask,                        
                                                     test->write);                       │                                                       test->write);                      
                                break;                                                   │                                  break;                                                  
                        case TABLE64_TEST_LO:                                            │                          case TABLE64_TEST_LO:                                           
                                b = reg_pattern_test(adapter, data,                      │                                  b = reg_pattern_test(adapter, data,                     
                                                     test->reg + (i * 8),                │                                                       test->reg + (i * 8),               
                                                     test->mask,                         │                                                       test->mask,                        
                                                     test->write);                       │                                                       test->write);                      
                                break;                                                   │                                  break;                                                  
                        case TABLE64_TEST_HI:                                            │                          case TABLE64_TEST_HI:                                           
                                b = reg_pattern_test(adapter, data,                      │                                  b = reg_pattern_test(adapter, data,                     
                                                     test->reg + 4 + (i * 8),            │                                                       (test->reg + 4) + (i * 8),         
                                                     test->mask,                         │                                                       test->mask,                        
                                                     test->write);                       │                                                       test->write);                      
                                break;                                                   │                                  break;                                                  
                        }                                                                │                          }                                                               
                        if (b)                                                           │                          if (b)                                                          
                                return 1;                                                │                                  return 1;                                               
                }                                                                        │                  }                                                                       
                test++;                                                                  │                  test++;                                                                 
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/e1000/e1000_ethtool.c:1860                             │ linux/drivers/net/ethernet/intel/e1000e/ethtool.c:2362                                   
                                                                                         │                                                                                          
        .supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS,                          │          .supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS,                         
        .get_drvinfo            = e1000_get_drvinfo,                                     │          .get_drvinfo            = e1000_get_drvinfo,                                    
        .get_regs_len           = e1000_get_regs_len,                                    │          .get_regs_len           = e1000_get_regs_len,                                   
        .get_regs               = e1000_get_regs,                                        │          .get_regs               = e1000_get_regs,                                       
        .get_wol                = e1000_get_wol,                                         │          .get_wol                = e1000_get_wol,                                        
        .set_wol                = e1000_set_wol,                                         │          .set_wol                = e1000_set_wol,                                        
        .get_msglevel           = e1000_get_msglevel,                                    │          .get_msglevel           = e1000_get_msglevel,                                   
        .set_msglevel           = e1000_set_msglevel,                                    │          .set_msglevel           = e1000_set_msglevel,                                   
        .nway_reset             = e1000_nway_reset,                                      │          .nway_reset             = e1000_nway_reset,                                     
        .get_link               = e1000_get_link,                                        │          .get_link               = ethtool_op_get_link,                                  
        .get_eeprom_len         = e1000_get_eeprom_len,                                  │          .get_eeprom_len         = e1000_get_eeprom_len,                                 
        .get_eeprom             = e1000_get_eeprom,                                      │          .get_eeprom             = e1000_get_eeprom,                                     
        .set_eeprom             = e1000_set_eeprom,                                      │          .set_eeprom             = e1000_set_eeprom,                                     
        .get_ringparam          = e1000_get_ringparam,                                   │          .get_ringparam          = e1000_get_ringparam,                                  
        .set_ringparam          = e1000_set_ringparam,                                   │          .set_ringparam          = e1000_set_ringparam,                                  
        .get_pauseparam         = e1000_get_pauseparam,                                  │          .get_pauseparam         = e1000_get_pauseparam,                                 
        .set_pauseparam         = e1000_set_pauseparam,                                  │          .set_pauseparam         = e1000_set_pauseparam,                                 
        .self_test              = e1000_diag_test,                                       │          .self_test              = e1000_diag_test,                                      
        .get_strings            = e1000_get_strings,                                     │          .get_strings            = e1000_get_strings,                                    
        .set_phys_id            = e1000_set_phys_id,                                     │          .set_phys_id            = e1000_set_phys_id,                                    
        .get_ethtool_stats      = e1000_get_ethtool_stats,                               │          .get_ethtool_stats      = e1000_get_ethtool_stats,                              
        .get_sset_count         = e1000_get_sset_count,                                  │          .get_sset_count         = e1000e_get_sset_count,                                
        .get_coalesce           = e1000_get_coalesce,                                    │          .get_coalesce           = e1000_get_coalesce,                                   
        .set_coalesce           = e1000_set_coalesce,                                    │          .set_coalesce           = e1000_set_coalesce,                                   
        .get_ts_info            = ethtool_op_get_ts_info,                                │          .get_rxnfc              = e1000_get_rxnfc,                                      
                                                                                         │          .get_ts_info            = e1000e_get_ts_info,                                   
                                                                                         │          .get_eee                = e1000e_get_eee,                                       
                                                                                         │          .set_eee                = e1000e_set_eee,                                       
        .get_link_ksettings     = e1000_get_link_ksettings,                              │          .get_link_ksettings     = e1000_get_link_ksettings,                             
        .set_link_ksettings     = e1000_set_link_ksettings,                              │          .set_link_ksettings     = e1000_set_link_ksettings,                             
                                                                                         │          .get_priv_flags         = e1000e_get_priv_flags,                                
                                                                                         │          .set_priv_flags         = e1000e_set_priv_flags,                                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igc/igc_phy.c:614                                      │ linux/drivers/net/ethernet/intel/igc/igc_phy.c:558                                       
                                                                                         │                                                                                          
        struct igc_phy_info *phy = &hw->phy;                                             │          struct igc_phy_info *phy = &hw->phy;                                            
        u32 i, mdic = 0;                                                                 │          u32 i, mdic = 0;                                                                
        s32 ret_val = 0;                                                                 │          s32 ret_val = 0;                                                                
                                                                                         │                                                                                          
        if (offset > MAX_PHY_REG_ADDRESS) {                                              │          if (offset > MAX_PHY_REG_ADDRESS) {                                             
                hw_dbg("PHY Address %d is out of range\n", offset);                      │                  hw_dbg("PHY Address %d is out of range\n", offset);                     
                ret_val = -IGC_ERR_PARAM;                                                │                  ret_val = -IGC_ERR_PARAM;                                               
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        /* Set up Op-code, Phy Address, and register offset in the MDI                   │          /* Set up Op-code, Phy Address, and register offset in the MDI                  
         * Control register.  The MAC will take care of interfacing with the             │           * Control register.  The MAC will take care of interfacing with the            
         * PHY to write the desired data.                                                │           * PHY to retrieve the desired data.                                            
         */                                                                              │           */                                                                             
        mdic = (((u32)data) |                                                            │          mdic = ((offset << IGC_MDIC_REG_SHIFT) |                                        
                (offset << IGC_MDIC_REG_SHIFT) |                                         │                                                                                          
                (phy->addr << IGC_MDIC_PHY_SHIFT) |                                      │                  (phy->addr << IGC_MDIC_PHY_SHIFT) |                                     
                (IGC_MDIC_OP_WRITE));                                                    │                  (IGC_MDIC_OP_READ));                                                    
                                                                                         │                                                                                          
        wr32(IGC_MDIC, mdic);                                                            │          wr32(IGC_MDIC, mdic);                                                           
                                                                                         │                                                                                          
        /* Poll the ready bit to see if the MDI read completed                           │          /* Poll the ready bit to see if the MDI read completed                          
         * Increasing the time out as testing showed failures with                       │           * Increasing the time out as testing showed failures with                      
         * the lower time out                                                            │           * the lower time out                                                           
         */                                                                              │           */                                                                             
        for (i = 0; i < IGC_GEN_POLL_TIMEOUT; i++) {                                     │          for (i = 0; i < IGC_GEN_POLL_TIMEOUT; i++) {                                    
                udelay(50);                                                              │                  udelay(50);                                                             
                mdic = rd32(IGC_MDIC);                                                   │                  mdic = rd32(IGC_MDIC);                                                  
                if (mdic & IGC_MDIC_READY)                                               │                  if (mdic & IGC_MDIC_READY)                                              
                        break;                                                           │                          break;                                                          
        }                                                                                │          }                                                                               
        if (!(mdic & IGC_MDIC_READY)) {                                                  │          if (!(mdic & IGC_MDIC_READY)) {                                                 
                hw_dbg("MDI Write did not complete\n");                                  │                  hw_dbg("MDI Read did not complete\n");                                  
                ret_val = -IGC_ERR_PHY;                                                  │                  ret_val = -IGC_ERR_PHY;                                                 
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
        if (mdic & IGC_MDIC_ERROR) {                                                     │          if (mdic & IGC_MDIC_ERROR) {                                                    
                hw_dbg("MDI Error\n");                                                   │                  hw_dbg("MDI Error\n");                                                  
                ret_val = -IGC_ERR_PHY;                                                  │                  ret_val = -IGC_ERR_PHY;                                                 
                goto out;                                                                │                  goto out;                                                               
        }                                                                                │          }                                                                               
                                                                                         │          *data = (u16)mdic;                                                              
                                                                                         │                                                                                          
out:                                                                                     │  out:                                                                                    
        return ret_val;                                                                  │          return ret_val;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:1320                                    │ linux/drivers/net/ethernet/intel/igc/igc_main.c:4439                                     
                                                                                         │                                                                                          
        int q_vectors = adapter->num_q_vectors;                                          │                                                                                          
        int rxr_remaining = adapter->num_rx_queues;                                      │          int rxr_remaining = adapter->num_rx_queues;                                     
        int txr_remaining = adapter->num_tx_queues;                                      │          int txr_remaining = adapter->num_tx_queues;                                     
        int rxr_idx = 0, txr_idx = 0, v_idx = 0;                                         │          int rxr_idx = 0, txr_idx = 0, v_idx = 0;                                        
                                                                                         │          int q_vectors = adapter->num_q_vectors;                                         
        int err;                                                                         │          int err;                                                                        
                                                                                         │                                                                                          
        if (q_vectors >= (rxr_remaining + txr_remaining)) {                              │          if (q_vectors >= (rxr_remaining + txr_remaining)) {                             
                for (; rxr_remaining; v_idx++) {                                         │                  for (; rxr_remaining; v_idx++) {                                        
                        err = igb_alloc_q_vector(adapter, q_vectors, v_idx,              │                          err = igc_alloc_q_vector(adapter, q_vectors, v_idx,             
                                                 0, 0, 1, rxr_idx);                      │                                                   0, 0, 1, rxr_idx);                     
                                                                                         │                                                                                          
                        if (err)                                                         │                          if (err)                                                        
                                goto err_out;                                            │                                  goto err_out;                                           
                                                                                         │                                                                                          
                        /* update counts and index */                                    │                          /* update counts and index */                                   
                        rxr_remaining--;                                                 │                          rxr_remaining--;                                                
                        rxr_idx++;                                                       │                          rxr_idx++;                                                      
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        for (; v_idx < q_vectors; v_idx++) {                                             │          for (; v_idx < q_vectors; v_idx++) {                                            
                int rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors - v_idx);               │                  int rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors - v_idx);              
                int tqpv = DIV_ROUND_UP(txr_remaining, q_vectors - v_idx);               │                  int tqpv = DIV_ROUND_UP(txr_remaining, q_vectors - v_idx);              
                                                                                         │                                                                                          
                err = igb_alloc_q_vector(adapter, q_vectors, v_idx,                      │                  err = igc_alloc_q_vector(adapter, q_vectors, v_idx,                     
                                         tqpv, txr_idx, rqpv, rxr_idx);                  │                                           tqpv, txr_idx, rqpv, rxr_idx);                 
                                                                                         │                                                                                          
                if (err)                                                                 │                  if (err)                                                                
                        goto err_out;                                                    │                          goto err_out;                                                   
                                                                                         │                                                                                          
                /* update counts and index */                                            │                  /* update counts and index */                                           
                rxr_remaining -= rqpv;                                                   │                  rxr_remaining -= rqpv;                                                  
                txr_remaining -= tqpv;                                                   │                  txr_remaining -= tqpv;                                                  
                rxr_idx++;                                                               │                  rxr_idx++;                                                              
                txr_idx++;                                                               │                  txr_idx++;                                                              
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
err_out:                                                                                 │  err_out:                                                                                
        adapter->num_tx_queues = 0;                                                      │          adapter->num_tx_queues = 0;                                                     
        adapter->num_rx_queues = 0;                                                      │          adapter->num_rx_queues = 0;                                                     
        adapter->num_q_vectors = 0;                                                      │          adapter->num_q_vectors = 0;                                                     
                                                                                         │                                                                                          
        while (v_idx--)                                                                  │          while (v_idx--)                                                                 
                igb_free_q_vector(adapter, v_idx);                                       │                  igc_free_q_vector(adapter, v_idx);                                      
                                                                                         │                                                                                          
        return -ENOMEM;                                                                  │          return -ENOMEM;                                                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c:1801                           │ linux/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c:1680                            
                                                                                         │                                                                                          
                j = lio->linfo.rxpciq[vj].s.q_no;                                        │                  if (!(oct_dev->io_qmask.oq & BIT_ULL(j)))                               
                                                                                         │                          continue;                                                       
                                                                                         │                                                                                          
                /* packets send to TCP/IP network stack */                               │                  /*packets send to TCP/IP network stack */                               
                /* # of packets to network stack */                                      │                  /*# of packets to network stack */                                      
                data[i++] = CVM_CAST64(                                                  │                  data[i++] =                                                             
                                oct_dev->droq[j]->stats.rx_pkts_received);               │                          CVM_CAST64(oct_dev->droq[j]->stats.rx_pkts_received);           
                /* # of bytes to network stack */                                        │                  /*# of bytes to network stack */                                        
                data[i++] = CVM_CAST64(                                                  │                  data[i++] =                                                             
                                oct_dev->droq[j]->stats.rx_bytes_received);              │                          CVM_CAST64(oct_dev->droq[j]->stats.rx_bytes_received);          
                                                                                         │                  /*# of packets dropped */                                               
                data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.dropped_nomem +           │                  data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.dropped_nomem +          
                                       oct_dev->droq[j]->stats.dropped_toomany +         │                                         oct_dev->droq[j]->stats.dropped_toomany +        
                                       oct_dev->droq[j]->stats.rx_dropped);              │                                         oct_dev->droq[j]->stats.rx_dropped);             
                data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.dropped_nomem);           │                  data[i++] =                                                             
                data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.dropped_toomany);         │                          CVM_CAST64(oct_dev->droq[j]->stats.dropped_nomem);              
                data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.rx_dropped);              │                  data[i++] =                                                             
                                                                                         │                          CVM_CAST64(oct_dev->droq[j]->stats.dropped_toomany);            
                                                                                         │                  data[i++] =                                                             
                                                                                         │                          CVM_CAST64(oct_dev->droq[j]->stats.rx_dropped);                 
                                                                                         │                                                                                          
                /* control and data path */                                              │                  /*control and data path*/                                               
                data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.pkts_received);           │                  data[i++] =                                                             
                data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.bytes_received);          │                          CVM_CAST64(oct_dev->droq[j]->stats.pkts_received);              
                                                                                         │                  data[i++] =                                                             
                                                                                         │                          CVM_CAST64(oct_dev->droq[j]->stats.bytes_received);             
                data[i++] =                                                              │                  data[i++] =                                                             
                        CVM_CAST64(oct_dev->droq[j]->stats.dropped_nodispatch);          │                          CVM_CAST64(oct_dev->droq[j]->stats.dropped_nodispatch);         
                                                                                         │                                                                                          
                data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.rx_vxlan);                │                                                                                          
                data[i++] =                                                              │                  data[i++] =                                                             
                    CVM_CAST64(oct_dev->droq[j]->stats.rx_alloc_failure);                │                          CVM_CAST64(oct_dev->droq[j]->stats.rx_vxlan);                   
                                                                                         │                  data[i++] =                                                             
                                                                                         │                          CVM_CAST64(oct_dev->droq[j]->stats.rx_alloc_failure);           
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_keys.c:208                  │ linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_keys.c:329                   
                                                                                         │                                                                                          
        MLXSW_AFK_BLOCK(0x10, mlxsw_sp_afk_element_info_mac_0),                          │          MLXSW_AFK_BLOCK(0x10, mlxsw_sp_afk_element_info_mac_0),                         
        MLXSW_AFK_BLOCK(0x11, mlxsw_sp_afk_element_info_mac_1),                          │          MLXSW_AFK_BLOCK(0x11, mlxsw_sp_afk_element_info_mac_1),                         
        MLXSW_AFK_BLOCK(0x12, mlxsw_sp_afk_element_info_mac_2),                          │          MLXSW_AFK_BLOCK(0x12, mlxsw_sp_afk_element_info_mac_2),                         
        MLXSW_AFK_BLOCK(0x13, mlxsw_sp_afk_element_info_mac_3),                          │          MLXSW_AFK_BLOCK(0x13, mlxsw_sp_afk_element_info_mac_3),                         
        MLXSW_AFK_BLOCK(0x14, mlxsw_sp_afk_element_info_mac_4),                          │          MLXSW_AFK_BLOCK(0x14, mlxsw_sp_afk_element_info_mac_4),                         
        MLXSW_AFK_BLOCK(0x15, mlxsw_sp_afk_element_info_mac_5),                          │          MLXSW_AFK_BLOCK(0x1A, mlxsw_sp_afk_element_info_mac_5b),                        
        MLXSW_AFK_BLOCK(0x38, mlxsw_sp_afk_element_info_ipv4_0),                         │          MLXSW_AFK_BLOCK(0x38, mlxsw_sp_afk_element_info_ipv4_0),                        
        MLXSW_AFK_BLOCK(0x39, mlxsw_sp_afk_element_info_ipv4_1),                         │          MLXSW_AFK_BLOCK(0x39, mlxsw_sp_afk_element_info_ipv4_1),                        
        MLXSW_AFK_BLOCK(0x3A, mlxsw_sp_afk_element_info_ipv4_2),                         │          MLXSW_AFK_BLOCK(0x3A, mlxsw_sp_afk_element_info_ipv4_2),                        
        MLXSW_AFK_BLOCK(0x3C, mlxsw_sp_afk_element_info_ipv4_4),                         │          MLXSW_AFK_BLOCK(0x35, mlxsw_sp_afk_element_info_ipv4_4b),                       
        MLXSW_AFK_BLOCK(0x40, mlxsw_sp_afk_element_info_ipv6_0),                         │          MLXSW_AFK_BLOCK(0x40, mlxsw_sp_afk_element_info_ipv6_0),                        
        MLXSW_AFK_BLOCK(0x41, mlxsw_sp_afk_element_info_ipv6_1),                         │          MLXSW_AFK_BLOCK(0x41, mlxsw_sp_afk_element_info_ipv6_1),                        
        MLXSW_AFK_BLOCK(0x42, mlxsw_sp_afk_element_info_ipv6_2),                         │          MLXSW_AFK_BLOCK(0x47, mlxsw_sp_afk_element_info_ipv6_2b),                       
        MLXSW_AFK_BLOCK(0x43, mlxsw_sp_afk_element_info_ipv6_3),                         │          MLXSW_AFK_BLOCK(0x43, mlxsw_sp_afk_element_info_ipv6_3),                        
        MLXSW_AFK_BLOCK(0x44, mlxsw_sp_afk_element_info_ipv6_4),                         │          MLXSW_AFK_BLOCK(0x44, mlxsw_sp_afk_element_info_ipv6_4),                        
        MLXSW_AFK_BLOCK(0x45, mlxsw_sp_afk_element_info_ipv6_5),                         │          MLXSW_AFK_BLOCK(0x45, mlxsw_sp_afk_element_info_ipv6_5),                        
        MLXSW_AFK_BLOCK(0x90, mlxsw_sp_afk_element_info_l4_0),                           │          MLXSW_AFK_BLOCK(0x90, mlxsw_sp_afk_element_info_l4_0),                          
        MLXSW_AFK_BLOCK(0x92, mlxsw_sp_afk_element_info_l4_2),                           │          MLXSW_AFK_BLOCK(0x92, mlxsw_sp_afk_element_info_l4_2),                          
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1693                              │ linux/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1742                               
                                                                                         │                                                                                          
                                                                                         │          struct net_device *netdev = rq->netdev;                                         
                                                                                         │          struct mlx5e_priv *priv = netdev_priv(netdev);                                  
                                                                                         │          struct mlx5e_rep_priv *rpriv  = priv->ppriv;                                    
                                                                                         │          struct mlx5_eswitch_rep *rep = rpriv->rep;                                      
        struct mlx5_wq_cyc *wq = &rq->wqe.wq;                                            │          struct mlx5_wq_cyc *wq = &rq->wqe.wq;                                           
        struct mlx5e_wqe_frag_info *wi;                                                  │          struct mlx5e_wqe_frag_info *wi;                                                 
        struct sk_buff *skb;                                                             │          struct sk_buff *skb;                                                            
        u32 cqe_bcnt;                                                                    │          u32 cqe_bcnt;                                                                   
        u16 ci;                                                                          │          u16 ci;                                                                         
                                                                                         │                                                                                          
        ci       = mlx5_wq_cyc_ctr2ix(wq, be16_to_cpu(cqe->wqe_counter));                │          ci       = mlx5_wq_cyc_ctr2ix(wq, be16_to_cpu(cqe->wqe_counter));               
        wi       = get_frag(rq, ci);                                                     │          wi       = get_frag(rq, ci);                                                    
        cqe_bcnt = be32_to_cpu(cqe->byte_cnt);                                           │          cqe_bcnt = be32_to_cpu(cqe->byte_cnt);                                          
                                                                                         │                                                                                          
        if (unlikely(MLX5E_RX_ERR_CQE(cqe))) {                                           │          if (unlikely(MLX5E_RX_ERR_CQE(cqe))) {                                          
                mlx5e_handle_rx_err_cqe(rq, cqe);                                        │                  mlx5e_handle_rx_err_cqe(rq, cqe);                                       
                goto free_wqe;                                                           │                  goto free_wqe;                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe,                                      │          skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe,                                     
                              mlx5e_skb_from_cqe_linear,                                 │                                mlx5e_skb_from_cqe_linear,                                
                              mlx5e_skb_from_cqe_nonlinear,                              │                                mlx5e_skb_from_cqe_nonlinear,                             
                              rq, cqe, wi, cqe_bcnt);                                    │                                rq, cqe, wi, cqe_bcnt);                                   
        if (!skb) {                                                                      │          if (!skb) {                                                                     
                /* probably for XDP */                                                   │                  /* probably for XDP */                                                  
                if (__test_and_clear_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags)) {           │                  if (__test_and_clear_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags)) {          
                        /* do not return page to cache,                                  │                          /* do not return page to cache,                                 
                         * it will be returned on XDP_TX completion.                     │                           * it will be returned on XDP_TX completion.                    
                         */                                                              │                           */                                                             
                        goto wq_cyc_pop;                                                 │                          goto wq_cyc_pop;                                                
                }                                                                        │                  }                                                                       
                goto free_wqe;                                                           │                  goto free_wqe;                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        mlx5e_complete_rx_cqe(rq, cqe, cqe_bcnt, skb);                                   │          mlx5e_complete_rx_cqe(rq, cqe, cqe_bcnt, skb);                                  
                                                                                         │                                                                                          
        if (mlx5e_cqe_regb_chain(cqe))                                                   │          if (rep->vlan && skb_vlan_tag_present(skb))                                     
                if (!mlx5e_tc_update_skb(cqe, skb)) {                                    │                  skb_vlan_pop(skb);                                                      
                        dev_kfree_skb_any(skb);                                          │                                                                                          
                        goto free_wqe;                                                   │                                                                                          
                }                                                                        │                                                                                          
                                                                                         │                                                                                          
        napi_gro_receive(rq->cq.napi, skb);                                              │          mlx5e_rep_tc_receive(cqe, rq, skb);                                             
                                                                                         │                                                                                          
free_wqe:                                                                                │  free_wqe:                                                                               
        mlx5e_free_rx_wqe(rq, wi, true);                                                 │          mlx5e_free_rx_wqe(rq, wi, true);                                                
wq_cyc_pop:                                                                              │  wq_cyc_pop:                                                                             
        mlx5_wq_cyc_pop(wq);                                                             │          mlx5_wq_cyc_pop(wq);                                                            
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/amd/xgbe/xgbe-dev.c:2078                                     │ linux/drivers/net/ethernet/amd/xgbe/xgbe-dev.c:2119                                      
                                                                                         │                                                                                          
        switch (int_id) {                                                                │          switch (int_id) {                                                               
        case XGMAC_INT_DMA_CH_SR_TI:                                                     │          case XGMAC_INT_DMA_CH_SR_TI:                                                    
                XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, TIE, 1);                   │                  XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, TIE, 0);                  
                break;                                                                   │                  break;                                                                  
        case XGMAC_INT_DMA_CH_SR_TPS:                                                    │          case XGMAC_INT_DMA_CH_SR_TPS:                                                   
                XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, TXSE, 1);                  │                  XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, TXSE, 0);                 
                break;                                                                   │                  break;                                                                  
        case XGMAC_INT_DMA_CH_SR_TBU:                                                    │          case XGMAC_INT_DMA_CH_SR_TBU:                                                   
                XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, TBUE, 1);                  │                  XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, TBUE, 0);                 
                break;                                                                   │                  break;                                                                  
        case XGMAC_INT_DMA_CH_SR_RI:                                                     │          case XGMAC_INT_DMA_CH_SR_RI:                                                    
                XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, RIE, 1);                   │                  XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, RIE, 0);                  
                break;                                                                   │                  break;                                                                  
        case XGMAC_INT_DMA_CH_SR_RBU:                                                    │          case XGMAC_INT_DMA_CH_SR_RBU:                                                   
                XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, RBUE, 1);                  │                  XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, RBUE, 0);                 
                break;                                                                   │                  break;                                                                  
        case XGMAC_INT_DMA_CH_SR_RPS:                                                    │          case XGMAC_INT_DMA_CH_SR_RPS:                                                   
                XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, RSE, 1);                   │                  XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, RSE, 0);                  
                break;                                                                   │                  break;                                                                  
        case XGMAC_INT_DMA_CH_SR_TI_RI:                                                  │          case XGMAC_INT_DMA_CH_SR_TI_RI:                                                 
                XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, TIE, 1);                   │                  XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, TIE, 0);                  
                XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, RIE, 1);                   │                  XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, RIE, 0);                  
                break;                                                                   │                  break;                                                                  
        case XGMAC_INT_DMA_CH_SR_FBE:                                                    │          case XGMAC_INT_DMA_CH_SR_FBE:                                                   
                XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, FBEE, 1);                  │                  XGMAC_SET_BITS(channel->curr_ier, DMA_CH_IER, FBEE, 0);                 
                break;                                                                   │                  break;                                                                  
        case XGMAC_INT_DMA_ALL:                                                          │          case XGMAC_INT_DMA_ALL:                                                         
                channel->curr_ier |= channel->saved_ier;                                 │                  channel->saved_ier = channel->curr_ier;                                 
                                                                                         │                  channel->curr_ier = 0;                                                  
                break;                                                                   │                  break;                                                                  
        default:                                                                         │          default:                                                                        
                return -1;                                                               │                  return -1;                                                              
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        XGMAC_DMA_IOWRITE(channel, DMA_CH_IER, channel->curr_ier);                       │          XGMAC_DMA_IOWRITE(channel, DMA_CH_IER, channel->curr_ier);                      
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/flower/conntrack.c:696                         │ linux/drivers/net/ethernet/netronome/nfp/flower/conntrack.c:748                          
                                                                                         │                                                                                          
                offset = key_map[FLOW_PAY_GRE];                                          │                  offset = key_map[FLOW_PAY_UDP_TUN];                                     
                key = kdata + offset;                                                    │                  key = kdata + offset;                                                   
                msk = mdata + offset;                                                    │                  msk = mdata + offset;                                                   
                if (key_layer.key_layer_two & NFP_FLOWER_LAYER2_TUN_IPV6) {              │                  if (key_layer.key_layer_two & NFP_FLOWER_LAYER2_TUN_IPV6) {             
                        struct nfp_flower_ipv6_gre_tun *gre_match;                       │                          struct nfp_flower_ipv6_udp_tun *udp_match;                      
                        struct nfp_ipv6_addr_entry *entry;                               │                          struct nfp_ipv6_addr_entry *entry;                              
                        struct in6_addr *dst;                                            │                          struct in6_addr *dst;                                           
                                                                                         │                                                                                          
                        for (i = 0; i < _CT_TYPE_MAX; i++) {                             │                          for (i = 0; i < _CT_TYPE_MAX; i++) {                            
                                nfp_flower_compile_ipv6_gre_tun((void *)key,             │                                  nfp_flower_compile_ipv6_udp_tun((void *)key,            
                                                                (void *)msk, rules[i]);  │                                                                  (void *)msk, rules[i]); 
                        }                                                                │                          }                                                               
                        gre_match = (struct nfp_flower_ipv6_gre_tun *)key;               │                          udp_match = (struct nfp_flower_ipv6_udp_tun *)key;              
                        dst = &gre_match->ipv6.dst;                                      │                          dst = &udp_match->ipv6.dst;                                     
                                                                                         │                                                                                          
                        entry = nfp_tunnel_add_ipv6_off(priv->app, dst);                 │                          entry = nfp_tunnel_add_ipv6_off(priv->app, dst);                
                        if (!entry) {                                                    │                          if (!entry) {                                                   
                                err = -ENOMEM;                                           │                                  err = -ENOMEM;                                          
                                goto ct_offload_err;                                     │                                  goto ct_offload_err;                                    
                        }                                                                │                          }                                                               
                                                                                         │                                                                                          
                        flow_pay->nfp_tun_ipv6 = entry;                                  │                          flow_pay->nfp_tun_ipv6 = entry;                                 
                } else {                                                                 │                  } else {                                                                
                        __be32 dst;                                                      │                          __be32 dst;                                                     
                                                                                         │                                                                                          
                        for (i = 0; i < _CT_TYPE_MAX; i++) {                             │                          for (i = 0; i < _CT_TYPE_MAX; i++) {                            
                                nfp_flower_compile_ipv4_gre_tun((void *)key,             │                                  nfp_flower_compile_ipv4_udp_tun((void *)key,            
                                                                (void *)msk, rules[i]);  │                                                                  (void *)msk, rules[i]); 
                        }                                                                │                          }                                                               
                        dst = ((struct nfp_flower_ipv4_gre_tun *)key)->ipv4.dst;         │                          dst = ((struct nfp_flower_ipv4_udp_tun *)key)->ipv4.dst;        
                                                                                         │                                                                                          
                        /* Store the tunnel destination in the rule data.                │                          /* Store the tunnel destination in the rule data.               
                         * This must be present and be an exact match.                   │                           * This must be present and be an exact match.                  
                         */                                                              │                           */                                                             
                        flow_pay->nfp_tun_ipv4_addr = dst;                               │                          flow_pay->nfp_tun_ipv4_addr = dst;                              
                        nfp_tunnel_add_ipv4_off(priv->app, dst);                         │                          nfp_tunnel_add_ipv4_off(priv->app, dst);                        
                                                                                         │                  }                                                                       
                                                                                         │                                                                                          
                                                                                         │                  if (key_layer.key_layer_two & NFP_FLOWER_LAYER2_GENEVE_OP) {            
                                                                                         │                          offset = key_map[FLOW_PAY_GENEVE_OPT];                          
                                                                                         │                          key = kdata + offset;                                           
                                                                                         │                          msk = mdata + offset;                                           
                                                                                         │                          for (i = 0; i < _CT_TYPE_MAX; i++)                              
                                                                                         │                                  nfp_flower_compile_geneve_opt(key, msk, rules[i]);      
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/nfp_net_common.c:1923                          │ linux/drivers/net/ethernet/netronome/nfp/nfp_net_common.c:1895                           
                                                                                         │                                                                                          
        .ndo_init               = nfp_app_ndo_init,                                      │          .ndo_init               = nfp_app_ndo_init,                                     
        .ndo_uninit             = nfp_app_ndo_uninit,                                    │          .ndo_uninit             = nfp_app_ndo_uninit,                                   
        .ndo_open               = nfp_net_netdev_open,                                   │          .ndo_open               = nfp_net_netdev_open,                                  
        .ndo_stop               = nfp_net_netdev_close,                                  │          .ndo_stop               = nfp_net_netdev_close,                                 
        .ndo_start_xmit         = nfp_net_tx,                                            │          .ndo_start_xmit         = nfp_net_tx,                                           
        .ndo_get_stats64        = nfp_net_stat64,                                        │          .ndo_get_stats64        = nfp_net_stat64,                                       
        .ndo_vlan_rx_add_vid    = nfp_net_vlan_rx_add_vid,                               │          .ndo_vlan_rx_add_vid    = nfp_net_vlan_rx_add_vid,                              
        .ndo_vlan_rx_kill_vid   = nfp_net_vlan_rx_kill_vid,                              │          .ndo_vlan_rx_kill_vid   = nfp_net_vlan_rx_kill_vid,                             
        .ndo_set_vf_mac         = nfp_app_set_vf_mac,                                    │          .ndo_set_vf_mac         = nfp_app_set_vf_mac,                                   
        .ndo_set_vf_vlan        = nfp_app_set_vf_vlan,                                   │          .ndo_set_vf_vlan        = nfp_app_set_vf_vlan,                                  
        .ndo_set_vf_spoofchk    = nfp_app_set_vf_spoofchk,                               │          .ndo_set_vf_spoofchk    = nfp_app_set_vf_spoofchk,                              
        .ndo_set_vf_trust       = nfp_app_set_vf_trust,                                  │          .ndo_set_vf_trust       = nfp_app_set_vf_trust,                                 
        .ndo_get_vf_config      = nfp_app_get_vf_config,                                 │          .ndo_get_vf_config      = nfp_app_get_vf_config,                                
        .ndo_set_vf_link_state  = nfp_app_set_vf_link_state,                             │          .ndo_set_vf_link_state  = nfp_app_set_vf_link_state,                            
        .ndo_setup_tc           = nfp_port_setup_tc,                                     │          .ndo_setup_tc           = nfp_port_setup_tc,                                    
        .ndo_tx_timeout         = nfp_net_tx_timeout,                                    │          .ndo_tx_timeout         = nfp_net_tx_timeout,                                   
        .ndo_set_rx_mode        = nfp_net_set_rx_mode,                                   │          .ndo_set_rx_mode        = nfp_net_set_rx_mode,                                  
        .ndo_change_mtu         = nfp_net_change_mtu,                                    │          .ndo_change_mtu         = nfp_net_change_mtu,                                   
        .ndo_set_mac_address    = nfp_net_set_mac_address,                               │          .ndo_set_mac_address    = nfp_net_set_mac_address,                              
        .ndo_set_features       = nfp_net_set_features,                                  │          .ndo_set_features       = nfp_net_set_features,                                 
        .ndo_features_check     = nfp_net_features_check,                                │          .ndo_features_check     = nfp_net_features_check,                               
        .ndo_get_phys_port_name = nfp_net_get_phys_port_name,                            │          .ndo_get_phys_port_name = nfp_net_get_phys_port_name,                           
        .ndo_bpf                = nfp_net_xdp,                                           │          .ndo_bpf                = nfp_net_xdp,                                          
                                                                                         │          .ndo_xsk_wakeup         = nfp_net_xsk_wakeup,                                   
        .ndo_get_devlink_port   = nfp_devlink_get_devlink_port,                          │          .ndo_get_devlink_port   = nfp_devlink_get_devlink_port,                         
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/intel/igb/igb_main.c:5851                                    │ linux/drivers/net/ethernet/intel/igc/igc_main.c:1024                                     
                                                                                         │                                                                                          
        struct e1000_adv_tx_context_desc *context_desc;                                  │          struct igc_adv_tx_context_desc *context_desc;                                   
        u16 i = tx_ring->next_to_use;                                                    │          u16 i = tx_ring->next_to_use;                                                   
        struct timespec64 ts;                                                            │                                                                                          
                                                                                         │                                                                                          
        context_desc = IGB_TX_CTXTDESC(tx_ring, i);                                      │          context_desc = IGC_TX_CTXTDESC(tx_ring, i);                                     
                                                                                         │                                                                                          
        i++;                                                                             │          i++;                                                                            
        tx_ring->next_to_use = (i < tx_ring->count) ? i : 0;                             │          tx_ring->next_to_use = (i < tx_ring->count) ? i : 0;                            
                                                                                         │                                                                                          
        /* set bits to identify this as an advanced context descriptor */                │          /* set bits to identify this as an advanced context descriptor */               
        type_tucmd |= E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT;                       │          type_tucmd |= IGC_TXD_CMD_DEXT | IGC_ADVTXD_DTYP_CTXT;                          
                                                                                         │                                                                                          
        /* For 82575, context index must be unique per ring. */                          │          /* For i225, context index must be unique per ring. */                          
        if (test_bit(IGB_RING_FLAG_TX_CTX_IDX, &tx_ring->flags))                         │          if (test_bit(IGC_RING_FLAG_TX_CTX_IDX, &tx_ring->flags))                        
                mss_l4len_idx |= tx_ring->reg_idx << 4;                                  │                  mss_l4len_idx |= tx_ring->reg_idx << 4;                                 
                                                                                         │                                                                                          
        context_desc->vlan_macip_lens   = cpu_to_le32(vlan_macip_lens);                  │          context_desc->vlan_macip_lens   = cpu_to_le32(vlan_macip_lens);                 
        context_desc->type_tucmd_mlhl   = cpu_to_le32(type_tucmd);                       │          context_desc->type_tucmd_mlhl   = cpu_to_le32(type_tucmd);                      
        context_desc->mss_l4len_idx     = cpu_to_le32(mss_l4len_idx);                    │          context_desc->mss_l4len_idx     = cpu_to_le32(mss_l4len_idx);                   
                                                                                         │                                                                                          
        /* We assume there is always a valid tx time available. Invalid times            │          /* We assume there is always a valid Tx time available. Invalid times           
         * should have been handled by the upper layers.                                 │           * should have been handled by the upper layers.                                
         */                                                                              │           */                                                                             
        if (tx_ring->launchtime_enable) {                                                │          if (tx_ring->launchtime_enable) {                                               
                ts = ktime_to_timespec64(first->skb->tstamp);                            │                  struct igc_adapter *adapter = netdev_priv(tx_ring->netdev);             
                                                                                         │                  ktime_t txtime = first->skb->tstamp;                                    
                                                                                         │                                                                                          
                skb_txtime_consumed(first->skb);                                         │                  skb_txtime_consumed(first->skb);                                        
                context_desc->seqnum_seed = cpu_to_le32(ts.tv_nsec / 32);                │                  context_desc->launch_time = igc_tx_launchtime(adapter,                  
                                                                                         │                                                                txtime);                  
        } else {                                                                         │          } else {                                                                        
                context_desc->seqnum_seed = 0;                                           │                  context_desc->launch_time = 0;                                          
        }                                                                                │          }                                                                               
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:218                          │ linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:142                           
                                                                                         │                                                                                          
        int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                              │          int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                             
        struct mlx5_flow_group *fg;                                                      │          struct mlx5_flow_group *fg;                                                     
        u32 *in, *match;                                                                 │          u32 *in, *match;                                                                
                                                                                         │                                                                                          
        in = kvzalloc(inlen, GFP_KERNEL);                                                │          in = kvzalloc(inlen, GFP_KERNEL);                                               
        if (!in)                                                                         │          if (!in)                                                                        
                return ERR_PTR(-ENOMEM);                                                 │                  return ERR_PTR(-ENOMEM);                                                
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, match_criteria_enable,                        │          MLX5_SET(create_flow_group_in, in, match_criteria_enable,                       
                 MLX5_MATCH_OUTER_HEADERS | MLX5_MATCH_MISC_PARAMETERS_2);               │                   MLX5_MATCH_OUTER_HEADERS | MLX5_MATCH_MISC_PARAMETERS_2);              
        match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                  │          match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                 
                                                                                         │                                                                                          
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_47_16);              │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_47_16);             
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_15_0);               │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_15_0);              
                                                                                         │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.cvlan_tag);              
                                                                                         │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.first_vid);              
                                                                                         │                                                                                          
        MLX5_SET(fte_match_param, match, misc_parameters_2.metadata_reg_c_0,             │          MLX5_SET(fte_match_param, match, misc_parameters_2.metadata_reg_c_0,            
                 mlx5_eswitch_get_vport_metadata_mask());                                │                   mlx5_eswitch_get_vport_metadata_mask());                               
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, start_flow_index,                             │          MLX5_SET(create_flow_group_in, in, start_flow_index,                            
                 MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_FROM);                        │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_FROM);                      
        MLX5_SET(create_flow_group_in, in, end_flow_index,                               │          MLX5_SET(create_flow_group_in, in, end_flow_index,                              
                 MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_TO);                          │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_VLAN_GRP_IDX_TO);                        
                                                                                         │                                                                                          
        fg = mlx5_create_flow_group(ingress_ft, in);                                     │          fg = mlx5_create_flow_group(ingress_ft, in);                                    
                                                                                         │          kvfree(in);                                                                     
        if (IS_ERR(fg))                                                                  │          if (IS_ERR(fg))                                                                 
                esw_warn(esw->dev,                                                       │                  esw_warn(esw->dev,                                                      
                         "Failed to create MAC flow group for bridge ingress table (err= │                           "Failed to create VLAN flow group for bridge ingress table (err
                         PTR_ERR(fg));                                                   │                           PTR_ERR(fg));                                                  
                                                                                         │                                                                                          
        kvfree(in);                                                                      │                                                                                          
        return fg;                                                                       │          return fg;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:218                          │ linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:181                           
                                                                                         │                                                                                          
        int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                              │          int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                             
        struct mlx5_flow_group *fg;                                                      │          struct mlx5_flow_group *fg;                                                     
        u32 *in, *match;                                                                 │          u32 *in, *match;                                                                
                                                                                         │                                                                                          
        in = kvzalloc(inlen, GFP_KERNEL);                                                │          in = kvzalloc(inlen, GFP_KERNEL);                                               
        if (!in)                                                                         │          if (!in)                                                                        
                return ERR_PTR(-ENOMEM);                                                 │                  return ERR_PTR(-ENOMEM);                                                
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, match_criteria_enable,                        │          MLX5_SET(create_flow_group_in, in, match_criteria_enable,                       
                 MLX5_MATCH_OUTER_HEADERS | MLX5_MATCH_MISC_PARAMETERS_2);               │                   MLX5_MATCH_OUTER_HEADERS | MLX5_MATCH_MISC_PARAMETERS_2);              
        match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                  │          match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                 
                                                                                         │                                                                                          
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_47_16);              │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_47_16);             
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_15_0);               │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_15_0);              
                                                                                         │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.cvlan_tag);              
                                                                                         │                                                                                          
        MLX5_SET(fte_match_param, match, misc_parameters_2.metadata_reg_c_0,             │          MLX5_SET(fte_match_param, match, misc_parameters_2.metadata_reg_c_0,            
                 mlx5_eswitch_get_vport_metadata_mask());                                │                   mlx5_eswitch_get_vport_metadata_mask());                               
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, start_flow_index,                             │          MLX5_SET(create_flow_group_in, in, start_flow_index,                            
                 MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_FROM);                        │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_FILTER_GRP_IDX_FROM);                    
        MLX5_SET(create_flow_group_in, in, end_flow_index,                               │          MLX5_SET(create_flow_group_in, in, end_flow_index,                              
                 MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_TO);                          │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_FILTER_GRP_IDX_TO);                      
                                                                                         │                                                                                          
        fg = mlx5_create_flow_group(ingress_ft, in);                                     │          fg = mlx5_create_flow_group(ingress_ft, in);                                    
        if (IS_ERR(fg))                                                                  │          if (IS_ERR(fg))                                                                 
                esw_warn(esw->dev,                                                       │                  esw_warn(esw->dev,                                                      
                         "Failed to create MAC flow group for bridge ingress table (err= │                           "Failed to create bridge ingress table VLAN filter flow group (
                         PTR_ERR(fg));                                                   │                           PTR_ERR(fg));                                                  
                                                                                         │                                                                                          
        kvfree(in);                                                                      │          kvfree(in);                                                                     
        return fg;                                                                       │          return fg;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/dec/tulip/de4x5.c:4614                                       │ linux/drivers/net/ethernet/dec/tulip/de4x5.c:4694                                        
                                                                                         │                                                                                          
    struct de4x5_private *lp = netdev_priv(dev);                                         │      struct de4x5_private *lp = netdev_priv(dev);                                        
    u_char len = (*p & BLOCK_LEN)+1;                                                     │      u_char len = (*p & BLOCK_LEN)+1;                                                    
                                                                                         │                                                                                          
    /* Recursively figure out the info blocks */                                         │      /* Recursively figure out the info blocks */                                        
    if (--count > lp->tcount) {                                                          │      if (--count > lp->tcount) {                                                         
        if (*(p+len) < 128) {                                                            │          if (*(p+len) < 128) {                                                           
            return dc_infoblock[COMPACT](dev, count, p+len);                             │              return dc_infoblock[COMPACT](dev, count, p+len);                            
        } else {                                                                         │          } else {                                                                        
            return dc_infoblock[*(p+len+1)](dev, count, p+len);                          │              return dc_infoblock[*(p+len+1)](dev, count, p+len);                         
        }                                                                                │          }                                                                               
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    p += 2;                                                                              │      p += 2;                                                                             
    if (lp->state == INITIALISED) {                                                      │      if (lp->state == INITIALISED) {                                                     
        lp->ibn = 1;                                                                     │          lp->ibn = 3;                                                                    
        lp->active = *p++;                                                               │          lp->active = *p++;                                                              
        lp->phy[lp->active].gep = (*p ? p : NULL); p += (*p + 1);                        │          if (MOTO_SROM_BUG) lp->active = 0;                                              
        lp->phy[lp->active].rst = (*p ? p : NULL); p += (*p + 1);                        │          /* if (MOTO_SROM_BUG) statement indicates lp->active could                      
                                                                                         │           * be 8 (i.e. the size of array lp->phy) */                                     
                                                                                         │          if (WARN_ON(lp->active >= ARRAY_SIZE(lp->phy)))                                 
                                                                                         │                  return -EINVAL;                                                         
                                                                                         │          lp->phy[lp->active].gep = (*p ? p : NULL); p += (2 * (*p) + 1);                 
                                                                                         │          lp->phy[lp->active].rst = (*p ? p : NULL); p += (2 * (*p) + 1);                 
        lp->phy[lp->active].mc  = get_unaligned_le16(p); p += 2;                         │          lp->phy[lp->active].mc  = get_unaligned_le16(p); p += 2;                        
        lp->phy[lp->active].ana = get_unaligned_le16(p); p += 2;                         │          lp->phy[lp->active].ana = get_unaligned_le16(p); p += 2;                        
        lp->phy[lp->active].fdx = get_unaligned_le16(p); p += 2;                         │          lp->phy[lp->active].fdx = get_unaligned_le16(p); p += 2;                        
        lp->phy[lp->active].ttm = get_unaligned_le16(p);                                 │          lp->phy[lp->active].ttm = get_unaligned_le16(p); p += 2;                        
                                                                                         │          lp->phy[lp->active].mci = *p;                                                   
        return 0;                                                                        │          return 0;                                                                       
    } else if ((lp->media == INIT) && (lp->timeout < 0)) {                               │      } else if ((lp->media == INIT) && (lp->timeout < 0)) {                              
        lp->ibn = 1;                                                                     │          lp->ibn = 3;                                                                    
        lp->active = *p;                                                                 │          lp->active = *p;                                                                
                                                                                         │          if (MOTO_SROM_BUG) lp->active = 0;                                              
        lp->infoblock_csr6 = OMR_MII_100;                                                │          lp->infoblock_csr6 = OMR_MII_100;                                               
        lp->useMII = true;                                                               │          lp->useMII = true;                                                              
        lp->infoblock_media = ANS;                                                       │          lp->infoblock_media = ANS;                                                      
                                                                                         │                                                                                          
        de4x5_switch_mac_port(dev);                                                      │          de4x5_switch_mac_port(dev);                                                     
    }                                                                                    │      }                                                                                   
                                                                                         │                                                                                          
    return dc21140m_autoconf(dev);                                                       │      return dc2114x_autoconf(dev);                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/ti/cpsw.c:1207                                               │ linux/drivers/net/ethernet/ti/cpsw_new.c:1189                                            
                                                                                         │                                                                                          
        .supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS,                          │          .supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS,                         
        .get_drvinfo    = cpsw_get_drvinfo,                                              │          .get_drvinfo            = cpsw_get_drvinfo,                                     
        .get_msglevel   = cpsw_get_msglevel,                                             │          .get_msglevel           = cpsw_get_msglevel,                                    
        .set_msglevel   = cpsw_set_msglevel,                                             │          .set_msglevel           = cpsw_set_msglevel,                                    
        .get_link       = ethtool_op_get_link,                                           │          .get_link               = ethtool_op_get_link,                                  
        .get_ts_info    = cpsw_get_ts_info,                                              │          .get_ts_info            = cpsw_get_ts_info,                                     
        .get_coalesce   = cpsw_get_coalesce,                                             │          .get_coalesce           = cpsw_get_coalesce,                                    
        .set_coalesce   = cpsw_set_coalesce,                                             │          .set_coalesce           = cpsw_set_coalesce,                                    
        .get_sset_count         = cpsw_get_sset_count,                                   │          .get_sset_count         = cpsw_get_sset_count,                                  
        .get_strings            = cpsw_get_strings,                                      │          .get_strings            = cpsw_get_strings,                                     
        .get_ethtool_stats      = cpsw_get_ethtool_stats,                                │          .get_ethtool_stats      = cpsw_get_ethtool_stats,                               
        .get_pauseparam         = cpsw_get_pauseparam,                                   │          .get_pauseparam         = cpsw_get_pauseparam,                                  
        .set_pauseparam         = cpsw_set_pauseparam,                                   │          .set_pauseparam         = cpsw_set_pauseparam,                                  
        .get_wol        = cpsw_get_wol,                                                  │          .get_wol                = cpsw_get_wol,                                         
        .set_wol        = cpsw_set_wol,                                                  │          .set_wol                = cpsw_set_wol,                                         
        .get_regs_len   = cpsw_get_regs_len,                                             │          .get_regs_len           = cpsw_get_regs_len,                                    
        .get_regs       = cpsw_get_regs,                                                 │          .get_regs               = cpsw_get_regs,                                        
        .begin          = cpsw_ethtool_op_begin,                                         │          .begin                  = cpsw_ethtool_op_begin,                                
        .complete       = cpsw_ethtool_op_complete,                                      │          .complete               = cpsw_ethtool_op_complete,                             
        .get_channels   = cpsw_get_channels,                                             │          .get_channels           = cpsw_get_channels,                                    
        .set_channels   = cpsw_set_channels,                                             │          .set_channels           = cpsw_set_channels,                                    
        .get_link_ksettings     = cpsw_get_link_ksettings,                               │          .get_link_ksettings     = cpsw_get_link_ksettings,                              
        .set_link_ksettings     = cpsw_set_link_ksettings,                               │          .set_link_ksettings     = cpsw_set_link_ksettings,                              
        .get_eee        = cpsw_get_eee,                                                  │          .get_eee                = cpsw_get_eee,                                         
        .set_eee        = cpsw_set_eee,                                                  │          .set_eee                = cpsw_set_eee,                                         
        .nway_reset     = cpsw_nway_reset,                                               │          .nway_reset             = cpsw_nway_reset,                                      
        .get_ringparam = cpsw_get_ringparam,                                             │          .get_ringparam          = cpsw_get_ringparam,                                   
        .set_ringparam = cpsw_set_ringparam,                                             │          .set_ringparam          = cpsw_set_ringparam,                                   
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:7188                              │ linux/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:7082                               
                                                                                         │                                                                                          
        int remaining_ports_count;                                                       │          int remaining_ports_count;                                                      
        unsigned long port_map;                                                          │          unsigned long port_map;                                                         
        int size_remainder;                                                              │          int size_remainder;                                                             
        int port, size;                                                                  │          int port, size;                                                                 
                                                                                         │                                                                                          
        /* The loopback requires fixed 1kB of the FIFO space assignment. */              │          /* The loopback requires fixed 4kB of the FIFO space assignment. */             
        mvpp22_tx_fifo_set_hw(priv, MVPP2_LOOPBACK_PORT_INDEX,                           │          mvpp22_rx_fifo_set_hw(priv, MVPP2_LOOPBACK_PORT_INDEX,                          
                              MVPP22_TX_FIFO_DATA_SIZE_1KB);                             │                                MVPP2_RX_FIFO_PORT_DATA_SIZE_4KB);                        
        port_map = priv->port_map & ~BIT(MVPP2_LOOPBACK_PORT_INDEX);                     │          port_map = priv->port_map & ~BIT(MVPP2_LOOPBACK_PORT_INDEX);                    
                                                                                         │                                                                                          
        /* Set TX FIFO size to 0 for inactive ports. */                                  │          /* Set RX FIFO size to 0 for inactive ports. */                                 
        for_each_clear_bit(port, &port_map, MVPP2_LOOPBACK_PORT_INDEX)                   │          for_each_clear_bit(port, &port_map, MVPP2_LOOPBACK_PORT_INDEX)                  
                mvpp22_tx_fifo_set_hw(priv, port, 0);                                    │                  mvpp22_rx_fifo_set_hw(priv, port, 0);                                   
                                                                                         │                                                                                          
        /* Assign remaining TX FIFO space among all active ports. */                     │          /* Assign remaining RX FIFO space among all active ports. */                    
        size_remainder = MVPP22_TX_FIFO_DATA_SIZE_18KB;                                  │          size_remainder = MVPP2_RX_FIFO_PORT_DATA_SIZE_44KB;                             
        remaining_ports_count = hweight_long(port_map);                                  │          remaining_ports_count = hweight_long(port_map);                                 
                                                                                         │                                                                                          
        for_each_set_bit(port, &port_map, MVPP2_LOOPBACK_PORT_INDEX) {                   │          for_each_set_bit(port, &port_map, MVPP2_LOOPBACK_PORT_INDEX) {                  
                if (remaining_ports_count == 1)                                          │                  if (remaining_ports_count == 1)                                         
                        size = min(size_remainder,                                       │                          size = size_remainder;                                          
                                   MVPP22_TX_FIFO_DATA_SIZE_10KB);                       │                                                                                          
                else if (port == 0)                                                      │                  else if (port == 0)                                                     
                        size = MVPP22_TX_FIFO_DATA_SIZE_10KB;                            │                          size = max(size_remainder / remaining_ports_count,              
                                                                                         │                                     MVPP2_RX_FIFO_PORT_DATA_SIZE_32KB);                  
                                                                                         │                  else if (port == 1)                                                     
                                                                                         │                          size = max(size_remainder / remaining_ports_count,              
                                                                                         │                                     MVPP2_RX_FIFO_PORT_DATA_SIZE_8KB);                   
                else                                                                     │                  else                                                                    
                        size = size_remainder / remaining_ports_count;                   │                          size = size_remainder / remaining_ports_count;                  
                                                                                         │                                                                                          
                size_remainder -= size;                                                  │                  size_remainder -= size;                                                 
                remaining_ports_count--;                                                 │                  remaining_ports_count--;                                                
                                                                                         │                                                                                          
                mvpp22_tx_fifo_set_hw(priv, port, size);                                 │                  mvpp22_rx_fifo_set_hw(priv, port, size);                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          mvpp2_write(priv, MVPP2_RX_MIN_PKT_SIZE_REG,                                    
                                                                                         │                      MVPP2_RX_FIFO_PORT_MIN_PKT);                                        
                                                                                         │          mvpp2_write(priv, MVPP2_RX_FIFO_INIT_REG, 0x1);                                 
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/nfd3/dp.c:468                                  │ linux/drivers/net/ethernet/netronome/nfp/nfd3/xsk.c:273                                  
                                                                                         │                                                                                          
        struct nfp_net_r_vector *r_vec = tx_ring->r_vec;                                 │          struct nfp_net_r_vector *r_vec = tx_ring->r_vec;                                
        struct nfp_net_dp *dp = &r_vec->nfp_net->dp;                                     │          u32 done_pkts = 0, done_bytes = 0, reused = 0;                                  
        u32 done_pkts = 0, done_bytes = 0;                                               │                                                                                          
        bool done_all;                                                                   │          bool done_all;                                                                  
        int idx, todo;                                                                   │          int idx, todo;                                                                  
        u32 qcp_rd_p;                                                                    │          u32 qcp_rd_p;                                                                   
                                                                                         │                                                                                          
        /* Work out how many descriptors have been transmitted */                        │          if (tx_ring->wr_p == tx_ring->rd_p)                                             
        qcp_rd_p = nfp_net_read_tx_cmpl(tx_ring, dp);                                    │                  return true;                                                            
                                                                                         │                                                                                          
                                                                                         │          /* Work out how many descriptors have been transmitted. */                      
                                                                                         │          qcp_rd_p = nfp_qcp_rd_ptr_read(tx_ring->qcp_q);                                 
                                                                                         │                                                                                          
        if (qcp_rd_p == tx_ring->qcp_rd_p)                                               │          if (qcp_rd_p == tx_ring->qcp_rd_p)                                              
                return true;                                                             │                  return true;                                                            
                                                                                         │                                                                                          
        todo = D_IDX(tx_ring, qcp_rd_p - tx_ring->qcp_rd_p);                             │          todo = D_IDX(tx_ring, qcp_rd_p - tx_ring->qcp_rd_p);                            
                                                                                         │                                                                                          
        done_all = todo <= NFP_NET_XDP_MAX_COMPLETE;                                     │          done_all = todo <= NFP_NET_XDP_MAX_COMPLETE;                                    
        todo = min(todo, NFP_NET_XDP_MAX_COMPLETE);                                      │          todo = min(todo, NFP_NET_XDP_MAX_COMPLETE);                                     
                                                                                         │                                                                                          
        tx_ring->qcp_rd_p = D_IDX(tx_ring, tx_ring->qcp_rd_p + todo);                    │          tx_ring->qcp_rd_p = D_IDX(tx_ring, tx_ring->qcp_rd_p + todo);                   
                                                                                         │                                                                                          
        done_pkts = todo;                                                                │          done_pkts = todo;                                                               
        while (todo--) {                                                                 │          while (todo--) {                                                                
                                                                                         │                  struct nfp_nfd3_tx_buf *txbuf;                                          
                                                                                         │                                                                                          
                idx = D_IDX(tx_ring, tx_ring->rd_p);                                     │                  idx = D_IDX(tx_ring, tx_ring->rd_p);                                    
                tx_ring->rd_p++;                                                         │                  tx_ring->rd_p++;                                                        
                                                                                         │                                                                                          
                done_bytes += tx_ring->txbufs[idx].real_len;                             │                  txbuf = &tx_ring->txbufs[idx];                                          
                                                                                         │                  if (unlikely(!txbuf->real_len))                                         
                                                                                         │                          continue;                                                       
                                                                                         │                                                                                          
                                                                                         │                  done_bytes += txbuf->real_len;                                          
                                                                                         │                  txbuf->real_len = 0;                                                    
                                                                                         │                                                                                          
                                                                                         │                  if (txbuf->is_xsk_tx) {                                                 
                                                                                         │                          nfp_nfd3_xsk_tx_free(txbuf);                                    
                                                                                         │                          reused++;                                                       
                                                                                         │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        u64_stats_update_begin(&r_vec->tx_sync);                                         │          u64_stats_update_begin(&r_vec->tx_sync);                                        
        r_vec->tx_bytes += done_bytes;                                                   │          r_vec->tx_bytes += done_bytes;                                                  
        r_vec->tx_pkts += done_pkts;                                                     │          r_vec->tx_pkts += done_pkts;                                                    
        u64_stats_update_end(&r_vec->tx_sync);                                           │          u64_stats_update_end(&r_vec->tx_sync);                                          
                                                                                         │                                                                                          
                                                                                         │          xsk_tx_completed(r_vec->xsk_pool, done_pkts - reused);                          
                                                                                         │                                                                                          
        WARN_ONCE(tx_ring->wr_p - tx_ring->rd_p > tx_ring->cnt,                          │          WARN_ONCE(tx_ring->wr_p - tx_ring->rd_p > tx_ring->cnt,                         
                  "XDP TX ring corruption rd_p=%u wr_p=%u cnt=%u\n",                     │                    "XDP TX ring corruption rd_p=%u wr_p=%u cnt=%u\n",                    
                  tx_ring->rd_p, tx_ring->wr_p, tx_ring->cnt);                           │                    tx_ring->rd_p, tx_ring->wr_p, tx_ring->cnt);                          
                                                                                         │                                                                                          
        return done_all;                                                                 │          return done_all;                                                                
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/huawei/hinic/hinic_main.c:240                                │ linux/drivers/net/ethernet/huawei/hinic/hinic_main.c:144                                 
                                                                                         │                                                                                          
        int err, i, j, num_rxqs = hinic_hwdev_num_qps(nic_dev->hwdev);                   │          int err, i, j, num_txqs = hinic_hwdev_num_qps(nic_dev->hwdev);                  
        struct net_device *netdev = nic_dev->netdev;                                     │          struct net_device *netdev = nic_dev->netdev;                                    
                                                                                         │                                                                                          
        if (nic_dev->rxqs)                                                               │          if (nic_dev->txqs)                                                              
                return -EINVAL;                                                          │                  return -EINVAL;                                                         
                                                                                         │                                                                                          
        nic_dev->rxqs = devm_kcalloc(&netdev->dev, num_rxqs,                             │          nic_dev->txqs = devm_kcalloc(&netdev->dev, num_txqs,                            
                                     sizeof(*nic_dev->rxqs), GFP_KERNEL);                │                                       sizeof(*nic_dev->txqs), GFP_KERNEL);               
        if (!nic_dev->rxqs)                                                              │          if (!nic_dev->txqs)                                                             
                return -ENOMEM;                                                          │                  return -ENOMEM;                                                         
                                                                                         │                                                                                          
        hinic_rq_dbgfs_init(nic_dev);                                                    │          hinic_sq_dbgfs_init(nic_dev);                                                   
                                                                                         │                                                                                          
        for (i = 0; i < num_rxqs; i++) {                                                 │          for (i = 0; i < num_txqs; i++) {                                                
                struct hinic_rq *rq = hinic_hwdev_get_rq(nic_dev->hwdev, i);             │                  struct hinic_sq *sq = hinic_hwdev_get_sq(nic_dev->hwdev, i);            
                                                                                         │                                                                                          
                err = hinic_init_rxq(&nic_dev->rxqs[i], rq, netdev);                     │                  err = hinic_init_txq(&nic_dev->txqs[i], sq, netdev);                    
                if (err) {                                                               │                  if (err) {                                                              
                        netif_err(nic_dev, drv, netdev,                                  │                          netif_err(nic_dev, drv, netdev,                                 
                                  "Failed to init rxq\n");                               │                                    "Failed to init Txq\n");                              
                        goto err_init_rxq;                                               │                          goto err_init_txq;                                              
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
                err = hinic_rq_debug_add(nic_dev, i);                                    │                  err = hinic_sq_debug_add(nic_dev, i);                                   
                if (err) {                                                               │                  if (err) {                                                              
                        netif_err(nic_dev, drv, netdev,                                  │                          netif_err(nic_dev, drv, netdev,                                 
                                  "Failed to add RQ%d debug\n", i);                      │                                    "Failed to add SQ%d debug\n", i);                     
                        goto err_add_rq_dbg;                                             │                          goto err_add_sq_dbg;                                            
                }                                                                        │                  }                                                                       
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
err_add_rq_dbg:                                                                          │  err_add_sq_dbg:                                                                         
        hinic_clean_rxq(&nic_dev->rxqs[i]);                                              │          hinic_clean_txq(&nic_dev->txqs[i]);                                             
err_init_rxq:                                                                            │  err_init_txq:                                                                           
        for (j = 0; j < i; j++) {                                                        │          for (j = 0; j < i; j++) {                                                       
                hinic_rq_debug_rem(nic_dev->rxqs[j].rq);                                 │                  hinic_sq_debug_rem(nic_dev->txqs[j].sq);                                
                hinic_clean_rxq(&nic_dev->rxqs[j]);                                      │                  hinic_clean_txq(&nic_dev->txqs[j]);                                     
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        hinic_rq_dbgfs_uninit(nic_dev);                                                  │          hinic_sq_dbgfs_uninit(nic_dev);                                                 
                                                                                         │                                                                                          
        devm_kfree(&netdev->dev, nic_dev->rxqs);                                         │          devm_kfree(&netdev->dev, nic_dev->txqs);                                        
        return err;                                                                      │          return err;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c:7811                                   │ linux/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c:7910                                    
                                                                                         │                                                                                          
                                                                                         │          int ret = 0;                                                                    
        struct fw_vi_mac_cmd c;                                                          │          struct fw_vi_mac_cmd c;                                                         
        struct fw_vi_mac_raw *p = &c.u.raw;                                              │          struct fw_vi_mac_raw *p = &c.u.raw;                                             
        u32 val;                                                                         │          u32 val;                                                                        
                                                                                         │                                                                                          
        memset(&c, 0, sizeof(c));                                                        │          memset(&c, 0, sizeof(c));                                                       
        c.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) |                          │          c.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) |                         
                                   FW_CMD_REQUEST_F | FW_CMD_WRITE_F |                   │                                     FW_CMD_REQUEST_F | FW_CMD_WRITE_F |                  
                                   FW_CMD_EXEC_V(0) |                                    │                                                                                          
                                   FW_VI_MAC_CMD_VIID_V(viid));                          │                                     FW_VI_MAC_CMD_VIID_V(viid));                         
        val = FW_CMD_LEN16_V(1) |                                                        │          val = FW_CMD_LEN16_V(1) |                                                       
              FW_VI_MAC_CMD_ENTRY_TYPE_V(FW_VI_MAC_TYPE_RAW);                            │                FW_VI_MAC_CMD_ENTRY_TYPE_V(FW_VI_MAC_TYPE_RAW);                           
        c.freemacs_to_len16 = cpu_to_be32(FW_VI_MAC_CMD_FREEMACS_V(0) |                  │          c.freemacs_to_len16 = cpu_to_be32(val);                                         
                                          FW_CMD_LEN16_V(val));                          │                                                                                          
                                                                                         │                                                                                          
        p->raw_idx_pkd = cpu_to_be32(FW_VI_MAC_CMD_RAW_IDX_V(idx) |                      │          /* Specify that this is an inner mac address */                                 
                                     FW_VI_MAC_ID_BASED_FREE);                           │          p->raw_idx_pkd = cpu_to_be32(FW_VI_MAC_CMD_RAW_IDX_V(idx));                     
                                                                                         │                                                                                          
        /* Lookup Type. Outer header: 0, Inner header: 1 */                              │          /* Lookup Type. Outer header: 0, Inner header: 1 */                             
        p->data0_pkd = cpu_to_be32(DATALKPTYPE_V(lookup_type) |                          │          p->data0_pkd = cpu_to_be32(DATALKPTYPE_V(lookup_type) |                         
                                   DATAPORTNUM_V(port_id));                              │                                     DATAPORTNUM_V(port_id));                             
        /* Lookup mask and port mask */                                                  │          /* Lookup mask and port mask */                                                 
        p->data0m_pkd = cpu_to_be64(DATALKPTYPE_V(DATALKPTYPE_M) |                       │          p->data0m_pkd = cpu_to_be64(DATALKPTYPE_V(DATALKPTYPE_M) |                      
                                    DATAPORTNUM_V(DATAPORTNUM_M));                       │                                      DATAPORTNUM_V(DATAPORTNUM_M));                      
                                                                                         │                                                                                          
        /* Copy the address and the mask */                                              │          /* Copy the address and the mask */                                             
        memcpy((u8 *)&p->data1[0] + 2, addr, ETH_ALEN);                                  │          memcpy((u8 *)&p->data1[0] + 2, addr, ETH_ALEN);                                 
        memcpy((u8 *)&p->data1m[0] + 2, mask, ETH_ALEN);                                 │          memcpy((u8 *)&p->data1m[0] + 2, mask, ETH_ALEN);                                
                                                                                         │                                                                                          
        return t4_wr_mbox_meat(adap, adap->mbox, &c, sizeof(c), &c, sleep_ok);           │          ret = t4_wr_mbox_meat(adap, adap->mbox, &c, sizeof(c), &c, sleep_ok);           
                                                                                         │          if (ret == 0) {                                                                 
                                                                                         │                  ret = FW_VI_MAC_CMD_RAW_IDX_G(be32_to_cpu(p->raw_idx_pkd));             
                                                                                         │                  if (ret != idx)                                                         
                                                                                         │                          ret = -ENOMEM;                                                  
                                                                                         │          }                                                                               
                                                                                         │                                                                                          
                                                                                         │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/qlogic/qed/qed_nvmetcp.c:360                                 │ linux/drivers/net/ethernet/qlogic/qed/qed_iscsi.c:453                                    
                                                                                         │                                                                                          
        struct nvmetcp_conn_update_ramrod_params *p_ramrod = NULL;                       │          struct iscsi_conn_update_ramrod_params *p_ramrod = NULL;                        
        struct qed_spq_entry *p_ent = NULL;                                              │          struct qed_spq_entry *p_ent = NULL;                                             
        struct qed_sp_init_data init_data;                                               │          struct qed_sp_init_data init_data;                                              
        int rc = -EINVAL;                                                                │          int rc;                                                                         
        u32 dval;                                                                        │          u32 dval;                                                                       
                                                                                         │                                                                                          
        /* Get SPQ entry */                                                              │          /* Get SPQ entry */                                                             
        memset(&init_data, 0, sizeof(init_data));                                        │          memset(&init_data, 0, sizeof(init_data));                                       
        init_data.cid = p_conn->icid;                                                    │          init_data.cid = p_conn->icid;                                                   
        init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;                               │          init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;                              
        init_data.comp_mode = comp_mode;                                                 │          init_data.comp_mode = comp_mode;                                                
        init_data.p_comp_data = p_comp_addr;                                             │          init_data.p_comp_data = p_comp_addr;                                            
                                                                                         │                                                                                          
        rc = qed_sp_init_request(p_hwfn, &p_ent,                                         │          rc = qed_sp_init_request(p_hwfn, &p_ent,                                        
                                 NVMETCP_RAMROD_CMD_ID_UPDATE_CONN,                      │                                   ISCSI_RAMROD_CMD_ID_UPDATE_CONN,                       
                                 PROTOCOLID_TCP_ULP, &init_data);                        │                                   PROTOCOLID_TCP_ULP, &init_data);                       
        if (rc)                                                                          │          if (rc)                                                                         
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        p_ramrod = &p_ent->ramrod.nvmetcp_conn_update;                                   │          p_ramrod = &p_ent->ramrod.iscsi_conn_update;                                    
                                                                                         │                                                                                          
        p_ramrod->conn_id = cpu_to_le16(p_conn->conn_id);                                │          p_ramrod->conn_id = cpu_to_le16(p_conn->conn_id);                               
        p_ramrod->flags = p_conn->update_flag;                                           │          p_ramrod->flags = p_conn->update_flag;                                          
        p_ramrod->max_seq_size = cpu_to_le32(p_conn->max_seq_size);                      │          p_ramrod->max_seq_size = cpu_to_le32(p_conn->max_seq_size);                     
        dval = p_conn->max_recv_pdu_length;                                              │          dval = p_conn->max_recv_pdu_length;                                             
        p_ramrod->max_recv_pdu_length = cpu_to_le32(dval);                               │          p_ramrod->max_recv_pdu_length = cpu_to_le32(dval);                              
        dval = p_conn->max_send_pdu_length;                                              │          dval = p_conn->max_send_pdu_length;                                             
        p_ramrod->max_send_pdu_length = cpu_to_le32(dval);                               │          p_ramrod->max_send_pdu_length = cpu_to_le32(dval);                              
        p_ramrod->first_seq_length = cpu_to_le32(p_conn->first_seq_length);              │          dval = p_conn->first_seq_length;                                                
                                                                                         │          p_ramrod->first_seq_length = cpu_to_le32(dval);                                 
                                                                                         │          p_ramrod->exp_stat_sn = cpu_to_le32(p_conn->exp_stat_sn);                       
                                                                                         │                                                                                          
        return qed_spq_post(p_hwfn, p_ent, NULL);                                        │          return qed_spq_post(p_hwfn, p_ent, NULL);                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c:11931                            │ linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c:11967                             
                                                                                         │                                                                                          
        .type           = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481,                         │          .type           = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84823,                       
        .addr           = 0xff,                                                          │          .addr           = 0xff,                                                         
        .def_md_devad   = 0,                                                             │          .def_md_devad   = 0,                                                            
        .flags          = FLAGS_FAN_FAILURE_DET_REQ |                                    │          .flags          = (FLAGS_FAN_FAILURE_DET_REQ |                                  
                          FLAGS_REARM_LATCH_SIGNAL,                                      │                             FLAGS_REARM_LATCH_SIGNAL |                                   
                                                                                         │                             FLAGS_TX_ERROR_CHECK),                                       
        .rx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                              │          .rx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                             
        .tx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                              │          .tx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                             
        .mdio_ctrl      = 0,                                                             │          .mdio_ctrl      = 0,                                                            
        .supported      = (SUPPORTED_10baseT_Half |                                      │          .supported      = (SUPPORTED_10baseT_Half |                                     
                           SUPPORTED_10baseT_Full |                                      │                             SUPPORTED_10baseT_Full |                                     
                           SUPPORTED_100baseT_Half |                                     │                             SUPPORTED_100baseT_Half |                                    
                           SUPPORTED_100baseT_Full |                                     │                             SUPPORTED_100baseT_Full |                                    
                           SUPPORTED_1000baseT_Full |                                    │                             SUPPORTED_1000baseT_Full |                                   
                           SUPPORTED_10000baseT_Full |                                   │                             SUPPORTED_10000baseT_Full |                                  
                           SUPPORTED_TP |                                                │                             SUPPORTED_TP |                                               
                           SUPPORTED_Autoneg |                                           │                             SUPPORTED_Autoneg |                                          
                           SUPPORTED_Pause |                                             │                             SUPPORTED_Pause |                                            
                           SUPPORTED_Asym_Pause),                                        │                             SUPPORTED_Asym_Pause),                                       
        .media_type     = ETH_PHY_BASE_T,                                                │          .media_type     = ETH_PHY_BASE_T,                                               
        .ver_addr       = 0,                                                             │          .ver_addr       = 0,                                                            
        .req_flow_ctrl  = 0,                                                             │          .req_flow_ctrl  = 0,                                                            
        .req_line_speed = 0,                                                             │          .req_line_speed = 0,                                                            
        .speed_cap_mask = 0,                                                             │          .speed_cap_mask = 0,                                                            
        .req_duplex     = 0,                                                             │          .req_duplex     = 0,                                                            
        .rsrv           = 0,                                                             │          .rsrv           = 0,                                                            
        .config_init    = bnx2x_8481_config_init,                                        │          .config_init    = bnx2x_848x3_config_init,                                      
        .read_status    = bnx2x_848xx_read_status,                                       │          .read_status    = bnx2x_848xx_read_status,                                      
        .link_reset     = bnx2x_8481_link_reset,                                         │          .link_reset     = bnx2x_848x3_link_reset,                                       
        .config_loopback = NULL,                                                         │          .config_loopback = NULL,                                                        
        .format_fw_ver  = bnx2x_848xx_format_ver,                                        │          .format_fw_ver  = bnx2x_848xx_format_ver,                                       
        .hw_reset       = bnx2x_8481_hw_reset,                                           │          .hw_reset       = NULL,                                                         
        .set_link_led   = bnx2x_848xx_set_link_led,                                      │          .set_link_led   = bnx2x_848xx_set_link_led,                                     
        .phy_specific_func = NULL                                                        │          .phy_specific_func = bnx2x_848xx_specific_func                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c:12004                            │ linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c:11967                             
                                                                                         │                                                                                          
        .type           = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84833,                        │          .type           = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84823,                       
        .addr           = 0xff,                                                          │          .addr           = 0xff,                                                         
        .def_md_devad   = 0,                                                             │          .def_md_devad   = 0,                                                            
        .flags          = (FLAGS_FAN_FAILURE_DET_REQ |                                   │          .flags          = (FLAGS_FAN_FAILURE_DET_REQ |                                  
                           FLAGS_REARM_LATCH_SIGNAL |                                    │                             FLAGS_REARM_LATCH_SIGNAL |                                   
                           FLAGS_TX_ERROR_CHECK),                                        │                             FLAGS_TX_ERROR_CHECK),                                       
        .rx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                              │          .rx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                             
        .tx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                              │          .tx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                             
        .mdio_ctrl      = 0,                                                             │          .mdio_ctrl      = 0,                                                            
        .supported      = (SUPPORTED_100baseT_Half |                                     │          .supported      = (SUPPORTED_10baseT_Half |                                     
                                                                                         │                             SUPPORTED_10baseT_Full |                                     
                                                                                         │                             SUPPORTED_100baseT_Half |                                    
                           SUPPORTED_100baseT_Full |                                     │                             SUPPORTED_100baseT_Full |                                    
                           SUPPORTED_1000baseT_Full |                                    │                             SUPPORTED_1000baseT_Full |                                   
                           SUPPORTED_10000baseT_Full |                                   │                             SUPPORTED_10000baseT_Full |                                  
                           SUPPORTED_TP |                                                │                             SUPPORTED_TP |                                               
                           SUPPORTED_Autoneg |                                           │                             SUPPORTED_Autoneg |                                          
                           SUPPORTED_Pause |                                             │                             SUPPORTED_Pause |                                            
                           SUPPORTED_Asym_Pause),                                        │                             SUPPORTED_Asym_Pause),                                       
        .media_type     = ETH_PHY_BASE_T,                                                │          .media_type     = ETH_PHY_BASE_T,                                               
        .ver_addr       = 0,                                                             │          .ver_addr       = 0,                                                            
        .req_flow_ctrl  = 0,                                                             │          .req_flow_ctrl  = 0,                                                            
        .req_line_speed = 0,                                                             │          .req_line_speed = 0,                                                            
        .speed_cap_mask = 0,                                                             │          .speed_cap_mask = 0,                                                            
        .req_duplex     = 0,                                                             │          .req_duplex     = 0,                                                            
        .rsrv           = 0,                                                             │          .rsrv           = 0,                                                            
        .config_init    = bnx2x_848x3_config_init,                                       │          .config_init    = bnx2x_848x3_config_init,                                      
        .read_status    = bnx2x_848xx_read_status,                                       │          .read_status    = bnx2x_848xx_read_status,                                      
        .link_reset     = bnx2x_848x3_link_reset,                                        │          .link_reset     = bnx2x_848x3_link_reset,                                       
        .config_loopback = NULL,                                                         │          .config_loopback = NULL,                                                        
        .format_fw_ver  = bnx2x_848xx_format_ver,                                        │          .format_fw_ver  = bnx2x_848xx_format_ver,                                       
        .hw_reset       = bnx2x_84833_hw_reset_phy,                                      │          .hw_reset       = NULL,                                                         
        .set_link_led   = bnx2x_848xx_set_link_led,                                      │          .set_link_led   = bnx2x_848xx_set_link_led,                                     
        .phy_specific_func = bnx2x_848xx_specific_func                                   │          .phy_specific_func = bnx2x_848xx_specific_func                                  
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c:12004                            │ linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c:11931                             
                                                                                         │                                                                                          
        .type           = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84833,                        │          .type           = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481,                        
        .addr           = 0xff,                                                          │          .addr           = 0xff,                                                         
        .def_md_devad   = 0,                                                             │          .def_md_devad   = 0,                                                            
        .flags          = (FLAGS_FAN_FAILURE_DET_REQ |                                   │          .flags          = FLAGS_FAN_FAILURE_DET_REQ |                                   
                           FLAGS_REARM_LATCH_SIGNAL |                                    │                            FLAGS_REARM_LATCH_SIGNAL,                                     
                           FLAGS_TX_ERROR_CHECK),                                        │                                                                                          
        .rx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                              │          .rx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                             
        .tx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                              │          .tx_preemphasis = {0xffff, 0xffff, 0xffff, 0xffff},                             
        .mdio_ctrl      = 0,                                                             │          .mdio_ctrl      = 0,                                                            
        .supported      = (SUPPORTED_100baseT_Half |                                     │          .supported      = (SUPPORTED_10baseT_Half |                                     
                                                                                         │                             SUPPORTED_10baseT_Full |                                     
                                                                                         │                             SUPPORTED_100baseT_Half |                                    
                           SUPPORTED_100baseT_Full |                                     │                             SUPPORTED_100baseT_Full |                                    
                           SUPPORTED_1000baseT_Full |                                    │                             SUPPORTED_1000baseT_Full |                                   
                           SUPPORTED_10000baseT_Full |                                   │                             SUPPORTED_10000baseT_Full |                                  
                           SUPPORTED_TP |                                                │                             SUPPORTED_TP |                                               
                           SUPPORTED_Autoneg |                                           │                             SUPPORTED_Autoneg |                                          
                           SUPPORTED_Pause |                                             │                             SUPPORTED_Pause |                                            
                           SUPPORTED_Asym_Pause),                                        │                             SUPPORTED_Asym_Pause),                                       
        .media_type     = ETH_PHY_BASE_T,                                                │          .media_type     = ETH_PHY_BASE_T,                                               
        .ver_addr       = 0,                                                             │          .ver_addr       = 0,                                                            
        .req_flow_ctrl  = 0,                                                             │          .req_flow_ctrl  = 0,                                                            
        .req_line_speed = 0,                                                             │          .req_line_speed = 0,                                                            
        .speed_cap_mask = 0,                                                             │          .speed_cap_mask = 0,                                                            
        .req_duplex     = 0,                                                             │          .req_duplex     = 0,                                                            
        .rsrv           = 0,                                                             │          .rsrv           = 0,                                                            
        .config_init    = bnx2x_848x3_config_init,                                       │          .config_init    = bnx2x_8481_config_init,                                       
        .read_status    = bnx2x_848xx_read_status,                                       │          .read_status    = bnx2x_848xx_read_status,                                      
        .link_reset     = bnx2x_848x3_link_reset,                                        │          .link_reset     = bnx2x_8481_link_reset,                                        
        .config_loopback = NULL,                                                         │          .config_loopback = NULL,                                                        
        .format_fw_ver  = bnx2x_848xx_format_ver,                                        │          .format_fw_ver  = bnx2x_848xx_format_ver,                                       
        .hw_reset       = bnx2x_84833_hw_reset_phy,                                      │          .hw_reset       = bnx2x_8481_hw_reset,                                          
        .set_link_led   = bnx2x_848xx_set_link_led,                                      │          .set_link_led   = bnx2x_848xx_set_link_led,                                     
        .phy_specific_func = bnx2x_848xx_specific_func                                   │          .phy_specific_func = NULL                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:254                          │ linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:181                           
                                                                                         │                                                                                          
        int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                              │          int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                             
        struct mlx5_flow_group *fg;                                                      │          struct mlx5_flow_group *fg;                                                     
        u32 *in, *match;                                                                 │          u32 *in, *match;                                                                
                                                                                         │                                                                                          
        in = kvzalloc(inlen, GFP_KERNEL);                                                │          in = kvzalloc(inlen, GFP_KERNEL);                                               
        if (!in)                                                                         │          if (!in)                                                                        
                return ERR_PTR(-ENOMEM);                                                 │                  return ERR_PTR(-ENOMEM);                                                
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, match_criteria_enable, MLX5_MATCH_OUTER_HEADE │          MLX5_SET(create_flow_group_in, in, match_criteria_enable,                       
                                                                                         │                   MLX5_MATCH_OUTER_HEADERS | MLX5_MATCH_MISC_PARAMETERS_2);              
        match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                  │          match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                 
                                                                                         │                                                                                          
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.dmac_47_16);              │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_47_16);             
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.dmac_15_0);               │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_15_0);              
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.cvlan_tag);               │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.cvlan_tag);              
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.first_vid);               │                                                                                          
                                                                                         │          MLX5_SET(fte_match_param, match, misc_parameters_2.metadata_reg_c_0,            
                                                                                         │                   mlx5_eswitch_get_vport_metadata_mask());                               
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, start_flow_index,                             │          MLX5_SET(create_flow_group_in, in, start_flow_index,                            
                 MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_FROM);                        │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_FILTER_GRP_IDX_FROM);                    
        MLX5_SET(create_flow_group_in, in, end_flow_index,                               │          MLX5_SET(create_flow_group_in, in, end_flow_index,                              
                 MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_TO);                          │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_FILTER_GRP_IDX_TO);                      
                                                                                         │                                                                                          
        fg = mlx5_create_flow_group(egress_ft, in);                                      │          fg = mlx5_create_flow_group(ingress_ft, in);                                    
        if (IS_ERR(fg))                                                                  │          if (IS_ERR(fg))                                                                 
                esw_warn(esw->dev,                                                       │                  esw_warn(esw->dev,                                                      
                         "Failed to create VLAN flow group for bridge egress table (err= │                           "Failed to create bridge ingress table VLAN filter flow group (
                         PTR_ERR(fg));                                                   │                           PTR_ERR(fg));                                                  
                                                                                         │                                                                                          
        kvfree(in);                                                                      │          kvfree(in);                                                                     
        return fg;                                                                       │          return fg;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:254                          │ linux/drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c:218                           
                                                                                         │                                                                                          
        int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                              │          int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);                             
        struct mlx5_flow_group *fg;                                                      │          struct mlx5_flow_group *fg;                                                     
        u32 *in, *match;                                                                 │          u32 *in, *match;                                                                
                                                                                         │                                                                                          
        in = kvzalloc(inlen, GFP_KERNEL);                                                │          in = kvzalloc(inlen, GFP_KERNEL);                                               
        if (!in)                                                                         │          if (!in)                                                                        
                return ERR_PTR(-ENOMEM);                                                 │                  return ERR_PTR(-ENOMEM);                                                
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, match_criteria_enable, MLX5_MATCH_OUTER_HEADE │          MLX5_SET(create_flow_group_in, in, match_criteria_enable,                       
                                                                                         │                   MLX5_MATCH_OUTER_HEADERS | MLX5_MATCH_MISC_PARAMETERS_2);              
        match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                  │          match = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria);                 
                                                                                         │                                                                                          
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.dmac_47_16);              │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_47_16);             
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.dmac_15_0);               │          MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.smac_15_0);              
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.cvlan_tag);               │                                                                                          
        MLX5_SET_TO_ONES(fte_match_param, match, outer_headers.first_vid);               │          MLX5_SET(fte_match_param, match, misc_parameters_2.metadata_reg_c_0,            
                                                                                         │                   mlx5_eswitch_get_vport_metadata_mask());                               
                                                                                         │                                                                                          
        MLX5_SET(create_flow_group_in, in, start_flow_index,                             │          MLX5_SET(create_flow_group_in, in, start_flow_index,                            
                 MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_FROM);                        │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_FROM);                       
        MLX5_SET(create_flow_group_in, in, end_flow_index,                               │          MLX5_SET(create_flow_group_in, in, end_flow_index,                              
                 MLX5_ESW_BRIDGE_EGRESS_TABLE_VLAN_GRP_IDX_TO);                          │                   MLX5_ESW_BRIDGE_INGRESS_TABLE_MAC_GRP_IDX_TO);                         
                                                                                         │                                                                                          
        fg = mlx5_create_flow_group(egress_ft, in);                                      │          fg = mlx5_create_flow_group(ingress_ft, in);                                    
        if (IS_ERR(fg))                                                                  │          if (IS_ERR(fg))                                                                 
                esw_warn(esw->dev,                                                       │                  esw_warn(esw->dev,                                                      
                         "Failed to create VLAN flow group for bridge egress table (err= │                           "Failed to create MAC flow group for bridge ingress table (err=
                         PTR_ERR(fg));                                                   │                           PTR_ERR(fg));                                                  
                                                                                         │                                                                                          
        kvfree(in);                                                                      │          kvfree(in);                                                                     
        return fg;                                                                       │          return fg;                                                                      
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c:2578                    │ linux/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c:11101                      
                                                                                         │                                                                                          
        struct pci_dev *pdev = hdev->pdev;                                               │          struct pci_dev *pdev = hdev->pdev;                                              
        struct hclgevf_hw *hw;                                                           │          struct hclge_hw *hw;                                                            
        int ret;                                                                         │          int ret;                                                                        
                                                                                         │                                                                                          
        ret = pci_enable_device(pdev);                                                   │          ret = pci_enable_device(pdev);                                                  
        if (ret) {                                                                       │          if (ret) {                                                                      
                dev_err(&pdev->dev, "failed to enable PCI device\n");                    │                  dev_err(&pdev->dev, "failed to enable PCI device\n");                   
                return ret;                                                              │                  return ret;                                                             
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));                   │          ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));                  
        if (ret) {                                                                       │          if (ret) {                                                                      
                dev_err(&pdev->dev, "can't set consistent PCI DMA, exiting");            │                  ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));          
                goto err_disable_device;                                                 │                  if (ret) {                                                              
                                                                                         │                          dev_err(&pdev->dev,                                             
                                                                                         │                                  "can't set consistent PCI DMA");                        
                                                                                         │                          goto err_disable_device;                                        
                                                                                         │                  }                                                                       
                                                                                         │                  dev_warn(&pdev->dev, "set DMA mask to 32 bits\n");                      
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret = pci_request_regions(pdev, HCLGEVF_DRIVER_NAME);                            │          ret = pci_request_regions(pdev, HCLGE_DRIVER_NAME);                             
        if (ret) {                                                                       │          if (ret) {                                                                      
                dev_err(&pdev->dev, "PCI request regions failed %d\n", ret);             │                  dev_err(&pdev->dev, "PCI request regions failed %d\n", ret);            
                goto err_disable_device;                                                 │                  goto err_disable_device;                                                
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        pci_set_master(pdev);                                                            │          pci_set_master(pdev);                                                           
        hw = &hdev->hw;                                                                  │          hw = &hdev->hw;                                                                 
        hw->hw.io_base = pci_iomap(pdev, 2, 0);                                          │          hw->hw.io_base = pcim_iomap(pdev, 2, 0);                                        
        if (!hw->hw.io_base) {                                                           │          if (!hw->hw.io_base) {                                                          
                dev_err(&pdev->dev, "can't map configuration register space\n");         │                  dev_err(&pdev->dev, "Can't map configuration register space\n");        
                ret = -ENOMEM;                                                           │                  ret = -ENOMEM;                                                          
                goto err_clr_master;                                                     │                  goto err_clr_master;                                                    
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        ret = hclgevf_dev_mem_map(hdev);                                                 │          ret = hclge_dev_mem_map(hdev);                                                  
        if (ret)                                                                         │          if (ret)                                                                        
                goto err_unmap_io_base;                                                  │                  goto err_unmap_io_base;                                                 
                                                                                         │                                                                                          
                                                                                         │          hdev->num_req_vfs = pci_sriov_get_totalvfs(pdev);                               
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
                                                                                         │                                                                                          
err_unmap_io_base:                                                                       │  err_unmap_io_base:                                                                      
        pci_iounmap(pdev, hdev->hw.hw.io_base);                                          │          pcim_iounmap(pdev, hdev->hw.hw.io_base);                                        
err_clr_master:                                                                          │  err_clr_master:                                                                         
        pci_clear_master(pdev);                                                          │          pci_clear_master(pdev);                                                         
        pci_release_regions(pdev);                                                       │          pci_release_regions(pdev);                                                      
err_disable_device:                                                                      │  err_disable_device:                                                                     
        pci_disable_device(pdev);                                                        │          pci_disable_device(pdev);                                                       
                                                                                         │                                                                                          
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:623                        │ linux/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c:669                         
                                                                                         │                                                                                          
        unsigned char uc_addr[ETH_ALEN] = {0xf0, 0xff, 0xff, 0xff, 0xff, 0xff};          │          unsigned char uc_addr[ETH_ALEN] = {0xf0, 0xff, 0xff, 0xff, 0xff, 0xff};         
        unsigned char mc_addr[ETH_ALEN] = {0xf1, 0xff, 0xff, 0xff, 0xff, 0xff};          │          unsigned char mc_addr[ETH_ALEN] = {0xf1, 0xff, 0xff, 0xff, 0xff, 0xff};         
        struct stmmac_packet_attrs attr = { };                                           │          struct stmmac_packet_attrs attr = { };                                          
        int ret, tries = 256;                                                            │          int ret, tries = 256;                                                           
                                                                                         │                                                                                          
        if (stmmac_filter_check(priv))                                                   │          if (stmmac_filter_check(priv))                                                  
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
        if (netdev_uc_count(priv->dev) >= priv->hw->unicast_filter_entries)              │          if (netdev_uc_count(priv->dev) >= priv->hw->unicast_filter_entries)             
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
        if (netdev_mc_count(priv->dev) >= priv->hw->multicast_filter_bins)               │          if (netdev_mc_count(priv->dev) >= priv->hw->multicast_filter_bins)              
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
                                                                                         │                                                                                          
        while (--tries) {                                                                │          while (--tries) {                                                               
                /* We only need to check the mc_addr for collisions */                   │                  /* We only need to check the uc_addr for collisions */                  
                mc_addr[ETH_ALEN - 1] = tries;                                           │                  uc_addr[ETH_ALEN - 1] = tries;                                          
                if (stmmac_hash_check(priv, mc_addr))                                    │                  if (stmmac_perfect_check(priv, uc_addr))                                
                        break;                                                           │                          break;                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        if (!tries)                                                                      │          if (!tries)                                                                     
                return -EOPNOTSUPP;                                                      │                  return -EOPNOTSUPP;                                                     
                                                                                         │                                                                                          
        ret = dev_uc_add(priv->dev, uc_addr);                                            │          ret = dev_mc_add(priv->dev, mc_addr);                                           
        if (ret)                                                                         │          if (ret)                                                                        
                return ret;                                                              │                  return ret;                                                             
                                                                                         │                                                                                          
        attr.dst = uc_addr;                                                              │          attr.dst = mc_addr;                                                             
                                                                                         │                                                                                          
        /* Shall receive packet */                                                       │          /* Shall receive packet */                                                      
        ret = __stmmac_test_loopback(priv, &attr);                                       │          ret = __stmmac_test_loopback(priv, &attr);                                      
        if (ret)                                                                         │          if (ret)                                                                        
                goto cleanup;                                                            │                  goto cleanup;                                                           
                                                                                         │                                                                                          
        attr.dst = mc_addr;                                                              │          attr.dst = uc_addr;                                                             
                                                                                         │                                                                                          
        /* Shall NOT receive packet */                                                   │          /* Shall NOT receive packet */                                                  
        ret = __stmmac_test_loopback(priv, &attr);                                       │          ret = __stmmac_test_loopback(priv, &attr);                                      
        ret = ret ? 0 : -EINVAL;                                                         │          ret = ret ? 0 : -EINVAL;                                                        
                                                                                         │                                                                                          
cleanup:                                                                                 │  cleanup:                                                                                
        dev_uc_del(priv->dev, uc_addr);                                                  │          dev_mc_del(priv->dev, mc_addr);                                                 
        return ret;                                                                      │          return ret;                                                                     
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/nvidia/forcedeth.c:3737                                      │ linux/drivers/net/ethernet/nvidia/forcedeth.c:3849                                       
                                                                                         │                                                                                          
        struct net_device *dev = (struct net_device *) data;                             │          struct net_device *dev = (struct net_device *) data;                            
        struct fe_priv *np = netdev_priv(dev);                                           │          struct fe_priv *np = netdev_priv(dev);                                          
        u8 __iomem *base = get_hwbase(dev);                                              │          u8 __iomem *base = get_hwbase(dev);                                             
        u32 events;                                                                      │          u32 events;                                                                     
        int i;                                                                           │          int i;                                                                          
        unsigned long flags;                                                             │          unsigned long flags;                                                            
                                                                                         │                                                                                          
        for (i = 0;; i++) {                                                              │          for (i = 0;; i++) {                                                             
                events = readl(base + NvRegMSIXIrqStatus) & NVREG_IRQ_TX_ALL;            │                  events = readl(base + NvRegMSIXIrqStatus) & NVREG_IRQ_RX_ALL;           
                writel(events, base + NvRegMSIXIrqStatus);                               │                  writel(events, base + NvRegMSIXIrqStatus);                              
                netdev_dbg(dev, "tx irq events: %08x\n", events);                        │                  netdev_dbg(dev, "rx irq events: %08x\n", events);                       
                if (!(events & np->irqmask))                                             │                  if (!(events & np->irqmask))                                            
                        break;                                                           │                          break;                                                          
                                                                                         │                                                                                          
                spin_lock_irqsave(&np->lock, flags);                                     │                  if (nv_rx_process_optimized(dev, RX_WORK_PER_LOOP)) {                   
                nv_tx_done_optimized(dev, TX_WORK_PER_LOOP);                             │                          if (unlikely(nv_alloc_rx_optimized(dev))) {                     
                spin_unlock_irqrestore(&np->lock, flags);                                │                                  spin_lock_irqsave(&np->lock, flags);                    
                                                                                         │                                  if (!np->in_shutdown)                                   
                                                                                         │                                          mod_timer(&np->oom_kick, jiffies + OOM_REFILL); 
                                                                                         │                                  spin_unlock_irqrestore(&np->lock, flags);               
                                                                                         │                          }                                                               
                                                                                         │                  }                                                                       
                                                                                         │                                                                                          
                if (unlikely(i > max_interrupt_work)) {                                  │                  if (unlikely(i > max_interrupt_work)) {                                 
                        spin_lock_irqsave(&np->lock, flags);                             │                          spin_lock_irqsave(&np->lock, flags);                            
                        /* disable interrupts on the nic */                              │                          /* disable interrupts on the nic */                             
                        writel(NVREG_IRQ_TX_ALL, base + NvRegIrqMask);                   │                          writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask);                  
                        pci_push(base);                                                  │                          pci_push(base);                                                 
                                                                                         │                                                                                          
                        if (!np->in_shutdown) {                                          │                          if (!np->in_shutdown) {                                         
                                np->nic_poll_irq |= NVREG_IRQ_TX_ALL;                    │                                  np->nic_poll_irq |= NVREG_IRQ_RX_ALL;                   
                                mod_timer(&np->nic_poll, jiffies + POLL_WAIT);           │                                  mod_timer(&np->nic_poll, jiffies + POLL_WAIT);          
                        }                                                                │                          }                                                               
                        spin_unlock_irqrestore(&np->lock, flags);                        │                          spin_unlock_irqrestore(&np->lock, flags);                       
                        netdev_dbg(dev, "%s: too many iterations (%d)\n",                │                          netdev_dbg(dev, "%s: too many iterations (%d)\n",               
                                   __func__, i);                                         │                                     __func__, i);                                        
                        break;                                                           │                          break;                                                          
                }                                                                        │                  }                                                                       
                                                                                         │                                                                                          
        }                                                                                │          }                                                                               
                                                                                         │                                                                                          
        return IRQ_RETVAL(i);                                                            │          return IRQ_RETVAL(i);                                                           
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/ethtool.c:123                                            │ linux/drivers/net/ethernet/sfc/falcon/ethtool.c:603                                      
                                                                                         │                                                                                          
        struct efx_nic *efx = netdev_priv(net_dev);                                      │          struct ef4_nic *efx = netdev_priv(net_dev);                                     
        struct efx_channel *channel;                                                     │          struct ef4_channel *channel;                                                    
        unsigned int tx_usecs, rx_usecs;                                                 │          unsigned int tx_usecs, rx_usecs;                                                
        bool adaptive, rx_may_override_tx;                                               │          bool adaptive, rx_may_override_tx;                                              
        int rc;                                                                          │          int rc;                                                                         
                                                                                         │                                                                                          
        efx_get_irq_moderation(efx, &tx_usecs, &rx_usecs, &adaptive);                    │          ef4_get_irq_moderation(efx, &tx_usecs, &rx_usecs, &adaptive);                   
                                                                                         │                                                                                          
        if (coalesce->rx_coalesce_usecs != rx_usecs)                                     │          if (coalesce->rx_coalesce_usecs != rx_usecs)                                    
                rx_usecs = coalesce->rx_coalesce_usecs;                                  │                  rx_usecs = coalesce->rx_coalesce_usecs;                                 
        else                                                                             │          else                                                                            
                rx_usecs = coalesce->rx_coalesce_usecs_irq;                              │                  rx_usecs = coalesce->rx_coalesce_usecs_irq;                             
                                                                                         │                                                                                          
        adaptive = coalesce->use_adaptive_rx_coalesce;                                   │          adaptive = coalesce->use_adaptive_rx_coalesce;                                  
                                                                                         │                                                                                          
        /* If channels are shared, TX IRQ moderation can be quietly                      │          /* If channels are shared, TX IRQ moderation can be quietly                     
         * overridden unless it is changed from its old value.                           │           * overridden unless it is changed from its old value.                          
         */                                                                              │           */                                                                             
        rx_may_override_tx = (coalesce->tx_coalesce_usecs == tx_usecs &&                 │          rx_may_override_tx = (coalesce->tx_coalesce_usecs == tx_usecs &&                
                              coalesce->tx_coalesce_usecs_irq == tx_usecs);              │                                coalesce->tx_coalesce_usecs_irq == tx_usecs);             
        if (coalesce->tx_coalesce_usecs != tx_usecs)                                     │          if (coalesce->tx_coalesce_usecs != tx_usecs)                                    
                tx_usecs = coalesce->tx_coalesce_usecs;                                  │                  tx_usecs = coalesce->tx_coalesce_usecs;                                 
        else                                                                             │          else                                                                            
                tx_usecs = coalesce->tx_coalesce_usecs_irq;                              │                  tx_usecs = coalesce->tx_coalesce_usecs_irq;                             
                                                                                         │                                                                                          
        rc = efx_init_irq_moderation(efx, tx_usecs, rx_usecs, adaptive,                  │          rc = ef4_init_irq_moderation(efx, tx_usecs, rx_usecs, adaptive,                 
                                     rx_may_override_tx);                                │                                       rx_may_override_tx);                               
        if (rc != 0)                                                                     │          if (rc != 0)                                                                    
                return rc;                                                               │                  return rc;                                                              
                                                                                         │                                                                                          
        efx_for_each_channel(channel, efx)                                               │          ef4_for_each_channel(channel, efx)                                              
                efx->type->push_irq_moderation(channel);                                 │                  efx->type->push_irq_moderation(channel);                                
                                                                                         │                                                                                          
        return 0;                                                                        │          return 0;                                                                       
}                                                                                        │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/netronome/nfp/flower/match.c:605                             │ linux/drivers/net/ethernet/netronome/nfp/flower/match.c:649                              
                                                                                         │                                                                                          
                if (key_ls->key_layer_two & NFP_FLOWER_LAYER2_TUN_IPV6) {                │                  if (key_ls->key_layer_two & NFP_FLOWER_LAYER2_TUN_IPV6) {               
                        struct nfp_flower_ipv6_gre_tun *gre_match;                       │                          struct nfp_flower_ipv6_udp_tun *udp_match;                      
                        struct nfp_ipv6_addr_entry *entry;                               │                          struct nfp_ipv6_addr_entry *entry;                              
                        struct in6_addr *dst;                                            │                          struct in6_addr *dst;                                           
                                                                                         │                                                                                          
                        nfp_flower_compile_ipv6_gre_tun((void *)ext,                     │                          nfp_flower_compile_ipv6_udp_tun((void *)ext,                    
                                                        (void *)msk, rule);              │                                                          (void *)msk, rule);             
                        gre_match = (struct nfp_flower_ipv6_gre_tun *)ext;               │                          udp_match = (struct nfp_flower_ipv6_udp_tun *)ext;              
                        dst = &gre_match->ipv6.dst;                                      │                          dst = &udp_match->ipv6.dst;                                     
                        ext += sizeof(struct nfp_flower_ipv6_gre_tun);                   │                          ext += sizeof(struct nfp_flower_ipv6_udp_tun);                  
                        msk += sizeof(struct nfp_flower_ipv6_gre_tun);                   │                          msk += sizeof(struct nfp_flower_ipv6_udp_tun);                  
                                                                                         │                                                                                          
                        entry = nfp_tunnel_add_ipv6_off(app, dst);                       │                          entry = nfp_tunnel_add_ipv6_off(app, dst);                      
                        if (!entry)                                                      │                          if (!entry)                                                     
                                return -EOPNOTSUPP;                                      │                                  return -EOPNOTSUPP;                                     
                                                                                         │                                                                                          
                        nfp_flow->nfp_tun_ipv6 = entry;                                  │                          nfp_flow->nfp_tun_ipv6 = entry;                                 
                } else {                                                                 │                  } else {                                                                
                        __be32 dst;                                                      │                          __be32 dst;                                                     
                                                                                         │                                                                                          
                        nfp_flower_compile_ipv4_gre_tun((void *)ext,                     │                          nfp_flower_compile_ipv4_udp_tun((void *)ext,                    
                                                        (void *)msk, rule);              │                                                          (void *)msk, rule);             
                        dst = ((struct nfp_flower_ipv4_gre_tun *)ext)->ipv4.dst;         │                          dst = ((struct nfp_flower_ipv4_udp_tun *)ext)->ipv4.dst;        
                        ext += sizeof(struct nfp_flower_ipv4_gre_tun);                   │                          ext += sizeof(struct nfp_flower_ipv4_udp_tun);                  
                        msk += sizeof(struct nfp_flower_ipv4_gre_tun);                   │                          msk += sizeof(struct nfp_flower_ipv4_udp_tun);                  
                                                                                         │                                                                                          
                        /* Store the tunnel destination in the rule data.                │                          /* Store the tunnel destination in the rule data.               
                         * This must be present and be an exact match.                   │                           * This must be present and be an exact match.                  
                         */                                                              │                           */                                                             
                        nfp_flow->nfp_tun_ipv4_addr = dst;                               │                          nfp_flow->nfp_tun_ipv4_addr = dst;                              
                        nfp_tunnel_add_ipv4_off(app, dst);                               │                          nfp_tunnel_add_ipv4_off(app, dst);                              
                                                                                         │                  }                                                                       
                                                                                         │                                                                                          
                                                                                         │                  if (key_ls->key_layer_two & NFP_FLOWER_LAYER2_GENEVE_OP) {              
                                                                                         │                          nfp_flower_compile_geneve_opt(ext, msk, rule);                  
                }                                                                        │                  }                                                                       
        }                                                                                │                                                                                          
 next prev up                                                                                                                                                                        
 linux/drivers/net/ethernet/sfc/farch.c:1145                                             │ linux/drivers/net/ethernet/sfc/falcon/farch.c:1154                                       
                                                                                         │                                                                                          
        struct efx_nic *efx = channel->efx;                                              │          struct ef4_nic *efx = channel->efx;                                             
        struct efx_rx_queue *rx_queue =                                                  │          struct ef4_rx_queue *rx_queue =                                                 
                efx_channel_has_rx_queue(channel) ?                                      │                  ef4_channel_has_rx_queue(channel) ?                                     
                efx_channel_get_rx_queue(channel) : NULL;                                │                  ef4_channel_get_rx_queue(channel) : NULL;                               
        unsigned magic, code;                                                            │          unsigned magic, code;                                                           
                                                                                         │                                                                                          
        magic = EFX_QWORD_FIELD(*event, FSF_AZ_DRV_GEN_EV_MAGIC);                        │          magic = EF4_QWORD_FIELD(*event, FSF_AZ_DRV_GEN_EV_MAGIC);                       
        code = _EFX_CHANNEL_MAGIC_CODE(magic);                                           │          code = _EF4_CHANNEL_MAGIC_CODE(magic);                                          
                                                                                         │                                                                                          
        if (magic == EFX_CHANNEL_MAGIC_TEST(channel)) {                                  │          if (magic == EF4_CHANNEL_MAGIC_TEST(channel)) {                                 
                channel->event_test_cpu = raw_smp_processor_id();                        │                  channel->event_test_cpu = raw_smp_processor_id();                       
        } else if (rx_queue && magic == EFX_CHANNEL_MAGIC_FILL(rx_queue)) {              │          } else if (rx_queue && magic == EF4_CHANNEL_MAGIC_FILL(rx_queue)) {             
                /* The queue must be empty, so we won't receive any rx                   │                  /* The queue must be empty, so we won't receive any rx                  
                 * events, so efx_process_channel() won't refill the                     │                   * events, so ef4_process_channel() won't refill the                    
                 * queue. Refill it here */                                              │                   * queue. Refill it here */                                             
                efx_fast_push_rx_descriptors(rx_queue, true);                            │                  ef4_fast_push_rx_descriptors(rx_queue, true);                           
        } else if (rx_queue && magic == EFX_CHANNEL_MAGIC_RX_DRAIN(rx_queue)) {          │          } else if (rx_queue && magic == EF4_CHANNEL_MAGIC_RX_DRAIN(rx_queue)) {         
                efx_farch_handle_drain_event(channel);                                   │                  ef4_farch_handle_drain_event(channel);                                  
        } else if (code == _EFX_CHANNEL_MAGIC_TX_DRAIN) {                                │          } else if (code == _EF4_CHANNEL_MAGIC_TX_DRAIN) {                               
                efx_farch_handle_drain_event(channel);                                   │                  ef4_farch_handle_drain_event(channel);                                  
        } else {                                                                         │          } else {                                                                        
                netif_dbg(efx, hw, efx->net_dev, "channel %d received "                  │                  netif_dbg(efx, hw, efx->net_dev, "channel %d received "                 
                          "generated event "EFX_QWORD_FMT"\n",                           │                            "generated event "EF4_QWORD_FMT"\n",                          
                          channel->channel, EFX_QWORD_VAL(*event));                      │                            channel->channel, EF4_QWORD_VAL(*event));                     
        }                                                                                │          }                                                                               
}                                                                                        │