Re: [PATCH net-next v6 09/14] net: ethernet: oa_tc6: implement transmit path to transfer tx ethernet frames

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jakub,

On 16/08/24 10:25 pm, Jakub Kicinski wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> On Mon, 12 Aug 2024 15:56:06 +0530 Parthiban Veerasooran wrote:
>> +             if (skb_queue_len(&tc6->tx_skb_q) < OA_TC6_TX_SKB_QUEUE_SIZE &&
>> +                 netif_queue_stopped(tc6->netdev))
>> +                     netif_wake_queue(tc6->netdev);
> 
> FWIW I'm not sure you actually need a queue in the driver.
> "A queue of 1" may be enough, IIUC calling netif_wake_queue()
Ah ok. Actually "A queue of 1" is enough but for holding one tx skb, a 
queue is too much. So if I understand correctly, I can replace,

struct sk_buff_head tx_skb_q ---> struct sk_buff *waiting_tx_skb

which holds one tx skb waiting and

struct sk_buff *tx_skb ---> struct sk_buff *ongoing_tx_skb

which holds one on going tx skb.

So that I can remove the queue handling. I did a quick test by doing the 
above changes and it works as expected. Thanks for the info. I will 
update this in the next version.

> will cause something like an interrupt to fire immediately,
> and start_xmit for the next frame should get called before
> netif_wake_queue() returns. I could be wrong :)
I think, it is ok as the while will be executed immediately once 
returning from netif_wake_queue() which is the expected behavior.

Best regards,
Parthiban V
>




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux