mirror of https://gitee.com/openkylin/linux.git
net: hns3: add a check for device specifications queried from firmware
The device specifications querying is unsupported by the old firmware, in this case, these specifications are 0. However, some specifications should not be 0 or will cause problem. So after querying from firmware, some device specifications are needed to check their value and set to default value if their values are 0. Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com> Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d9c7d20dfb
commit
1329702899
|
@ -1383,6 +1383,20 @@ static void hclge_parse_dev_specs(struct hclge_dev *hdev,
|
|||
ae_dev->dev_specs.max_tm_rate = le32_to_cpu(req0->max_tm_rate);
|
||||
}
|
||||
|
||||
static void hclge_check_dev_specs(struct hclge_dev *hdev)
|
||||
{
|
||||
struct hnae3_dev_specs *dev_specs = &hdev->ae_dev->dev_specs;
|
||||
|
||||
if (!dev_specs->max_non_tso_bd_num)
|
||||
dev_specs->max_non_tso_bd_num = HCLGE_MAX_NON_TSO_BD_NUM;
|
||||
if (!dev_specs->rss_ind_tbl_size)
|
||||
dev_specs->rss_ind_tbl_size = HCLGE_RSS_IND_TBL_SIZE;
|
||||
if (!dev_specs->rss_key_size)
|
||||
dev_specs->rss_key_size = HCLGE_RSS_KEY_SIZE;
|
||||
if (!dev_specs->max_tm_rate)
|
||||
dev_specs->max_tm_rate = HCLGE_ETHER_MAX_RATE;
|
||||
}
|
||||
|
||||
static int hclge_query_dev_specs(struct hclge_dev *hdev)
|
||||
{
|
||||
struct hclge_desc desc[HCLGE_QUERY_DEV_SPECS_BD_NUM];
|
||||
|
@ -1409,6 +1423,7 @@ static int hclge_query_dev_specs(struct hclge_dev *hdev)
|
|||
return ret;
|
||||
|
||||
hclge_parse_dev_specs(hdev, desc);
|
||||
hclge_check_dev_specs(hdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -2965,6 +2965,18 @@ static void hclgevf_parse_dev_specs(struct hclgevf_dev *hdev,
|
|||
ae_dev->dev_specs.rss_key_size = le16_to_cpu(req0->rss_key_size);
|
||||
}
|
||||
|
||||
static void hclgevf_check_dev_specs(struct hclgevf_dev *hdev)
|
||||
{
|
||||
struct hnae3_dev_specs *dev_specs = &hdev->ae_dev->dev_specs;
|
||||
|
||||
if (!dev_specs->max_non_tso_bd_num)
|
||||
dev_specs->max_non_tso_bd_num = HCLGEVF_MAX_NON_TSO_BD_NUM;
|
||||
if (!dev_specs->rss_ind_tbl_size)
|
||||
dev_specs->rss_ind_tbl_size = HCLGEVF_RSS_IND_TBL_SIZE;
|
||||
if (!dev_specs->rss_key_size)
|
||||
dev_specs->rss_key_size = HCLGEVF_RSS_KEY_SIZE;
|
||||
}
|
||||
|
||||
static int hclgevf_query_dev_specs(struct hclgevf_dev *hdev)
|
||||
{
|
||||
struct hclgevf_desc desc[HCLGEVF_QUERY_DEV_SPECS_BD_NUM];
|
||||
|
@ -2992,6 +3004,7 @@ static int hclgevf_query_dev_specs(struct hclgevf_dev *hdev)
|
|||
return ret;
|
||||
|
||||
hclgevf_parse_dev_specs(hdev, desc);
|
||||
hclgevf_check_dev_specs(hdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue