]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
i40e: Do not allow use more TC queue pairs than MSI-X vectors exist
authorPaweł Jabłoński <pawel.jablonski@intel.com>
Fri, 29 Dec 2017 13:49:10 +0000 (08:49 -0500)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 26 Jan 2018 21:23:50 +0000 (13:23 -0800)
This patch suppresses the message about invalid TC mapping and wrong
selected TX queue. The root cause of this bug was setting too many
TC queue pairs on huge multiprocessor machines. When quantity of the
TC queue pairs is exceeding MSI-X vectors count then TX queue number
can be selected beyond actual TX queues amount.

Signed-off-by: Paweł Jabłoński <pawel.jablonski@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 827c082c4356eb281327b1395f487dee5689c7b4..f95ce9b5e4fbea94ee32c374b4a3e545c82e87e0 100644 (file)
@@ -1818,6 +1818,10 @@ static void i40e_vsi_setup_queue_map(struct i40e_vsi *vsi,
        num_tc_qps = qcount / numtc;
        num_tc_qps = min_t(int, num_tc_qps, i40e_pf_get_max_q_per_tc(pf));
 
+       /* Do not allow use more TC queue pairs than MSI-X vectors exist */
+       if (pf->flags & I40E_FLAG_MSIX_ENABLED)
+               num_tc_qps = min_t(int, num_tc_qps, pf->num_lan_msix);
+
        /* Setup queue offset/count for all TCs for given VSI */
        for (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) {
                /* See if the given TC is enabled for the given VSI */