diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c index 7326dbca28cf280bf305a7a46cbbb561b6d2601a..f61ef8ae8817172a79e08e56f2ba0921a38d3a3a 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c @@ -1564,7 +1564,7 @@ static int hclge_vport_setup(struct hclge_vport *vport, u16 num_tqps) * to make sure one irq just bind to one tqp, this can improve * the performance */ - alloc_tqps = min(hdev->num_msi_left, num_tqps); + alloc_tqps = min_t(u16, hdev->roce_base_msix_offset - 1, num_tqps); ret = hclge_knic_setup(vport, alloc_tqps, hdev->num_tx_desc, hdev->num_rx_desc); @@ -2276,17 +2276,7 @@ static int hclge_init_msi(struct hclge_dev *hdev) hdev->num_msi, vectors); hdev->num_msi = vectors; - - /* num_msi_left means the vector number of nic. - * 1. if not support RoCE, roce_base_msix_offset is 0, the num_msi_left - * equals to vectors. - * 2. if support RoCE, roce_base_msix_offset means the vector number of - * nic, so num_msi_left equals to roce_base_msix_offset. - */ hdev->num_msi_left = vectors; - if (hnae3_dev_roce_supported(hdev)) - hdev->num_msi_left = min(hdev->num_msi_left, - hdev->roce_base_msix_offset); hdev->base_msi_vector = pdev->irq; hdev->roce_base_vector = hdev->base_msi_vector + diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c index cedfc51a620e06135e5d921c1f73c0170fd0b506..cf978a16fd3d4dea649317d95d8ed91fa4e4f4a0 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c @@ -253,7 +253,9 @@ static int hclgevf_get_queue_info(struct hclgevf_dev *hdev) * to make sure one irq just bind to one tqp, this can improve * the performance */ - hdev->num_tqps = min(hdev->num_msi_left, hdev->num_tqps); + hdev->num_tqps = min_t(u16, hdev->roce_base_msix_offset - 1, + hdev->num_tqps); + hdev->rss_size_max = min_t(u16, hdev->num_tqps, hdev->rss_size_max); return 0; } @@ -2220,17 +2222,7 @@ static int hclgevf_init_msi(struct hclgevf_dev *hdev) hdev->num_msi, vectors); hdev->num_msi = vectors; - - /* num_msi_left means the vector number of nic. - * 1. if not support RoCE, roce_base_msix_offset is 0, the num_msi_left - * equals to vectors. - * 2. if support RoCE, roce_base_msix_offset means the vector number of - * nic, so num_msi_left equals to roce_base_msix_offset. - */ hdev->num_msi_left = vectors; - if (hnae3_dev_roce_supported(hdev)) - hdev->num_msi_left = min(hdev->num_msi_left, - hdev->roce_base_msix_offset); hdev->base_msi_vector = pdev->irq; hdev->roce_base_vector = pdev->irq + hdev->roce_base_msix_offset;