qed: Add driver support for 20G link speed.
Add driver support for configuring/reading the 20G link speed. Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com> Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3f60b03f74
commit
5bf0961cc6
@ -2679,6 +2679,9 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
|
|||||||
case NVM_CFG1_PORT_DRV_LINK_SPEED_10G:
|
case NVM_CFG1_PORT_DRV_LINK_SPEED_10G:
|
||||||
link->speed.forced_speed = 10000;
|
link->speed.forced_speed = 10000;
|
||||||
break;
|
break;
|
||||||
|
case NVM_CFG1_PORT_DRV_LINK_SPEED_20G:
|
||||||
|
link->speed.forced_speed = 20000;
|
||||||
|
break;
|
||||||
case NVM_CFG1_PORT_DRV_LINK_SPEED_25G:
|
case NVM_CFG1_PORT_DRV_LINK_SPEED_25G:
|
||||||
link->speed.forced_speed = 25000;
|
link->speed.forced_speed = 25000;
|
||||||
break;
|
break;
|
||||||
|
@ -13154,6 +13154,7 @@ struct nvm_cfg1_port {
|
|||||||
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_OFFSET 0
|
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_OFFSET 0
|
||||||
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_1G 0x1
|
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_1G 0x1
|
||||||
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G 0x2
|
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G 0x2
|
||||||
|
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_20G 0x4
|
||||||
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G 0x8
|
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G 0x8
|
||||||
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_40G 0x10
|
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_40G 0x10
|
||||||
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_50G 0x20
|
#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_50G 0x20
|
||||||
@ -13164,6 +13165,7 @@ struct nvm_cfg1_port {
|
|||||||
#define NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG 0x0
|
#define NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG 0x0
|
||||||
#define NVM_CFG1_PORT_DRV_LINK_SPEED_1G 0x1
|
#define NVM_CFG1_PORT_DRV_LINK_SPEED_1G 0x1
|
||||||
#define NVM_CFG1_PORT_DRV_LINK_SPEED_10G 0x2
|
#define NVM_CFG1_PORT_DRV_LINK_SPEED_10G 0x2
|
||||||
|
#define NVM_CFG1_PORT_DRV_LINK_SPEED_20G 0x3
|
||||||
#define NVM_CFG1_PORT_DRV_LINK_SPEED_25G 0x4
|
#define NVM_CFG1_PORT_DRV_LINK_SPEED_25G 0x4
|
||||||
#define NVM_CFG1_PORT_DRV_LINK_SPEED_40G 0x5
|
#define NVM_CFG1_PORT_DRV_LINK_SPEED_40G 0x5
|
||||||
#define NVM_CFG1_PORT_DRV_LINK_SPEED_50G 0x6
|
#define NVM_CFG1_PORT_DRV_LINK_SPEED_50G 0x6
|
||||||
|
@ -1337,6 +1337,9 @@ static int qed_set_link(struct qed_dev *cdev, struct qed_link_params *params)
|
|||||||
if (params->adv_speeds & QED_LM_10000baseKR_Full_BIT)
|
if (params->adv_speeds & QED_LM_10000baseKR_Full_BIT)
|
||||||
link_params->speed.advertised_speeds |=
|
link_params->speed.advertised_speeds |=
|
||||||
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G;
|
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G;
|
||||||
|
if (params->adv_speeds & QED_LM_20000baseKR2_Full_BIT)
|
||||||
|
link_params->speed.advertised_speeds |=
|
||||||
|
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_20G;
|
||||||
if (params->adv_speeds & QED_LM_25000baseKR_Full_BIT)
|
if (params->adv_speeds & QED_LM_25000baseKR_Full_BIT)
|
||||||
link_params->speed.advertised_speeds |=
|
link_params->speed.advertised_speeds |=
|
||||||
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G;
|
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G;
|
||||||
@ -1502,6 +1505,9 @@ static void qed_fill_link(struct qed_hwfn *hwfn,
|
|||||||
if (params.speed.advertised_speeds &
|
if (params.speed.advertised_speeds &
|
||||||
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G)
|
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G)
|
||||||
if_link->advertised_caps |= QED_LM_10000baseKR_Full_BIT;
|
if_link->advertised_caps |= QED_LM_10000baseKR_Full_BIT;
|
||||||
|
if (params.speed.advertised_speeds &
|
||||||
|
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_20G)
|
||||||
|
if_link->advertised_caps |= QED_LM_20000baseKR2_Full_BIT;
|
||||||
if (params.speed.advertised_speeds &
|
if (params.speed.advertised_speeds &
|
||||||
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G)
|
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G)
|
||||||
if_link->advertised_caps |= QED_LM_25000baseKR_Full_BIT;
|
if_link->advertised_caps |= QED_LM_25000baseKR_Full_BIT;
|
||||||
@ -1522,6 +1528,9 @@ static void qed_fill_link(struct qed_hwfn *hwfn,
|
|||||||
if (link_caps.speed_capabilities &
|
if (link_caps.speed_capabilities &
|
||||||
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G)
|
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G)
|
||||||
if_link->supported_caps |= QED_LM_10000baseKR_Full_BIT;
|
if_link->supported_caps |= QED_LM_10000baseKR_Full_BIT;
|
||||||
|
if (link_caps.speed_capabilities &
|
||||||
|
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_20G)
|
||||||
|
if_link->supported_caps |= QED_LM_20000baseKR2_Full_BIT;
|
||||||
if (link_caps.speed_capabilities &
|
if (link_caps.speed_capabilities &
|
||||||
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G)
|
NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G)
|
||||||
if_link->supported_caps |= QED_LM_25000baseKR_Full_BIT;
|
if_link->supported_caps |= QED_LM_25000baseKR_Full_BIT;
|
||||||
@ -1559,6 +1568,8 @@ static void qed_fill_link(struct qed_hwfn *hwfn,
|
|||||||
if_link->lp_caps |= QED_LM_1000baseT_Full_BIT;
|
if_link->lp_caps |= QED_LM_1000baseT_Full_BIT;
|
||||||
if (link.partner_adv_speed & QED_LINK_PARTNER_SPEED_10G)
|
if (link.partner_adv_speed & QED_LINK_PARTNER_SPEED_10G)
|
||||||
if_link->lp_caps |= QED_LM_10000baseKR_Full_BIT;
|
if_link->lp_caps |= QED_LM_10000baseKR_Full_BIT;
|
||||||
|
if (link.partner_adv_speed & QED_LINK_PARTNER_SPEED_20G)
|
||||||
|
if_link->lp_caps |= QED_LM_20000baseKR2_Full_BIT;
|
||||||
if (link.partner_adv_speed & QED_LINK_PARTNER_SPEED_25G)
|
if (link.partner_adv_speed & QED_LINK_PARTNER_SPEED_25G)
|
||||||
if_link->lp_caps |= QED_LM_25000baseKR_Full_BIT;
|
if_link->lp_caps |= QED_LM_25000baseKR_Full_BIT;
|
||||||
if (link.partner_adv_speed & QED_LINK_PARTNER_SPEED_40G)
|
if (link.partner_adv_speed & QED_LINK_PARTNER_SPEED_40G)
|
||||||
|
@ -670,10 +670,11 @@ enum qed_link_mode_bits {
|
|||||||
QED_LM_1000baseT_Half_BIT = BIT(4),
|
QED_LM_1000baseT_Half_BIT = BIT(4),
|
||||||
QED_LM_1000baseT_Full_BIT = BIT(5),
|
QED_LM_1000baseT_Full_BIT = BIT(5),
|
||||||
QED_LM_10000baseKR_Full_BIT = BIT(6),
|
QED_LM_10000baseKR_Full_BIT = BIT(6),
|
||||||
QED_LM_25000baseKR_Full_BIT = BIT(7),
|
QED_LM_20000baseKR2_Full_BIT = BIT(7),
|
||||||
QED_LM_40000baseLR4_Full_BIT = BIT(8),
|
QED_LM_25000baseKR_Full_BIT = BIT(8),
|
||||||
QED_LM_50000baseKR2_Full_BIT = BIT(9),
|
QED_LM_40000baseLR4_Full_BIT = BIT(9),
|
||||||
QED_LM_100000baseKR4_Full_BIT = BIT(10),
|
QED_LM_50000baseKR2_Full_BIT = BIT(10),
|
||||||
|
QED_LM_100000baseKR4_Full_BIT = BIT(11),
|
||||||
QED_LM_COUNT = 11
|
QED_LM_COUNT = 11
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user