RE: [PATCH v7 4/6] wifi: rtw88: sdio: track free TX pages and OQT credits for RTL8723BS

Luka Gejak <[email protected]>
Newsgroups org.kernel.vger.linux-wireless,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On August 25, 2026 9:25:13 AM GMT+02:00, Ping-Ke Shih <[email protected]> wrote:
>Luka Gejak <[email protected]> wrote:
>> Hi Ping-Ke,
>> 
>> On August 25, 2026 8:12:58 AM GMT+02:00, Ping-Ke Shih <[email protected]> wrote:
>> > guard(mutex)(&rtwsdio->tx_credit_lock);
>> 
>> The lock is only taken for this chip, and guard() is unconditional, so I
>> split the locked region into its own function instead of branching around
>> the lock:
>> 
>>         if (!rtw_is_8723bs(rtwdev)) {
>>                 txsize = sdio_align_size(rtwsdio->sdio_func, skb->len);
>> 
>>                 ret = rtw_sdio_check_free_txpg(rtwdev, queue, txsize);
>>                 if (ret)
>>                         return ret;
>> 
>>                 return rtw_sdio_write_to_port(rtwdev, skb, queue, txaddr,
>>                                               txsize);
>>         }
>>         ...
>>         guard(mutex)(&rtwsdio->tx_credit_lock);
>> 
>>         return rtw_sdio_8723bs_write_port(rtwdev, skb, queue, txaddr, txsize,
>>                                           write_size);
>
>I meant
>
>    if (rtw_is_8723bs(rtwdev))
>        guard(mutex)(&rtwsdio->tx_credit_lock);
>
>Doesn't it work?
>
>

I tried it, and no. guard() expands to a declaration, and a declaration
cannot be the body of an if, so it does not build:

  sdio.c: In function 'rtw_sdio_write_port':
  include/linux/cleanup.h:302:9: error: expected expression before
  'class_mutex_t'
    302 |         class_##_name##_t var __cleanup(...) =

Adding braces builds cleanly, which is the more dangerous version, because
the cleanup then runs at the closing brace and the mutex is released again
before any of the code it is meant to protect runs.

That is why I moved the locked part into its own function: the guard needs
a scope that is exactly the critical section, and an if body is either too
small or not allowed.

Best regards,
Luka Gejak
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.