diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h b/drivers/infiniband/hw/hns/hns_roce_device.h index ef90f49d6e054ae408195e66ce76be29bfd53d02..81bf169f1362a0c73c183e5d5b5383000cd59a7d 100644 --- a/drivers/infiniband/hw/hns/hns_roce_device.h +++ b/drivers/infiniband/hw/hns/hns_roce_device.h @@ -1235,6 +1235,7 @@ struct hns_roce_dev { struct workqueue_struct *flush_workq; struct hns_roce_stat hr_stat; u32 func_num; + u32 mac_id; u64 dfx_cnt[HNS_ROCE_DFX_TOTAL]; }; diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c index f7d3c908bb9096d016acae866884544ed9709d85..4180641fcff8e3828e6c9d9afa8c110c8081f9df 100644 --- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c @@ -1383,21 +1383,23 @@ static void hns_roce_func_clr_rst_prc(struct hns_roce_dev *hr_dev, int retval, } } -static void hns_roce_query_func_num(struct hns_roce_dev *hr_dev) +static void hns_roce_query_func_info(struct hns_roce_dev *hr_dev) { struct hns_roce_cmq_desc desc; - struct hns_roce_pf_func_num *resp; + struct hns_roce_pf_func_info *resp; int ret; - hns_roce_cmq_setup_basic_desc(&desc, HNS_ROCE_OPC_QUERY_VF_NUM, true); + hns_roce_cmq_setup_basic_desc(&desc, HNS_ROCE_OPC_QUERY_FUNC_INFO, + true); ret = hns_roce_cmq_send(hr_dev, &desc, 1); if (ret) { dev_err(hr_dev->dev, "Query vf count failed(%d).\n", ret); return; } - resp = (struct hns_roce_pf_func_num *)desc.data; + resp = (struct hns_roce_pf_func_info *)desc.data; hr_dev->func_num = le32_to_cpu(resp->pf_own_func_num); + hr_dev->mac_id = le32_to_cpu(resp->pf_own_mac_id); } static void hns_roce_clear_func(struct hns_roce_dev *hr_dev, int vf_id) @@ -2197,7 +2199,7 @@ static int hns_roce_v2_profile(struct hns_roce_dev *hr_dev) return ret; } - hns_roce_query_func_num(hr_dev); + hns_roce_query_func_info(hr_dev); if (hr_dev->pci_dev->revision == PCI_REVISION_ID_HIP08_B) { ret = hns_roce_query_pf_timer_resource(hr_dev); @@ -3909,8 +3911,6 @@ static void modify_qp_reset_to_init(struct ib_qp *ibqp, struct hns_roce_dev *hr_dev = to_hr_dev(ibqp->device); struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); struct hns_roce_cq *send_cq, *recv_cq; - struct net_device *net_dev = hr_dev->iboe.netdevs[hr_qp->port]; - u32 temp_id = 0; hns_roce_get_cqs(ibqp, &send_cq, &recv_cq); /* @@ -3998,9 +3998,8 @@ static void modify_qp_reset_to_init(struct ib_qp *ibqp, roce_set_bit(qpc_mask->byte_56_dqpn_err, V2_QPC_BYTE_56_RQ_TX_ERR_S, 0); roce_set_bit(qpc_mask->byte_56_dqpn_err, V2_QPC_BYTE_56_RQ_RX_ERR_S, 0); - sscanf(net_dev->name, "eth%u", &temp_id); roce_set_field(context->byte_60_qpst_tempid, V2_QPC_BYTE_60_TEMPID_M, - V2_QPC_BYTE_60_TEMPID_S, temp_id); + V2_QPC_BYTE_60_TEMPID_S, hr_dev->mac_id); roce_set_field(qpc_mask->byte_60_qpst_tempid, V2_QPC_BYTE_60_TEMPID_M, V2_QPC_BYTE_60_TEMPID_S, 0); diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.h b/drivers/infiniband/hw/hns/hns_roce_hw_v2.h index 31502e4bb0bf0ed4b655dd916b319574332fa6f3..7c4a68cdeb606643b87883e2abd128f6ed117c41 100644 --- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.h +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.h @@ -279,7 +279,7 @@ enum hns_roce_opcode_type { HNS_ROCE_OPC_CFG_EXT_LLM = 0x8403, HNS_ROCE_OPC_CFG_TMOUT_LLM = 0x8404, HNS_ROCE_OPC_QUERY_PF_TIMER_RES = 0x8406, - HNS_ROCE_OPC_QUERY_VF_NUM = 0x8407, + HNS_ROCE_OPC_QUERY_FUNC_INFO = 0x8407, HNS_ROCE_OPC_QUERY_PF_CAPS_NUM = 0x8408, HNS_ROCE_OPC_CFG_SGID_TB = 0x8500, HNS_ROCE_OPC_CFG_SMAC_TB = 0x8501, @@ -1297,9 +1297,9 @@ struct hns_roce_func_clear { __le32 rsv[4]; }; -struct hns_roce_pf_func_num { +struct hns_roce_pf_func_info { __le32 pf_own_func_num; - __le32 func_done; + __le32 pf_own_mac_id; __le32 rsv[4]; };