[dpdk-dev,3/4] net/virtio: don't use simple Rx path if TCP LRO requested

Message ID 20180601124758.22652-4-maxime.coquelin@redhat.com (mailing list archive)
State Superseded, archived
Delegated to: Maxime Coquelin
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Maxime Coquelin June 1, 2018, 12:47 p.m. UTC
  Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/virtio/virtio_ethdev.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Tiwei Bie June 4, 2018, 11:59 a.m. UTC | #1
On Fri, Jun 01, 2018 at 02:47:57PM +0200, Maxime Coquelin wrote:
> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> ---
>  drivers/net/virtio/virtio_ethdev.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
> index 5730620ed..d481b282e 100644
> --- a/drivers/net/virtio/virtio_ethdev.c
> +++ b/drivers/net/virtio/virtio_ethdev.c
> @@ -1893,7 +1893,8 @@ virtio_dev_configure(struct rte_eth_dev *dev)
>  	}
>  
>  	if (rx_offloads & (DEV_RX_OFFLOAD_UDP_CKSUM |
> -			   DEV_RX_OFFLOAD_TCP_CKSUM))
> +			   DEV_RX_OFFLOAD_TCP_CKSUM |
> +			   DEV_RX_OFFLOAD_TCP_LRO))

Maybe we also need to consider not using simple Rx
when DEV_RX_OFFLOAD_VLAN_STRIP is requested.

Best regards,
Tiwei Bie

>  		hw->use_simple_rx = 0;
>  
>  	if (tx_offloads & (DEV_TX_OFFLOAD_TCP_CKSUM |
> -- 
> 2.14.3
>
  
Maxime Coquelin June 4, 2018, 2:32 p.m. UTC | #2
On 06/04/2018 01:59 PM, Tiwei Bie wrote:
> On Fri, Jun 01, 2018 at 02:47:57PM +0200, Maxime Coquelin wrote:
>> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
>> ---
>>   drivers/net/virtio/virtio_ethdev.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
>> index 5730620ed..d481b282e 100644
>> --- a/drivers/net/virtio/virtio_ethdev.c
>> +++ b/drivers/net/virtio/virtio_ethdev.c
>> @@ -1893,7 +1893,8 @@ virtio_dev_configure(struct rte_eth_dev *dev)
>>   	}
>>   
>>   	if (rx_offloads & (DEV_RX_OFFLOAD_UDP_CKSUM |
>> -			   DEV_RX_OFFLOAD_TCP_CKSUM))
>> +			   DEV_RX_OFFLOAD_TCP_CKSUM |
>> +			   DEV_RX_OFFLOAD_TCP_LRO))
> 
> Maybe we also need to consider not using simple Rx
> when DEV_RX_OFFLOAD_VLAN_STRIP is requested.

I think that makes sense.

Thanks,
Maxime

> Best regards,
> Tiwei Bie
> 
>>   		hw->use_simple_rx = 0;
>>   
>>   	if (tx_offloads & (DEV_TX_OFFLOAD_TCP_CKSUM |
>> -- 
>> 2.14.3
>>
  
Maxime Coquelin June 5, 2018, 1:39 p.m. UTC | #3
On 06/04/2018 04:32 PM, Maxime Coquelin wrote:
> 
> 
> On 06/04/2018 01:59 PM, Tiwei Bie wrote:
>> On Fri, Jun 01, 2018 at 02:47:57PM +0200, Maxime Coquelin wrote:
>>> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
>>> ---
>>>   drivers/net/virtio/virtio_ethdev.c | 3 ++-
>>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/net/virtio/virtio_ethdev.c 
>>> b/drivers/net/virtio/virtio_ethdev.c
>>> index 5730620ed..d481b282e 100644
>>> --- a/drivers/net/virtio/virtio_ethdev.c
>>> +++ b/drivers/net/virtio/virtio_ethdev.c
>>> @@ -1893,7 +1893,8 @@ virtio_dev_configure(struct rte_eth_dev *dev)
>>>       }
>>>       if (rx_offloads & (DEV_RX_OFFLOAD_UDP_CKSUM |
>>> -               DEV_RX_OFFLOAD_TCP_CKSUM))
>>> +               DEV_RX_OFFLOAD_TCP_CKSUM |
>>> +               DEV_RX_OFFLOAD_TCP_LRO))
>>
>> Maybe we also need to consider not using simple Rx
>> when DEV_RX_OFFLOAD_VLAN_STRIP is requested.
> 
> I think that makes sense.

And also the same for Tx when VLAN_INSERT is requested

> Thanks,
> Maxime
> 
>> Best regards,
>> Tiwei Bie
>>
>>>           hw->use_simple_rx = 0;
>>>       if (tx_offloads & (DEV_TX_OFFLOAD_TCP_CKSUM |
>>> -- 
>>> 2.14.3
>>>
  

Patch

diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 5730620ed..d481b282e 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1893,7 +1893,8 @@  virtio_dev_configure(struct rte_eth_dev *dev)
 	}
 
 	if (rx_offloads & (DEV_RX_OFFLOAD_UDP_CKSUM |
-			   DEV_RX_OFFLOAD_TCP_CKSUM))
+			   DEV_RX_OFFLOAD_TCP_CKSUM |
+			   DEV_RX_OFFLOAD_TCP_LRO))
 		hw->use_simple_rx = 0;
 
 	if (tx_offloads & (DEV_TX_OFFLOAD_TCP_CKSUM |