Re: [PATCH net v2] rtase: Reset TX subqueue when clearing TX ring
From: Alexander Lobakin
Date: Wed Jun 03 2026 - 10:31:08 EST
From: Justin Lai <justinlai0215@xxxxxxxxxxx>
Date: Wed, 3 Jun 2026 03:21:34 +0000
> Justin Lai <justinlai0215@xxxxxxxxxxx> wrote:
>>
>> rtase_tx_clear() clears the TX ring and resets the ring indexes.
>> However, the TX queue state and BQL accounting are not reset at the same
>> time.
>>
>> This may leave __QUEUE_STATE_STACK_XOFF asserted after rtase_sw_reset(),
>> preventing new TX packets from being scheduled.
>>
>> Reset the TX subqueue when clearing the TX ring so the TX queue state and
>> BQL accounting are restored together.
>>
>> Fixes: 5a2a2f15244c ("rtase: Implement the rtase_down function")
>> Cc: stable@xxxxxxxxxxxxxxx
>> Signed-off-by: Justin Lai <justinlai0215@xxxxxxxxxxx>
>> ---
>> v1 -> v2:
>> - Target net tree.
>> - Add Fixes tag.
>> ---
>> drivers/net/ethernet/realtek/rtase/rtase_main.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/realtek/rtase/rtase_main.c
>> b/drivers/net/ethernet/realtek/rtase/rtase_main.c
>> index ef13109c49cf..6ccbefb5acf2 100644
>> --- a/drivers/net/ethernet/realtek/rtase/rtase_main.c
>> +++ b/drivers/net/ethernet/realtek/rtase/rtase_main.c
>> @@ -239,6 +239,8 @@ static void rtase_tx_clear(struct rtase_private *tp)
>> rtase_tx_clear_range(ring, ring->dirty_idx, RTASE_NUM_DESC);
>> ring->cur_idx = 0;
>> ring->dirty_idx = 0;
>> +
>> + netdev_tx_reset_subqueue(tp->dev, i);
>> }
>> }
>>
>> --
>> 2.40.1
>
> Adding Olek, who was accidentally missed from the CC list.
Reviewed-by: Alexander Lobakin <aleksander.lobakin@xxxxxxxxx>
Thanks,
Olek