Commit cfdcb075 authored by Guangbin Huang's avatar Guangbin Huang Committed by David S. Miller
Browse files

net: hns3: fix get wrong value of function hclge_get_dscp_prio()



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: dfea275e ("net: hns3: optimize converting dscp to priority process of hns3_nic_select_queue()")
Signed-off-by: default avatarGuangbin Huang <huangguangbin2@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4581dd48
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -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;
}