]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: hns3: fix get wrong value of function hclge_get_dscp_prio()
authorGuangbin Huang <huangguangbin2@huawei.com>
Tue, 1 Nov 2022 07:48:38 +0000 (15:48 +0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 4 Nov 2022 10:06:52 +0000 (10:06 +0000)
As the argument struct hnae3_handle *h of function hclge_get_dscp_prio()
can be other client registered in hnae3 layer, we need to transform it
into hnae3_handle of local nic client to get right dscp settings for
other clients.

Fixes: ed1bec1cc259 ("net: hns3: optimize converting dscp to priority process of hns3_nic_select_queue()")
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c

index 6962a9d69cf8da937513b9460a4da07dd984760a..987271da6e9bceef64e048f16a4f7d6ac0092e1e 100644 (file)
@@ -12984,14 +12984,16 @@ static void hclge_clean_vport_config(struct hnae3_ae_dev *ae_dev, int num_vfs)
 static int hclge_get_dscp_prio(struct hnae3_handle *h, u8 dscp, u8 *tc_mode,
                               u8 *priority)
 {
+       struct hclge_vport *vport = hclge_get_vport(h);
+
        if (dscp >= HNAE3_MAX_DSCP)
                return -EINVAL;
 
        if (tc_mode)
-               *tc_mode = h->kinfo.tc_map_mode;
+               *tc_mode = vport->nic.kinfo.tc_map_mode;
        if (priority)
-               *priority = h->kinfo.dscp_prio[dscp] == HNAE3_PRIO_ID_INVALID ? 0 :
-                           h->kinfo.dscp_prio[dscp];
+               *priority = vport->nic.kinfo.dscp_prio[dscp] == HNAE3_PRIO_ID_INVALID ? 0 :
+                           vport->nic.kinfo.dscp_prio[dscp];
 
        return 0;
 }