All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luka Gejak <luka.gejak@linux.dev>
To: Ping-Ke Shih <pkshih@realtek.com>,
	"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Michael Straube <straube.linux@gmail.com>,
	Bitterblue Smith <rtl8821cerfe2@gmail.com>,
	Peter Robinson <pbrobinson@gmail.com>,
	Hans de Goede <johannes.goede@oss.qualcomm.com>,
	luka.gejak@linux.dev
Subject: RE: [PATCH v7 4/6] wifi: rtw88: sdio: track free TX pages and OQT credits for RTL8723BS
Date: Tue, 25 Aug 2026 09:20:47 +0200	[thread overview]
Message-ID: <AD323744-AE68-4C77-92A9-CD215B8A7E43@linux.dev> (raw)
In-Reply-To: <17c3c1f641fe41c4bfacb989af4b75a6@realtek.com>

Hi Ping-Ke,

On August 25, 2026 8:12:58 AM GMT+02:00, Ping-Ke Shih <pkshih@realtek.com> wrote:

> I think you only need to note 'not free the skb on failure'.
> And move comment here to note __skb_pad().
> By the way, we can have a local variable 'pad_size'.

Done, all three:

        if (write_size > skb->len) {
                size_t pad_size = write_size - skb->len;

                /*
                 * __skb_pad() must not free the skb on failure: both callers
                 * still own it, one requeues it and the other frees it.
                 */
                ret = __skb_pad(skb, pad_size, false);
                if (ret)
                        return ret;
        }

> Not sure if the comment along declaration of tx_credit_lock is enough?
> If so, maybe we don't need this comment.

Agreed, that one is gone.

> 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);

The transfer itself moved to rtw_sdio_write_to_port() so both paths share
it. That also removes the goto and the two rtl8723bs tests in the middle of
the function.

One thing I would like your opinion on while it is still cheap to change.
The unaligned SKB warning now sits in both callers rather than once inside
rtw_sdio_write_to_port(), because __func__ would otherwise report
rtw_sdio_write_to_port for every other SDIO chip where it reports
rtw_sdio_write_port today. Keeping that message identical costs three
duplicated lines. Putting it once in rtw_sdio_write_to_port() is the
tidier code and arguably the more accurate message, at the price of
changing a log line on chips this series is not about. I went with the
duplicate to leave the other parts alone, but I have no strong feeling
either way, so say which you prefer.

> I think you can add lockdep_assert_held() to the places the locks (mutex)
> must be held, and run test if somewhere throw warning (must not).

Added to rtw_sdio_8723bs_write_port(), rtw_sdio_8723bs_wait_tx_oqt() and
rtw_sdio_8723bs_consume_txpg(). Each has exactly one caller and all three
sit under the guard, so the call graph says they cannot be reached without
the lock.

I have to be straight about the test though: my test kernel is built
without CONFIG_PROVE_LOCKING, so those asserts compile to nothing there and
running it would prove nothing. I will build a kernel with lockdep enabled
and confirm before I would ask you to take the patch on that point, unless
you would rather I just drop the asserts.

Best regards,
Luka Gejak

  reply	other threads:[~2026-08-25  7:20 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-20  9:04 [PATCH v7 0/6] wifi: rtw88: preparations for RTL8723B/RTL8723BS luka.gejak
2026-08-20  9:04 ` [PATCH v7 1/6] wifi: rtw88: add the RTL8723B chip type and SDIO helper luka.gejak
2026-08-20  9:04 ` [PATCH v7 2/6] wifi: rtw88: rx: mark zero length packets on RTL8723BS luka.gejak
2026-08-20  9:04 ` [PATCH v7 3/6] wifi: rtw88: tx: extend the TX report purge timeout to RTL8723BS luka.gejak
2026-08-20  9:04 ` [PATCH v7 4/6] wifi: rtw88: sdio: track free TX pages and OQT credits for RTL8723BS luka.gejak
2026-08-25  6:12   ` Ping-Ke Shih
2026-08-25  7:20     ` Luka Gejak [this message]
2026-08-25  7:25       ` Ping-Ke Shih
2026-08-25  7:33         ` Luka Gejak
2026-08-25  7:50           ` Ping-Ke Shih
2026-08-25  8:07             ` Luka Gejak
2026-08-25  8:22               ` Ping-Ke Shih
2026-08-25  8:32                 ` Luka Gejak
2026-08-25  8:38                   ` Ping-Ke Shih
2026-08-25  8:42                     ` Luka Gejak
2026-08-25  8:49                       ` Ping-Ke Shih
2026-08-20  9:04 ` [PATCH v7 5/6] wifi: rtw88: sdio: set up RX aggregation and interrupts " luka.gejak
2026-08-20  9:04 ` [PATCH v7 6/6] wifi: rtw88: sdio: add TX back-pressure and retry on page starvation luka.gejak
2026-08-25  6:36   ` Ping-Ke Shih
2026-08-25  7:22     ` Luka Gejak
2026-08-25  8:27       ` Ping-Ke Shih
2026-08-22 16:51 ` [PATCH v7 0/6] wifi: rtw88: preparations for RTL8723B/RTL8723BS Luka Gejak
2026-08-23  6:00   ` Luka Gejak
2026-08-25  7:08     ` Ping-Ke Shih
2026-08-25  7:27       ` Luka Gejak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AD323744-AE68-4C77-92A9-CD215B8A7E43@linux.dev \
    --to=luka.gejak@linux.dev \
    --cc=johannes.goede@oss.qualcomm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=pbrobinson@gmail.com \
    --cc=pkshih@realtek.com \
    --cc=rtl8821cerfe2@gmail.com \
    --cc=straube.linux@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.