i40e/base: wrap the register definitions for PF and VF
There were quite a few issues when the wrong defines were getting used in the VF driver. This patch defines a new #define PF_DRIVER. All the PF specific register definitions are wrapped in it. The drivers will have to be updated to use the define in the PF driver builds. Makes for a very short register.h for VF drivers. Also fixes the code where PF driver register fields were getting used for VF driver. Signed-off-by: Jingjing Wu <jingjing.wu@intel.com> Acked-by: Helin Zhang <helin.zhang@intel.com> Tested-by: Huilong Xu <huilongx.xu@intel.com>
This commit is contained in:
parent
b28c67c3ba
commit
9783eb15eb
@ -69,6 +69,7 @@ STATIC void i40e_adminq_init_regs(struct i40e_hw *hw)
|
||||
hw->aq.arq.len = I40E_VF_ARQLEN1;
|
||||
hw->aq.arq.bal = I40E_VF_ARQBAL1;
|
||||
hw->aq.arq.bah = I40E_VF_ARQBAH1;
|
||||
#ifdef PF_DRIVER
|
||||
} else {
|
||||
hw->aq.asq.tail = I40E_PF_ATQT;
|
||||
hw->aq.asq.head = I40E_PF_ATQH;
|
||||
@ -80,6 +81,7 @@ STATIC void i40e_adminq_init_regs(struct i40e_hw *hw)
|
||||
hw->aq.arq.len = I40E_PF_ARQLEN;
|
||||
hw->aq.arq.bal = I40E_PF_ARQBAL;
|
||||
hw->aq.arq.bah = I40E_PF_ARQBAH;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -316,8 +318,26 @@ STATIC enum i40e_status_code i40e_config_asq_regs(struct i40e_hw *hw)
|
||||
wr32(hw, hw->aq.asq.tail, 0);
|
||||
|
||||
/* set starting point */
|
||||
#ifdef PF_DRIVER
|
||||
#ifdef INTEGRATED_VF
|
||||
if (!i40e_is_vf(hw))
|
||||
wr32(hw, hw->aq.asq.len, (hw->aq.num_asq_entries |
|
||||
I40E_PF_ATQLEN_ATQENABLE_MASK));
|
||||
#else
|
||||
wr32(hw, hw->aq.asq.len, (hw->aq.num_asq_entries |
|
||||
I40E_PF_ATQLEN_ATQENABLE_MASK));
|
||||
#endif /* INTEGRATED_VF */
|
||||
#endif /* PF_DRIVER */
|
||||
#ifdef VF_DRIVER
|
||||
#ifdef INTEGRATED_VF
|
||||
if (i40e_is_vf(hw))
|
||||
wr32(hw, hw->aq.asq.len, (hw->aq.num_asq_entries |
|
||||
I40E_VF_ATQLEN1_ATQENABLE_MASK));
|
||||
#else
|
||||
wr32(hw, hw->aq.asq.len, (hw->aq.num_asq_entries |
|
||||
I40E_VF_ATQLEN1_ATQENABLE_MASK));
|
||||
#endif /* INTEGRATED_VF */
|
||||
#endif /* VF_DRIVER */
|
||||
wr32(hw, hw->aq.asq.bal, I40E_LO_DWORD(hw->aq.asq.desc_buf.pa));
|
||||
wr32(hw, hw->aq.asq.bah, I40E_HI_DWORD(hw->aq.asq.desc_buf.pa));
|
||||
|
||||
@ -345,8 +365,26 @@ STATIC enum i40e_status_code i40e_config_arq_regs(struct i40e_hw *hw)
|
||||
wr32(hw, hw->aq.arq.tail, 0);
|
||||
|
||||
/* set starting point */
|
||||
#ifdef PF_DRIVER
|
||||
#ifdef INTEGRATED_VF
|
||||
if (!i40e_is_vf(hw))
|
||||
wr32(hw, hw->aq.arq.len, (hw->aq.num_arq_entries |
|
||||
I40E_PF_ARQLEN_ARQENABLE_MASK));
|
||||
#else
|
||||
wr32(hw, hw->aq.arq.len, (hw->aq.num_arq_entries |
|
||||
I40E_PF_ARQLEN_ARQENABLE_MASK));
|
||||
#endif /* INTEGRATED_VF */
|
||||
#endif /* PF_DRIVER */
|
||||
#ifdef VF_DRIVER
|
||||
#ifdef INTEGRATED_VF
|
||||
if (i40e_is_vf(hw))
|
||||
wr32(hw, hw->aq.arq.len, (hw->aq.num_arq_entries |
|
||||
I40E_VF_ARQLEN1_ARQENABLE_MASK));
|
||||
#else
|
||||
wr32(hw, hw->aq.arq.len, (hw->aq.num_arq_entries |
|
||||
I40E_VF_ARQLEN1_ARQENABLE_MASK));
|
||||
#endif /* INTEGRATED_VF */
|
||||
#endif /* VF_DRIVER */
|
||||
wr32(hw, hw->aq.arq.bal, I40E_LO_DWORD(hw->aq.arq.desc_buf.pa));
|
||||
wr32(hw, hw->aq.arq.bah, I40E_HI_DWORD(hw->aq.arq.desc_buf.pa));
|
||||
|
||||
@ -998,7 +1036,22 @@ enum i40e_status_code i40e_clean_arq_element(struct i40e_hw *hw,
|
||||
i40e_acquire_spinlock(&hw->aq.arq_spinlock);
|
||||
|
||||
/* set next_to_use to head */
|
||||
#ifdef PF_DRIVER
|
||||
#ifdef INTEGRATED_VF
|
||||
if (!i40e_is_vf(hw))
|
||||
ntu = (rd32(hw, hw->aq.arq.head) & I40E_PF_ARQH_ARQH_MASK);
|
||||
#else
|
||||
ntu = (rd32(hw, hw->aq.arq.head) & I40E_PF_ARQH_ARQH_MASK);
|
||||
#endif /* INTEGRATED_VF */
|
||||
#endif /* PF_DRIVER */
|
||||
#ifdef VF_DRIVER
|
||||
#ifdef INTEGRATED_VF
|
||||
if (i40e_is_vf(hw))
|
||||
ntu = (rd32(hw, hw->aq.arq.head) & I40E_VF_ARQH1_ARQH_MASK);
|
||||
#else
|
||||
ntu = (rd32(hw, hw->aq.arq.head) & I40E_VF_ARQH1_ARQH_MASK);
|
||||
#endif /* INTEGRATED_VF */
|
||||
#endif /* VF_DRIVER */
|
||||
if (ntu == ntc) {
|
||||
/* nothing to do - shouldn't need to update ring's values */
|
||||
ret_code = I40E_ERR_ADMIN_QUEUE_NO_WORK;
|
||||
@ -1093,9 +1146,6 @@ void i40e_resume_aq(struct i40e_hw *hw)
|
||||
hw->aq.asq.next_to_use = 0;
|
||||
hw->aq.asq.next_to_clean = 0;
|
||||
|
||||
#if (I40E_VF_ATQLEN_ATQENABLE_MASK != I40E_PF_ATQLEN_ATQENABLE_MASK)
|
||||
#error I40E_VF_ATQLEN_ATQENABLE_MASK != I40E_PF_ATQLEN_ATQENABLE_MASK
|
||||
#endif
|
||||
i40e_config_asq_regs(hw);
|
||||
|
||||
hw->aq.arq.next_to_use = 0;
|
||||
|
@ -371,9 +371,27 @@ void i40e_debug_aq(struct i40e_hw *hw, enum i40e_debug_mask mask, void *desc,
|
||||
bool i40e_check_asq_alive(struct i40e_hw *hw)
|
||||
{
|
||||
if (hw->aq.asq.len)
|
||||
return !!(rd32(hw, hw->aq.asq.len) & I40E_PF_ATQLEN_ATQENABLE_MASK);
|
||||
else
|
||||
return false;
|
||||
#ifdef PF_DRIVER
|
||||
#ifdef INTEGRATED_VF
|
||||
if (!i40e_is_vf(hw))
|
||||
return !!(rd32(hw, hw->aq.asq.len) &
|
||||
I40E_PF_ATQLEN_ATQENABLE_MASK);
|
||||
#else
|
||||
return !!(rd32(hw, hw->aq.asq.len) &
|
||||
I40E_PF_ATQLEN_ATQENABLE_MASK);
|
||||
#endif /* INTEGRATED_VF */
|
||||
#endif /* PF_DRIVER */
|
||||
#ifdef VF_DRIVER
|
||||
#ifdef INTEGRATED_VF
|
||||
if (i40e_is_vf(hw))
|
||||
return !!(rd32(hw, hw->aq.asq.len) &
|
||||
I40E_VF_ATQLEN1_ATQENABLE_MASK);
|
||||
#else
|
||||
return !!(rd32(hw, hw->aq.asq.len) &
|
||||
I40E_VF_ATQLEN1_ATQENABLE_MASK);
|
||||
#endif /* INTEGRATED_VF */
|
||||
#endif /* VF_DRIVER */
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,6 +35,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
#define _I40E_REGISTER_H_
|
||||
|
||||
|
||||
#ifdef PF_DRIVER
|
||||
#define I40E_GL_ARQBAH 0x000801C0 /* Reset: EMPR */
|
||||
#define I40E_GL_ARQBAH_ARQBAH_SHIFT 0
|
||||
#define I40E_GL_ARQBAH_ARQBAH_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_ARQBAH_ARQBAH_SHIFT)
|
||||
@ -1609,6 +1610,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
#define I40E_MSIX_TVCTRL_MAX_INDEX 128
|
||||
#define I40E_MSIX_TVCTRL_MASK_SHIFT 0
|
||||
#define I40E_MSIX_TVCTRL_MASK_MASK I40E_MASK(0x1, I40E_MSIX_TVCTRL_MASK_SHIFT)
|
||||
#endif /* PF_DRIVER */
|
||||
#define I40E_VFMSIX_PBA1(_i) (0x00002000 + ((_i) * 4)) /* _i=0...19 */ /* Reset: VFLR */
|
||||
#define I40E_VFMSIX_PBA1_MAX_INDEX 19
|
||||
#define I40E_VFMSIX_PBA1_PENBIT_SHIFT 0
|
||||
@ -1631,6 +1633,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
#define I40E_VFMSIX_TVCTRL1_MAX_INDEX 639
|
||||
#define I40E_VFMSIX_TVCTRL1_MASK_SHIFT 0
|
||||
#define I40E_VFMSIX_TVCTRL1_MASK_MASK I40E_MASK(0x1, I40E_VFMSIX_TVCTRL1_MASK_SHIFT)
|
||||
#ifdef PF_DRIVER
|
||||
#define I40E_GLNVM_FLA 0x000B6108 /* Reset: POR */
|
||||
#define I40E_GLNVM_FLA_FL_SCK_SHIFT 0
|
||||
#define I40E_GLNVM_FLA_FL_SCK_MASK I40E_MASK(0x1, I40E_GLNVM_FLA_FL_SCK_SHIFT)
|
||||
@ -3150,6 +3153,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
#define I40E_PRTPM_SAL_MAX_INDEX 3
|
||||
#define I40E_PRTPM_SAL_PFPM_SAL_SHIFT 0
|
||||
#define I40E_PRTPM_SAL_PFPM_SAL_MASK I40E_MASK(0xFFFFFFFF, I40E_PRTPM_SAL_PFPM_SAL_SHIFT)
|
||||
#endif /* PF_DRIVER */
|
||||
#define I40E_VF_ARQBAH1 0x00006000 /* Reset: EMPR */
|
||||
#define I40E_VF_ARQBAH1_ARQBAH_SHIFT 0
|
||||
#define I40E_VF_ARQBAH1_ARQBAH_MASK I40E_MASK(0xFFFFFFFF, I40E_VF_ARQBAH1_ARQBAH_SHIFT)
|
||||
|
Loading…
x
Reference in New Issue
Block a user