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

From: Parthiban.Veerasooran
Date: Mon Aug 19 2024 - 23:11:08 EST


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
>