diff --git a/drivers/net/ethernet/huawei/hinic/hinic_cfg.c b/drivers/net/ethernet/huawei/hinic/hinic_cfg.c index 07bc87d47f78c39b56f66472a34c856117e0a48b..18937d7d905748bcd23a96bf30c129eff8745e8d 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_cfg.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_cfg.c @@ -148,7 +148,8 @@ static void parse_sf_en_cap(struct service_cap *cap, } } -static void parse_pub_res_cap(struct service_cap *cap, +static void parse_pub_res_cap(struct hinic_hwdev *hwdev, + struct service_cap *cap, struct hinic_dev_cap *dev_cap, enum func_type type) { @@ -212,31 +213,32 @@ static void parse_pub_res_cap(struct service_cap *cap, if (cap->net_port_mode == CFG_NET_MODE_FC) cap->max_vf = 0; - pr_info("Get public resource capbility, svc_cap_en: 0x%x\n", - dev_cap->svc_cap_en); - pr_info("Host_id=0x%x, ep_id=0x%x, max_cos_id=0x%x, cos_bitmap=0x%x, er_id=0x%x, port_id=0x%x\n", - cap->host_id, cap->ep_id, - cap->max_cos_id, cap->cos_valid_bitmap, - cap->er_id, cap->port_id); - pr_info("Host_total_function=0x%x, host_oq_id_mask_val=0x%x, net_port_mode=0x%x, max_vf=0x%x\n", - cap->host_total_function, cap->host_oq_id_mask_val, - cap->net_port_mode, cap->max_vf); + sdk_info(hwdev->dev_hdl, "Get public resource capbility, svc_cap_en: 0x%x\n", + dev_cap->svc_cap_en); + sdk_info(hwdev->dev_hdl, "Host_id=0x%x, ep_id=0x%x, max_cos_id=0x%x, cos_bitmap=0x%x, er_id=0x%x, port_id=0x%x\n", + cap->host_id, cap->ep_id, + cap->max_cos_id, cap->cos_valid_bitmap, + cap->er_id, cap->port_id); + sdk_info(hwdev->dev_hdl, "Host_total_function=0x%x, host_oq_id_mask_val=0x%x, net_port_mode=0x%x, max_vf=0x%x\n", + cap->host_total_function, cap->host_oq_id_mask_val, + cap->net_port_mode, cap->max_vf); - pr_info("Pf_num=0x%x, pf_id_start=0x%x, vf_num=0x%x, vf_id_start=0x%x\n", - cap->pf_num, cap->pf_id_start, - cap->vf_num, cap->vf_id_start); + sdk_info(hwdev->dev_hdl, "Pf_num=0x%x, pf_id_start=0x%x, vf_num=0x%x, vf_id_start=0x%x\n", + cap->pf_num, cap->pf_id_start, + cap->vf_num, cap->vf_id_start); /* Check parameters from firmware */ if (cap->max_sqs > HINIC_CFG_MAX_QP || cap->max_rqs > HINIC_CFG_MAX_QP) { - pr_info("Number of qp exceed limit[1-%d]: sq: %d, rq: %d\n", - HINIC_CFG_MAX_QP, cap->max_sqs, cap->max_rqs); + sdk_info(hwdev->dev_hdl, "Number of qp exceed limit[1-%d]: sq: %d, rq: %d\n", + HINIC_CFG_MAX_QP, cap->max_sqs, cap->max_rqs); cap->max_sqs = HINIC_CFG_MAX_QP; cap->max_rqs = HINIC_CFG_MAX_QP; } } -static void parse_dynamic_share_res_cap(struct service_cap *cap, +static void parse_dynamic_share_res_cap(struct hinic_hwdev *hwdev, + struct service_cap *cap, struct hinic_dev_cap *dev_cap, enum func_type type) { @@ -254,15 +256,14 @@ static void parse_dynamic_share_res_cap(struct service_cap *cap, shared_cap->host_srqs = dev_cap->host_srq_num; shared_cap->host_mpts = dev_cap->host_mpt_num; - pr_info("Dynamic share resource capbility, host_pctxs=0x%x, host_cctxs=0x%x, host_scqs=0x%x, host_srqs=0x%x, host_mpts=0x%x\n", - shared_cap->host_pctxs, - shared_cap->host_cctxs, - shared_cap->host_scqs, - shared_cap->host_srqs, - shared_cap->host_mpts); + sdk_info(hwdev->dev_hdl, "Dynamic share resource capbility, host_pctxs=0x%x, host_cctxs=0x%x, host_scqs=0x%x, host_srqs=0x%x, host_mpts=0x%x\n", + shared_cap->host_pctxs, shared_cap->host_cctxs, + shared_cap->host_scqs, shared_cap->host_srqs, + shared_cap->host_mpts); } -static void parse_l2nic_res_cap(struct service_cap *cap, +static void parse_l2nic_res_cap(struct hinic_hwdev *hwdev, + struct service_cap *cap, struct hinic_dev_cap *dev_cap, enum func_type type) { @@ -293,24 +294,23 @@ static void parse_l2nic_res_cap(struct service_cap *cap, nic_cap->lro_sz = dev_cap->nic_lro_sz; nic_cap->tso_sz = dev_cap->nic_tso_sz; - pr_info("L2nic resource capbility, max_sqs=0x%x, max_rqs=0x%x, vf_max_sqs=0x%x, vf_max_rqs=0x%x, max_queue_allowed=0x%x\n", - nic_cap->max_sqs, - nic_cap->max_rqs, - nic_cap->vf_max_sqs, - nic_cap->vf_max_rqs, - nic_cap->max_queue_allowed); + sdk_info(hwdev->dev_hdl, "L2nic resource capbility, max_sqs=0x%x, max_rqs=0x%x, vf_max_sqs=0x%x, vf_max_rqs=0x%x, max_queue_allowed=0x%x\n", + nic_cap->max_sqs, nic_cap->max_rqs, + nic_cap->vf_max_sqs, nic_cap->vf_max_rqs, + nic_cap->max_queue_allowed); /* Check parameters from firmware */ if (nic_cap->max_sqs > HINIC_CFG_MAX_QP || nic_cap->max_rqs > HINIC_CFG_MAX_QP) { - pr_info("Number of qp exceed limit[1-%d]: sq: %d, rq: %d\n", - HINIC_CFG_MAX_QP, nic_cap->max_sqs, nic_cap->max_rqs); + sdk_info(hwdev->dev_hdl, "Number of qp exceed limit[1-%d]: sq: %d, rq: %d\n", + HINIC_CFG_MAX_QP, nic_cap->max_sqs, nic_cap->max_rqs); nic_cap->max_sqs = HINIC_CFG_MAX_QP; nic_cap->max_rqs = HINIC_CFG_MAX_QP; } } -static void parse_roce_res_cap(struct service_cap *cap, +static void parse_roce_res_cap(struct hinic_hwdev *hwdev, + struct service_cap *cap, struct hinic_dev_cap *dev_cap, enum func_type type) { @@ -348,26 +348,26 @@ static void parse_roce_res_cap(struct service_cap *cap, roce_cap->wqe_cl_end = dev_cap->roce_wqe_cl_end; roce_cap->wqe_cl_sz = dev_cap->roce_wqe_cl_size; - pr_info("Get roce resource capbility\n"); - pr_info("Max_qps=0x%x, max_cqs=0x%x, max_srqs=0x%x, max_mpts=0x%x\n", - roce_cap->max_qps, roce_cap->max_cqs, - roce_cap->max_srqs, roce_cap->max_mpts); + sdk_info(hwdev->dev_hdl, "Get roce resource capbility\n"); + sdk_info(hwdev->dev_hdl, "Max_qps=0x%x, max_cqs=0x%x, max_srqs=0x%x, max_mpts=0x%x\n", + roce_cap->max_qps, roce_cap->max_cqs, + roce_cap->max_srqs, roce_cap->max_mpts); - pr_info("Vf_max_qps=0x%x, vf_max_cqs=0x%x, vf_max_srqs= 0x%x, vf_max_mpts= 0x%x\n", - roce_cap->vf_max_qps, roce_cap->vf_max_cqs, - roce_cap->vf_max_srqs, roce_cap->vf_max_mpts); + sdk_info(hwdev->dev_hdl, "Vf_max_qps=0x%x, vf_max_cqs=0x%x, vf_max_srqs= 0x%x, vf_max_mpts= 0x%x\n", + roce_cap->vf_max_qps, roce_cap->vf_max_cqs, + roce_cap->vf_max_srqs, roce_cap->vf_max_mpts); - pr_info("Cmtt_start=0x%x, cmtt_end=0x%x, cmtt_sz=0x%x\n", - roce_cap->cmtt_cl_start, roce_cap->cmtt_cl_end, - roce_cap->cmtt_cl_sz); + sdk_info(hwdev->dev_hdl, "Cmtt_start=0x%x, cmtt_end=0x%x, cmtt_sz=0x%x\n", + roce_cap->cmtt_cl_start, roce_cap->cmtt_cl_end, + roce_cap->cmtt_cl_sz); - pr_info("Dmtt_start=0x%x, dmtt_end=0x%x, dmtt_sz=0x%x\n", - roce_cap->dmtt_cl_start, roce_cap->dmtt_cl_end, - roce_cap->dmtt_cl_sz); + sdk_info(hwdev->dev_hdl, "Dmtt_start=0x%x, dmtt_end=0x%x, dmtt_sz=0x%x\n", + roce_cap->dmtt_cl_start, roce_cap->dmtt_cl_end, + roce_cap->dmtt_cl_sz); - pr_info("Wqe_start=0x%x, wqe_end=0x%x, wqe_sz=0x%x\n", - roce_cap->wqe_cl_start, roce_cap->wqe_cl_end, - roce_cap->wqe_cl_sz); + sdk_info(hwdev->dev_hdl, "Wqe_start=0x%x, wqe_end=0x%x, wqe_sz=0x%x\n", + roce_cap->wqe_cl_start, roce_cap->wqe_cl_end, + roce_cap->wqe_cl_sz); if (roce_cap->max_qps == 0) { roce_cap->max_qps = 1024; @@ -384,7 +384,8 @@ static void parse_roce_res_cap(struct service_cap *cap, } } -static void parse_iwarp_res_cap(struct service_cap *cap, +static void parse_iwarp_res_cap(struct hinic_hwdev *hwdev, + struct service_cap *cap, struct hinic_dev_cap *dev_cap, enum func_type type) @@ -420,25 +421,25 @@ static void parse_iwarp_res_cap(struct service_cap *cap, iwarp_cap->wqe_cl_end = dev_cap->iwarp_wqe_cl_end; iwarp_cap->wqe_cl_sz = dev_cap->iwarp_wqe_cl_size; - pr_info("Get iwrap resource capbility\n"); - pr_info("Max_qps=0x%x, max_cqs=0x%x, max_mpts=0x%x\n", - iwarp_cap->max_qps, iwarp_cap->max_cqs, - iwarp_cap->max_mpts); - pr_info("Vf_max_qps=0x%x, vf_max_cqs=0x%x, vf_max_mpts=0x%x\n", - iwarp_cap->vf_max_qps, iwarp_cap->vf_max_cqs, - iwarp_cap->vf_max_mpts); + sdk_info(hwdev->dev_hdl, "Get iwrap resource capbility\n"); + sdk_info(hwdev->dev_hdl, "Max_qps=0x%x, max_cqs=0x%x, max_mpts=0x%x\n", + iwarp_cap->max_qps, iwarp_cap->max_cqs, + iwarp_cap->max_mpts); + sdk_info(hwdev->dev_hdl, "Vf_max_qps=0x%x, vf_max_cqs=0x%x, vf_max_mpts=0x%x\n", + iwarp_cap->vf_max_qps, iwarp_cap->vf_max_cqs, + iwarp_cap->vf_max_mpts); - pr_info("Cmtt_start=0x%x, cmtt_end=0x%x, cmtt_sz=0x%x\n", - iwarp_cap->cmtt_cl_start, iwarp_cap->cmtt_cl_end, - iwarp_cap->cmtt_cl_sz); + sdk_info(hwdev->dev_hdl, "Cmtt_start=0x%x, cmtt_end=0x%x, cmtt_sz=0x%x\n", + iwarp_cap->cmtt_cl_start, iwarp_cap->cmtt_cl_end, + iwarp_cap->cmtt_cl_sz); - pr_info("Dmtt_start=0x%x, dmtt_end=0x%x, dmtt_sz=0x%x\n", - iwarp_cap->dmtt_cl_start, iwarp_cap->dmtt_cl_end, - iwarp_cap->dmtt_cl_sz); + sdk_info(hwdev->dev_hdl, "Dmtt_start=0x%x, dmtt_end=0x%x, dmtt_sz=0x%x\n", + iwarp_cap->dmtt_cl_start, iwarp_cap->dmtt_cl_end, + iwarp_cap->dmtt_cl_sz); - pr_info("Wqe_start=0x%x, wqe_end=0x%x, wqe_sz=0x%x\n", - iwarp_cap->wqe_cl_start, iwarp_cap->wqe_cl_end, - iwarp_cap->wqe_cl_sz); + sdk_info(hwdev->dev_hdl, "Wqe_start=0x%x, wqe_end=0x%x, wqe_sz=0x%x\n", + iwarp_cap->wqe_cl_start, iwarp_cap->wqe_cl_end, + iwarp_cap->wqe_cl_sz); if (iwarp_cap->max_qps == 0) { iwarp_cap->max_qps = 8; @@ -453,7 +454,8 @@ static void parse_iwarp_res_cap(struct service_cap *cap, } } -static void parse_fcoe_res_cap(struct service_cap *cap, +static void parse_fcoe_res_cap(struct hinic_hwdev *hwdev, + struct service_cap *cap, struct hinic_dev_cap *dev_cap, enum func_type type) { @@ -467,15 +469,16 @@ static void parse_fcoe_res_cap(struct service_cap *cap, fcoe_cap->vp_id_start = dev_cap->fcoe_vp_id_start; fcoe_cap->vp_id_end = dev_cap->fcoe_vp_id_end; - pr_info("Get fcoe resource capbility\n"); - pr_info("Max_qps=0x%x, max_cqs=0x%x, max_srqs=0x%x, max_cctxs=0x%x, cctxs_id_start=0x%x\n", - fcoe_cap->max_qps, fcoe_cap->max_cqs, fcoe_cap->max_srqs, - fcoe_cap->max_cctxs, fcoe_cap->cctxs_id_start); - pr_info("Vp_id_start=0x%x, vp_id_end=0x%x\n", - fcoe_cap->vp_id_start, fcoe_cap->vp_id_end); + sdk_info(hwdev->dev_hdl, "Get fcoe resource capbility\n"); + sdk_info(hwdev->dev_hdl, "Max_qps=0x%x, max_cqs=0x%x, max_srqs=0x%x, max_cctxs=0x%x, cctxs_id_start=0x%x\n", + fcoe_cap->max_qps, fcoe_cap->max_cqs, fcoe_cap->max_srqs, + fcoe_cap->max_cctxs, fcoe_cap->cctxs_id_start); + sdk_info(hwdev->dev_hdl, "Vp_id_start=0x%x, vp_id_end=0x%x\n", + fcoe_cap->vp_id_start, fcoe_cap->vp_id_end); } -static void parse_toe_res_cap(struct service_cap *cap, +static void parse_toe_res_cap(struct hinic_hwdev *hwdev, + struct service_cap *cap, struct hinic_dev_cap *dev_cap, enum func_type type) { @@ -487,12 +490,13 @@ static void parse_toe_res_cap(struct service_cap *cap, toe_cap->srq_id_start = dev_cap->toe_srq_id_start; toe_cap->num_cos = dev_cap->max_cos_id + 1; - pr_info("Get toe resource capbility, max_pctxs=0x%x, max_cqs=0x%x, max_srqs=0x%x, srq_id_start=0x%x\n", - toe_cap->max_pctxs, toe_cap->max_cqs, toe_cap->max_srqs, - toe_cap->srq_id_start); + sdk_info(hwdev->dev_hdl, "Get toe resource capbility, max_pctxs=0x%x, max_cqs=0x%x, max_srqs=0x%x, srq_id_start=0x%x\n", + toe_cap->max_pctxs, toe_cap->max_cqs, toe_cap->max_srqs, + toe_cap->srq_id_start); } -static void parse_fc_res_cap(struct service_cap *cap, +static void parse_fc_res_cap(struct hinic_hwdev *hwdev, + struct service_cap *cap, struct hinic_dev_cap *dev_cap, enum func_type type) { @@ -506,15 +510,16 @@ static void parse_fc_res_cap(struct service_cap *cap, fc_cap->vp_id_start = dev_cap->fc_vp_id_start; fc_cap->vp_id_end = dev_cap->fc_vp_id_end; - pr_info("Get fc resource capbility\n"); - pr_info("Max_parent_qpc_num=0x%x, scq_num=0x%x, srq_num=0x%x, max_child_qpc_num=0x%x, child_qpc_id_start=0x%x\n", - fc_cap->max_parent_qpc_num, fc_cap->scq_num, fc_cap->srq_num, - fc_cap->max_child_qpc_num, fc_cap->child_qpc_id_start); - pr_info("Vp_id_start=0x%x, vp_id_end=0x%x\n", - fc_cap->vp_id_start, fc_cap->vp_id_end); + sdk_info(hwdev->dev_hdl, "Get fc resource capbility\n"); + sdk_info(hwdev->dev_hdl, "Max_parent_qpc_num=0x%x, scq_num=0x%x, srq_num=0x%x, max_child_qpc_num=0x%x, child_qpc_id_start=0x%x\n", + fc_cap->max_parent_qpc_num, fc_cap->scq_num, fc_cap->srq_num, + fc_cap->max_child_qpc_num, fc_cap->child_qpc_id_start); + sdk_info(hwdev->dev_hdl, "Vp_id_start=0x%x, vp_id_end=0x%x\n", + fc_cap->vp_id_start, fc_cap->vp_id_end); } -static void parse_ovs_res_cap(struct service_cap *cap, +static void parse_ovs_res_cap(struct hinic_hwdev *hwdev, + struct service_cap *cap, struct hinic_dev_cap *dev_cap, enum func_type type) { @@ -526,8 +531,8 @@ static void parse_ovs_res_cap(struct service_cap *cap, if (type == TYPE_PF || type == TYPE_PPF) ovs_cap->dev_ovs_cap.dynamic_qp_en = dev_cap->ovs_dq_en; - pr_info("Get ovs resource capbility, max_qpc: 0x%x\n", - ovs_cap->dev_ovs_cap.max_pctxs); + sdk_info(hwdev->dev_hdl, "Get ovs resource capbility, max_qpc: 0x%x\n", + ovs_cap->dev_ovs_cap.max_pctxs); } static void parse_acl_res_cap(struct service_cap *cap, @@ -546,39 +551,39 @@ static void parse_dev_cap(struct hinic_hwdev *dev, struct service_cap *cap = &dev->cfg_mgmt->svc_cap; /* Public resource */ - parse_pub_res_cap(cap, dev_cap, type); + parse_pub_res_cap(dev, cap, dev_cap, type); /* PPF managed dynamic resource */ if (type == TYPE_PPF) - parse_dynamic_share_res_cap(cap, dev_cap, type); + parse_dynamic_share_res_cap(dev, cap, dev_cap, type); /* L2 NIC resource */ if (IS_NIC_TYPE(dev)) - parse_l2nic_res_cap(cap, dev_cap, type); + parse_l2nic_res_cap(dev, cap, dev_cap, type); /* FCoE/IOE/TOE/FC without virtulization */ if (type == TYPE_PF || type == TYPE_PPF) { if (IS_FC_TYPE(dev)) - parse_fc_res_cap(cap, dev_cap, type); + parse_fc_res_cap(dev, cap, dev_cap, type); if (IS_FCOE_TYPE(dev)) - parse_fcoe_res_cap(cap, dev_cap, type); + parse_fcoe_res_cap(dev, cap, dev_cap, type); if (IS_TOE_TYPE(dev)) - parse_toe_res_cap(cap, dev_cap, type); + parse_toe_res_cap(dev, cap, dev_cap, type); } /* RoCE resource */ if (IS_ROCE_TYPE(dev)) - parse_roce_res_cap(cap, dev_cap, type); + parse_roce_res_cap(dev, cap, dev_cap, type); /* iWARP resource */ if (IS_IWARP_TYPE(dev)) - parse_iwarp_res_cap(cap, dev_cap, type); + parse_iwarp_res_cap(dev, cap, dev_cap, type); if (IS_OVS_TYPE(dev)) - parse_ovs_res_cap(cap, dev_cap, type); + parse_ovs_res_cap(dev, cap, dev_cap, type); if (IS_ACL_TYPE(dev)) parse_acl_res_cap(cap, dev_cap, type); diff --git a/drivers/net/ethernet/huawei/hinic/hinic_cmdq.c b/drivers/net/ethernet/huawei/hinic/hinic_cmdq.c index 61bf9a829d0d3f87db6726452e30f2dcb56139d3..7293ff216a7ce301d618c008b61a1d2d2152dd04 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_cmdq.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_cmdq.c @@ -689,8 +689,8 @@ static int cmdq_sync_cmd_direct_resp(struct hinic_cmdq *cmdq, if (!err) goto timeout_check_ok; - sdk_err(cmdq->hwdev->dev_hdl, "Cmdq sync command timeout, prod idx: 0x%x\n", - curr_prod_idx); + sdk_err(cmdq->hwdev->dev_hdl, "Cmdq sync command timeout, mod: %d cmd: 0x%x prod idx: 0x%x\n", + mod, cmd, curr_prod_idx); hinic_dump_ceq_info(cmdq->hwdev); return -ETIMEDOUT; } @@ -819,8 +819,8 @@ static int cmdq_sync_cmd_detail_resp(struct hinic_cmdq *cmdq, if (!err) goto timeout_check_ok; - sdk_err(cmdq->hwdev->dev_hdl, "Cmdq sync command timeout, prod idx: 0x%x\n", - curr_prod_idx); + sdk_err(cmdq->hwdev->dev_hdl, "Cmdq sync command timeout, mod: %d cmd: 0x%x prod idx: 0x%x\n", + mod, cmd, curr_prod_idx); hinic_dump_ceq_info(cmdq->hwdev); return -ETIMEDOUT; } diff --git a/drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c b/drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c index 535f41a8851cee828d8c7060f2266f5e3a7eeeb6..0137ee0c072d03e27452a65ab33880a99eda1063 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c @@ -630,6 +630,7 @@ void ffm_intr_msg_record(void *handle, void *buf_in, u16 in_size, struct timex txc; struct rtc_time rctm; struct card_node *card_info = NULL; + struct hinic_hwdev *hwdev = handle; bool flag = false; int i, j; @@ -667,7 +668,8 @@ void ffm_intr_msg_record(void *handle, void *buf_in, u16 in_size, ffm_idx = dbgtool_info->ffm->ffm_num; if (ffm_idx < FFM_RECORD_NUM_MAX) { - pr_info("%s: recv intr, ffm_idx: %d\n", __func__, ffm_idx); + nic_info(hwdev->dev_hdl, "%s: recv intr, ffm_idx: %d\n", + __func__, ffm_idx); dbgtool_info->ffm->ffm[ffm_idx].node_id = intr->node_id; dbgtool_info->ffm->ffm[ffm_idx].err_level = intr->err_level; diff --git a/drivers/net/ethernet/huawei/hinic/hinic_eqs.c b/drivers/net/ethernet/huawei/hinic/hinic_eqs.c index ccac811f948dd4b625de72b5c5d8f13aa7525cdd..22fc49d16462338c36183d5be90cae94b2000394 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_eqs.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_eqs.c @@ -1163,8 +1163,8 @@ static int init_eq(struct hinic_eq *eq, struct hinic_hwdev *hwdev, u16 q_id, "hinic_aeq%d@pci:%s", eq->q_id, pci_name(hwdev->pcidev_hdl)); if (err <= 0 || err >= (int)sizeof(eq->irq_name)) { - pr_err("Failed snprintf irq_name, function return(%d) and dest_len(%d)\n", - err, (int)sizeof(eq->irq_name)); + sdk_err(hwdev->dev_hdl, "Failed snprintf irq_name, function return(%d) and dest_len(%d)\n", + err, (int)sizeof(eq->irq_name)); err = -EINVAL; goto req_irq_err; } @@ -1175,8 +1175,8 @@ static int init_eq(struct hinic_eq *eq, struct hinic_hwdev *hwdev, u16 q_id, "hinic_ceq%d@pci:%s", eq->q_id, pci_name(hwdev->pcidev_hdl)); if (err <= 0 || err >= (int)sizeof(eq->irq_name)) { - pr_err("Failed snprintf irq_name, function return(%d) and dest_len(%d)\n", - err, (int)sizeof(eq->irq_name)); + sdk_err(hwdev->dev_hdl, "Failed snprintf irq_name, function return(%d) and dest_len(%d)\n", + err, (int)sizeof(eq->irq_name)); err = -EINVAL; goto req_irq_err; } diff --git a/drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.h b/drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.h index 43602591b6ae53ebecf42a3c7d7e098355f14cbd..39778e8b762a13fbbc42999d371789cf3b130c3e 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.h +++ b/drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.h @@ -494,6 +494,7 @@ enum hinic_msix_state { void hinic_set_msix_state(void *hwdev, u16 msix_idx, enum hinic_msix_state flag); +enum hinic_msix_state hinic_get_msix_state(void *hwdev, u16 msix_idx); /* Define the version information structure */ struct dev_version_info { diff --git a/drivers/net/ethernet/huawei/hinic/hinic_hwif.c b/drivers/net/ethernet/huawei/hinic/hinic_hwif.c index dcb7471227cf880246170080dff0f9d89f328dd2..ee01ca21e3f2711499f0d933c49948eb795a58bd 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_hwif.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_hwif.c @@ -458,6 +458,23 @@ int hinic_alloc_db_phy_addr(void *hwdev, u64 *db_base, u64 *dwqe_base) } EXPORT_SYMBOL(hinic_alloc_db_phy_addr); +enum hinic_msix_state hinic_get_msix_state(void *hwdev, u16 msix_idx) +{ + struct hinic_hwif *hwif = NULL; + u32 offset = msix_idx * HINIC_PCI_MSIX_ENTRY_SIZE + + HINIC_PCI_MSIX_ENTRY_VECTOR_CTRL; + u32 mask_bits; + + if (!hwdev) + return HINIC_MSIX_DISABLE; + + hwif = ((struct hinic_hwdev *)hwdev)->hwif; + + mask_bits = readl(hwif->intr_regs_base + offset); + + return !!(mask_bits & HINIC_PCI_MSIX_ENTRY_CTRL_MASKBIT); +} + void hinic_set_msix_state(void *hwdev, u16 msix_idx, enum hinic_msix_state flag) { struct hinic_hwif *hwif; @@ -614,10 +631,10 @@ int hinic_init_hwif(struct hinic_hwdev *hwdev, void *cfg_reg_base, /* disable mgmt cpu report any event */ hinic_set_pf_status(hwdev->hwif, HINIC_PF_STATUS_INIT); - pr_info("global_func_idx: %d, func_type: %d, host_id: %d, ppf: %d, mpf: %d\n", - hwif->attr.func_global_idx, hwif->attr.func_type, - hwif->attr.pci_intf_idx, hwif->attr.ppf_idx, - hwif->attr.mpf_idx); + sdk_info(hwdev->dev_hdl, "global_func_idx: %d, func_type: %d, host_id: %d, ppf: %d, mpf: %d\n", + hwif->attr.func_global_idx, hwif->attr.func_type, + hwif->attr.pci_intf_idx, hwif->attr.ppf_idx, + hwif->attr.mpf_idx); return 0; diff --git a/drivers/net/ethernet/huawei/hinic/hinic_main.c b/drivers/net/ethernet/huawei/hinic/hinic_main.c index 30a51984d9fdda24fb843a1d8fadcff929426f2d..d4b2f42ef462dec51d0359b3697dcf6471081344 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_main.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c @@ -1242,6 +1242,7 @@ static void hinic_get_stats64(struct net_device *netdev, static void hinic_tx_timeout(struct net_device *netdev) { struct hinic_nic_dev *nic_dev = netdev_priv(netdev); + u16 msix_idx; u8 q_id; HINIC_NIC_STATS_INC(nic_dev, netdev_tx_timeout); @@ -1251,12 +1252,15 @@ static void hinic_tx_timeout(struct net_device *netdev) if (!netif_xmit_stopped(netdev_get_tx_queue(netdev, q_id))) continue; + msix_idx = nic_dev->irq_cfg[q_id].msix_entry_idx; nicif_info(nic_dev, drv, netdev, - "txq%d: sw_pi: %d, hw_ci: %d, sw_ci: %d, napi->state: 0x%lx\n", + "txq%d: sw_pi: %d, hw_ci: %d, sw_ci: %d, napi->state: 0x%lx, msix mask: %d, intr_flag: 0x%lx\n", q_id, hinic_dbg_get_sq_pi(nic_dev->hwdev, q_id), hinic_get_sq_hw_ci(nic_dev->hwdev, q_id), hinic_get_sq_local_ci(nic_dev->hwdev, q_id), - nic_dev->irq_cfg[q_id].napi.state); + nic_dev->irq_cfg[q_id].napi.state, + hinic_get_msix_state(nic_dev->hwdev, msix_idx), + nic_dev->irq_cfg[q_id].intr_flag); } } diff --git a/drivers/net/ethernet/huawei/hinic/hinic_mbox.c b/drivers/net/ethernet/huawei/hinic/hinic_mbox.c index 7e77d0319931698ed73e6a5dd07a12839c1dbf5b..fc91bdffe1eb9f97ef2c5923d6eed2eebc2ec201 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_mbox.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_mbox.c @@ -1118,6 +1118,7 @@ static int send_mbox_seg(struct hinic_mbox_func_to_func *func_to_func, mbox_retry_get_ack(func_to_func, done, rsp_aeq)) { sdk_err(hwdev->dev_hdl, "Send mailbox segment timeout\n"); dump_mox_reg(hwdev); + hinic_dump_aeq_info(hwdev); return -ETIMEDOUT; } @@ -1234,8 +1235,8 @@ int hinic_mbox_to_func(struct hinic_mbox_func_to_func *func_to_func, dst_func, HINIC_HWIF_DIRECT_SEND, MBOX_ACK, &msg_info); if (err) { - sdk_err(func_to_func->hwdev->dev_hdl, "Send mailbox failed, msg_id: %d\n", - msg_info.msg_id); + sdk_err(func_to_func->hwdev->dev_hdl, "Send mailbox mod %d cmd 0x%x failed, msg_id: %d\n", + mod, cmd, msg_info.msg_id); set_mbox_to_func_event(func_to_func, EVENT_FAIL); goto send_err; } @@ -1247,7 +1248,9 @@ int hinic_mbox_to_func(struct hinic_mbox_func_to_func *func_to_func, HINIC_HWIF_DIRECT_SEND))) { set_mbox_to_func_event(func_to_func, EVENT_TIMEOUT); sdk_err(func_to_func->hwdev->dev_hdl, - "Send mbox msg timeout, msg_id: %d\n", msg_info.msg_id); + "Send mbox msg mod %d cmd 0x%x timeout, msg_id: %d\n", + mod, cmd, msg_info.msg_id); + hinic_dump_aeq_info(func_to_func->hwdev); err = -ETIMEDOUT; goto send_err; } @@ -1265,7 +1268,7 @@ int hinic_mbox_to_func(struct hinic_mbox_func_to_func *func_to_func, if (buf_out && out_size) { if (*out_size < mbox_for_resp->mbox_len) { sdk_err(func_to_func->hwdev->dev_hdl, - "Invalid response mbox message length: %d for mod %d cmd %d, should less than: %d\n", + "Invalid response mbox message length: %d for mod %d cmd 0x%x, should less than: %d\n", mbox_for_resp->mbox_len, mod, cmd, *out_size); err = -EFAULT; goto send_err; diff --git a/drivers/net/ethernet/huawei/hinic/hinic_mgmt.c b/drivers/net/ethernet/huawei/hinic/hinic_mgmt.c index 510f5365baa7eeccb3d496f74f53542952a369fa..41e530364f0dc914653d07fa4749b90fc7445781 100644 --- a/drivers/net/ethernet/huawei/hinic/hinic_mgmt.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_mgmt.c @@ -441,8 +441,8 @@ int hinic_pf_to_mgmt_sync(void *hwdev, enum hinic_mod_type mod, u8 cmd, HINIC_MSG_ACK, HINIC_MSG_DIRECT_SEND, MSG_NO_RESP); if (err) { - sdk_err(dev, "Failed to send sync msg to mgmt, sync_msg_id: %d\n", - pf_to_mgmt->sync_msg_id); + sdk_err(dev, "Failed to send sync msg mod %d cmd 0x%x to mgmt, sync_msg_id: %d\n", + mod, cmd, pf_to_mgmt->sync_msg_id); pf_to_mgmt_send_event_set(pf_to_mgmt, SEND_EVENT_FAIL); goto unlock_sync_msg; } @@ -451,8 +451,8 @@ int hinic_pf_to_mgmt_sync(void *hwdev, enum hinic_mod_type mod, u8 cmd, ret = wait_for_completion_timeout(recv_done, timeo); if (!ret) { - sdk_err(dev, "Mgmt response sync cmd timeout, sync_msg_id: %d\n", - pf_to_mgmt->sync_msg_id); + sdk_err(dev, "Mgmt response sync msg mod %d cmd 0x%x timeout, sync_msg_id: %d\n", + mod, cmd, pf_to_mgmt->sync_msg_id); hinic_dump_aeq_info((struct hinic_hwdev *)hwdev); err = -ETIMEDOUT; pf_to_mgmt_send_event_set(pf_to_mgmt, SEND_EVENT_TIMEOUT); @@ -467,7 +467,7 @@ int hinic_pf_to_mgmt_sync(void *hwdev, enum hinic_mod_type mod, u8 cmd, if (buf_out && out_size) { if (*out_size < recv_msg->msg_len) { - sdk_err(dev, "Invalid response message length: %d for mod %d cmd %d from mgmt, should less than: %d\n", + sdk_err(dev, "Invalid response message length: %d for mod %d cmd 0x%x from mgmt, should less than: %d\n", recv_msg->msg_len, mod, cmd, *out_size); err = -EFAULT; goto unlock_sync_msg;