net/ice/base: refactor DCB related variables
In this patch, the DCB related variables will be refactored out of the ice_port_info_struct. The goal is to make the ice_port_info struct cleaner. Signed-off-by: Chinh T Cao <chinh.t.cao@intel.com> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Qiming Yang <qiming.yang@intel.com>
This commit is contained in:
parent
af73360557
commit
c6048730ea
@ -850,9 +850,9 @@ ice_get_ieee_or_cee_dcb_cfg(struct ice_port_info *pi, u8 dcbx_mode)
|
||||
return ICE_ERR_PARAM;
|
||||
|
||||
if (dcbx_mode == ICE_DCBX_MODE_IEEE)
|
||||
dcbx_cfg = &pi->local_dcbx_cfg;
|
||||
dcbx_cfg = &pi->qos_cfg.local_dcbx_cfg;
|
||||
else if (dcbx_mode == ICE_DCBX_MODE_CEE)
|
||||
dcbx_cfg = &pi->desired_dcbx_cfg;
|
||||
dcbx_cfg = &pi->qos_cfg.desired_dcbx_cfg;
|
||||
|
||||
/* Get Local DCB Config in case of ICE_DCBX_MODE_IEEE
|
||||
* or get CEE DCB Desired Config in case of ICE_DCBX_MODE_CEE
|
||||
@ -863,7 +863,7 @@ ice_get_ieee_or_cee_dcb_cfg(struct ice_port_info *pi, u8 dcbx_mode)
|
||||
goto out;
|
||||
|
||||
/* Get Remote DCB Config */
|
||||
dcbx_cfg = &pi->remote_dcbx_cfg;
|
||||
dcbx_cfg = &pi->qos_cfg.remote_dcbx_cfg;
|
||||
ret = ice_aq_get_dcb_cfg(pi->hw, ICE_AQ_LLDP_MIB_REMOTE,
|
||||
ICE_AQ_LLDP_BRID_TYPE_NEAREST_BRID, dcbx_cfg);
|
||||
/* Don't treat ENOENT as an error for Remote MIBs */
|
||||
@ -892,14 +892,14 @@ enum ice_status ice_get_dcb_cfg(struct ice_port_info *pi)
|
||||
ret = ice_aq_get_cee_dcb_cfg(pi->hw, &cee_cfg, NULL);
|
||||
if (ret == ICE_SUCCESS) {
|
||||
/* CEE mode */
|
||||
dcbx_cfg = &pi->local_dcbx_cfg;
|
||||
dcbx_cfg = &pi->qos_cfg.local_dcbx_cfg;
|
||||
dcbx_cfg->dcbx_mode = ICE_DCBX_MODE_CEE;
|
||||
dcbx_cfg->tlv_status = LE32_TO_CPU(cee_cfg.tlv_status);
|
||||
ice_cee_to_dcb_cfg(&cee_cfg, dcbx_cfg);
|
||||
ret = ice_get_ieee_or_cee_dcb_cfg(pi, ICE_DCBX_MODE_CEE);
|
||||
} else if (pi->hw->adminq.sq_last_status == ICE_AQ_RC_ENOENT) {
|
||||
/* CEE mode not enabled try querying IEEE data */
|
||||
dcbx_cfg = &pi->local_dcbx_cfg;
|
||||
dcbx_cfg = &pi->qos_cfg.local_dcbx_cfg;
|
||||
dcbx_cfg->dcbx_mode = ICE_DCBX_MODE_IEEE;
|
||||
ret = ice_get_ieee_or_cee_dcb_cfg(pi, ICE_DCBX_MODE_IEEE);
|
||||
}
|
||||
@ -916,26 +916,26 @@ enum ice_status ice_get_dcb_cfg(struct ice_port_info *pi)
|
||||
*/
|
||||
enum ice_status ice_init_dcb(struct ice_hw *hw, bool enable_mib_change)
|
||||
{
|
||||
struct ice_port_info *pi = hw->port_info;
|
||||
struct ice_qos_cfg *qos_cfg = &hw->port_info->qos_cfg;
|
||||
enum ice_status ret = ICE_SUCCESS;
|
||||
|
||||
if (!hw->func_caps.common_cap.dcb)
|
||||
return ICE_ERR_NOT_SUPPORTED;
|
||||
|
||||
pi->is_sw_lldp = true;
|
||||
qos_cfg->is_sw_lldp = true;
|
||||
|
||||
/* Get DCBX status */
|
||||
pi->dcbx_status = ice_get_dcbx_status(hw);
|
||||
qos_cfg->dcbx_status = ice_get_dcbx_status(hw);
|
||||
|
||||
if (pi->dcbx_status == ICE_DCBX_STATUS_DONE ||
|
||||
pi->dcbx_status == ICE_DCBX_STATUS_IN_PROGRESS ||
|
||||
pi->dcbx_status == ICE_DCBX_STATUS_NOT_STARTED) {
|
||||
if (qos_cfg->dcbx_status == ICE_DCBX_STATUS_DONE ||
|
||||
qos_cfg->dcbx_status == ICE_DCBX_STATUS_IN_PROGRESS ||
|
||||
qos_cfg->dcbx_status == ICE_DCBX_STATUS_NOT_STARTED) {
|
||||
/* Get current DCBX configuration */
|
||||
ret = ice_get_dcb_cfg(pi);
|
||||
ret = ice_get_dcb_cfg(hw->port_info);
|
||||
if (ret)
|
||||
return ret;
|
||||
pi->is_sw_lldp = false;
|
||||
} else if (pi->dcbx_status == ICE_DCBX_STATUS_DIS) {
|
||||
qos_cfg->is_sw_lldp = false;
|
||||
} else if (qos_cfg->dcbx_status == ICE_DCBX_STATUS_DIS) {
|
||||
return ICE_ERR_NOT_READY;
|
||||
}
|
||||
|
||||
@ -943,7 +943,7 @@ enum ice_status ice_init_dcb(struct ice_hw *hw, bool enable_mib_change)
|
||||
if (enable_mib_change) {
|
||||
ret = ice_aq_cfg_lldp_mib_change(hw, true, NULL);
|
||||
if (ret)
|
||||
pi->is_sw_lldp = true;
|
||||
qos_cfg->is_sw_lldp = true;
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -958,21 +958,21 @@ enum ice_status ice_init_dcb(struct ice_hw *hw, bool enable_mib_change)
|
||||
*/
|
||||
enum ice_status ice_cfg_lldp_mib_change(struct ice_hw *hw, bool ena_mib)
|
||||
{
|
||||
struct ice_port_info *pi = hw->port_info;
|
||||
struct ice_qos_cfg *qos_cfg = &hw->port_info->qos_cfg;
|
||||
enum ice_status ret;
|
||||
|
||||
if (!hw->func_caps.common_cap.dcb)
|
||||
return ICE_ERR_NOT_SUPPORTED;
|
||||
|
||||
/* Get DCBX status */
|
||||
pi->dcbx_status = ice_get_dcbx_status(hw);
|
||||
qos_cfg->dcbx_status = ice_get_dcbx_status(hw);
|
||||
|
||||
if (pi->dcbx_status == ICE_DCBX_STATUS_DIS)
|
||||
if (qos_cfg->dcbx_status == ICE_DCBX_STATUS_DIS)
|
||||
return ICE_ERR_NOT_READY;
|
||||
|
||||
ret = ice_aq_cfg_lldp_mib_change(hw, ena_mib, NULL);
|
||||
if (!ret)
|
||||
pi->is_sw_lldp = !ena_mib;
|
||||
qos_cfg->is_sw_lldp = !ena_mib;
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -1269,7 +1269,7 @@ enum ice_status ice_set_dcb_cfg(struct ice_port_info *pi)
|
||||
hw = pi->hw;
|
||||
|
||||
/* update the HW local config */
|
||||
dcbcfg = &pi->local_dcbx_cfg;
|
||||
dcbcfg = &pi->qos_cfg.local_dcbx_cfg;
|
||||
/* Allocate the LLDPDU */
|
||||
lldpmib = (u8 *)ice_malloc(hw, ICE_LLDPDU_SIZE);
|
||||
if (!lldpmib)
|
||||
|
@ -753,6 +753,14 @@ struct ice_dcbx_cfg {
|
||||
#define ICE_DCBX_APPS_NON_WILLING 0x1
|
||||
};
|
||||
|
||||
struct ice_qos_cfg {
|
||||
struct ice_dcbx_cfg local_dcbx_cfg; /* Oper/Local Cfg */
|
||||
struct ice_dcbx_cfg desired_dcbx_cfg; /* CEE Desired Cfg */
|
||||
struct ice_dcbx_cfg remote_dcbx_cfg; /* Peer Cfg */
|
||||
u8 dcbx_status : 3; /* see ICE_DCBX_STATUS_DIS */
|
||||
u8 is_sw_lldp : 1;
|
||||
};
|
||||
|
||||
struct ice_port_info {
|
||||
struct ice_sched_node *root; /* Root Node per Port */
|
||||
struct ice_hw *hw; /* back pointer to HW instance */
|
||||
@ -778,13 +786,7 @@ struct ice_port_info {
|
||||
struct LIST_HEAD_TYPE rl_prof_list[ICE_AQC_TOPO_MAX_LEVEL_NUM];
|
||||
struct ice_bw_type_info root_node_bw_t_info;
|
||||
struct ice_bw_type_info tc_node_bw_t_info[ICE_MAX_TRAFFIC_CLASS];
|
||||
struct ice_dcbx_cfg local_dcbx_cfg; /* Oper/Local Cfg */
|
||||
/* DCBX info */
|
||||
struct ice_dcbx_cfg remote_dcbx_cfg; /* Peer Cfg */
|
||||
struct ice_dcbx_cfg desired_dcbx_cfg; /* CEE Desired Cfg */
|
||||
/* LLDP/DCBX Status */
|
||||
u8 dcbx_status:3; /* see ICE_DCBX_STATUS_DIS */
|
||||
u8 is_sw_lldp:1;
|
||||
struct ice_qos_cfg qos_cfg;
|
||||
u8 is_vf:1;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user