]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
net: hns3: Fix desc num set to default when setting channel
[mirror_ubuntu-bionic-kernel.git] / drivers / net / ethernet / hisilicon / hns3 / hns3pf / hclge_main.c
index 2c309dec01f3328376db019bee3c2c92b1c3e228..81c8efb9de4a17acdb1f98e0b256601e51188a10 100644 (file)
@@ -1267,35 +1267,37 @@ static int hclge_map_tqps_to_func(struct hclge_dev *hdev, u16 func_id,
        return ret;
 }
 
-static int  hclge_assign_tqp(struct hclge_vport *vport,
-                            struct hnae3_queue **tqp, u16 num_tqps)
+static int  hclge_assign_tqp(struct hclge_vport *vport)
 {
+       struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo;
        struct hclge_dev *hdev = vport->back;
        int i, alloced;
 
        for (i = 0, alloced = 0; i < hdev->num_tqps &&
-            alloced < num_tqps; i++) {
+            alloced < kinfo->num_tqps; i++) {
                if (!hdev->htqp[i].alloced) {
                        hdev->htqp[i].q.handle = &vport->nic;
                        hdev->htqp[i].q.tqp_index = alloced;
-                       tqp[alloced] = &hdev->htqp[i].q;
+                       hdev->htqp[i].q.desc_num = kinfo->num_desc;
+                       kinfo->tqp[alloced] = &hdev->htqp[i].q;
                        hdev->htqp[i].alloced = true;
                        alloced++;
                }
        }
-       vport->alloc_tqps = num_tqps;
+       vport->alloc_tqps = kinfo->num_tqps;
 
        return 0;
 }
 
-static int hclge_knic_setup(struct hclge_vport *vport, u16 num_tqps)
+static int hclge_knic_setup(struct hclge_vport *vport,
+                           u16 num_tqps, u16 num_desc)
 {
        struct hnae3_handle *nic = &vport->nic;
        struct hnae3_knic_private_info *kinfo = &nic->kinfo;
        struct hclge_dev *hdev = vport->back;
        int i, ret;
 
-       kinfo->num_desc = hdev->num_desc;
+       kinfo->num_desc = num_desc;
        kinfo->rx_buf_len = hdev->rx_buf_len;
        kinfo->num_tc = min_t(u16, num_tqps, hdev->tm_info.num_tc);
        kinfo->rss_size
@@ -1322,7 +1324,7 @@ static int hclge_knic_setup(struct hclge_vport *vport, u16 num_tqps)
        if (!kinfo->tqp)
                return -ENOMEM;
 
-       ret = hclge_assign_tqp(vport, kinfo->tqp, kinfo->num_tqps);
+       ret = hclge_assign_tqp(vport);
        if (ret)
                dev_err(&hdev->pdev->dev, "fail to assign TQPs %d.\n", ret);
 
@@ -1388,7 +1390,7 @@ static int hclge_vport_setup(struct hclge_vport *vport, u16 num_tqps)
        nic->numa_node_mask = hdev->numa_node_mask;
 
        if (hdev->ae_dev->dev_type == HNAE3_DEV_KNIC) {
-               ret = hclge_knic_setup(vport, num_tqps);
+               ret = hclge_knic_setup(vport, num_tqps, hdev->num_desc);
                if (ret) {
                        dev_err(&hdev->pdev->dev, "knic setup failed %d\n",
                                ret);
@@ -5963,7 +5965,7 @@ static int hclge_set_channels(struct hnae3_handle *handle, u32 new_tqps_num)
        /* Free old tqps, and reallocate with new tqp number when nic setup */
        hclge_release_tqp(vport);
 
-       ret = hclge_knic_setup(vport, new_tqps_num);
+       ret = hclge_knic_setup(vport, new_tqps_num, kinfo->num_desc);
        if (ret) {
                dev_err(&hdev->pdev->dev, "setup nic fail, ret =%d\n", ret);
                return ret;