Index: sys/dev/cxgbe/adapter.h =================================================================== --- sys/dev/cxgbe/adapter.h +++ sys/dev/cxgbe/adapter.h @@ -670,20 +670,29 @@ #define INVALID_NM_RXQ_CNTXT_ID ((uint16_t)(-1)) struct sge_nm_rxq { - volatile int nm_state; /* NM_OFF, NM_ON, or NM_BUSY */ - struct vi_info *vi; + /* Cacheline exclusively used by t4_nm_intr */ + struct vi_info *vi; struct iq_desc *iq_desc; + uint16_t iq_abs_id; uint16_t iq_cntxt_id; uint16_t iq_cidx; uint16_t iq_sidx; uint8_t iq_gen; + uint8_t padding1[39]; + + /* Cacheline with actual contended fields */ - __be64 *fl_desc; - uint16_t fl_cntxt_id; uint32_t fl_cidx; uint32_t fl_pidx; + uint8_t padding2[56]; + + /* Cacheline with mostly read fields */ + + volatile int nm_state; /* NM_OFF, NM_ON, or NM_BUSY */ + __be64 *fl_desc; + uint16_t fl_cntxt_id; uint32_t fl_sidx; uint32_t fl_db_val; u_int fl_hwidx:4;