]> git.proxmox.com Git - mirror_ubuntu-bionic-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>
Tue, 26 Mar 2019 08:30:47 +0000 (14:00 +0530)
committerKhalid Elmously <khalid.elmously@canonical.com>
Wed, 27 Mar 2019 05:34:58 +0000 (01:34 -0400)
BugLink: https://bugs.launchpad.net/bugs/1820948
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>
(cherry picked from commit 1563f2d2e01242f05dd523ffd56fe104bc1afd58)
Signed-off-by: Nivedita Singhvi <nivedita.singhvi@canonical.com>
Acked-by: Khalid Elmously <khalid.elmously@canonical.com>
Acked-by: Kleber Souza <kleber.souza@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 08f7bd9001bcf51bfa0d5309d0567ec71eb8977c..8ad1710804f66f1c47570edebdb7d7f54ffe9536 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 */