diff mbox series

[net] i40e: Fix ATR queue selection

Message ID 20210719194931.11173-1-arkadiusz.kubalewski@intel.com
State Superseded
Headers show
Series [net] i40e: Fix ATR queue selection | expand

Commit Message

Kubalewski, Arkadiusz July 19, 2021, 7:49 p.m. UTC
If traffic classes are not configured for PF, then use
netdev_pick_tx function for selecting queue for packet transmission.
Instead of calling i40e_swdcb_skb_tx_hash, call netdev_pick_tx,
which ensures that packet is transmitted/received from CPU that is
running the application.
Without this patch, ATR does not work. Receive/transmit uses queue
selection based on SW DCB hashing method.

Fixes: 821bd0c990ba ("i40e: Fix queue-to-TC mapping on Tx")
Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)


base-commit: e84671cd9648eb1f2b346378c100b4ebfbd1b01c

Comments

Paul Menzel July 20, 2021, 6:27 a.m. UTC | #1
Dear Arkadiusz,


Am 19.07.21 um 21:49 schrieb Arkadiusz Kubalewski:
> If traffic classes are not configured for PF, then use
> netdev_pick_tx function for selecting queue for packet transmission.
> Instead of calling i40e_swdcb_skb_tx_hash, call netdev_pick_tx,
> which ensures that packet is transmitted/received from CPU that is
> running the application.
> Without this patch, ATR does not work. Receive/transmit uses queue
> selection based on SW DCB hashing method.

For the future, the problem statement should go first in my opinion.

Do you have a recipe, how to reproduce the problem?


Kind regards,

Paul

> Fixes: 821bd0c990ba ("i40e: Fix queue-to-TC mapping on Tx")
> Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
> Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
> ---
>   drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> index 3f25bd8..10a83e5 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> @@ -3663,8 +3663,7 @@ u16 i40e_lan_select_queue(struct net_device *netdev,
>   
>   	/* is DCB enabled at all? */
>   	if (vsi->tc_config.numtc == 1)
> -		return i40e_swdcb_skb_tx_hash(netdev, skb,
> -					      netdev->real_num_tx_queues);
> +		return netdev_pick_tx(netdev, skb, sb_dev);
>   
>   	prio = skb->priority;
>   	hw = &vsi->back->hw;
> 
> base-commit: e84671cd9648eb1f2b346378c100b4ebfbd1b01c
>
Kubalewski, Arkadiusz July 20, 2021, 10:43 a.m. UTC | #2
>Dear Arkadiusz,
>
>
>Am 19.07.21 um 21:49 schrieb Arkadiusz Kubalewski:
>> If traffic classes are not configured for PF, then use netdev_pick_tx 
>> function for selecting queue for packet transmission.
>> Instead of calling i40e_swdcb_skb_tx_hash, call netdev_pick_tx, which 
>> ensures that packet is transmitted/received from CPU that is running 
>> the application.
>> Without this patch, ATR does not work. Receive/transmit uses queue 
>> selection based on SW DCB hashing method.
>
>For the future, the problem statement should go first in my opinion.
>
>Do you have a recipe, how to reproduce the problem?
>
>
>Kind regards,
>
>Paul

Hi Paul,

Yes, of course I have reproduction steps.
I will fix your findings in next patch.

Thank you!
BR, 
Arkadiusz

>
>> Fixes: 821bd0c990ba ("i40e: Fix queue-to-TC mapping on Tx")
>> Signed-off-by: Przemyslaw Patynowski 
>> <przemyslawx.patynowski@intel.com>
>> Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
>> ---
>>   drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 +--
>>   1 file changed, 1 insertion(+), 2 deletions(-)
>> 
>> diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c 
>> b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
>> index 3f25bd8..10a83e5 100644
>> --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
>> +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
>> @@ -3663,8 +3663,7 @@ u16 i40e_lan_select_queue(struct net_device 
>> *netdev,
>>   
>>   	/* is DCB enabled at all? */
>>   	if (vsi->tc_config.numtc == 1)
>> -		return i40e_swdcb_skb_tx_hash(netdev, skb,
>> -					      netdev->real_num_tx_queues);
>> +		return netdev_pick_tx(netdev, skb, sb_dev);
>>   
>>   	prio = skb->priority;
>>   	hw = &vsi->back->hw;
>> 
>> base-commit: e84671cd9648eb1f2b346378c100b4ebfbd1b01c
>> 
>
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 3f25bd8..10a83e5 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -3663,8 +3663,7 @@  u16 i40e_lan_select_queue(struct net_device *netdev,
 
 	/* is DCB enabled at all? */
 	if (vsi->tc_config.numtc == 1)
-		return i40e_swdcb_skb_tx_hash(netdev, skb,
-					      netdev->real_num_tx_queues);
+		return netdev_pick_tx(netdev, skb, sb_dev);
 
 	prio = skb->priority;
 	hw = &vsi->back->hw;