|
@@ -300,7 +300,7 @@ static void qed_init_qm_params(struct qed_hwfn *p_hwfn)
|
|
|
qm_info->vport_wfq_en = 1;
|
|
|
|
|
|
/* TC config is different for AH 4 port */
|
|
|
- four_port = p_hwfn->cdev->num_ports_in_engines == MAX_NUM_PORTS_K2;
|
|
|
+ four_port = p_hwfn->cdev->num_ports_in_engine == MAX_NUM_PORTS_K2;
|
|
|
|
|
|
/* in AH 4 port we have fewer TCs per port */
|
|
|
qm_info->max_phys_tcs_per_port = four_port ? NUM_PHYS_TCS_4PORT_K2 :
|
|
@@ -329,7 +329,7 @@ static void qed_init_qm_vport_params(struct qed_hwfn *p_hwfn)
|
|
|
static void qed_init_qm_port_params(struct qed_hwfn *p_hwfn)
|
|
|
{
|
|
|
/* Initialize qm port parameters */
|
|
|
- u8 i, active_phys_tcs, num_ports = p_hwfn->cdev->num_ports_in_engines;
|
|
|
+ u8 i, active_phys_tcs, num_ports = p_hwfn->cdev->num_ports_in_engine;
|
|
|
|
|
|
/* indicate how ooo and high pri traffic is dealt with */
|
|
|
active_phys_tcs = num_ports == MAX_NUM_PORTS_K2 ?
|
|
@@ -693,7 +693,7 @@ static void qed_dp_init_qm_params(struct qed_hwfn *p_hwfn)
|
|
|
qm_info->num_pf_rls, qed_get_pq_flags(p_hwfn));
|
|
|
|
|
|
/* port table */
|
|
|
- for (i = 0; i < p_hwfn->cdev->num_ports_in_engines; i++) {
|
|
|
+ for (i = 0; i < p_hwfn->cdev->num_ports_in_engine; i++) {
|
|
|
port = &(qm_info->qm_port_params[i]);
|
|
|
DP_VERBOSE(p_hwfn,
|
|
|
NETIF_MSG_HW,
|
|
@@ -823,7 +823,7 @@ static int qed_alloc_qm_data(struct qed_hwfn *p_hwfn)
|
|
|
goto alloc_err;
|
|
|
|
|
|
qm_info->qm_port_params = kzalloc(sizeof(*qm_info->qm_port_params) *
|
|
|
- p_hwfn->cdev->num_ports_in_engines,
|
|
|
+ p_hwfn->cdev->num_ports_in_engine,
|
|
|
GFP_KERNEL);
|
|
|
if (!qm_info->qm_port_params)
|
|
|
goto alloc_err;
|
|
@@ -1108,7 +1108,7 @@ static int qed_calc_hw_mode(struct qed_hwfn *p_hwfn)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- switch (p_hwfn->cdev->num_ports_in_engines) {
|
|
|
+ switch (p_hwfn->cdev->num_ports_in_engine) {
|
|
|
case 1:
|
|
|
hw_mode |= 1 << MODE_PORTS_PER_ENG_1;
|
|
|
break;
|
|
@@ -1120,7 +1120,7 @@ static int qed_calc_hw_mode(struct qed_hwfn *p_hwfn)
|
|
|
break;
|
|
|
default:
|
|
|
DP_NOTICE(p_hwfn, "num_ports_in_engine = %d not supported\n",
|
|
|
- p_hwfn->cdev->num_ports_in_engines);
|
|
|
+ p_hwfn->cdev->num_ports_in_engine);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
@@ -1253,7 +1253,7 @@ static int qed_hw_init_common(struct qed_hwfn *p_hwfn,
|
|
|
}
|
|
|
|
|
|
memset(¶ms, 0, sizeof(params));
|
|
|
- params.max_ports_per_engine = p_hwfn->cdev->num_ports_in_engines;
|
|
|
+ params.max_ports_per_engine = p_hwfn->cdev->num_ports_in_engine;
|
|
|
params.max_phys_tcs_per_port = qm_info->max_phys_tcs_per_port;
|
|
|
params.pf_rl_en = qm_info->pf_rl_en;
|
|
|
params.pf_wfq_en = qm_info->pf_wfq_en;
|
|
@@ -1513,7 +1513,8 @@ static int qed_hw_init_pf(struct qed_hwfn *p_hwfn,
|
|
|
qed_int_igu_enable(p_hwfn, p_ptt, int_mode);
|
|
|
|
|
|
/* send function start command */
|
|
|
- rc = qed_sp_pf_start(p_hwfn, p_tunn, p_hwfn->cdev->mf_mode,
|
|
|
+ rc = qed_sp_pf_start(p_hwfn, p_ptt, p_tunn,
|
|
|
+ p_hwfn->cdev->mf_mode,
|
|
|
allow_npar_tx_switch);
|
|
|
if (rc) {
|
|
|
DP_NOTICE(p_hwfn, "Function start ramrod failed\n");
|
|
@@ -1697,6 +1698,11 @@ int qed_hw_init(struct qed_dev *cdev, struct qed_hw_init_params *p_params)
|
|
|
return mfw_rc;
|
|
|
}
|
|
|
|
|
|
+ /* Check if there is a DID mismatch between nvm-cfg/efuse */
|
|
|
+ if (param & FW_MB_PARAM_LOAD_DONE_DID_EFUSE_ERROR)
|
|
|
+ DP_NOTICE(p_hwfn,
|
|
|
+ "warning: device configuration is not supported on this board type. The device may not function as expected.\n");
|
|
|
+
|
|
|
/* send DCBX attention request command */
|
|
|
DP_VERBOSE(p_hwfn,
|
|
|
QED_MSG_DCB,
|
|
@@ -1942,6 +1948,13 @@ int qed_hw_start_fastpath(struct qed_hwfn *p_hwfn)
|
|
|
if (!p_ptt)
|
|
|
return -EAGAIN;
|
|
|
|
|
|
+ /* If roce info is allocated it means roce is initialized and should
|
|
|
+ * be enabled in searcher.
|
|
|
+ */
|
|
|
+ if (p_hwfn->p_rdma_info &&
|
|
|
+ p_hwfn->b_rdma_enabled_in_prs)
|
|
|
+ qed_wr(p_hwfn, p_ptt, p_hwfn->rdma_prs_search_reg, 0x1);
|
|
|
+
|
|
|
/* Re-open incoming traffic */
|
|
|
qed_wr(p_hwfn, p_ptt, NIG_REG_RX_LLH_BRB_GATE_DNTFWD_PERPF, 0x0);
|
|
|
qed_ptt_release(p_hwfn, p_ptt);
|
|
@@ -2239,7 +2252,7 @@ int qed_hw_get_dflt_resc(struct qed_hwfn *p_hwfn,
|
|
|
case QED_BDQ:
|
|
|
if (!*p_resc_num)
|
|
|
*p_resc_start = 0;
|
|
|
- else if (p_hwfn->cdev->num_ports_in_engines == 4)
|
|
|
+ else if (p_hwfn->cdev->num_ports_in_engine == 4)
|
|
|
*p_resc_start = p_hwfn->port_id;
|
|
|
else if (p_hwfn->hw_info.personality == QED_PCI_ISCSI)
|
|
|
*p_resc_start = p_hwfn->port_id;
|
|
@@ -2656,15 +2669,15 @@ static void qed_hw_info_port_num_bb(struct qed_hwfn *p_hwfn,
|
|
|
port_mode = qed_rd(p_hwfn, p_ptt, CNIG_REG_NW_PORT_MODE_BB_B0);
|
|
|
|
|
|
if (port_mode < 3) {
|
|
|
- p_hwfn->cdev->num_ports_in_engines = 1;
|
|
|
+ p_hwfn->cdev->num_ports_in_engine = 1;
|
|
|
} else if (port_mode <= 5) {
|
|
|
- p_hwfn->cdev->num_ports_in_engines = 2;
|
|
|
+ p_hwfn->cdev->num_ports_in_engine = 2;
|
|
|
} else {
|
|
|
DP_NOTICE(p_hwfn, "PORT MODE: %d not supported\n",
|
|
|
- p_hwfn->cdev->num_ports_in_engines);
|
|
|
+ p_hwfn->cdev->num_ports_in_engine);
|
|
|
|
|
|
- /* Default num_ports_in_engines to something */
|
|
|
- p_hwfn->cdev->num_ports_in_engines = 1;
|
|
|
+ /* Default num_ports_in_engine to something */
|
|
|
+ p_hwfn->cdev->num_ports_in_engine = 1;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2674,20 +2687,20 @@ static void qed_hw_info_port_num_ah(struct qed_hwfn *p_hwfn,
|
|
|
u32 port;
|
|
|
int i;
|
|
|
|
|
|
- p_hwfn->cdev->num_ports_in_engines = 0;
|
|
|
+ p_hwfn->cdev->num_ports_in_engine = 0;
|
|
|
|
|
|
for (i = 0; i < MAX_NUM_PORTS_K2; i++) {
|
|
|
port = qed_rd(p_hwfn, p_ptt,
|
|
|
CNIG_REG_NIG_PORT0_CONF_K2 + (i * 4));
|
|
|
if (port & 1)
|
|
|
- p_hwfn->cdev->num_ports_in_engines++;
|
|
|
+ p_hwfn->cdev->num_ports_in_engine++;
|
|
|
}
|
|
|
|
|
|
- if (!p_hwfn->cdev->num_ports_in_engines) {
|
|
|
+ if (!p_hwfn->cdev->num_ports_in_engine) {
|
|
|
DP_NOTICE(p_hwfn, "All NIG ports are inactive\n");
|
|
|
|
|
|
/* Default num_ports_in_engine to something */
|
|
|
- p_hwfn->cdev->num_ports_in_engines = 1;
|
|
|
+ p_hwfn->cdev->num_ports_in_engine = 1;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2806,12 +2819,6 @@ static int qed_get_dev_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
|
|
|
cdev->chip_num, cdev->chip_rev,
|
|
|
cdev->chip_bond_id, cdev->chip_metal);
|
|
|
|
|
|
- if (QED_IS_BB(cdev) && CHIP_REV_IS_A0(cdev)) {
|
|
|
- DP_NOTICE(cdev->hwfns,
|
|
|
- "The chip type/rev (BB A0) is not supported!\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
-
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -4061,7 +4068,7 @@ static int qed_device_num_ports(struct qed_dev *cdev)
|
|
|
if (cdev->num_hwfns > 1)
|
|
|
return 1;
|
|
|
|
|
|
- return cdev->num_ports_in_engines * qed_device_num_engines(cdev);
|
|
|
+ return cdev->num_ports_in_engine * qed_device_num_engines(cdev);
|
|
|
}
|
|
|
|
|
|
int qed_device_get_port_id(struct qed_dev *cdev)
|