From: Rishik Yechuri <epicrishik@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org,
Rishik Yechuri <rishik.yechuri.code@gmail.com>
Subject: [PATCH 04/10] staging: rtl8723bs: use ieee80211_is_*() for frame type tests
Date: Tue, 13 Oct 2026 15:15:32 -0500 [thread overview]
Message-ID: <20261013201538.43156-5-rishik.yechuri.code@gmail.com> (raw)
In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com>
Several functions test whether a received or transmitted frame is of
one particular type or subtype by comparing the result of
GetFrameType() or GetFrameSubType() against the driver's WIFI_*
constants. <linux/ieee80211.h> provides ieee80211_is_*() helpers that
perform the same tests on the frame_control member of
struct ieee80211_hdr.
Replace these single comparisons with the corresponding helpers:
GetFrameType() == WIFI_MGT_TYPE -> ieee80211_is_mgmt()
GetFrameType() == WIFI_CTRL_TYPE -> ieee80211_is_ctl()
GetFrameType() == WIFI_DATA_TYPE -> ieee80211_is_data()
GetFrameSubType() == WIFI_BEACON -> ieee80211_is_beacon()
GetFrameSubType() == WIFI_PSPOLL -> ieee80211_is_pspoll()
GetFrameSubType() == WIFI_ASSOCREQ -> ieee80211_is_assoc_req()
GetFrameSubType() == WIFI_DEAUTH -> ieee80211_is_deauth()
GetFrameSubType() == WIFI_DISASSOC -> ieee80211_is_disassoc()
The QoS data test in sta2ap_data_frame() is replaced with
ieee80211_is_data_qos(). The helper additionally checks that the frame
type is data, which is always the case on this path since the frame
has already been classified as a data frame by validate_recv_frame().
Remove IsFrameTypeCtrl(), whose only caller is converted by this
change.
The remaining users of GetFrameType() and GetFrameSubType() are
converted separately.
No functional change intended.
Signed-off-by: Rishik Yechuri <rishik.yechuri.code@gmail.com>
---
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 2 +-
drivers/staging/rtl8723bs/core/rtw_recv.c | 11 ++++++-----
drivers/staging/rtl8723bs/core/rtw_xmit.c | 3 ++-
drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c | 5 +++--
drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c | 3 ++-
drivers/staging/rtl8723bs/include/wifi.h | 5 -----
drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 6 +++---
7 files changed, 17 insertions(+), 18 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
index 842c3d39c..dfe4f6210 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
@@ -436,7 +436,7 @@ void mgt_dispatcher(struct adapter *padapter, union recv_frame *precv_frame)
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)pframe;
struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, hdr->addr2);
- if (GetFrameType(pframe) != WIFI_MGT_TYPE)
+ if (!ieee80211_is_mgmt(hdr->frame_control))
return;
/* receive the frames that ra(a1) is my address or ra(a1) is bc address. */
diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rtl8723bs/core/rtw_recv.c
index 43452f50d..3dcb4c8b5 100644
--- a/drivers/staging/rtl8723bs/core/rtw_recv.c
+++ b/drivers/staging/rtl8723bs/core/rtw_recv.c
@@ -859,6 +859,7 @@ static signed int sta2ap_data_frame(struct adapter *adapter, union recv_frame *p
struct sta_info **psta)
{
u8 *ptr = precv_frame->u.hdr.rx_data;
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)ptr;
struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
struct sta_priv *pstapriv = &adapter->stapriv;
struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
@@ -882,7 +883,7 @@ static signed int sta2ap_data_frame(struct adapter *adapter, union recv_frame *p
process_pwrbit_data(adapter, precv_frame);
- if ((GetFrameSubType(ptr) & WIFI_QOS_DATA_TYPE) == WIFI_QOS_DATA_TYPE)
+ if (ieee80211_is_data_qos(hdr->frame_control))
process_wmmps_data(adapter, precv_frame);
if (GetFrameSubType(ptr) & BIT(6)) {
@@ -915,7 +916,7 @@ static signed int validate_recv_ctrl_frame(struct adapter *padapter, union recv_
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)pframe;
struct sta_info *psta = NULL;
- if (GetFrameType(pframe) != WIFI_CTRL_TYPE)
+ if (!ieee80211_is_ctl(hdr->frame_control))
return _FAIL;
/* receive the frames that ra(a1) is my address */
@@ -930,7 +931,7 @@ static signed int validate_recv_ctrl_frame(struct adapter *padapter, union recv_
psta->sta_stats.rx_ctrl_pkts++;
/* only handle ps-poll */
- if (GetFrameSubType(pframe) == WIFI_PSPOLL) {
+ if (ieee80211_is_pspoll(hdr->frame_control)) {
u16 aid;
u8 wmmps_ac = 0;
@@ -1128,9 +1129,9 @@ static union recv_frame *recvframe_chk_defrag(struct adapter *padapter, union re
psta_addr = pfhdr->attrib.ta;
psta = rtw_get_stainfo(pstapriv, psta_addr);
if (!psta) {
- u8 type = GetFrameType(pfhdr->rx_data);
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)pfhdr->rx_data;
- if (type != WIFI_DATA_TYPE) {
+ if (!ieee80211_is_data(hdr->frame_control)) {
psta = rtw_get_bcmc_stainfo(padapter);
pdefrag_q = &psta->sta_recvpriv.defrag_q;
} else {
diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rtl8723bs/core/rtw_xmit.c
index db75ff51f..2e1a4b483 100644
--- a/drivers/staging/rtl8723bs/core/rtw_xmit.c
+++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c
@@ -1231,7 +1231,8 @@ int rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, s
memset(MME, 0, 18);
/* other types doesn't need the BIP */
- if (GetFrameSubType(pframe) != WIFI_DEAUTH && GetFrameSubType(pframe) != WIFI_DISASSOC)
+ if (!ieee80211_is_deauth(pwlanhdr->frame_control) &&
+ !ieee80211_is_disassoc(pwlanhdr->frame_control))
goto xmitframe_coalesce_fail;
MGMT_body = pframe + sizeof(struct ieee80211_hdr_3addr);
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
index a62b845c6..79d6d7431 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
@@ -82,6 +82,7 @@ static void update_recvframe_phyinfo(union recv_frame *precvframe,
(struct odm_phy_info *)(&pattrib->phy_info);
u8 *wlanhdr = precvframe->u.hdr.rx_data;
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)wlanhdr;
u8 *my_bssid;
u8 *rx_bssid;
u8 *rx_ra;
@@ -101,7 +102,7 @@ static void update_recvframe_phyinfo(union recv_frame *precvframe,
my_bssid = get_bssid(&padapter->mlmepriv);
rx_bssid = get_hdr_bssid(wlanhdr);
- pkt_info.bssid_match = ((!IsFrameTypeCtrl(wlanhdr)) &&
+ pkt_info.bssid_match = (!ieee80211_is_ctl(hdr->frame_control) &&
!pattrib->icv_err && !pattrib->crc_err &&
ether_addr_equal(rx_bssid, my_bssid));
@@ -111,7 +112,7 @@ static void update_recvframe_phyinfo(union recv_frame *precvframe,
ether_addr_equal(rx_ra, my_hwaddr);
pkt_info.is_beacon = pkt_info.bssid_match &&
- (GetFrameSubType(wlanhdr) == WIFI_BEACON);
+ ieee80211_is_beacon(hdr->frame_control);
sa = get_ta(wlanhdr);
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c
index 6ba004aa8..eb8b73fba 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c
@@ -426,6 +426,7 @@ s32 rtl8723bs_mgnt_xmit(
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
u8 *pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)pframe;
u8 txdesc_size = TXDESC_SIZE;
rtl8723b_update_txdesc(pmgntframe, pmgntframe->buf_addr);
@@ -441,7 +442,7 @@ s32 rtl8723bs_mgnt_xmit(
pxmitbuf->priv_data = NULL;
- if (GetFrameSubType(pframe) == WIFI_BEACON) { /* dump beacon directly */
+ if (ieee80211_is_beacon(hdr->frame_control)) { /* dump beacon directly */
ret = rtw_write_port(padapter, pdvobjpriv->Queue2Pipe[pxmitbuf->ff_hwaddr], pxmitbuf->len, (u8 *)pxmitbuf);
if (ret != _SUCCESS)
rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_WRITE_PORT_ERR);
diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl8723bs/include/wifi.h
index bfc985870..558e734a2 100644
--- a/drivers/staging/rtl8723bs/include/wifi.h
+++ b/drivers/staging/rtl8723bs/include/wifi.h
@@ -216,11 +216,6 @@ static inline unsigned char *get_hdr_bssid(unsigned char *pframe)
return sa;
}
-static inline int IsFrameTypeCtrl(unsigned char *pframe)
-{
- return GetFrameType(pframe) == WIFI_CTRL_TYPE;
-}
-
/*-----------------------------------------------------------------------------
Below is for the security related definition
------------------------------------------------------------------------------*/
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
index 9d203810e..150469cda 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
@@ -1897,10 +1897,11 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *padapter, u8 *pmgmt_frame,
struct wireless_dev *wdev = padapter->rtw_wdev;
{
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)pmgmt_frame;
struct station_info sinfo = {};
u8 ie_offset;
- if (GetFrameSubType(pmgmt_frame) == WIFI_ASSOCREQ)
+ if (ieee80211_is_assoc_req(hdr->frame_control))
ie_offset = _ASOCREQ_IE_OFFSET_;
else /* WIFI_REASSOCREQ */
ie_offset = _REASOCREQ_IE_OFFSET_;
@@ -1908,8 +1909,7 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *padapter, u8 *pmgmt_frame,
sinfo.filled = 0;
sinfo.assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset;
sinfo.assoc_req_ies_len = frame_len - WLAN_HDR_A3_LEN - ie_offset;
- cfg80211_new_sta(wdev, ((struct ieee80211_hdr *)pmgmt_frame)->addr2,
- &sinfo, GFP_ATOMIC);
+ cfg80211_new_sta(wdev, hdr->addr2, &sinfo, GFP_ATOMIC);
}
}
--
2.43.0
next prev parent reply other threads:[~2026-10-13 20:15 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-13 20:15 [PATCH 00/10] staging: rtl8723bs: replace private 802.11 header macros with generic helpers Rishik Yechuri
2026-10-13 20:15 ` [PATCH 01/10] staging: rtl8723bs: use struct ieee80211_hdr for header addresses Rishik Yechuri
2026-10-13 20:15 ` [PATCH 02/10] staging: rtl8723bs: use ieee80211_has_*() to test frame control flags Rishik Yechuri
2026-10-13 20:15 ` [PATCH 03/10] staging: rtl8723bs: set frame control flags with IEEE80211_FCTL_* masks Rishik Yechuri
2026-10-13 20:15 ` Rishik Yechuri [this message]
2026-10-13 20:15 ` [PATCH 05/10] staging: rtl8723bs: use IEEE80211_FCTL_* masks for frame type dispatch Rishik Yechuri
2026-10-13 20:15 ` [PATCH 06/10] staging: rtl8723bs: remove unused num member from struct mlme_handler Rishik Yechuri
2026-10-13 20:15 ` [PATCH 07/10] staging: rtl8723bs: use IEEE80211_FTYPE_* and IEEE80211_STYPE_* values Rishik Yechuri
2026-10-13 20:15 ` [PATCH 08/10] staging: rtl8723bs: use struct ieee80211_hdr for seq_ctrl and duration_id Rishik Yechuri
2026-10-13 20:15 ` [PATCH 09/10] staging: rtl8723bs: use IEEE80211_QOS_CTL_* masks for QoS control Rishik Yechuri
2026-10-13 20:15 ` [PATCH 10/10] staging: rtl8723bs: use ieee80211_get_DA() and ieee80211_get_SA() Rishik Yechuri
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=20261013201538.43156-5-rishik.yechuri.code@gmail.com \
--to=epicrishik@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=rishik.yechuri.code@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.