Commit c78b953e authored by Pawel Orlowski's avatar Pawel Orlowski Committed by Jeff Kirsher

i40e/i40evf: Update Flex-10 related device/function capabilities

The Flex10 device/function capability has been upgraded to include
information needed to support Flex-10 configurations. This patch adds new
fields to the i40e_hw_capabilities structure and updates
i40e_parse_discover_capabilities functions to extract them from the AQ
response. Naming convention has changed to use flex10 mode instead of
existing mfp_mode_1.

Change-ID: I305dd888866985a30293acb3fb14fa43ca6b79ea
Signed-off-by: default avatarPawel Orlowski <pawel.orlowski@intel.com>
Signed-off-by: default avatarAkeem G Abodunrin <akeem.g.abodunrin@intel.com>
Signed-off-by: default avatarShannon Nelson <shannon.nelson@intel.com>
Tested-by: default avatarJim Young <james.m.young@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent d0389e51
...@@ -2391,7 +2391,7 @@ i40e_status i40e_aq_erase_nvm(struct i40e_hw *hw, u8 module_pointer, ...@@ -2391,7 +2391,7 @@ i40e_status i40e_aq_erase_nvm(struct i40e_hw *hw, u8 module_pointer,
#define I40E_DEV_FUNC_CAP_MSIX_VF 0x44 #define I40E_DEV_FUNC_CAP_MSIX_VF 0x44
#define I40E_DEV_FUNC_CAP_FLOW_DIRECTOR 0x45 #define I40E_DEV_FUNC_CAP_FLOW_DIRECTOR 0x45
#define I40E_DEV_FUNC_CAP_IEEE_1588 0x46 #define I40E_DEV_FUNC_CAP_IEEE_1588 0x46
#define I40E_DEV_FUNC_CAP_MFP_MODE_1 0xF1 #define I40E_DEV_FUNC_CAP_FLEX10 0xF1
#define I40E_DEV_FUNC_CAP_CEM 0xF2 #define I40E_DEV_FUNC_CAP_CEM 0xF2
#define I40E_DEV_FUNC_CAP_IWARP 0x51 #define I40E_DEV_FUNC_CAP_IWARP 0x51
#define I40E_DEV_FUNC_CAP_LED 0x61 #define I40E_DEV_FUNC_CAP_LED 0x61
...@@ -2416,6 +2416,7 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff, ...@@ -2416,6 +2416,7 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
u32 valid_functions, num_functions; u32 valid_functions, num_functions;
u32 number, logical_id, phys_id; u32 number, logical_id, phys_id;
struct i40e_hw_capabilities *p; struct i40e_hw_capabilities *p;
u8 major_rev;
u32 i = 0; u32 i = 0;
u16 id; u16 id;
...@@ -2433,6 +2434,7 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff, ...@@ -2433,6 +2434,7 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
number = le32_to_cpu(cap->number); number = le32_to_cpu(cap->number);
logical_id = le32_to_cpu(cap->logical_id); logical_id = le32_to_cpu(cap->logical_id);
phys_id = le32_to_cpu(cap->phys_id); phys_id = le32_to_cpu(cap->phys_id);
major_rev = cap->major_rev;
switch (id) { switch (id) {
case I40E_DEV_FUNC_CAP_SWITCH_MODE: case I40E_DEV_FUNC_CAP_SWITCH_MODE:
...@@ -2507,9 +2509,21 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff, ...@@ -2507,9 +2509,21 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
case I40E_DEV_FUNC_CAP_MSIX_VF: case I40E_DEV_FUNC_CAP_MSIX_VF:
p->num_msix_vectors_vf = number; p->num_msix_vectors_vf = number;
break; break;
case I40E_DEV_FUNC_CAP_MFP_MODE_1: case I40E_DEV_FUNC_CAP_FLEX10:
if (number == 1) if (major_rev == 1) {
p->mfp_mode_1 = true; if (number == 1) {
p->flex10_enable = true;
p->flex10_capable = true;
}
} else {
/* Capability revision >= 2 */
if (number & 1)
p->flex10_enable = true;
if (number & 2)
p->flex10_capable = true;
}
p->flex10_mode = logical_id;
p->flex10_status = phys_id;
break; break;
case I40E_DEV_FUNC_CAP_CEM: case I40E_DEV_FUNC_CAP_CEM:
if (number == 1) if (number == 1)
...@@ -2557,7 +2571,7 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff, ...@@ -2557,7 +2571,7 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
/* Software override ensuring FCoE is disabled if npar or mfp /* Software override ensuring FCoE is disabled if npar or mfp
* mode because it is not supported in these modes. * mode because it is not supported in these modes.
*/ */
if (p->npar_enable || p->mfp_mode_1) if (p->npar_enable || p->flex10_enable)
p->fcoe = false; p->fcoe = false;
/* count the enabled ports (aka the "not disabled" ports) */ /* count the enabled ports (aka the "not disabled" ports) */
......
...@@ -7685,7 +7685,7 @@ static int i40e_sw_init(struct i40e_pf *pf) ...@@ -7685,7 +7685,7 @@ static int i40e_sw_init(struct i40e_pf *pf)
} }
/* MFP mode enabled */ /* MFP mode enabled */
if (pf->hw.func_caps.npar_enable || pf->hw.func_caps.mfp_mode_1) { if (pf->hw.func_caps.npar_enable || pf->hw.func_caps.flex10_enable) {
pf->flags |= I40E_FLAG_MFP_ENABLED; pf->flags |= I40E_FLAG_MFP_ENABLED;
dev_info(&pf->pdev->dev, "MFP mode Enabled\n"); dev_info(&pf->pdev->dev, "MFP mode Enabled\n");
if (i40e_get_npar_bw_setting(pf)) if (i40e_get_npar_bw_setting(pf))
......
...@@ -213,7 +213,17 @@ struct i40e_hw_capabilities { ...@@ -213,7 +213,17 @@ struct i40e_hw_capabilities {
bool dcb; bool dcb;
bool fcoe; bool fcoe;
bool iscsi; /* Indicates iSCSI enabled */ bool iscsi; /* Indicates iSCSI enabled */
bool mfp_mode_1; bool flex10_enable;
bool flex10_capable;
u32 flex10_mode;
#define I40E_FLEX10_MODE_UNKNOWN 0x0
#define I40E_FLEX10_MODE_DCC 0x1
#define I40E_FLEX10_MODE_DCI 0x2
u32 flex10_status;
#define I40E_FLEX10_STATUS_DCC_ERROR 0x1
#define I40E_FLEX10_STATUS_VC_MODE 0x2
bool mgmt_cem; bool mgmt_cem;
bool ieee_1588; bool ieee_1588;
bool iwarp; bool iwarp;
......
...@@ -213,7 +213,17 @@ struct i40e_hw_capabilities { ...@@ -213,7 +213,17 @@ struct i40e_hw_capabilities {
bool dcb; bool dcb;
bool fcoe; bool fcoe;
bool iscsi; /* Indicates iSCSI enabled */ bool iscsi; /* Indicates iSCSI enabled */
bool mfp_mode_1; bool flex10_enable;
bool flex10_capable;
u32 flex10_mode;
#define I40E_FLEX10_MODE_UNKNOWN 0x0
#define I40E_FLEX10_MODE_DCC 0x1
#define I40E_FLEX10_MODE_DCI 0x2
u32 flex10_status;
#define I40E_FLEX10_STATUS_DCC_ERROR 0x1
#define I40E_FLEX10_STATUS_VC_MODE 0x2
bool mgmt_cem; bool mgmt_cem;
bool ieee_1588; bool ieee_1588;
bool iwarp; bool iwarp;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment