]> git.itanic.dy.fi Git - linux-stable/commitdiff
i40e: Fix ADQ rate limiting for PF
authorPrzemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Tue, 9 Aug 2022 08:57:44 +0000 (10:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Sep 2022 08:47:18 +0000 (10:47 +0200)
[ Upstream commit 45bb006d3c924b1201ed43c87a96b437662dcaa8 ]

Fix HW rate limiting for ADQ.
Fallback to kernel queue selection for ADQ, as it is network stack
that decides which queue to use for transmit with ADQ configured.
Reset PF after creation of VMDq2 VSIs required for ADQ, as to
reprogram TX queue contexts in i40e_configure_tx_ring.
Without this patch PF would limit TX rate only according to TC0.

Fixes: a9ce82f744dc ("i40e: Enable 'channel' mode in mqprio for TC configs")
Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Signed-off-by: Jan Sokolowski <jan.sokolowski@intel.com>
Tested-by: Bharathi Sreenivas <bharathi.sreenivas@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/i40e/i40e_txrx.c

index 45c56832c14fd1aa9463881555867ccd7bd004f8..1aaf0c5ddf6cfd77b9c2b8615053079804d48f73 100644 (file)
@@ -6536,6 +6536,9 @@ static int i40e_configure_queue_channels(struct i40e_vsi *vsi)
                        vsi->tc_seid_map[i] = ch->seid;
                }
        }
+
+       /* reset to reconfigure TX queue contexts */
+       i40e_do_reset(vsi->back, I40E_PF_RESET_FLAG, true);
        return ret;
 
 err_free:
index af69ccc6e8d2f2e7d7548a5523b23cdc7ce7530b..07f1e209d524d56dae4a9d955ac84bd8372983ad 100644 (file)
@@ -3689,7 +3689,8 @@ u16 i40e_lan_select_queue(struct net_device *netdev,
        u8 prio;
 
        /* is DCB enabled at all? */
-       if (vsi->tc_config.numtc == 1)
+       if (vsi->tc_config.numtc == 1 ||
+           i40e_is_tc_mqprio_enabled(vsi->back))
                return netdev_pick_tx(netdev, skb, sb_dev);
 
        prio = skb->priority;