From: Rosen Penev <rosenp@gmail.com>
To: Arend van Spriel <arend.vanspriel@broadcom.com>
Cc: linux-wireless@vger.kernel.org, brcm80211@lists.linux.dev,
brcm80211-dev-list.pdl@broadcom.com,
linux-kernel@vger.kernel.org
Subject: [PATCH wireless-next 4/7] wifi: brcmsmac: embed default_bss in brcms_c_info
Date: Tue, 10 Nov 2026 20:25:51 -0800 [thread overview]
Message-ID: <20261111042554.232998-5-rosenp@gmail.com> (raw)
In-Reply-To: <20261111042554.232998-1-rosenp@gmail.com>
Replace the separately allocated default_bss pointer with a
directly embedded struct brcms_bss_info in brcms_c_info,
removing one kzalloc()/kfree() pair and its OOM error path.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
.../broadcom/brcm80211/brcmsmac/ampdu.c | 2 +-
.../broadcom/brcm80211/brcmsmac/main.c | 35 ++++++++-----------
.../broadcom/brcm80211/brcmsmac/main.h | 2 +-
3 files changed, 16 insertions(+), 23 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/ampdu.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/ampdu.c
index fc7a5dd2e5d8..b40761e571c2 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/ampdu.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/ampdu.c
@@ -862,7 +862,7 @@ brcms_c_ampdu_dotxstatus_complete(struct ampdu_info *ampdu, struct scb *scb,
brcms_dbg_ht(wlc->hw->d11core,
"%s: Pkt tx suppressed, illegal channel possibly %d\n",
__func__, CHSPEC_CHANNEL(
- wlc->default_bss->chanspec));
+ wlc->default_bss.chanspec));
} else {
if (supr_status != TX_STATUS_SUPR_FRAG)
brcms_err(wlc->hw->d11core,
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.c
index d000e2a70870..2140feb86964 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.c
@@ -420,7 +420,6 @@ static void brcms_c_detach_mfree(struct brcms_c_info *wlc)
kfree(wlc->bsscfg);
kfree(wlc->pub);
- kfree(wlc->default_bss);
kfree(wlc->protection);
kfree(wlc->stf);
kfree(wlc->corestate);
@@ -461,12 +460,6 @@ brcms_c_attach_malloc(uint unit, uint *err, uint devid)
}
wlc->hw->wlc = wlc;
- wlc->default_bss = kzalloc_obj(*wlc->default_bss, GFP_ATOMIC);
- if (wlc->default_bss == NULL) {
- *err = 1010;
- goto fail;
- }
-
wlc->bsscfg = kzalloc_obj(*wlc->bsscfg, GFP_ATOMIC);
if (wlc->bsscfg == NULL) {
*err = 1011;
@@ -822,7 +815,7 @@ brcms_c_dotxstatus(struct brcms_c_info *wlc, struct tx_status *txs)
brcms_dbg_tx(wlc->hw->d11core,
"Pkt tx suppressed, dest chan %u, current %d\n",
(xfts >> XFTS_CHANNEL_SHIFT) & 0xff,
- CHSPEC_CHANNEL(wlc->default_bss->chanspec));
+ CHSPEC_CHANNEL(wlc->default_bss.chanspec));
}
tx_frame_count =
@@ -3311,7 +3304,7 @@ brcms_default_rateset(struct brcms_c_info *wlc, struct brcms_c_rateset *rs)
brcms_c_rateset_default(rs, NULL, wlc->band->phytype,
wlc->band->bandtype, false, BRCMS_RATE_MASK_FULL,
(bool) (wlc->pub->_n_enab & SUPPORT_11N),
- brcms_chspec_bw(wlc->default_bss->chanspec),
+ brcms_chspec_bw(wlc->default_bss.chanspec),
wlc->stf->txstreams);
}
@@ -4639,7 +4632,7 @@ static void brcms_c_bss_default_init(struct brcms_c_info *wlc)
{
u16 chanspec;
struct brcms_band *band;
- struct brcms_bss_info *bi = wlc->default_bss;
+ struct brcms_bss_info *bi = &wlc->default_bss;
/* init default and target BSS with some sane initial values */
memset(bi, 0, sizeof(*bi));
@@ -5198,9 +5191,9 @@ int brcms_c_set_gmode(struct brcms_c_info *wlc, u8 gmode, bool config)
}
/* Set default bss rateset */
- wlc->default_bss->rateset.count = rs.count;
- memcpy(wlc->default_bss->rateset.rates, rs.rates,
- sizeof(wlc->default_bss->rateset.rates));
+ wlc->default_bss.rateset.count = rs.count;
+ memcpy(wlc->default_bss.rateset.rates, rs.rates,
+ sizeof(wlc->default_bss.rateset.rates));
return ret;
}
@@ -5221,13 +5214,13 @@ int brcms_c_set_nmode(struct brcms_c_info *wlc)
wlc->pub->_n_enab = SUPPORT_HT;
else
wlc->pub->_n_enab = SUPPORT_11N;
- wlc->default_bss->flags |= BRCMS_BSS_HT;
+ wlc->default_bss.flags |= BRCMS_BSS_HT;
/* add the mcs rates to the default and hw ratesets */
- brcms_c_rateset_mcs_build(&wlc->default_bss->rateset,
+ brcms_c_rateset_mcs_build(&wlc->default_bss.rateset,
wlc->stf->txstreams);
for (i = 0; i < wlc->pub->_nbands; i++)
memcpy(wlc->bandstate[i].hw_rateset.mcs,
- wlc->default_bss->rateset.mcs, MCSSET_LEN);
+ wlc->default_bss.rateset.mcs, MCSSET_LEN);
return 0;
}
@@ -5269,7 +5262,7 @@ brcms_c_set_internal_rateset(struct brcms_c_info *wlc,
good:
/* apply new rateset */
- memcpy(&wlc->default_bss->rateset, &new,
+ memcpy(&wlc->default_bss.rateset, &new,
sizeof(struct brcms_c_rateset));
memcpy(&wlc->bandstate[bandunit].defrateset, &new,
sizeof(struct brcms_c_rateset));
@@ -5299,7 +5292,7 @@ int brcms_c_set_channel(struct brcms_c_info *wlc, u16 channel)
wlc->bandinit_pending = false;
}
- wlc->default_bss->chanspec = chspec;
+ wlc->default_bss.chanspec = chspec;
/* brcms_c_BSSinit() will sanitize the rateset before
* using it.. */
if (wlc->pub->up && (wlc_phy_chanspec_get(wlc->band->pi) != chspec)) {
@@ -5343,7 +5336,7 @@ void brcms_c_get_current_rateset(struct brcms_c_info *wlc,
if (wlc->pub->associated)
rs = &wlc->bsscfg->current_bss.rateset;
else
- rs = &wlc->default_bss->rateset;
+ rs = &wlc->default_bss.rateset;
/* Copy only legacy rateset section */
currs->count = rs->count;
@@ -5370,7 +5363,7 @@ int brcms_c_set_rateset(struct brcms_c_info *wlc, struct brcm_rateset *rs)
if (wlc->pub->associated)
mcsset_bss = &wlc->bsscfg->current_bss;
else
- mcsset_bss = wlc->default_bss;
+ mcsset_bss = &wlc->default_bss;
memcpy(internal_rs.mcs, &mcsset_bss->rateset.mcs[0],
MCSSET_LEN);
}
@@ -5403,7 +5396,7 @@ int brcms_c_set_beacon_period(struct brcms_c_info *wlc, u16 period)
if (period == 0)
return -EINVAL;
- wlc->default_bss->beacon_period = period;
+ wlc->default_bss.beacon_period = period;
bcnint_us = period << 10;
brcms_c_time_lock(wlc);
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.h b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.h
index 0e6a5edc74c8..94966418b069 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.h
@@ -524,7 +524,7 @@ struct brcms_c_info {
s8 ofdm_40txbw;
s8 mimo_40txbw;
- struct brcms_bss_info *default_bss;
+ struct brcms_bss_info default_bss;
u16 mc_fid_counter;
--
2.56.0
next prev parent reply other threads:[~2026-11-11 4:26 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-11 4:25 [PATCH wireless-next 0/7] wifi: brcmsmac: embed fixed-size allocations " Rosen Penev
2026-11-11 4:25 ` [PATCH wireless-next 1/7] wifi: brcmsmac: embed bandstate arrays instead of separate allocation Rosen Penev
2026-11-11 4:25 ` [PATCH wireless-next 2/7] wifi: brcmsmac: embed modulecb array " Rosen Penev
2026-11-11 4:25 ` [PATCH wireless-next 3/7] wifi: brcmsmac: embed macstat_snapshot in brcms_core Rosen Penev
2026-11-11 4:25 ` Rosen Penev [this message]
2026-11-11 4:25 ` [PATCH wireless-next 5/7] wifi: brcmsmac: embed brcms_protection in brcms_c_info Rosen Penev
2026-11-11 4:25 ` [PATCH wireless-next 6/7] wifi: brcmsmac: embed brcms_core " Rosen Penev
2026-11-11 4:25 ` [PATCH wireless-next 7/7] wifi: brcmsmac: embed brcms_bss_cfg " Rosen Penev
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=20261111042554.232998-5-rosenp@gmail.com \
--to=rosenp@gmail.com \
--cc=arend.vanspriel@broadcom.com \
--cc=brcm80211-dev-list.pdl@broadcom.com \
--cc=brcm80211@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®