Subject: Re: low latency/busy poll feedback and bugs

From: Amir Vadai <[email-masked]>
Date: Tue, 6 Aug 2013 15:15:05 +0300

On 06/08/2013 00:22, Shawn Bohrer wrote:
> I did a little testing of the new low latency/busy poll sockets today
> and found a few things that surprised me and at least one bug.
> 
> 1) I'm testing with a Mellanox ConnectX-3 card.  
Of course :)

> Currently polling
> with mlx4_en is broken when GRO is enabled.  In
> mlx4_en_process_rx_cq() when GRO is enabled skb_mark_napi_id() is
> never called.  It appears like low latency sockets with GRO is
> supposed to work because the following code checks that we are not
> ll_polling:
> 
>  /* This packet is eligible for GRO if it is:
>    * - DIX Ethernet (type interpretation)
>    * - TCP/IP (v4)
>    * - without IP options
>    * - not an IP fragment
>    * - no LLS polling in progress
>    */
>   if (!mlx4_en_cq_ll_polling(cq) &&
>       (dev->features & NETIF_F_GRO)) {
> 
> However since we never call skb_mark_napi_id() mlx4_en_cq_ll_polling()
> will never be true.

Currently GRO and LLS are mutually exclusive, and shouldn't be used
together.
I will send a fix to make the code clearer soon.

Thanks for reporting,
Amir