Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Oct 2025 03:02:29 GMT
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 262172de955f - main - iwx: add some lock assertions in the TX start path
Message-ID:  <202510040302.59432TrW014876@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by adrian:

URL: https://cgit.FreeBSD.org/src/commit/?id=262172de955ff09f5029039f0d823996a63ff3d1

commit 262172de955ff09f5029039f0d823996a63ff3d1
Author:     Adrian Chadd <adrian@FreeBSD.org>
AuthorDate: 2025-09-21 04:55:45 +0000
Commit:     Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2025-10-04 02:55:14 +0000

    iwx: add some lock assertions in the TX start path
    
    The locking paths into these routines LOOK correct, but I figured
    it'd be good to at least enforce we're not doing concurrent entry
    into iwx_start() / iwx_tx() without the lock held.
    
    Differential Revision:  https://reviews.freebsd.org/D52655
    Reviewed by:    thj
---
 sys/dev/iwx/if_iwx.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/sys/dev/iwx/if_iwx.c b/sys/dev/iwx/if_iwx.c
index 5be7f2755598..557b5a7a1ca2 100644
--- a/sys/dev/iwx/if_iwx.c
+++ b/sys/dev/iwx/if_iwx.c
@@ -4805,6 +4805,8 @@ iwx_rx_tx_cmd(struct iwx_softc *sc, struct iwx_rx_packet *pkt,
 static void
 iwx_clear_oactive(struct iwx_softc *sc, struct iwx_tx_ring *ring)
 {
+	IWX_ASSERT_LOCKED(sc);
+
 	if (ring->queued < iwx_lomark) {
 		sc->qfullmsk &= ~(1 << ring->qid);
 		if (sc->qfullmsk == 0 /* && ifq_is_oactive(&ifp->if_snd) */) {
@@ -5630,6 +5632,8 @@ iwx_tx(struct iwx_softc *sc, struct mbuf *m, struct ieee80211_node *ni)
 	struct mbuf *m1;
 	size_t txcmd_size;
 
+	IWX_ASSERT_LOCKED(sc);
+
 	wh = mtod(m, struct ieee80211_frame *);
 	type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK;
 	subtype = wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK;
@@ -8534,6 +8538,8 @@ iwx_start(struct iwx_softc *sc)
         struct ieee80211_node *ni;
         struct mbuf *m;
 
+        IWX_ASSERT_LOCKED(sc);
+
         while (sc->qfullmsk == 0 && (m = mbufq_dequeue(&sc->sc_snd)) != NULL) {
                 ni = (struct ieee80211_node *)m->m_pkthdr.rcvif;
                 if (iwx_tx(sc, m, ni) != 0) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202510040302.59432TrW014876>