From nobody Sat Oct 24 13:19:48 2026 Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 41CFF4DE700 for ; Tue, 13 Oct 2026 20:15:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922547; cv=none; b=sR3fOMhuiXqxkvN79n3iW8lE5yXBr3BM86/xJlgY4GW435xooTe/P/Xkp0B4r/ZRzKxd7nVdyhPydu0QVCUo1a10FWIIsO/pw6o9I/JSTEedSwcQ4J78gUP/V46usaA8qxFEna3gwLQMgajMbiOZ5EHHX5nksphcCQEL65fJS2g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922547; c=relaxed/simple; bh=SXJUssVGNIKVXvvAiVtppNrEesk1/Eu1LxIjwYyPHSU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m6YveRtWPSmlmhiC6BabK3WKliZ0g2bSqnXqy9Vnu1Xf99PQ4T/4+h9Z/f6jhpEQHAiD0w8skmZPsHuD+fz3031LfOlQUJLjBGRNSZDh+NaX3kzl8da9IOdu56QPdsB8xj4GLblVTCqBSyZH2ldm4jNpIH/6jQxIYDDQ9BRTv4s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Y9klkiX/; arc=none smtp.client-ip=209.85.210.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Y9klkiX/" Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-7f84a55cc06so2133134a34.2 for ; Tue, 13 Oct 2026 13:15:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922542; x=1792527342; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=NS4W68/+zzTyFOe0TbxaLKa54HBQPqOlKN0Ut8TCAoo=; b=Y9klkiX/BSaSVFO1WZaV4Sa+ampX1DxRyZS4ER2YZbjjaRSVvUZ7rUqbo8+09NEUj6 KsS+xfSebXymrp0sa1Mghx7NTjwdxtngDCqRGsy0HrVU77bInoxkv2gajwnTNvdaGCPj cWPw0Yb258uvErV1xS+WVgg7pGqliZjJRXcvbeDC7yGQOvrTDLYmVeEGq7XlibzmbBQN JREJyYu3UXSB01VdbZKQZJEwR9cRgFHsJwX5pk2T73g0JFYiFekSJRlpebEz29D6tCC3 SyMeyQXnUe9tAI7eul+3iyda/C8r20E9dlDDhUMkIKcoohYrfjeqLMhBBgQ/2zTGoWSF BJlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922542; x=1792527342; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=NS4W68/+zzTyFOe0TbxaLKa54HBQPqOlKN0Ut8TCAoo=; b=j2h4F53T0Dza7mx8n8gV2si7EekhcNviRDqjRNAGt861TVllcxt51F0z6kz5p9Pcep Z9gMCu6XZKu56uOp1TAC1Y5EtdfEGLyhd/EWkuqV+k1zD+IuYli4qwof0o9E4OGok7DO L4C3AIX+KFuusR3H6L/pjSlGqr3sXoEc171wkCnmzga1jmZFAWSOm3cNls+diKT26iqW rv6pT2tWi8bORIORCfsKpNjKpcMYAUTlu8U6zZ+T0zlATzWBF4I7kQdt94rkd2xf5sBZ IC+qo6IfWODewjisAYuB8jejb1xzLL6OH2e4JIBUdpIa52diqVEMK18BRDpTUjCQ6Vxv Itpw== X-Forwarded-Encrypted: i=1; AKwUvBwATzXrcLuHdv9c8fG+zuZHhRqQfLcF8ERXuLxmts3K2B1JFupNoxJY5FActnFshzv+pYq6eJBxC54d220=@vger.kernel.org X-Gm-Message-State: AFq9FYIG2+UYhryYdVPxMiXtjuvFnW8jyScPv2aK2wTAXP+6gSZJW9H/ /g9HZ5DlY7Ef+bWBw5f/wD8z9/j4VP7IYHNYjhIN/CYewwakm76Ty6fg X-Gm-Gg: AYBFou1awGWjjdNwiLJDveYTtHlQqhB2WQeLaoAo6GOzyMtZFnosef2zUvC9rsPpQo3 fBDFBpizn8ALlBfmPHr4dUbxBriLkqOTVFF46+pA+ALMXFKmYoewEBuHk+cTZCLtMi+2zMSaKYM XIEuJ3ABw44UFs3ggPlCSYXjf+OV6hMBmsK69gszAiezrjv0cj8NnGI2NpSvFmFMbKJngza4Ybs CtCDZkRg7phpyG+rphPdrWS//ObcuNY6f+x63b6doj/fckyPOnO/BMM4ivPZdvo+4rxcci7zFdT GL9yz3i2LSMh1KXEZb4oK93eg+4Np58yI+2xXxgb/I1cHXn9OhkvAyKnK7FyE00fJGjP8YTJNPy VBULz7eh+5TvWFH2T3eICNBvqtVlovAr05ZeNaMfSlm2xO0qyVqlzV5J2gQ/ncVfG2qNOWEQ5YP 7nGLF19YBRJo5KCy1gjyyHQ/byFuVXtLOfbgqpBSIJZ3vMGE1ZIrFa460tolo83TebVae8+FMw9 Cs= X-Received: by 2002:a05:6830:4394:b0:81c:37e2:2012 with SMTP id 46e09a7af769-830962fac35mr14575471a34.15.1791922541674; Tue, 13 Oct 2026 13:15:41 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:41 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 01/10] staging: rtl8723bs: use struct ieee80211_hdr for header addresses Date: Tue, 13 Oct 2026 15:15:29 -0500 Message-ID: <20261013201538.43156-2-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The driver defines GetAddr1Ptr() through GetAddr4Ptr() in wifi.h to obtain pointers to the address fields of an IEEE 802.11 header by adding hardcoded byte offsets to the frame buffer. This duplicates struct ieee80211_hdr from , which describes the same layout and is used throughout the wireless subsystem. Replace each use of these macros with the corresponding addr1..addr4 member of struct ieee80211_hdr, and remove the macro definitions. Several functions in rtw_mlme_ext.c already access the header through struct ieee80211_hdr. This makes the remaining call sites consistent with them. Include directly in wifi.h, since the inline helpers there now depend on struct ieee80211_hdr. This is the first step towards replacing the driver's private 802.11 header macros with the generic helpers provided by the kernel. No functional change intended. Signed-off-by: Rishik Yechuri --- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 87 +++++++++++-------- drivers/staging/rtl8723bs/core/rtw_recv.c | 46 +++++----- .../staging/rtl8723bs/core/rtw_wlan_util.c | 2 +- drivers/staging/rtl8723bs/include/wifi.h | 43 +++++---- .../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 3 +- 5 files changed, 100 insertions(+), 81 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index 511eccf5b..1349bd423 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -415,11 +415,12 @@ void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeex= t) static void _mgt_dispatcher(struct adapter *padapter, struct mlme_handler = *ptable, union recv_frame *precv_frame) { u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; =20 if (ptable->func) { /* receive the frames that ra(a1) is my address or ra(a1) is bc address.= */ - if (memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN) && - !is_broadcast_ether_addr(GetAddr1Ptr(pframe))) + if (memcmp(hdr->addr1, myid(&padapter->eeprompriv), ETH_ALEN) && + !is_broadcast_ether_addr(hdr->addr1)) return; =20 ptable->func(padapter, precv_frame); @@ -432,14 +433,15 @@ void mgt_dispatcher(struct adapter *padapter, union r= ecv_frame *precv_frame) struct mlme_handler *ptable; struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; u8 *pframe =3D precv_frame->u.hdr.rx_data; - struct sta_info *psta =3D rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr= (pframe)); + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; + struct sta_info *psta =3D rtw_get_stainfo(&padapter->stapriv, hdr->addr2); =20 if (GetFrameType(pframe) !=3D WIFI_MGT_TYPE) return; =20 /* receive the frames that ra(a1) is my address or ra(a1) is bc address. = */ - if (memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN) && - !is_broadcast_ether_addr(GetAddr1Ptr(pframe))) { + if (memcmp(hdr->addr1, myid(&padapter->eeprompriv), ETH_ALEN) && + !is_broadcast_ether_addr(hdr->addr1)) { return; } =20 @@ -554,6 +556,7 @@ unsigned int OnBeacon(struct adapter *padapter, union r= ecv_frame *precv_frame) struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; struct sta_priv *pstapriv =3D &padapter->stapriv; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; uint len =3D precv_frame->u.hdr.len; struct wlan_bssid_ex *pbss; int ret =3D _SUCCESS; @@ -574,7 +577,7 @@ unsigned int OnBeacon(struct adapter *padapter, union r= ecv_frame *precv_frame) return _SUCCESS; } =20 - if (!memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_A= LEN)) { + if (!memcmp(hdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN)) { if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) { /* we should update current network before auth, or some IE is wrong */ pbss =3D kmalloc_obj(*pbss, GFP_ATOMIC); @@ -610,7 +613,7 @@ unsigned int OnBeacon(struct adapter *padapter, union r= ecv_frame *precv_frame) =20 if (((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_STATION_STATE) && (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) { - psta =3D rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + psta =3D rtw_get_stainfo(pstapriv, hdr->addr2); if (psta) { ret =3D rtw_check_bcn_info(padapter, pframe, len); if (!ret) { @@ -628,7 +631,7 @@ unsigned int OnBeacon(struct adapter *padapter, union r= ecv_frame *precv_frame) adaptive_early_32k(pmlmeext, pframe, len); } } else if ((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_ADHOC_STATE) { - psta =3D rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + psta =3D rtw_get_stainfo(pstapriv, hdr->addr2); if (psta) { /* update WMM, ERP in the beacon */ /* todo: the timer is used instead of the number of the beacon receive= d */ @@ -650,7 +653,7 @@ unsigned int OnBeacon(struct adapter *padapter, union r= ecv_frame *precv_frame) update_TSF(pmlmeext, pframe, len); =20 /* report sta add event */ - report_add_sta_event(padapter, GetAddr2Ptr(pframe), cam_idx); + report_add_sta_event(padapter, hdr->addr2, cam_idx); } } } @@ -673,6 +676,7 @@ unsigned int OnAuth(struct adapter *padapter, union rec= v_frame *precv_frame) struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo =3D &pmlmeext->mlmext_info; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; uint len =3D precv_frame->u.hdr.len; u8 offset =3D 0; =20 @@ -682,7 +686,7 @@ unsigned int OnAuth(struct adapter *padapter, union rec= v_frame *precv_frame) if (len < WLAN_HDR_A3_LEN) return _FAIL; =20 - sa =3D GetAddr2Ptr(pframe); + sa =3D hdr->addr2; =20 auth_mode =3D psecuritypriv->dot11_auth_algrthm; =20 @@ -930,6 +934,7 @@ unsigned int OnAssocReq(struct adapter *padapter, union= recv_frame *precv_frame) struct wlan_bssid_ex *cur =3D &(pmlmeinfo->network); struct sta_priv *pstapriv =3D &padapter->stapriv; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; uint pkt_len =3D precv_frame->u.hdr.len; =20 if ((pmlmeinfo->state & 0x03) !=3D WIFI_FW_AP_STATE) @@ -944,7 +949,7 @@ unsigned int OnAssocReq(struct adapter *padapter, union= recv_frame *precv_frame) if (pkt_len < sizeof(struct ieee80211_hdr_3addr) + ie_offset) return _FAIL; =20 - pstat =3D rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + pstat =3D rtw_get_stainfo(pstapriv, hdr->addr2); if (!pstat) { status =3D WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA; goto asoc_class2_error; @@ -1302,7 +1307,7 @@ unsigned int OnAssocReq(struct adapter *padapter, uni= on recv_frame *precv_frame) =20 asoc_class2_error: =20 - issue_deauth(padapter, GetAddr2Ptr(pframe), status); + issue_deauth(padapter, hdr->addr2, status); =20 return _FAIL; =20 @@ -1418,10 +1423,11 @@ unsigned int OnDeAuth(struct adapter *padapter, uni= on recv_frame *precv_frame) struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo =3D &pmlmeext->mlmext_info; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; int ignore_received_deauth =3D 0; =20 /* check A3 */ - if (memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_AL= EN)) + if (memcmp(hdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN)) return _SUCCESS; =20 reason =3D le16_to_cpu(*(__le16 *)(pframe + WLAN_HDR_A3_LEN)); @@ -1432,9 +1438,9 @@ unsigned int OnDeAuth(struct adapter *padapter, union= recv_frame *precv_frame) =20 netdev_dbg(padapter->pnetdev, "ap recv deauth reason code(%d) sta:%pM\n", reason, - GetAddr2Ptr(pframe)); + hdr->addr2); =20 - psta =3D rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + psta =3D rtw_get_stainfo(pstapriv, hdr->addr2); if (psta) { u8 updated =3D false; =20 @@ -1470,11 +1476,11 @@ unsigned int OnDeAuth(struct adapter *padapter, uni= on recv_frame *precv_frame) =20 netdev_dbg(padapter->pnetdev, "sta recv deauth reason code(%d) sta:%pM, ignore =3D %d\n", - reason, GetAddr3Ptr(pframe), + reason, hdr->addr3, ignore_received_deauth); =20 if (ignore_received_deauth =3D=3D 0) - receive_disconnect(padapter, GetAddr3Ptr(pframe), reason); + receive_disconnect(padapter, hdr->addr3, reason); =20 pmlmepriv->link_detect_info.busy_traffic =3D false; return _SUCCESS; @@ -1487,9 +1493,10 @@ unsigned int OnDisassoc(struct adapter *padapter, un= ion recv_frame *precv_frame) struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo =3D &pmlmeext->mlmext_info; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; =20 /* check A3 */ - if (memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_AL= EN)) + if (memcmp(hdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN)) return _SUCCESS; =20 reason =3D le16_to_cpu(*(__le16 *)(pframe + WLAN_HDR_A3_LEN)); @@ -1500,9 +1507,9 @@ unsigned int OnDisassoc(struct adapter *padapter, uni= on recv_frame *precv_frame) =20 netdev_dbg(padapter->pnetdev, "ap recv disassoc reason code(%d) sta:%pM\n", - reason, GetAddr2Ptr(pframe)); + reason, hdr->addr2); =20 - psta =3D rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + psta =3D rtw_get_stainfo(pstapriv, hdr->addr2); if (psta) { u8 updated =3D false; =20 @@ -1521,9 +1528,9 @@ unsigned int OnDisassoc(struct adapter *padapter, uni= on recv_frame *precv_frame) } netdev_dbg(padapter->pnetdev, "sta recv disassoc reason code(%d) sta:%pM\n", - reason, GetAddr3Ptr(pframe)); + reason, hdr->addr3); =20 - receive_disconnect(padapter, GetAddr3Ptr(pframe), reason); + receive_disconnect(padapter, hdr->addr3, reason); =20 pmlmepriv->link_detect_info.busy_traffic =3D false; return _SUCCESS; @@ -1539,11 +1546,12 @@ unsigned int on_action_spct(struct adapter *padapte= r, union recv_frame *precv_fr struct sta_info *psta =3D NULL; struct sta_priv *pstapriv =3D &padapter->stapriv; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; u8 *frame_body =3D (u8 *)(pframe + sizeof(struct ieee80211_hdr_3addr)); u8 category; u8 action; =20 - psta =3D rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + psta =3D rtw_get_stainfo(pstapriv, hdr->addr2); =20 if (!psta) goto exit; @@ -1579,17 +1587,18 @@ unsigned int OnAction_back(struct adapter *padapter= , union recv_frame *precv_fra struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo =3D &pmlmeext->mlmext_info; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; struct sta_priv *pstapriv =3D &padapter->stapriv; =20 /* check RA matches or not */ - if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), ETH_ALEN))= /* for if1, sta/ap mode */ + if (memcmp(myid(&(padapter->eeprompriv)), hdr->addr1, ETH_ALEN))/* for if= 1, sta/ap mode */ return _SUCCESS; =20 if ((pmlmeinfo->state & 0x03) !=3D WIFI_FW_AP_STATE) if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) return _SUCCESS; =20 - addr =3D GetAddr2Ptr(pframe); + addr =3D hdr->addr2; psta =3D rtw_get_stainfo(pstapriv, addr); =20 if (!psta) @@ -1742,11 +1751,12 @@ unsigned int on_action_public(struct adapter *padap= ter, union recv_frame *precv_ { unsigned int ret =3D _FAIL; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; u8 *frame_body =3D pframe + sizeof(struct ieee80211_hdr_3addr); u8 category, action; =20 /* check RA matches or not */ - if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), ETH_ALEN)) + if (memcmp(myid(&(padapter->eeprompriv)), hdr->addr1, ETH_ALEN)) goto exit; =20 category =3D frame_body[0]; @@ -1770,11 +1780,12 @@ unsigned int on_action_public(struct adapter *padap= ter, union recv_frame *precv_ unsigned int OnAction_ht(struct adapter *padapter, union recv_frame *precv= _frame) { u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; u8 *frame_body =3D pframe + sizeof(struct ieee80211_hdr_3addr); u8 category, action; =20 /* check RA matches or not */ - if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), ETH_ALEN)) + if (memcmp(myid(&(padapter->eeprompriv)), hdr->addr1, ETH_ALEN)) goto exit; =20 category =3D frame_body[0]; @@ -1797,13 +1808,14 @@ unsigned int OnAction_ht(struct adapter *padapter, = union recv_frame *precv_frame unsigned int OnAction_sa_query(struct adapter *padapter, union recv_frame = *precv_frame) { u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; struct mlme_ext_priv *pmlmeext =3D &(padapter->mlmeextpriv); unsigned short tid; =20 switch (pframe[WLAN_HDR_A3_LEN + 1]) { case 0: /* SA Query req */ memcpy(&tid, &pframe[WLAN_HDR_A3_LEN + 2], sizeof(unsigned short)); - issue_action_SA_Query(padapter, GetAddr2Ptr(pframe), 1, tid); + issue_action_SA_Query(padapter, hdr->addr2, 1, tid); break; =20 case 1: /* SA Query rsp */ @@ -1924,13 +1936,13 @@ void update_mgntframe_attrib(struct adapter *padapt= er, struct pkt_attrib *pattri =20 void update_mgntframe_attrib_addr(struct adapter *padapter, struct xmit_fr= ame *pmgntframe) { - u8 *pframe; + struct ieee80211_hdr *hdr; struct pkt_attrib *pattrib =3D &pmgntframe->attrib; =20 - pframe =3D (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + hdr =3D (struct ieee80211_hdr *)(pmgntframe->buf_addr + TXDESC_OFFSET); =20 - memcpy(pattrib->ra, GetAddr1Ptr(pframe), ETH_ALEN); - memcpy(pattrib->ta, GetAddr2Ptr(pframe), ETH_ALEN); + memcpy(pattrib->ra, hdr->addr1, ETH_ALEN); + memcpy(pattrib->ta, hdr->addr2, ETH_ALEN); } =20 void dump_mgntframe(struct adapter *padapter, struct xmit_frame *pmgntfram= e) @@ -2609,9 +2621,9 @@ void issue_asocrsp(struct adapter *padapter, unsigned= short status, struct sta_i fctrl =3D &(pwlanhdr->frame_control); *(fctrl) =3D 0; =20 - memcpy(GetAddr1Ptr(pwlanhdr), pstat->hwaddr, ETH_ALEN); - memcpy(GetAddr2Ptr(pwlanhdr), myid(&(padapter->eeprompriv)), ETH_ALEN); - memcpy(GetAddr3Ptr(pwlanhdr), get_my_bssid(&(pmlmeinfo->network)), ETH_AL= EN); + memcpy(pwlanhdr->addr1, pstat->hwaddr, ETH_ALEN); + memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; @@ -3744,6 +3756,7 @@ u8 collect_bss_info(struct adapter *padapter, union r= ecv_frame *precv_frame, str u8 *p; u16 val16, subtype; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; u32 packet_len =3D precv_frame->u.hdr.len; u8 ie_offset; struct registry_priv *pregistrypriv =3D &padapter->registrypriv; @@ -3854,10 +3867,10 @@ u8 collect_bss_info(struct adapter *padapter, union= recv_frame *precv_frame, str =20 if (val16 & BIT(0)) { bssid->infrastructure_mode =3D NL80211_IFTYPE_STATION; - memcpy(bssid->mac_address, GetAddr2Ptr(pframe), ETH_ALEN); + memcpy(bssid->mac_address, hdr->addr2, ETH_ALEN); } else { bssid->infrastructure_mode =3D NL80211_IFTYPE_ADHOC; - memcpy(bssid->mac_address, GetAddr3Ptr(pframe), ETH_ALEN); + memcpy(bssid->mac_address, hdr->addr3, ETH_ALEN); } =20 if (val16 & BIT(4)) diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rt= l8723bs/core/rtw_recv.c index 381b3e29a..8f3c0552e 100644 --- a/drivers/staging/rtl8723bs/core/rtw_recv.c +++ b/drivers/staging/rtl8723bs/core/rtw_recv.c @@ -673,6 +673,7 @@ static signed int sta2sta_data_frame(struct adapter *ad= apter, union recv_frame * struct sta_info **psta) { u8 *ptr =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)ptr; signed int ret =3D _SUCCESS; struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; struct sta_priv *pstapriv =3D &adapter->stapriv; @@ -730,9 +731,9 @@ static signed int sta2sta_data_frame(struct adapter *ad= apter, union recv_frame * } =20 } else if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) { - memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN); - memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN); - memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN); + memcpy(pattrib->dst, hdr->addr1, ETH_ALEN); + memcpy(pattrib->src, hdr->addr2, ETH_ALEN); + memcpy(pattrib->bssid, hdr->addr3, ETH_ALEN); memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); memcpy(pattrib->ta, pattrib->src, ETH_ALEN); =20 @@ -759,6 +760,7 @@ static signed int ap2sta_data_frame(struct adapter *ada= pter, union recv_frame *p struct sta_info **psta) { u8 *ptr =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)ptr; struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; signed int ret =3D _SUCCESS; struct sta_priv *pstapriv =3D &adapter->stapriv; @@ -812,9 +814,9 @@ static signed int ap2sta_data_frame(struct adapter *ada= pter, union recv_frame *p =20 } else if (check_fwstate(pmlmepriv, WIFI_MP_STATE) && check_fwstate(pmlmepriv, _FW_LINKED)) { - memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN); - memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN); - memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN); + memcpy(pattrib->dst, hdr->addr1, ETH_ALEN); + memcpy(pattrib->src, hdr->addr2, ETH_ALEN); + memcpy(pattrib->bssid, hdr->addr3, ETH_ALEN); memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); memcpy(pattrib->ta, pattrib->src, ETH_ALEN); =20 @@ -909,16 +911,17 @@ static signed int validate_recv_ctrl_frame(struct ada= pter *padapter, union recv_ struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; struct sta_priv *pstapriv =3D &padapter->stapriv; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; struct sta_info *psta =3D NULL; =20 if (GetFrameType(pframe) !=3D WIFI_CTRL_TYPE) return _FAIL; =20 /* receive the frames that ra(a1) is my address */ - if (memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN)) + if (memcmp(hdr->addr1, myid(&padapter->eeprompriv), ETH_ALEN)) return _FAIL; =20 - psta =3D rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + psta =3D rtw_get_stainfo(pstapriv, hdr->addr2); if (!psta) return _FAIL; =20 @@ -1193,14 +1196,17 @@ static union recv_frame *recvframe_chk_defrag(struc= t adapter *padapter, union re =20 static signed int validate_recv_mgnt_frame(struct adapter *padapter, union= recv_frame *precv_frame) { + struct ieee80211_hdr *hdr; struct sta_info *psta; =20 precv_frame =3D recvframe_chk_defrag(padapter, precv_frame); if (!precv_frame) return _SUCCESS; =20 + hdr =3D (struct ieee80211_hdr *)precv_frame->u.hdr.rx_data; + /* for rx pkt statistics */ - psta =3D rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(precv_frame->u.h= dr.rx_data)); + psta =3D rtw_get_stainfo(&padapter->stapriv, hdr->addr2); if (!psta) goto exit; =20 @@ -1214,12 +1220,10 @@ static signed int validate_recv_mgnt_frame(struct a= dapter *padapter, union recv_ psta->sta_stats.rx_probereq_pkts++; break; case WIFI_PROBERSP: - if (!memcmp(padapter->eeprompriv.mac_addr, - GetAddr1Ptr(precv_frame->u.hdr.rx_data), - ETH_ALEN)) + if (!memcmp(padapter->eeprompriv.mac_addr, hdr->addr1, ETH_ALEN)) psta->sta_stats.rx_probersp_pkts++; - else if (is_broadcast_ether_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)= ) || - is_multicast_ether_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data))) + else if (is_broadcast_ether_addr(hdr->addr1) || + is_multicast_ether_addr(hdr->addr1)) psta->sta_stats.rx_probersp_bm_pkts++; else psta->sta_stats.rx_probersp_uo_pkts++; @@ -1239,6 +1243,7 @@ static signed int validate_recv_data_frame(struct ada= pter *adapter, union recv_f u8 *psa, *pda, *pbssid; struct sta_info *psta =3D NULL; u8 *ptr =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)ptr; struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; struct security_priv *psecuritypriv =3D &adapter->securitypriv; signed int ret =3D _SUCCESS; @@ -1278,8 +1283,8 @@ static signed int validate_recv_data_frame(struct ada= pter *adapter, union recv_f break; =20 case 3: - memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN); - memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN); + memcpy(pattrib->ra, hdr->addr1, ETH_ALEN); + memcpy(pattrib->ta, hdr->addr2, ETH_ALEN); ret =3D _FAIL; break; =20 @@ -1344,6 +1349,7 @@ static signed int validate_80211w_mgmt(struct adapter= *adapter, union recv_frame struct mlme_priv *pmlmepriv =3D &adapter->mlmepriv; struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; u8 *ptr =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)ptr; u8 subtype; =20 subtype =3D GetFrameSubType(ptr); /* bit(7)~bit(2) */ @@ -1352,7 +1358,7 @@ static signed int validate_80211w_mgmt(struct adapter= *adapter, union recv_frame if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) && check_fwstate(pmlmepr= iv, _FW_LINKED) && adapter->securitypriv.binstallBIPkey) { /* unicast management frame decrypt */ - if (pattrib->privacy && !(is_multicast_ether_addr(GetAddr1Ptr(ptr))) && + if (pattrib->privacy && !(is_multicast_ether_addr(hdr->addr1)) && (subtype =3D=3D WIFI_DEAUTH || subtype =3D=3D WIFI_DISASSOC || subtype = =3D=3D WIFI_ACTION)) { u8 *mgmt_DATA; u32 data_len =3D 0; @@ -1362,8 +1368,8 @@ static signed int validate_80211w_mgmt(struct adapter= *adapter, union recv_frame pattrib->hdrlen =3D sizeof(struct ieee80211_hdr_3addr); /* set iv and icv length */ SET_ICE_IV_LEN(pattrib->iv_len, pattrib->icv_len, pattrib->encrypt); - memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN); - memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN); + memcpy(pattrib->ra, hdr->addr1, ETH_ALEN); + memcpy(pattrib->ta, hdr->addr2, ETH_ALEN); /* actual management data frame body */ data_len =3D pattrib->pkt_len - pattrib->hdrlen - pattrib->iv_len - pat= trib->icv_len; mgmt_DATA =3D kzalloc(data_len, GFP_ATOMIC); @@ -1381,7 +1387,7 @@ static signed int validate_80211w_mgmt(struct adapter= *adapter, union recv_frame /* remove the iv and icv length */ pattrib->pkt_len =3D pattrib->pkt_len - pattrib->iv_len - pattrib->icv_= len; kfree(mgmt_DATA); - } else if (is_multicast_ether_addr(GetAddr1Ptr(ptr)) && + } else if (is_multicast_ether_addr(hdr->addr1) && (subtype =3D=3D WIFI_DEAUTH || subtype =3D=3D WIFI_DISASSOC)) { signed int BIP_ret =3D _SUCCESS; /* verify BIP MME IE of broadcast/multicast de-auth/disassoc packet */ diff --git a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c b/drivers/stagi= ng/rtl8723bs/core/rtw_wlan_util.c index 9feab9ab7..72607588d 100644 --- a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c +++ b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c @@ -1082,7 +1082,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *p= frame, u32 packet_len) int group_cipher =3D 0, pairwise_cipher =3D 0, is_8021x =3D 0; unsigned char *pbuf; u32 wpa_ielen =3D 0; - u8 *pbssid =3D GetAddr3Ptr(pframe); + u8 *pbssid =3D ((struct ieee80211_hdr *)pframe)->addr3; struct HT_info_element *pht_info =3D NULL; struct ieee80211_ht_cap *pht_cap =3D NULL; u32 bcn_channel; diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl= 8723bs/include/wifi.h index 93cb83488..6c877c7ca 100644 --- a/drivers/staging/rtl8723bs/include/wifi.h +++ b/drivers/staging/rtl8723bs/include/wifi.h @@ -7,6 +7,8 @@ #ifndef _WIFI_H_ #define _WIFI_H_ =20 +#include + #define WLAN_HDR_A3_LEN 24 #define WLAN_HDR_A3_QOS_LEN 26 =20 @@ -180,47 +182,42 @@ enum { =20 #define GetAid(pbuf) (le16_to_cpu(*(__le16 *)((size_t)(pbuf) + 2)) & 0x3ff= f) =20 -#define GetAddr1Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 4)) - -#define GetAddr2Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 10)) - -#define GetAddr3Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 16)) - -#define GetAddr4Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 24)) - static inline unsigned char *rtl8723bs_get_ra(unsigned char *pframe) { + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; unsigned char *ra; =20 - ra =3D GetAddr1Ptr(pframe); + ra =3D hdr->addr1; return ra; } =20 static inline unsigned char *get_ta(unsigned char *pframe) { + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; unsigned char *ta; =20 - ta =3D GetAddr2Ptr(pframe); + ta =3D hdr->addr2; return ta; } =20 static inline unsigned char *get_da(unsigned char *pframe) { + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; unsigned char *da; unsigned int to_fr_ds =3D (GetToDs(pframe) << 1) | GetFrDs(pframe); =20 switch (to_fr_ds) { case 0x00: /* ToDs =3D 0, FromDs =3D 0 */ - da =3D GetAddr1Ptr(pframe); + da =3D hdr->addr1; break; case 0x01: /* ToDs =3D 0, FromDs =3D 1 */ - da =3D GetAddr1Ptr(pframe); + da =3D hdr->addr1; break; case 0x02: /* ToDs =3D 1, FromDs =3D 0 */ - da =3D GetAddr3Ptr(pframe); + da =3D hdr->addr3; break; default: /* ToDs =3D 1, FromDs =3D 1 */ - da =3D GetAddr3Ptr(pframe); + da =3D hdr->addr3; break; } =20 @@ -229,21 +226,22 @@ static inline unsigned char *get_da(unsigned char *pf= rame) =20 static inline unsigned char *get_sa(unsigned char *pframe) { + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; unsigned char *sa; unsigned int to_fr_ds =3D (GetToDs(pframe) << 1) | GetFrDs(pframe); =20 switch (to_fr_ds) { case 0x00: /* ToDs =3D 0, FromDs =3D 0 */ - sa =3D GetAddr2Ptr(pframe); + sa =3D hdr->addr2; break; case 0x01: /* ToDs =3D 0, FromDs =3D 1 */ - sa =3D GetAddr3Ptr(pframe); + sa =3D hdr->addr3; break; case 0x02: /* ToDs =3D 1, FromDs =3D 0 */ - sa =3D GetAddr2Ptr(pframe); + sa =3D hdr->addr2; break; default: /* ToDs =3D 1, FromDs =3D 1 */ - sa =3D GetAddr4Ptr(pframe); + sa =3D hdr->addr4; break; } =20 @@ -252,21 +250,22 @@ static inline unsigned char *get_sa(unsigned char *pf= rame) =20 static inline unsigned char *get_hdr_bssid(unsigned char *pframe) { + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; unsigned char *sa =3D NULL; unsigned int to_fr_ds =3D (GetToDs(pframe) << 1) | GetFrDs(pframe); =20 switch (to_fr_ds) { case 0x00: /* ToDs =3D 0, FromDs =3D 0 */ - sa =3D GetAddr3Ptr(pframe); + sa =3D hdr->addr3; break; case 0x01: /* ToDs =3D 0, FromDs =3D 1 */ - sa =3D GetAddr2Ptr(pframe); + sa =3D hdr->addr2; break; case 0x02: /* ToDs =3D 1, FromDs =3D 0 */ - sa =3D GetAddr1Ptr(pframe); + sa =3D hdr->addr1; break; case 0x03: /* ToDs =3D 1, FromDs =3D 1 */ - sa =3D GetAddr1Ptr(pframe); + sa =3D hdr->addr1; break; } =20 diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/st= aging/rtl8723bs/os_dep/ioctl_cfg80211.c index 91d98418c..9d203810e 100644 --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c @@ -1908,7 +1908,8 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *= padapter, u8 *pmgmt_frame, sinfo.filled =3D 0; sinfo.assoc_req_ies =3D pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset; sinfo.assoc_req_ies_len =3D frame_len - WLAN_HDR_A3_LEN - ie_offset; - cfg80211_new_sta(wdev, GetAddr2Ptr(pmgmt_frame), &sinfo, GFP_ATOMIC); + cfg80211_new_sta(wdev, ((struct ieee80211_hdr *)pmgmt_frame)->addr2, + &sinfo, GFP_ATOMIC); } } =20 --=20 2.43.0 From nobody Sat Oct 24 13:19:48 2026 Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com [209.85.210.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1600D54489B for ; Tue, 13 Oct 2026 20:15:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922546; cv=none; b=EkfqrwLsbAF7iX1QU2j0BZnKoyP9zuwfi0pYC9nFMo6n9nBtIKVUjCxltofDbpsrwr26mZORhVL3HSV9S3aabZsOvnb0QNj2vG7I0P76KLpAc3BhbmNXBV0sEYxA2ehodr3CPzDxTd28LeOS8q5+Dal8fZnr99DCVZlUM7Yq9G4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922546; c=relaxed/simple; bh=Z8Bu+KL+bj0mGq2kIrvhdlj8hmMhTjmJBRCxms5B6UE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=msmluEhj+RPvCDN0bbrKjiypS/svgLlGdt6aLQL7Fzz4BzPUe/OaFAMiBJonBqnhsrZMEVXuhKfnOF4XvEIDVu/4ZXiq29FuDfaDTR+x9pV+yG8s1dKL5g//nxQzE3lDyzoTkdrfI9K/5cNkgJzK/LouGfLqnXfo0K3+w2IX/U8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OteVz3ht; arc=none smtp.client-ip=209.85.210.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OteVz3ht" Received: by mail-ot1-f45.google.com with SMTP id 46e09a7af769-8266c388b67so2886285a34.0 for ; Tue, 13 Oct 2026 13:15:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922543; x=1792527343; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JOYnbfYGvBBLrVRDfsaZ7wyCdHgMKhFfjmPtx3cZKDo=; b=OteVz3htMZgOqWmypg6/+49wox8J9Es3i3PVOZhO0y5LzhkZ9BlHIeJZ0vhM2hAsZS myZLI+H+cEI9QhJVzjzyuLDfiQkbqROBtIL5jAiHv68o2niP0G4+cgFYTx+FzbqtEVXy mNda37fnuBnCvwM7YaLWnqpk6EDo1zIcUUy/XnkRwv3ez+4sTZE+t0tSSnfjZFBNafz2 ryf3x4MhBMhHeXzYlqF4nTHRG7+L6m+7gx9HHmWZfRczcLwpA65EXrmPUcMlgy7hIe/C D84wQtSwiAjx3rWuOTYGhgqg7SaNfmgOyMgGmimszCoBbBJnJtYGWUfD/AfMLCoRacxv 6Q5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922543; x=1792527343; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=JOYnbfYGvBBLrVRDfsaZ7wyCdHgMKhFfjmPtx3cZKDo=; b=gKhVb1h7Kq39RM9PY7xwf73QzhXVB5Vp1niY6tXkAmDepZDRB+HL/gTy37haPjEMhi +lWCfuUhzIq5mIdB2nt4DAVYF1gErYp8v88D3BMa6vY/VIsLQr0VSIrkJYsYSQX9qgci 1QAMZ4zqheffKAPv4lzIAHWfXAjvnRQtC3g8NIEVTNTlqYYptsU9ILaB9bDdSsbVV8Kk GsGnVf6AGaymwy4OHoZQk4tQgOOX2lWhvLmOjYodrU4eLvfb+Xc2WUtRQmxaU/IyWRDJ oPI41NqlC476BIW54pmHdxgeoFGgcnXnpKjwDXqb+M096NSjRuYPBPPBsd0ZLRTbH4Ea EwbA== X-Forwarded-Encrypted: i=1; AKwUvBye+69LuGYCWN4gxznFLAXxZkaypMBMhU4AVtl+4/dNKwGLKWzQZiS7PPZ0IA4SY0sQeOx00lA3VnPqV2c=@vger.kernel.org X-Gm-Message-State: AFq9FYI7kg7sOeVYI4A5Y7lLhJ1H4j4ptx6Sdwt/GI92/RUWUE4BICUm oOoqrECZaCKhhBZMCVYirzfmvTR7fvZ/99nTNWKV+EgusOY2v4aFEU4p X-Gm-Gg: AYBFou2rVq6bsJ+cRmqDG19+30vOkhYFeTzs8QTR01jNprsohgMFZU0B6cSexNZ+VOW QyeFxXHM9lxaRb8dAhTHkN/kkRpRAh/o+geB2fhgxkZqBWM4lMDNPCOeh6MdZGe2KDNwdE/e7wY HKdApJwai+9hnvFmCWC5gxrOsPPP011oMtkzpOE3TjsOFSSVD18CHrQJVhDJo/rZA+bhIOzmk1F iTlielbiSwgv6K0OcafL/fnfLfqpnZTdoD6j7kTINc0/y+9TrneIBGSDZm1c0gKb5Xot8cFC+NJ fjYIonvI4CxKvDqs45uZc6zd+geoMjCXNCFcW8jTNqTEeUijcUQ5N/CGRS5nFHckNT6RjC5P+hT wRYznpjtKrchIC6DXsSkpQ5iuPiWBNKxqUrYDj0I7IyotnKXw6K7oEnBUKLMQZVi3sOlYtc7VEd T0M4O4I5cERD0R0j8VlIOP+KS8ZFHOIG+vBCq37CPaJHKrCNWh8r+eHJRmGAI0M10k6V2zvQAYP KI= X-Received: by 2002:a05:6830:6f8f:b0:821:8e71:1bb5 with SMTP id 46e09a7af769-830963f4818mr13915729a34.14.1791922542558; Tue, 13 Oct 2026 13:15:42 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:42 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 02/10] staging: rtl8723bs: use ieee80211_has_*() to test frame control flags Date: Tue, 13 Oct 2026 15:15:30 -0500 Message-ID: <20261013201538.43156-3-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The driver defines GetToDs(), GetFrDs(), get_tofr_ds(), GetMFrag(), GetRetry(), GetPwrMgt(), GetMData(), GetPrivacy() and GetOrder() in wifi.h to test individual bits of the IEEE 802.11 Frame Control field. Each macro casts the frame buffer to __le16 and masks a single bit. provides equivalent helpers that operate on the frame_control member of struct ieee80211_hdr and test the same bits. Replace each use of these macros with the corresponding helper: GetToDs() -> ieee80211_has_tods() GetFrDs() -> ieee80211_has_fromds() GetMFrag() -> ieee80211_has_morefrags() GetRetry() -> ieee80211_has_retry() GetPwrMgt() -> ieee80211_has_pm() GetMData() -> ieee80211_has_moredata() GetPrivacy() -> ieee80211_has_protected() GetOrder() -> ieee80211_has_order() Open code get_tofr_ds() using ieee80211_has_tods() and ieee80211_has_fromds(), and remove the macro definitions. Also remove GetOrderBit(), which has no users. No functional change intended. Signed-off-by: Rishik Yechuri --- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 10 +++--- drivers/staging/rtl8723bs/core/rtw_recv.c | 19 +++++++----- drivers/staging/rtl8723bs/include/wifi.h | 31 ++++--------------- 3 files changed, 23 insertions(+), 37 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index 1349bd423..d318b0ff4 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -455,7 +455,7 @@ void mgt_dispatcher(struct adapter *padapter, union rec= v_frame *precv_frame) ptable +=3D index; =20 if (psta) { - if (GetRetry(pframe)) { + if (ieee80211_has_retry(hdr->frame_control)) { if (precv_frame->u.hdr.attrib.seq_num =3D=3D psta->rx_mgmt_frame_seq_nu= m) { /* drop the duplicate management frame */ return; @@ -690,7 +690,7 @@ unsigned int OnAuth(struct adapter *padapter, union rec= v_frame *precv_frame) =20 auth_mode =3D psecuritypriv->dot11_auth_algrthm; =20 - if (GetPrivacy(pframe)) { + if (ieee80211_has_protected(hdr->frame_control)) { u8 *iv; struct rx_pkt_attrib *prxattrib =3D &(precv_frame->u.hdr.attrib); =20 @@ -849,6 +849,7 @@ unsigned int OnAuthClient(struct adapter *padapter, uni= on recv_frame *precv_fram struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo =3D &pmlmeext->mlmext_info; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; uint pkt_len =3D precv_frame->u.hdr.len; =20 /* check A1 matches or not */ @@ -858,7 +859,7 @@ unsigned int OnAuthClient(struct adapter *padapter, uni= on recv_frame *precv_fram if (!(pmlmeinfo->state & WIFI_FW_AUTH_STATE)) return _SUCCESS; =20 - offset =3D (GetPrivacy(pframe)) ? 4 : 0; + offset =3D (ieee80211_has_protected(hdr->frame_control)) ? 4 : 0; =20 seq =3D le16_to_cpu(*(__le16 *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offs= et + 2)); status =3D le16_to_cpu(*(__le16 *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + o= ffset + 4)); @@ -1673,10 +1674,11 @@ static s32 rtw_action_public_decache(union recv_fra= me *recv_frame, s32 token) struct adapter *adapter =3D recv_frame->u.hdr.adapter; struct mlme_ext_priv *mlmeext =3D &(adapter->mlmeextpriv); u8 *frame =3D recv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)frame; u16 seq_ctrl =3D ((recv_frame->u.hdr.attrib.seq_num & 0xffff) << 4) | (recv_frame->u.hdr.attrib.frag_num & 0xf); =20 - if (GetRetry(frame)) { + if (ieee80211_has_retry(hdr->frame_control)) { if (token >=3D 0) { if ((seq_ctrl =3D=3D mlmeext->action_public_rxseq) && (token =3D=3D mlmeext->action_public_dialog_token)) diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rt= l8723bs/core/rtw_recv.c index 8f3c0552e..43452f50d 100644 --- a/drivers/staging/rtl8723bs/core/rtw_recv.c +++ b/drivers/staging/rtl8723bs/core/rtw_recv.c @@ -566,13 +566,14 @@ static void process_pwrbit_data(struct adapter *padap= ter, union recv_frame *prec { unsigned char pwrbit; u8 *ptr =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)ptr; struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; struct sta_priv *pstapriv =3D &padapter->stapriv; struct sta_info *psta =3D NULL; =20 psta =3D rtw_get_stainfo(pstapriv, pattrib->src); =20 - pwrbit =3D GetPwrMgt(ptr); + pwrbit =3D ieee80211_has_pm(hdr->frame_control); =20 if (psta) { if (pwrbit) { @@ -1248,7 +1249,7 @@ static signed int validate_recv_data_frame(struct ada= pter *adapter, union recv_f struct security_priv *psecuritypriv =3D &adapter->securitypriv; signed int ret =3D _SUCCESS; =20 - bretry =3D GetRetry(ptr); + bretry =3D ieee80211_has_retry(hdr->frame_control); pda =3D get_da(ptr); psa =3D get_sa(ptr); pbssid =3D get_hdr_bssid(ptr); @@ -1435,6 +1436,7 @@ static signed int validate_recv_frame(struct adapter = *adapter, union recv_frame struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; =20 u8 *ptr =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)ptr; u8 ver =3D (unsigned char) (*ptr) & 0x3; =20 /* add version chk */ @@ -1446,16 +1448,17 @@ static signed int validate_recv_frame(struct adapte= r *adapter, union recv_frame type =3D GetFrameType(ptr); subtype =3D GetFrameSubType(ptr); /* bit(7)~bit(2) */ =20 - pattrib->to_fr_ds =3D get_tofr_ds(ptr); + pattrib->to_fr_ds =3D (ieee80211_has_tods(hdr->frame_control) << 1) | + ieee80211_has_fromds(hdr->frame_control); =20 pattrib->frag_num =3D GetFragNum(ptr); pattrib->seq_num =3D GetSequence(ptr); =20 - pattrib->pw_save =3D GetPwrMgt(ptr); - pattrib->mfrag =3D GetMFrag(ptr); - pattrib->mdata =3D GetMData(ptr); - pattrib->privacy =3D GetPrivacy(ptr); - pattrib->order =3D GetOrder(ptr); + pattrib->pw_save =3D ieee80211_has_pm(hdr->frame_control); + pattrib->mfrag =3D ieee80211_has_morefrags(hdr->frame_control); + pattrib->mdata =3D ieee80211_has_moredata(hdr->frame_control); + pattrib->privacy =3D ieee80211_has_protected(hdr->frame_control); + pattrib->order =3D ieee80211_has_order(hdr->frame_control); =20 switch (type) { case WIFI_MGT_TYPE: /* mgnt */ diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl= 8723bs/include/wifi.h index 6c877c7ca..800bfd962 100644 --- a/drivers/staging/rtl8723bs/include/wifi.h +++ b/drivers/staging/rtl8723bs/include/wifi.h @@ -75,53 +75,33 @@ enum { #define SetToDs(pbuf) \ (*(__le16 *)(pbuf) |=3D cpu_to_le16(_TO_DS_)) =20 -#define GetToDs(pbuf) (((*(__le16 *)(pbuf)) & cpu_to_le16(_TO_DS_)) !=3D 0) - #define SetFrDs(pbuf) \ (*(__le16 *)(pbuf) |=3D cpu_to_le16(_FROM_DS_)) =20 -#define GetFrDs(pbuf) (((*(__le16 *)(pbuf)) & cpu_to_le16(_FROM_DS_)) !=3D= 0) - -#define get_tofr_ds(pframe) ((GetToDs(pframe) << 1) | GetFrDs(pframe)) - #define SetMFrag(pbuf) \ (*(__le16 *)(pbuf) |=3D cpu_to_le16(_MORE_FRAG_)) =20 -#define GetMFrag(pbuf) (((*(__le16 *)(pbuf)) & cpu_to_le16(_MORE_FRAG_)) != =3D 0) - #define ClearMFrag(pbuf) \ (*(__le16 *)(pbuf) &=3D (~cpu_to_le16(_MORE_FRAG_))) =20 -#define GetRetry(pbuf) (((*(__le16 *)(pbuf)) & cpu_to_le16(_RETRY_)) !=3D = 0) - #define ClearRetry(pbuf) \ (*(__le16 *)(pbuf) &=3D (~cpu_to_le16(_RETRY_))) =20 #define SetPwrMgt(pbuf) \ (*(__le16 *)(pbuf) |=3D cpu_to_le16(_PWRMGT_)) =20 -#define GetPwrMgt(pbuf) (((*(__le16 *)(pbuf)) & cpu_to_le16(_PWRMGT_)) != =3D 0) - #define ClearPwrMgt(pbuf) \ (*(__le16 *)(pbuf) &=3D (~cpu_to_le16(_PWRMGT_))) =20 #define SetMData(pbuf) \ (*(__le16 *)(pbuf) |=3D cpu_to_le16(_MORE_DATA_)) =20 -#define GetMData(pbuf) (((*(__le16 *)(pbuf)) & cpu_to_le16(_MORE_DATA_)) != =3D 0) - #define ClearMData(pbuf) \ (*(__le16 *)(pbuf) &=3D (~cpu_to_le16(_MORE_DATA_))) =20 #define SetPrivacy(pbuf) \ (*(__le16 *)(pbuf) |=3D cpu_to_le16(_PRIVACY_)) =20 -#define GetPrivacy(pbuf) \ - (((*(__le16 *)(pbuf)) & cpu_to_le16(_PRIVACY_)) !=3D 0) - -#define GetOrder(pbuf) \ - (((*(__le16 *)(pbuf)) & cpu_to_le16(_ORDER_)) !=3D 0) - #define GetFrameType(pbuf) \ (le16_to_cpu(*(__le16 *)(pbuf)) & (BIT(3) | BIT(2))) =20 @@ -204,7 +184,8 @@ static inline unsigned char *get_da(unsigned char *pfra= me) { struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; unsigned char *da; - unsigned int to_fr_ds =3D (GetToDs(pframe) << 1) | GetFrDs(pframe); + unsigned int to_fr_ds =3D (ieee80211_has_tods(hdr->frame_control) << 1) | + ieee80211_has_fromds(hdr->frame_control); =20 switch (to_fr_ds) { case 0x00: /* ToDs =3D 0, FromDs =3D 0 */ @@ -228,7 +209,8 @@ static inline unsigned char *get_sa(unsigned char *pfra= me) { struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; unsigned char *sa; - unsigned int to_fr_ds =3D (GetToDs(pframe) << 1) | GetFrDs(pframe); + unsigned int to_fr_ds =3D (ieee80211_has_tods(hdr->frame_control) << 1) | + ieee80211_has_fromds(hdr->frame_control); =20 switch (to_fr_ds) { case 0x00: /* ToDs =3D 0, FromDs =3D 0 */ @@ -252,7 +234,8 @@ static inline unsigned char *get_hdr_bssid(unsigned cha= r *pframe) { struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; unsigned char *sa =3D NULL; - unsigned int to_fr_ds =3D (GetToDs(pframe) << 1) | GetFrDs(pframe); + unsigned int to_fr_ds =3D (ieee80211_has_tods(hdr->frame_control) << 1) | + ieee80211_has_fromds(hdr->frame_control); =20 switch (to_fr_ds) { case 0x00: /* ToDs =3D 0, FromDs =3D 0 */ @@ -317,8 +300,6 @@ static inline int IsFrameTypeCtrl(unsigned char *pframe) /*------------------------------------------------------------------------= ----- Below is the definition for 802.11n --------------------------------------------------------------------------= ----*/ -#define GetOrderBit(pbuf) (((*(unsigned short *)(pbuf)) & cpu_to_le16(_ORD= ER_)) !=3D 0) - #define ACT_CAT_VENDOR 0x7F/* 127 */ =20 /** --=20 2.43.0 From nobody Sat Oct 24 13:19:48 2026 Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B79C854855D for ; Tue, 13 Oct 2026 20:15:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922550; cv=none; b=Ui9g53q9YOpnTVZ1bxdnQv4QCH9njwTunZ4HwmBp+IgUpFjovUrBmiHWW8EiRArqYpZZEdmzN01sBZ5+PoxyHwCpr/PtP2ar8s7p6/f9ZHySHhMy6fw0P7hywklebsgg8sI10lqkaA/FH8gid4rqq/KuW5WJRF8FzJOVrRUch/0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922550; c=relaxed/simple; bh=NbA2GcP4Lr6cnBCo/m/J4Gq2aFWPZ4BazXL7PMFsUFg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DeorUu7T18FBNknbjjCCv5nl9vlcG52XrlJMNATpdsMySKDC5j/VV55lkJ6HpdifnlOvKUSitGpnrkmNywxNf+7s/egtN686dDSjX9l3EQz/SbjC59FHcPkMlEmZ+OWyMY5hIfSnbK5v1CNSOEYpA10LVaKCEpvg82FkQmnkQPY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SojVSfzQ; arc=none smtp.client-ip=209.85.210.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SojVSfzQ" Received: by mail-ot1-f54.google.com with SMTP id 46e09a7af769-821b5c73292so2441783a34.1 for ; Tue, 13 Oct 2026 13:15:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922543; x=1792527343; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZAYbhl8kX/IVaP666bJYOPGUDp0WP0iUVoNYGhCA0n0=; b=SojVSfzQT952cbMdLuFfpqeJLOu9QvZypncAkSrjSlF6mBYtA9AvltcSN1i6J8gpTM UgyrAF2vXraK7V9juXEF6OrH4kWztD2SiyX5k3AXgfUUC59jAcyGOmAm5yA3FOBr+zpM 3jy/I76fxA3Na2HlmFwuYJ0RNrXlIPIf04LodNl0nS28BpLZe2MFFqtsatOdVqZgyxvG ssmahg4LmfBHa4Cl9FqDLlaKzkyn0DRmEz+Z/zIS028ekNuRHLedkhKpwqVLycjnQRDI cYpTSMkzO54+z1GTLdD0KpB68nt/3CRtKAfXDEnUA2Ry7L5UYcQ13YiI50YPWiR0PoTW oy4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922543; x=1792527343; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ZAYbhl8kX/IVaP666bJYOPGUDp0WP0iUVoNYGhCA0n0=; b=K8Lgl1il9BW/q2Rxlq2ksdI5oRJ28sLwBNF110wQ/GeG5Y8eFLpahEeZxTLQn65101 f4oYOoLMlMAw8scXPc+zgl8fUSPV3OczdLocmvLSh4ChzwJ03fqriQX3kf7CoBElNBpK UAmvA2FRvHGtu8hkn6mr6/TBLBTgtpELPaTmI7aZiPgktl7hY8UL9Rj7K6JjKaL03G45 AipN7YzR2NOCtbnBi4BQB+CZlG3WsJXVLeJA0FVIyXMtFok7y8eHmdtgEUq3n3FhIDd2 g5O1TwUFRogAQk/EHix23vYT8wZurWZsZfcZM5kMbv3PAk2eyzqzYMzbEFDLjm1BKWgx nprQ== X-Forwarded-Encrypted: i=1; AKwUvBy72y8t5aHS0y5ITJVNiL8w7YKtxxX83qJ+/VsKINVN5ch9Z+OQcCncVrPhQXvbrCbAfzrmZR5n6YLo/sY=@vger.kernel.org X-Gm-Message-State: AFq9FYLKp5ZeX2dJO7Qi+xuVfzMtKlJHxY5v3GI9ADtOVbPKdcsz9bQq H/yIU8qzqbRnKwYW5u9mjCw68n/WQKmh1KPCSIcgLHmS7/xhdJ42I47T X-Gm-Gg: AYBFou22FKH6NXb+de1BtuqmCOP0KbaV7kkd83nOHxcJ1Xp5opFKF+MeHxEl93oongE b2lT0aIDa8tIRybm1/TSVWL1p5YlUUzRi4Ump2fYKOLWWXo3zsxn/iuC4fBAPyM3vIE7Fn1uae0 8dEHrlZm5/5qdqk1UGdhNLKhDYH0qc9HsWt2s7VsN3pSNAa2Tc5+2n841GbJVjdGPJ93T7mhZqg UHKqPe9TCTv7AqQQWxOTrkOjRuCClXvyYdo5uaqvV7P1lDcWjpyA9pAUTG4IHQhwrq1fmvxcHv8 b6jBhJXvADcT/kst0VhAVvJm2XyHS3ThM5Z7gQdbKS5+ohTx7rdAaSARouJLmS04I7siNdXgwxu qRosR7QLt8ej21u0eeoGBDp8fRIFF6Bmht4Kav9hFXSC0bPDQX/S/HSDDNtSs/oNOoJuX1VLH4D M5fC9tYXe68iOReUgflb6i4M7CRW+nPX7pzdHHmIJWW7iO5FAI9HoL5JGn//InkyQJM1OQkFrg2 HY= X-Received: by 2002:a05:6830:490c:b0:80c:d34f:5f62 with SMTP id 46e09a7af769-83097e5963cmr13101661a34.27.1791922543519; Tue, 13 Oct 2026 13:15:43 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:42 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 03/10] staging: rtl8723bs: set frame control flags with IEEE80211_FCTL_* masks Date: Tue, 13 Oct 2026 15:15:31 -0500 Message-ID: <20261013201538.43156-4-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The driver defines SetToDs(), SetFrDs(), SetMFrag(), ClearMFrag(), ClearRetry(), SetPwrMgt(), ClearPwrMgt(), SetMData(), ClearMData() and SetPrivacy() in wifi.h to set and clear bits of the IEEE 802.11 Frame Control field, using private _TO_DS_ through _ORDER_ bit definitions that duplicate the IEEE80211_FCTL_* constants in . Replace each use of these macros by operating on the frame_control member directly with the corresponding IEEE80211_FCTL_* mask, as is done elsewhere in the wireless subsystem. In rtw_xmitframe_coalesce(), the header pointer is updated on each iteration of the fragmentation loop, since mem_start advances to a new fragment each time. When constructing the BIP additional authentication data, mask the Retry, Power Management and More Data bits in a local copy of the Frame Control field before copying it into the buffer. This matches bip_aad() in net/mac80211/wpa.c. Remove the macro definitions and the private bit definitions, which no longer have any users. Also remove the mem_start variable from rtw_mgmt_xmitframe_coalesce(), as its only use was the SetPrivacy() call. No functional change intended. Signed-off-by: Rishik Yechuri --- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 12 +++--- drivers/staging/rtl8723bs/core/rtw_security.c | 9 +++-- drivers/staging/rtl8723bs/core/rtw_xmit.c | 29 +++++++------- drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c | 12 +++--- drivers/staging/rtl8723bs/include/wifi.h | 39 ------------------- 5 files changed, 33 insertions(+), 68 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index d318b0ff4..842c3d39c 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -2573,7 +2573,7 @@ void issue_auth(struct adapter *padapter, struct sta_= info *psta, unsigned short if ((pmlmeinfo->auth_seq =3D=3D 3) && (pmlmeinfo->state & WIFI_FW_AUTH_S= TATE) && (use_shared_key =3D=3D 1)) { pframe =3D rtw_set_ie(pframe, WLAN_EID_CHALLENGE, 128, pmlmeinfo->chg_t= xt, &(pattrib->pktlen)); =20 - SetPrivacy(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_PROTECTED); =20 pattrib->hdrlen =3D sizeof(struct ieee80211_hdr_3addr); =20 @@ -2926,12 +2926,12 @@ static int _issue_nulldata(struct adapter *padapter= , unsigned char *da, *(fctrl) =3D 0; =20 if ((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_AP_STATE) - SetFrDs(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_FROMDS); else if ((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_STATION_STATE) - SetToDs(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_TODS); =20 if (power_mode) - SetPwrMgt(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_PM); =20 memcpy(pwlanhdr->addr1, da, ETH_ALEN); memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); @@ -3068,9 +3068,9 @@ static int _issue_qos_nulldata(struct adapter *padapt= er, unsigned char *da, *(fctrl) =3D 0; =20 if ((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_AP_STATE) - SetFrDs(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_FROMDS); else if ((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_STATION_STATE) - SetToDs(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_TODS); =20 qc =3D (unsigned short *)(pframe + pattrib->hdrlen - 2); =20 diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/stagin= g/rtl8723bs/core/rtw_security.c index ae64823af..fc3113922 100644 --- a/drivers/staging/rtl8723bs/core/rtw_security.c +++ b/drivers/staging/rtl8723bs/core/rtw_security.c @@ -1277,6 +1277,7 @@ u32 rtw_BIP_verify(struct adapter *padapter, u8 *prec= vframe) u8 mic[16]; struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; __le16 le_tmp; + __le16 mask_fc; __le64 le_tmp64 =3D 0; =20 ori_len =3D pattrib->pkt_len - WLAN_HDR_A3_LEN + BIP_AAD_SIZE; @@ -1320,10 +1321,10 @@ u32 rtw_BIP_verify(struct adapter *padapter, u8 *pr= ecvframe) memset(p + 2 + len - 8, 0, 8); =20 /* conscruct AAD, copy frame control field */ - memcpy(BIP_AAD, &pwlanhdr->frame_control, 2); - ClearRetry(BIP_AAD); - ClearPwrMgt(BIP_AAD); - ClearMData(BIP_AAD); + mask_fc =3D pwlanhdr->frame_control; + mask_fc &=3D ~cpu_to_le16(IEEE80211_FCTL_RETRY | IEEE80211_FCTL_PM | + IEEE80211_FCTL_MOREDATA); + memcpy(BIP_AAD, &mask_fc, 2); /* conscruct AAD, copy address 1 to address 3 */ memcpy(BIP_AAD + 2, &pwlanhdr->addrs, sizeof(pwlanhdr->addrs)); =20 diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rt= l8723bs/core/rtw_xmit.c index 364de3c8d..db75ff51f 100644 --- a/drivers/staging/rtl8723bs/core/rtw_xmit.c +++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c @@ -921,7 +921,7 @@ int rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr,= struct pkt_attrib *pattr { /* 1.Data transfer to AP */ /* 2.Arp pkt will relayed by AP */ - SetToDs(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_TODS); memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN); memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN); memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN); @@ -930,7 +930,7 @@ int rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr,= struct pkt_attrib *pattr if (pqospriv->qos_option) qos_option =3D true; } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { - SetFrDs(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_FROMDS); memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN); memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv), ETH_ALEN); memcpy(pwlanhdr->addr3, pattrib->src, ETH_ALEN); @@ -950,10 +950,10 @@ int rtw_make_wlanhdr(struct adapter *padapter, u8 *hd= r, struct pkt_attrib *pattr } =20 if (pattrib->mdata) - SetMData(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_MOREDATA); =20 if (pattrib->encrypt) - SetPrivacy(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_PROTECTED); =20 if (qos_option) { qc =3D (unsigned short *)(hdr + pattrib->hdrlen - 2); @@ -1069,6 +1069,7 @@ int rtw_xmitframe_coalesce(struct adapter *padapter, = struct sk_buff *pkt, struct SIZE_PTR addr; =20 u8 *pframe, *mem_start; + struct ieee80211_hdr *hdr; u8 hw_hdr_offset; =20 struct xmit_priv *pxmitpriv =3D &padapter->xmitpriv; @@ -1106,8 +1107,9 @@ int rtw_xmitframe_coalesce(struct adapter *padapter, = struct sk_buff *pkt, struct mpdu_len =3D frg_len; =20 pframe =3D mem_start; + hdr =3D (struct ieee80211_hdr *)mem_start; =20 - SetMFrag(mem_start); + hdr->frame_control |=3D cpu_to_le16(IEEE80211_FCTL_MOREFRAGS); =20 pframe +=3D pattrib->hdrlen; mpdu_len -=3D pattrib->hdrlen; @@ -1157,7 +1159,7 @@ int rtw_xmitframe_coalesce(struct adapter *padapter, = struct sk_buff *pkt, struct ((pattrib->bswenc) ? pattrib->icv_len : 0) + mem_sz; =20 - ClearMFrag(mem_start); + hdr->frame_control &=3D ~cpu_to_le16(IEEE80211_FCTL_MOREFRAGS); =20 break; } @@ -1185,7 +1187,7 @@ int rtw_xmitframe_coalesce(struct adapter *padapter, = struct sk_buff *pkt, struct /* broadcast or multicast management pkt use BIP, unicast management pkt u= se CCMP encryption */ int rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *= pkt, struct xmit_frame *pxmitframe) { - u8 *pframe, *mem_start =3D NULL, *tmp_buf =3D NULL; + u8 *pframe, *tmp_buf =3D NULL; u8 subtype; struct sta_info *psta =3D NULL; struct pkt_attrib *pattrib =3D &pxmitframe->attrib; @@ -1196,10 +1198,11 @@ int rtw_mgmt_xmitframe_coalesce(struct adapter *pad= apter, struct sk_buff *pkt, s struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; struct ieee80211_hdr *pwlanhdr; + __le16 mask_fc; u8 MME[_MME_IE_LENGTH_]; u32 ori_len; =20 - mem_start =3D pframe =3D (u8 *)(pxmitframe->buf_addr) + TXDESC_OFFSET; + pframe =3D (u8 *)(pxmitframe->buf_addr) + TXDESC_OFFSET; pwlanhdr =3D (struct ieee80211_hdr *)pframe; =20 ori_len =3D BIP_AAD_SIZE + pattrib->pktlen; @@ -1249,10 +1252,10 @@ int rtw_mgmt_xmitframe_coalesce(struct adapter *pad= apter, struct sk_buff *pkt, s frame_body_len =3D pattrib->pktlen - sizeof(struct ieee80211_hdr_3addr); =20 /* conscruct AAD, copy frame control field */ - memcpy(BIP_AAD, &pwlanhdr->frame_control, 2); - ClearRetry(BIP_AAD); - ClearPwrMgt(BIP_AAD); - ClearMData(BIP_AAD); + mask_fc =3D pwlanhdr->frame_control; + mask_fc &=3D ~cpu_to_le16(IEEE80211_FCTL_RETRY | IEEE80211_FCTL_PM | + IEEE80211_FCTL_MOREDATA); + memcpy(BIP_AAD, &mask_fc, 2); /* conscruct AAD, copy address 1 to address 3 */ memcpy(BIP_AAD + 2, &pwlanhdr->addrs, sizeof(pwlanhdr->addrs)); /* copy management fram body */ @@ -1329,7 +1332,7 @@ int rtw_mgmt_xmitframe_coalesce(struct adapter *padap= ter, struct sk_buff *pkt, s pattrib->last_txcmdsz =3D pattrib->pktlen; =20 /* set protected bit must be before SW encrypt */ - SetPrivacy(mem_start); + pwlanhdr->frame_control |=3D cpu_to_le16(IEEE80211_FCTL_PROTECTED); /* software encrypt */ xmitframe_swencrypt(padapter, pxmitframe); } diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c b/drivers/staging= /rtl8723bs/hal/rtl8723b_cmd.c index 734fb9bb1..5600d9064 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c @@ -192,7 +192,7 @@ static void ConstructPSPoll(struct adapter *padapter, u= 8 *pframe, u32 *pLength) /* Frame control. */ fctrl =3D &pwlanhdr->frame_control; *(fctrl) =3D 0; - SetPwrMgt(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_PM); SetFrameSubType(pframe, WIFI_PSPOLL); =20 /* AID. */ @@ -229,17 +229,17 @@ static void ConstructNullFunctionData(struct adapter = *padapter, fctrl =3D &pwlanhdr->frame_control; *(fctrl) =3D 0; if (bForcePowerSave) - SetPwrMgt(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_PM); =20 switch (cur_network->network.infrastructure_mode) { case NL80211_IFTYPE_STATION: - SetToDs(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_TODS); ether_addr_copy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network))); ether_addr_copy(pwlanhdr->addr2, myid(&(padapter->eeprompriv))); ether_addr_copy(pwlanhdr->addr3, StaAddr); break; case NL80211_IFTYPE_AP: - SetFrDs(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_FROMDS); ether_addr_copy(pwlanhdr->addr1, StaAddr); ether_addr_copy(pwlanhdr->addr2, get_my_bssid(&(pmlmeinfo->network))); ether_addr_copy(pwlanhdr->addr3, myid(&(padapter->eeprompriv))); @@ -732,9 +732,9 @@ static void ConstructBtNullFunctionData(struct adapter = *padapter, fctrl =3D &pwlanhdr->frame_control; *fctrl =3D 0; if (bForcePowerSave) - SetPwrMgt(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_PM); =20 - SetFrDs(fctrl); + *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_FROMDS); ether_addr_copy(pwlanhdr->addr1, StaAddr); ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); ether_addr_copy(pwlanhdr->addr3, myid(&padapter->eeprompriv)); diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl= 8723bs/include/wifi.h index 800bfd962..bfc985870 100644 --- a/drivers/staging/rtl8723bs/include/wifi.h +++ b/drivers/staging/rtl8723bs/include/wifi.h @@ -63,45 +63,6 @@ enum { WIFI_QOS_DATA_NULL =3D (BIT(6) | WIFI_QOS_DATA_TYPE), }; =20 -#define _TO_DS_ BIT(8) -#define _FROM_DS_ BIT(9) -#define _MORE_FRAG_ BIT(10) -#define _RETRY_ BIT(11) -#define _PWRMGT_ BIT(12) -#define _MORE_DATA_ BIT(13) -#define _PRIVACY_ BIT(14) -#define _ORDER_ BIT(15) - -#define SetToDs(pbuf) \ - (*(__le16 *)(pbuf) |=3D cpu_to_le16(_TO_DS_)) - -#define SetFrDs(pbuf) \ - (*(__le16 *)(pbuf) |=3D cpu_to_le16(_FROM_DS_)) - -#define SetMFrag(pbuf) \ - (*(__le16 *)(pbuf) |=3D cpu_to_le16(_MORE_FRAG_)) - -#define ClearMFrag(pbuf) \ - (*(__le16 *)(pbuf) &=3D (~cpu_to_le16(_MORE_FRAG_))) - -#define ClearRetry(pbuf) \ - (*(__le16 *)(pbuf) &=3D (~cpu_to_le16(_RETRY_))) - -#define SetPwrMgt(pbuf) \ - (*(__le16 *)(pbuf) |=3D cpu_to_le16(_PWRMGT_)) - -#define ClearPwrMgt(pbuf) \ - (*(__le16 *)(pbuf) &=3D (~cpu_to_le16(_PWRMGT_))) - -#define SetMData(pbuf) \ - (*(__le16 *)(pbuf) |=3D cpu_to_le16(_MORE_DATA_)) - -#define ClearMData(pbuf) \ - (*(__le16 *)(pbuf) &=3D (~cpu_to_le16(_MORE_DATA_))) - -#define SetPrivacy(pbuf) \ - (*(__le16 *)(pbuf) |=3D cpu_to_le16(_PRIVACY_)) - #define GetFrameType(pbuf) \ (le16_to_cpu(*(__le16 *)(pbuf)) & (BIT(3) | BIT(2))) =20 --=20 2.43.0 From nobody Sat Oct 24 13:19:48 2026 Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2FB6B542817 for ; Tue, 13 Oct 2026 20:15:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922549; cv=none; b=JhQ5GhxrY/WAjlV4xUs8KkJJU+a2dU23vVmTM5nZFvSNWamNymLAraNOVaIvY59sGYMO8/dQMlQBvH039aON53vMS8DTS0Dw5B8LMp+oRP6BIrQl9ichedlwhMxyhyPVf9zrgtVcbDZiYiL+PIQFW/C7qfr+XEAQ2TsR/fj5whw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922549; c=relaxed/simple; bh=/4sN80egNkOhp7Y0xA7GlnS2ylBeKF+0+kjrQt9XOkM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rUJsGkWB0WJJr8xP4OBHqOchR/Lmcg+HrifqLLBfnxyxKDJhmK4XjpbHnFHaxoFxpr5SmbF7cErsvxGLPso7fbjwfKhOA48P06qtXVpN3RPGODC9vHxfZpLMzFSGRIf8VhsNrt7QMKBcoAlExXi8eKc+n2F56kxTdZltuzF02kI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=H/tK/Nad; arc=none smtp.client-ip=209.85.210.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="H/tK/Nad" Received: by mail-ot1-f54.google.com with SMTP id 46e09a7af769-828f4eeba13so2508820a34.1 for ; Tue, 13 Oct 2026 13:15:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922545; x=1792527345; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=9PtkALnml1BFj40cO4YIh2d4PtMJJuv1aPw/IiEsjms=; b=H/tK/NadREbdp06QEzHRT/z0PX59RHvnJ43eYKUgoT44SGEnaPA1HbsmYXGbdq/IGe /RrJq9OgBcpq3Ai3siheupHGHNV9mc54FNcwAfkDGkomOmjJIus4rFsij660AguA3NcI vGC5/ql2AyO4nBgq1EE81TX09oi27qdpV0cRFEbKnBX2ANQB555+Sy4N6pNZIKgcgSI3 ef0nMY19m0pKF6O2HVU1ghFN2EqQk+zbMAkNWjt9MIZdX4TRizSdk62NGls0JpM2J6Mp Y7FIEqlhEqUGIaE0e7M5OfetdtXxL7k5vMVDg8t8W6pzGV9wLG8BBynIht6tiCxFYYXd jXkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922545; x=1792527345; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=9PtkALnml1BFj40cO4YIh2d4PtMJJuv1aPw/IiEsjms=; b=JZ7oc+vQPqR/JsBftTdYpUCZSLTJrD/tsHYBVPchXaCC5S/Yo0AYkN3Ejfca1MFE9S oKocz3EYzmpSXmXuxps024wekY5EBJWxfs2UQUZypGvhVGqy57d01/8NVW2SSG/3eAba OQ7gMTBWwPRMg6SRu9NCrTjyF7Jhi/3wvWLM080/FxnOwu7faNT60y4QxOMJ2YUal6aJ GxxUVDBilRf9SDpD7K5qTfPdQ2iiflnJcvWMrAo4P00dzE8yFeKQ71mJ+uyDecy+1ewG wZUXeLbqBLPCbooWfFhp0HrnpSIKVeEw11EF8Lw1To7t8q2QIvq3p4wQs5WLblos8h3T hIEg== X-Forwarded-Encrypted: i=1; AKwUvBykMRcwix4JEm9da8d7zyTigkcJaVObssKlpWUtCIEWGCJ5KLnPiSR67dfOpIyismpuV9NfR3onLZ57HNM=@vger.kernel.org X-Gm-Message-State: AFq9FYLHSelXHkqRKAOJh8/qJw/QWlpPsjdIHshxYUgAT8sD/Jwpo3a2 6V4OSp1/aoandaVBiouj88miwf8l7CCRqsHYeUlRMg9+fTX8dD7qv4VY X-Gm-Gg: AYBFou17zK55j05Lu9w2tCFaTi7ZJ/h2s0GD4TVPfuHQfQrLt0iDb1vluBKdwu5gY1L qLqKl0oSs9tDX3/9pxI7dl7w9iPtl8FUGRu+HQKw9+jQVeeI+bfC/lnIkEcn0Rd6Sl6Vw0MJk0w HvnyyuUpBJSLR8WhNQhJ2H1qJc23kCLAzGz/03F7CR2VL1lpmdpMNIzaSqPxwYyCRvrDfAWboG/ m9lbmFINB9iM1/s10DfMZLjNjArQHAmN54zu9GyA8Z6FuurYHM6gz9CHssnQqGY70A7RNu6FurX JqafKB6aYFbfEYgvQ4XeL/2L/FLC6e+SJ82apQBDdEslK4Z5x7pVREwbxZODDA8Luup3vGpPBH8 kvCqPgNgowVbMtdktTD3ebGykOcbpL1L/QQ+0LVdw0BZvGwcjr1e0sfxioJ2OmzK3GyO8AVY7yP 8C+m7ort+kzhQrjAxO4ICukbyahIOmsz0Mp6L2hcAooW0iAcm1Jgsvh0cnNon16Jjh78/Irgqqb Qc= X-Received: by 2002:a05:6830:270d:b0:810:521f:3033 with SMTP id 46e09a7af769-8309506c445mr12813593a34.10.1791922544604; Tue, 13 Oct 2026 13:15:44 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:44 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 04/10] staging: rtl8723bs: use ieee80211_is_*() for frame type tests Date: Tue, 13 Oct 2026 15:15:32 -0500 Message-ID: <20261013201538.43156-5-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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. 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() =3D=3D WIFI_MGT_TYPE -> ieee80211_is_mgmt() GetFrameType() =3D=3D WIFI_CTRL_TYPE -> ieee80211_is_ctl() GetFrameType() =3D=3D WIFI_DATA_TYPE -> ieee80211_is_data() GetFrameSubType() =3D=3D WIFI_BEACON -> ieee80211_is_beacon() GetFrameSubType() =3D=3D WIFI_PSPOLL -> ieee80211_is_pspoll() GetFrameSubType() =3D=3D WIFI_ASSOCREQ -> ieee80211_is_assoc_req() GetFrameSubType() =3D=3D WIFI_DEAUTH -> ieee80211_is_deauth() GetFrameSubType() =3D=3D 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 --- 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/stagin= g/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 rec= v_frame *precv_frame) struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; struct sta_info *psta =3D rtw_get_stainfo(&padapter->stapriv, hdr->addr2); =20 - if (GetFrameType(pframe) !=3D WIFI_MGT_TYPE) + if (!ieee80211_is_mgmt(hdr->frame_control)) return; =20 /* 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/rt= l8723bs/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 *ada= pter, union recv_frame *p struct sta_info **psta) { u8 *ptr =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)ptr; struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; struct sta_priv *pstapriv =3D &adapter->stapriv; struct mlme_priv *pmlmepriv =3D &adapter->mlmepriv; @@ -882,7 +883,7 @@ static signed int sta2ap_data_frame(struct adapter *ada= pter, union recv_frame *p =20 process_pwrbit_data(adapter, precv_frame); =20 - if ((GetFrameSubType(ptr) & WIFI_QOS_DATA_TYPE) =3D=3D WIFI_QOS_DATA_TYP= E) + if (ieee80211_is_data_qos(hdr->frame_control)) process_wmmps_data(adapter, precv_frame); =20 if (GetFrameSubType(ptr) & BIT(6)) { @@ -915,7 +916,7 @@ static signed int validate_recv_ctrl_frame(struct adapt= er *padapter, union recv_ struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; struct sta_info *psta =3D NULL; =20 - if (GetFrameType(pframe) !=3D WIFI_CTRL_TYPE) + if (!ieee80211_is_ctl(hdr->frame_control)) return _FAIL; =20 /* receive the frames that ra(a1) is my address */ @@ -930,7 +931,7 @@ static signed int validate_recv_ctrl_frame(struct adapt= er *padapter, union recv_ psta->sta_stats.rx_ctrl_pkts++; =20 /* only handle ps-poll */ - if (GetFrameSubType(pframe) =3D=3D WIFI_PSPOLL) { + if (ieee80211_is_pspoll(hdr->frame_control)) { u16 aid; u8 wmmps_ac =3D 0; =20 @@ -1128,9 +1129,9 @@ static union recv_frame *recvframe_chk_defrag(struct = adapter *padapter, union re psta_addr =3D pfhdr->attrib.ta; psta =3D rtw_get_stainfo(pstapriv, psta_addr); if (!psta) { - u8 type =3D GetFrameType(pfhdr->rx_data); + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pfhdr->rx_data; =20 - if (type !=3D WIFI_DATA_TYPE) { + if (!ieee80211_is_data(hdr->frame_control)) { psta =3D rtw_get_bcmc_stainfo(padapter); pdefrag_q =3D &psta->sta_recvpriv.defrag_q; } else { diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rt= l8723bs/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 *padap= ter, struct sk_buff *pkt, s memset(MME, 0, 18); =20 /* other types doesn't need the BIP */ - if (GetFrameSubType(pframe) !=3D WIFI_DEAUTH && GetFrameSubType(pframe) = !=3D WIFI_DISASSOC) + if (!ieee80211_is_deauth(pwlanhdr->frame_control) && + !ieee80211_is_disassoc(pwlanhdr->frame_control)) goto xmitframe_coalesce_fail; =20 MGMT_body =3D pframe + sizeof(struct ieee80211_hdr_3addr); diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/stagi= ng/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 *pr= ecvframe, (struct odm_phy_info *)(&pattrib->phy_info); =20 u8 *wlanhdr =3D precvframe->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (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, =20 my_bssid =3D get_bssid(&padapter->mlmepriv); rx_bssid =3D get_hdr_bssid(wlanhdr); - pkt_info.bssid_match =3D ((!IsFrameTypeCtrl(wlanhdr)) && + pkt_info.bssid_match =3D (!ieee80211_is_ctl(hdr->frame_control) && !pattrib->icv_err && !pattrib->crc_err && ether_addr_equal(rx_bssid, my_bssid)); =20 @@ -111,7 +112,7 @@ static void update_recvframe_phyinfo(union recv_frame *= precvframe, ether_addr_equal(rx_ra, my_hwaddr); =20 pkt_info.is_beacon =3D pkt_info.bssid_match && - (GetFrameSubType(wlanhdr) =3D=3D WIFI_BEACON); + ieee80211_is_beacon(hdr->frame_control); =20 sa =3D get_ta(wlanhdr); =20 diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c b/drivers/stagi= ng/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 =3D &padapter->xmitpriv; struct dvobj_priv *pdvobjpriv =3D adapter_to_dvobj(padapter); u8 *pframe =3D (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; u8 txdesc_size =3D TXDESC_SIZE; =20 rtl8723b_update_txdesc(pmgntframe, pmgntframe->buf_addr); @@ -441,7 +442,7 @@ s32 rtl8723bs_mgnt_xmit( =20 pxmitbuf->priv_data =3D NULL; =20 - if (GetFrameSubType(pframe) =3D=3D WIFI_BEACON) { /* dump beacon directly= */ + if (ieee80211_is_beacon(hdr->frame_control)) { /* dump beacon directly */ ret =3D rtw_write_port(padapter, pdvobjpriv->Queue2Pipe[pxmitbuf->ff_hwa= ddr], pxmitbuf->len, (u8 *)pxmitbuf); if (ret !=3D _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/rtl= 8723bs/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 ch= ar *pframe) return sa; } =20 -static inline int IsFrameTypeCtrl(unsigned char *pframe) -{ - return GetFrameType(pframe) =3D=3D WIFI_CTRL_TYPE; -} - /*------------------------------------------------------------------------= ----- Below is for the security related definition --------------------------------------------------------------------------= ----*/ diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/st= aging/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 =3D padapter->rtw_wdev; =20 { + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pmgmt_frame; struct station_info sinfo =3D {}; u8 ie_offset; =20 - if (GetFrameSubType(pmgmt_frame) =3D=3D WIFI_ASSOCREQ) + if (ieee80211_is_assoc_req(hdr->frame_control)) ie_offset =3D _ASOCREQ_IE_OFFSET_; else /* WIFI_REASSOCREQ */ ie_offset =3D _REASOCREQ_IE_OFFSET_; @@ -1908,8 +1909,7 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *= padapter, u8 *pmgmt_frame, sinfo.filled =3D 0; sinfo.assoc_req_ies =3D pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset; sinfo.assoc_req_ies_len =3D 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); } } =20 --=20 2.43.0 From nobody Sat Oct 24 13:19:48 2026 Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1C435476EE for ; Tue, 13 Oct 2026 20:15:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922551; cv=none; b=o6o+egEkiWKoqOX/+3jgAga/xrSGMAihSecV9IpQyXeyw0mc6kf4bToJPSV0I+xi7muIpOllMZrw+S8/6qSQNr8T6OIsPjU6Fl4ZjlbKohS1xiC7UJB/XaoQHOjsf9/HPBJn4tdq29S9edhGQDL10u/sgYHADJWP7WihJ/xntHU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922551; c=relaxed/simple; bh=I+NdIKU01Z7WUSf5DE1xW1Wbmeu81osluftFHMiNXWw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b42xS+9C7t5ffc6nSfZu9TK/F41UJ4ZObQrBsOzdA518uIQshjW6UqTpCyScuffAdMr7nFJTqWKTVtTgk76WCp3QyDGhO9QEQk0OKjkuNN9DtEh2pmD11i9d9QVd/CMnNSfm8UnpGWPA9wUk/JIlRGY8mdX/KnQ348Wr4Fecbbg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ayDVVWEG; arc=none smtp.client-ip=209.85.210.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ayDVVWEG" Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-7fccba9c675so6482137a34.0 for ; Tue, 13 Oct 2026 13:15:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922546; x=1792527346; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=P1VoopQsNzs3OiTLGLS/LZbk0RPHVRqGEEw5UCMuK14=; b=ayDVVWEGGgzgngP4JCIrjbnz218bI52Xl7UQBUaw5PRLC563K/V6hHSfDK2OngTqp4 Y4fmu94Qth/TQL5gPSEk21pbOqDbudJsDhEP5tGpGPLrf3Fk2GpcHcwidZATNmiP3hTB Sl9NCR3pgTy9GOsv2q56HmQ3M1tOyKZiZIgXrwkkO05MgNEYysEezZcsPgPXETj2zD30 DqRaqsReJTqIBDrSCvl3/nb22dsLbKkYlo6jYPJGK4iXhwlayB+CwGh/QnhaPLwQCSHP TK6ZIDGYzxIJ/hwazRRaPHz7OCJ68dKwQHDp+yNrVlhyAk1Xt53VOvKArt2a4fweAY4K +9IQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922546; x=1792527346; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=P1VoopQsNzs3OiTLGLS/LZbk0RPHVRqGEEw5UCMuK14=; b=Q2n2PCYm+OX3JKy+YsTX69y7YX6eV7krVHyrnc2fqQ44CwJAfxxAm0DUVvCuDezJlM 0z/RXqRGEnOcHGgdcWe40AdP54zG5PD3iajhCcJ2lIEfF6M8ssHE2ajF8jbT1FuqpNZH 1iIUxKWkXE7VPWdmv+DIht1uNLlub7ziQ5U3uuoHQKVrjKhQSTdWYcMwBtSx13z6olBa X16kJ3n+RwmjoJpedeYBbGNRHYH1/RJio2FPnnsJE3i+58QQ6SxKdgfvQbYsfBeTS/5r H7lHnbeZII8COlrgyeiacMQEsPKndF9UfrhGxEh5nTq+Jo+Wl7hdmo8nP0KCNKtI8/qA zWjw== X-Forwarded-Encrypted: i=1; AKwUvBxKpJ62qcSHY3bqGpjhqq4om1M8M4u6dQtnjxY/i/AJ6W4Xvg5W4fsHLL92GGZ+G2tMN6UJplnWOMoM0P4=@vger.kernel.org X-Gm-Message-State: AFq9FYLhVqNOCUDhkGbUqbIW0ili3iLuTZeig9zlIdvCxQNFIj+34G1z mivtAShVphgnITiXX43SS7evKco5Z1kOLDW1iIwwwpNIveyo53WBgEqF X-Gm-Gg: AYBFou3pZ0Scu5ulhbj/8l5FL4O2U28GUn9iEMAgXd40RipgTX84pzmPbGh2ukcZtIv yMSikUfY3pYf2dF5sY7ntunjm3Cx8dwWmQqg/spbib8DwkkFx5N4VBmZR+WQn62ReVw0Vpm28Tp 6ahiGf9zvMzKUzG3aza2ojlUMU9Ak/7tk+58OkBhMTpwqf4yBJHUFI5dUD6U5G/NzYEKef1g7Nr kakrv87GeYwQIFqjnMN98cLBogVAKCVbNFV6igocV4RCpa2fW6C2bforhmITpUnAUU/Pmh8oWi8 cwgBGnREGGSOdotMQkBA46PFN0h/FvXARZWIv9IduFN1ne0p3R8vr7Ml+nwMW/HI31PdUFX5R30 /5vZC3DfDlLyfT9pgzb9VxHekrrdS4LeVCZO3Tg9Xy8TMW8dY52CQArtjVIBAF83fso4VC53CvJ ujj3hSf0RuebgTLNPg0rH7brnqDzVt0M/0R1cCsVqjn3a/yEilX+b+n4+RFly18TLJpPmWcCoit gI= X-Received: by 2002:a05:6830:c90:b0:820:91b1:5ad4 with SMTP id 46e09a7af769-830296218camr6337416a34.23.1791922546276; Tue, 13 Oct 2026 13:15:46 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:45 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 05/10] staging: rtl8723bs: use IEEE80211_FCTL_* masks for frame type dispatch Date: Tue, 13 Oct 2026 15:15:33 -0500 Message-ID: <20261013201538.43156-6-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The remaining users of GetFrameType() and GetFrameSubType() switch on the frame type or subtype, store it for several later comparisons, or derive values from its individual bits. Convert them to operate on the frame_control member of struct ieee80211_hdr. Switch statements now mask frame_control with IEEE80211_FCTL_FTYPE or IEEE80211_FCTL_STYPE and use cpu_to_le16(IEEE80211_FTYPE_*) or cpu_to_le16(IEEE80211_STYPE_*) case labels, as is done in mac80211. Where the subtype was stored in a local variable and compared against several values, store the frame_control value instead and use the ieee80211_is_*() helpers. The test for the absence of a data payload in ap2sta_data_frame() and sta2ap_data_frame() is replaced with ieee80211_is_data_present(), and the QoS test in validate_recv_frame() with ieee80211_is_data_qos(). Both helpers additionally check that the frame type is data, which is always the case on these paths. In aes_cipher(), aes_decipher() and rtw_check_bcn_info(), the type and subtype are kept as integer values and are now derived using the IEEE80211_FCTL_* masks and compared against IEEE80211_FTYPE_* and IEEE80211_STYPE_* values, which are numerically identical to the WIFI_* values they replace. Remove the GetFrameType() and GetFrameSubType() macros, which no longer have any users. No functional change intended. Signed-off-by: Rishik Yechuri --- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 35 ++++++++-------- drivers/staging/rtl8723bs/core/rtw_recv.c | 40 +++++++++---------- drivers/staging/rtl8723bs/core/rtw_security.c | 32 ++++++++------- .../staging/rtl8723bs/core/rtw_wlan_util.c | 7 ++-- drivers/staging/rtl8723bs/core/rtw_xmit.c | 20 +++++----- drivers/staging/rtl8723bs/include/wifi.h | 6 --- 6 files changed, 65 insertions(+), 75 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index dfe4f6210..e315d693f 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -447,7 +447,7 @@ void mgt_dispatcher(struct adapter *padapter, union rec= v_frame *precv_frame) =20 ptable =3D mlme_sta_tbl; =20 - index =3D GetFrameSubType(pframe) >> 4; + index =3D (le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_STYPE) >> 4; =20 if (index >=3D ARRAY_SIZE(mlme_sta_tbl)) return; @@ -464,24 +464,24 @@ void mgt_dispatcher(struct adapter *padapter, union r= ecv_frame *precv_frame) psta->rx_mgmt_frame_seq_num =3D precv_frame->u.hdr.attrib.seq_num; } =20 - switch (GetFrameSubType(pframe)) { - case WIFI_AUTH: + switch (hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_STYPE)) { + case cpu_to_le16(IEEE80211_STYPE_AUTH): if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) ptable->func =3D &OnAuth; else ptable->func =3D &OnAuthClient; fallthrough; - case WIFI_ASSOCREQ: - case WIFI_REASSOCREQ: + case cpu_to_le16(IEEE80211_STYPE_ASSOC_REQ): + case cpu_to_le16(IEEE80211_STYPE_REASSOC_REQ): _mgt_dispatcher(padapter, ptable, precv_frame); break; - case WIFI_PROBEREQ: + case cpu_to_le16(IEEE80211_STYPE_PROBE_REQ): _mgt_dispatcher(padapter, ptable, precv_frame); break; - case WIFI_BEACON: + case cpu_to_le16(IEEE80211_STYPE_BEACON): _mgt_dispatcher(padapter, ptable, precv_frame); break; - case WIFI_ACTION: + case cpu_to_le16(IEEE80211_STYPE_ACTION): _mgt_dispatcher(padapter, ptable, precv_frame); break; default: @@ -927,7 +927,7 @@ unsigned int OnAssocReq(struct adapter *padapter, union= recv_frame *precv_frame) unsigned char supportRate[16]; int support_rate_num; unsigned short status =3D WLAN_STATUS_SUCCESS; - unsigned short frame_type, ie_offset =3D 0; + unsigned short ie_offset =3D 0; struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; struct security_priv *psecuritypriv =3D &padapter->securitypriv; struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; @@ -941,8 +941,7 @@ unsigned int OnAssocReq(struct adapter *padapter, union= recv_frame *precv_frame) if ((pmlmeinfo->state & 0x03) !=3D WIFI_FW_AP_STATE) return _FAIL; =20 - frame_type =3D GetFrameSubType(pframe); - if (frame_type =3D=3D WIFI_ASSOCREQ) + if (ieee80211_is_assoc_req(hdr->frame_control)) ie_offset =3D _ASOCREQ_IE_OFFSET_; else /* WIFI_REASSOCREQ */ ie_offset =3D _REASOCREQ_IE_OFFSET_; @@ -1286,7 +1285,7 @@ unsigned int OnAssocReq(struct adapter *padapter, uni= on recv_frame *precv_frame) sta_info_update(padapter, pstat); =20 /* 2 issue assoc rsp before notify station join event. */ - if (frame_type =3D=3D WIFI_ASSOCREQ) + if (ieee80211_is_assoc_req(hdr->frame_control)) issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP); else issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP); @@ -1315,7 +1314,7 @@ unsigned int OnAssocReq(struct adapter *padapter, uni= on recv_frame *precv_frame) OnAssocReqFail: =20 pstat->aid =3D 0; - if (frame_type =3D=3D WIFI_ASSOCREQ) + if (ieee80211_is_assoc_req(hdr->frame_control)) issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP); else issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP); @@ -3756,7 +3755,7 @@ u8 collect_bss_info(struct adapter *padapter, union r= ecv_frame *precv_frame, str int i; u32 len; u8 *p; - u16 val16, subtype; + u16 val16; u8 *pframe =3D precv_frame->u.hdr.rx_data; struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; u32 packet_len =3D precv_frame->u.hdr.len; @@ -3773,17 +3772,15 @@ u8 collect_bss_info(struct adapter *padapter, union= recv_frame *precv_frame, str =20 memset(bssid, 0, sizeof(struct wlan_bssid_ex)); =20 - subtype =3D GetFrameSubType(pframe); - - if (subtype =3D=3D WIFI_BEACON) { + if (ieee80211_is_beacon(hdr->frame_control)) { bssid->reserved[0] =3D 1; ie_offset =3D _BEACON_IE_OFFSET_; } else { /* FIXME : more type */ - if (subtype =3D=3D WIFI_PROBERSP) { + if (ieee80211_is_probe_resp(hdr->frame_control)) { ie_offset =3D _PROBERSP_IE_OFFSET_; bssid->reserved[0] =3D 3; - } else if (subtype =3D=3D WIFI_PROBEREQ) { + } else if (ieee80211_is_probe_req(hdr->frame_control)) { ie_offset =3D _PROBEREQ_IE_OFFSET_; bssid->reserved[0] =3D 2; } else { diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rt= l8723bs/core/rtw_recv.c index 3dcb4c8b5..75eef9662 100644 --- a/drivers/staging/rtl8723bs/core/rtw_recv.c +++ b/drivers/staging/rtl8723bs/core/rtw_recv.c @@ -806,7 +806,7 @@ static signed int ap2sta_data_frame(struct adapter *ada= pter, union recv_frame *p goto exit; } =20 - if (GetFrameSubType(ptr) & BIT(6)) { + if (!ieee80211_is_data_present(hdr->frame_control)) { /* No data, will not indicate to upper layer, temporarily count it here= */ count_rx_stats(adapter, precv_frame, *psta); ret =3D RTW_RX_HANDLED; @@ -886,7 +886,7 @@ static signed int sta2ap_data_frame(struct adapter *ada= pter, union recv_frame *p if (ieee80211_is_data_qos(hdr->frame_control)) process_wmmps_data(adapter, precv_frame); =20 - if (GetFrameSubType(ptr) & BIT(6)) { + if (!ieee80211_is_data_present(hdr->frame_control)) { /* No data, will not indicate to upper layer, temporarily count it here= */ count_rx_stats(adapter, precv_frame, *psta); ret =3D RTW_RX_HANDLED; @@ -1214,14 +1214,14 @@ static signed int validate_recv_mgnt_frame(struct a= dapter *padapter, union recv_ =20 psta->sta_stats.rx_mgnt_pkts++; =20 - switch (GetFrameSubType(precv_frame->u.hdr.rx_data)) { - case WIFI_BEACON: + switch (hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_STYPE)) { + case cpu_to_le16(IEEE80211_STYPE_BEACON): psta->sta_stats.rx_beacon_pkts++; break; - case WIFI_PROBEREQ: + case cpu_to_le16(IEEE80211_STYPE_PROBE_REQ): psta->sta_stats.rx_probereq_pkts++; break; - case WIFI_PROBERSP: + case cpu_to_le16(IEEE80211_STYPE_PROBE_RESP): if (!memcmp(padapter->eeprompriv.mac_addr, hdr->addr1, ETH_ALEN)) psta->sta_stats.rx_probersp_pkts++; else if (is_broadcast_ether_addr(hdr->addr1) || @@ -1352,16 +1352,17 @@ static signed int validate_80211w_mgmt(struct adapt= er *adapter, union recv_frame struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; u8 *ptr =3D precv_frame->u.hdr.rx_data; struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)ptr; - u8 subtype; + __le16 fc; =20 - subtype =3D GetFrameSubType(ptr); /* bit(7)~bit(2) */ + fc =3D hdr->frame_control; =20 /* only support station mode */ if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) && check_fwstate(pmlmepr= iv, _FW_LINKED) && adapter->securitypriv.binstallBIPkey) { /* unicast management frame decrypt */ if (pattrib->privacy && !(is_multicast_ether_addr(hdr->addr1)) && - (subtype =3D=3D WIFI_DEAUTH || subtype =3D=3D WIFI_DISASSOC || subtype = =3D=3D WIFI_ACTION)) { + (ieee80211_is_deauth(fc) || ieee80211_is_disassoc(fc) || + ieee80211_is_action(fc))) { u8 *mgmt_DATA; u32 data_len =3D 0; =20 @@ -1390,7 +1391,7 @@ static signed int validate_80211w_mgmt(struct adapter= *adapter, union recv_frame pattrib->pkt_len =3D pattrib->pkt_len - pattrib->iv_len - pattrib->icv_= len; kfree(mgmt_DATA); } else if (is_multicast_ether_addr(hdr->addr1) && - (subtype =3D=3D WIFI_DEAUTH || subtype =3D=3D WIFI_DISASSOC)) { + (ieee80211_is_deauth(fc) || ieee80211_is_disassoc(fc))) { signed int BIP_ret =3D _SUCCESS; /* verify BIP MME IE of broadcast/multicast de-auth/disassoc packet */ BIP_ret =3D rtw_BIP_verify(adapter, (u8 *)precv_frame); @@ -1402,7 +1403,7 @@ static signed int validate_80211w_mgmt(struct adapter= *adapter, union recv_frame goto validate_80211w_fail; } } else { /* 802.11w protect */ - if (subtype =3D=3D WIFI_ACTION) { + if (ieee80211_is_action(fc)) { /* according 802.11-2012 standard, these five types are not robust typ= es */ if (ptr[WLAN_HDR_A3_LEN] !=3D RTW_WLAN_CATEGORY_PUBLIC && ptr[WLAN_HDR_A3_LEN] !=3D RTW_WLAN_CATEGORY_HT && @@ -1411,7 +1412,7 @@ static signed int validate_80211w_mgmt(struct adapter= *adapter, union recv_frame ptr[WLAN_HDR_A3_LEN] !=3D RTW_WLAN_CATEGORY_P2P) { goto validate_80211w_fail; } - } else if (subtype =3D=3D WIFI_DEAUTH || subtype =3D=3D WIFI_DISASSOC) { + } else if (ieee80211_is_deauth(fc) || ieee80211_is_disassoc(fc)) { /* issue sa query request */ issue_action_SA_Query(adapter, NULL, 0, 0); goto validate_80211w_fail; @@ -1430,8 +1431,6 @@ static signed int validate_recv_frame(struct adapter = *adapter, union recv_frame =20 /* then call check if rx seq/frag. duplicated. */ =20 - u8 type; - u8 subtype; signed int retval =3D _SUCCESS; =20 struct rx_pkt_attrib *pattrib =3D &precv_frame->u.hdr.attrib; @@ -1446,9 +1445,6 @@ static signed int validate_recv_frame(struct adapter = *adapter, union recv_frame goto exit; } =20 - type =3D GetFrameType(ptr); - subtype =3D GetFrameSubType(ptr); /* bit(7)~bit(2) */ - pattrib->to_fr_ds =3D (ieee80211_has_tods(hdr->frame_control) << 1) | ieee80211_has_fromds(hdr->frame_control); =20 @@ -1461,8 +1457,8 @@ static signed int validate_recv_frame(struct adapter = *adapter, union recv_frame pattrib->privacy =3D ieee80211_has_protected(hdr->frame_control); pattrib->order =3D ieee80211_has_order(hdr->frame_control); =20 - switch (type) { - case WIFI_MGT_TYPE: /* mgnt */ + switch (hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_FTYPE)) { + case cpu_to_le16(IEEE80211_FTYPE_MGMT): /* mgnt */ if (validate_80211w_mgmt(adapter, precv_frame) =3D=3D _FAIL) { retval =3D _FAIL; break; @@ -1471,12 +1467,12 @@ static signed int validate_recv_frame(struct adapte= r *adapter, union recv_frame retval =3D validate_recv_mgnt_frame(adapter, precv_frame); retval =3D _FAIL; /* only data frame return _SUCCESS */ break; - case WIFI_CTRL_TYPE: /* ctrl */ + case cpu_to_le16(IEEE80211_FTYPE_CTL): /* ctrl */ retval =3D validate_recv_ctrl_frame(adapter, precv_frame); retval =3D _FAIL; /* only data frame return _SUCCESS */ break; - case WIFI_DATA_TYPE: /* data */ - pattrib->qos =3D (subtype & BIT(7)) ? 1 : 0; + case cpu_to_le16(IEEE80211_FTYPE_DATA): /* data */ + pattrib->qos =3D ieee80211_is_data_qos(hdr->frame_control); retval =3D validate_recv_data_frame(adapter, precv_frame); if (retval =3D=3D _FAIL) { struct recv_priv *precvpriv =3D &adapter->recvpriv; diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/stagin= g/rtl8723bs/core/rtw_security.c index fc3113922..f22f6a201 100644 --- a/drivers/staging/rtl8723bs/core/rtw_security.c +++ b/drivers/staging/rtl8723bs/core/rtw_security.c @@ -649,7 +649,7 @@ static void construct_mic_iv(u8 *mic_iv, mic_iv[1] =3D 0x00; =20 /* 802.11w management frame should set management bit(4) */ - if (frtype =3D=3D WIFI_MGT_TYPE) + if (frtype =3D=3D IEEE80211_FTYPE_MGMT) mic_iv[1] |=3D BIT(4); =20 for (i =3D 2; i < 8; i++) @@ -675,7 +675,7 @@ static void construct_mic_header1(u8 *mic_header1, mic_header1[1] =3D (u8)((header_length - 2) % 256); =20 /* 802.11w management frame don't AND subtype bits 4, 5, 6 of frame cont= rol field */ - if (frtype =3D=3D WIFI_MGT_TYPE) + if (frtype =3D=3D IEEE80211_FTYPE_MGMT) mic_header1[2] =3D mpdu[0]; else mic_header1[2] =3D mpdu[0] & 0xcf; /* Mute CF poll & CF ack bits */ @@ -767,7 +767,7 @@ static void construct_ctr_preload(u8 *ctr_preload, ctr_preload[1] =3D mpdu[24] & 0x0f; =20 /* 802.11w management frame should set management bit(4) */ - if (frtype =3D=3D WIFI_MGT_TYPE) + if (frtype =3D=3D IEEE80211_FTYPE_MGMT) ctr_preload[1] |=3D BIT(4); =20 /* ctr_preload[2:7] =3D A2[0:5] =3D mpdu[10:15] */ @@ -800,8 +800,9 @@ static signed int aes_cipher(u8 *key, u16 hdrlen, u8 aes_out[16] =3D {}; u8 padded_buffer[16] =3D {}; u8 mic[8]; - u8 frtype =3D GetFrameType(pframe); - u8 frsubtype =3D GetFrameSubType(pframe); + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; + u8 frtype =3D le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_FTYPE; + u8 frsubtype =3D le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_STYPE; =20 frsubtype =3D frsubtype >> 4; =20 @@ -810,14 +811,14 @@ static signed int aes_cipher(u8 *key, u16 hdrlen, else a4_exists =3D true; =20 - if (((frtype | frsubtype) =3D=3D WIFI_DATA_CFACK) || - ((frtype | frsubtype) =3D=3D WIFI_DATA_CFPOLL) || - ((frtype | frsubtype) =3D=3D WIFI_DATA_CFACKPOLL)) { + if (((frtype | frsubtype) =3D=3D (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_= DATA_CFACK)) || + ((frtype | frsubtype) =3D=3D (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_= DATA_CFPOLL)) || + ((frtype | frsubtype) =3D=3D (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_= DATA_CFACKPOLL))) { qc_exists =3D true; if (hdrlen !=3D WLAN_HDR_A3_QOS_LEN) hdrlen +=3D 2; =20 - } else if ((frtype =3D=3D WIFI_DATA) && + } else if ((frtype =3D=3D IEEE80211_FTYPE_DATA) && ((frsubtype =3D=3D 0x08) || (frsubtype =3D=3D 0x09) || (frsubtype =3D=3D 0x0a) || @@ -1005,8 +1006,9 @@ static signed int aes_decipher(u8 *key, u8 hdrlen, u8 padded_buffer[16] =3D {}; u8 mic[8]; =20 - u8 frtype =3D GetFrameType(pframe); - u8 frsubtype =3D GetFrameSubType(pframe); + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; + u8 frtype =3D le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_FTYPE; + u8 frsubtype =3D le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_STYPE; =20 frsubtype =3D frsubtype >> 4; =20 @@ -1028,14 +1030,14 @@ static signed int aes_decipher(u8 *key, u8 hdrlen, else a4_exists =3D true; =20 - if (((frtype | frsubtype) =3D=3D WIFI_DATA_CFACK) || - ((frtype | frsubtype) =3D=3D WIFI_DATA_CFPOLL) || - ((frtype | frsubtype) =3D=3D WIFI_DATA_CFACKPOLL)) { + if (((frtype | frsubtype) =3D=3D (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_= DATA_CFACK)) || + ((frtype | frsubtype) =3D=3D (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_= DATA_CFPOLL)) || + ((frtype | frsubtype) =3D=3D (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_= DATA_CFACKPOLL))) { qc_exists =3D true; if (hdrlen !=3D WLAN_HDR_A3_QOS_LEN) hdrlen +=3D 2; =20 - } else if ((frtype =3D=3D WIFI_DATA) && + } else if ((frtype =3D=3D IEEE80211_FTYPE_DATA) && ((frsubtype =3D=3D 0x08) || (frsubtype =3D=3D 0x09) || (frsubtype =3D=3D 0x0a) || diff --git a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c b/drivers/stagi= ng/rtl8723bs/core/rtw_wlan_util.c index 72607588d..883365458 100644 --- a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c +++ b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c @@ -1082,7 +1082,8 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *p= frame, u32 packet_len) int group_cipher =3D 0, pairwise_cipher =3D 0, is_8021x =3D 0; unsigned char *pbuf; u32 wpa_ielen =3D 0; - u8 *pbssid =3D ((struct ieee80211_hdr *)pframe)->addr3; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; + u8 *pbssid =3D hdr->addr3; struct HT_info_element *pht_info =3D NULL; struct ieee80211_ht_cap *pht_cap =3D NULL; u32 bcn_channel; @@ -1111,9 +1112,9 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *p= frame, u32 packet_len) pmlmepriv->NumOfBcnInfoChkFail =3D 0; } =20 - subtype =3D GetFrameSubType(pframe) >> 4; + subtype =3D (le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_STYPE) >> 4; =20 - if (subtype =3D=3D WIFI_BEACON) + if (subtype =3D=3D IEEE80211_STYPE_BEACON) bssid->reserved[0] =3D 1; =20 bssid->length =3D sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + len; diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rt= l8723bs/core/rtw_xmit.c index 2e1a4b483..920f0b93b 100644 --- a/drivers/staging/rtl8723bs/core/rtw_xmit.c +++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c @@ -1188,7 +1188,7 @@ int rtw_xmitframe_coalesce(struct adapter *padapter, = struct sk_buff *pkt, struct int rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *= pkt, struct xmit_frame *pxmitframe) { u8 *pframe, *tmp_buf =3D NULL; - u8 subtype; + __le16 fc; struct sta_info *psta =3D NULL; struct pkt_attrib *pattrib =3D &pxmitframe->attrib; s32 bmcst =3D is_multicast_ether_addr(pattrib->ra); @@ -1212,7 +1212,7 @@ int rtw_mgmt_xmitframe_coalesce(struct adapter *padap= ter, struct sk_buff *pkt, s return -ENOMEM; =20 tmp_buf =3D BIP_AAD; - subtype =3D GetFrameSubType(pframe); /* bit(7)~bit(2) */ + fc =3D pwlanhdr->frame_control; spin_lock_bh(&padapter->security_key_mutex); =20 /* only support station mode */ @@ -1270,8 +1270,8 @@ int rtw_mgmt_xmitframe_coalesce(struct adapter *padap= ter, struct sk_buff *pkt, s memcpy(pframe - 8, mic, 8); } else { /* unicast mgmt frame TX */ /* start to encrypt mgmt frame */ - if (subtype =3D=3D WIFI_DEAUTH || subtype =3D=3D WIFI_DISASSOC || - subtype =3D=3D WIFI_REASSOCREQ || subtype =3D=3D WIFI_ACTION) { + if (ieee80211_is_deauth(fc) || ieee80211_is_disassoc(fc) || + ieee80211_is_reassoc_req(fc) || ieee80211_is_action(fc)) { if (pattrib->psta) psta =3D pattrib->psta; else @@ -1284,7 +1284,7 @@ int rtw_mgmt_xmitframe_coalesce(struct adapter *padap= ter, struct sk_buff *pkt, s goto xmitframe_coalesce_fail; =20 /* according 802.11-2012 standard, these five types are not robust type= s */ - if (subtype =3D=3D WIFI_ACTION && + if (ieee80211_is_action(fc) && (pframe[WLAN_HDR_A3_LEN] =3D=3D RTW_WLAN_CATEGORY_PUBLIC || pframe[WLAN_HDR_A3_LEN] =3D=3D RTW_WLAN_CATEGORY_HT || pframe[WLAN_HDR_A3_LEN] =3D=3D RTW_WLAN_CATEGORY_UNPROTECTED_WNM || @@ -2440,7 +2440,7 @@ struct xmit_buf *dequeue_pending_xmitbuf_under_survey= (struct xmit_priv *pxmitpri =20 if (!list_empty(&pqueue->queue)) { struct list_head *plist, *phead; - u8 type; + struct ieee80211_hdr *hdr; =20 phead =3D get_list_head(pqueue); plist =3D phead; @@ -2451,11 +2451,11 @@ struct xmit_buf *dequeue_pending_xmitbuf_under_surv= ey(struct xmit_priv *pxmitpri =20 pxmitbuf =3D container_of(plist, struct xmit_buf, list); =20 - type =3D GetFrameSubType(pxmitbuf->pbuf + TXDESC_OFFSET); + hdr =3D (struct ieee80211_hdr *)(pxmitbuf->pbuf + TXDESC_OFFSET); =20 - if ((type =3D=3D WIFI_PROBEREQ) || - (type =3D=3D WIFI_DATA_NULL) || - (type =3D=3D WIFI_QOS_DATA_NULL)) { + if (ieee80211_is_probe_req(hdr->frame_control) || + ieee80211_is_nullfunc(hdr->frame_control) || + ieee80211_is_qos_nullfunc(hdr->frame_control)) { list_del_init(&pxmitbuf->list); break; } diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl= 8723bs/include/wifi.h index 558e734a2..b46ff7020 100644 --- a/drivers/staging/rtl8723bs/include/wifi.h +++ b/drivers/staging/rtl8723bs/include/wifi.h @@ -63,18 +63,12 @@ enum { WIFI_QOS_DATA_NULL =3D (BIT(6) | WIFI_QOS_DATA_TYPE), }; =20 -#define GetFrameType(pbuf) \ - (le16_to_cpu(*(__le16 *)(pbuf)) & (BIT(3) | BIT(2))) - #define SetFrameType(pbuf, type) \ do { \ *(unsigned short *)(pbuf) &=3D cpu_to_le16(~(BIT(3) | BIT(2))); \ *(unsigned short *)(pbuf) |=3D cpu_to_le16(type); \ } while (0) =20 -#define GetFrameSubType(pbuf) (le16_to_cpu(*(__le16 *)(pbuf)) & (BIT(7) |\ - BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2))) - #define SetFrameSubType(pbuf, type) \ do { \ *(__le16 *)(pbuf) &=3D cpu_to_le16(~(BIT(7) | BIT(6) | \ --=20 2.43.0 From nobody Sat Oct 24 13:19:48 2026 Received: from mail-oo1-f50.google.com (mail-oo1-f50.google.com [209.85.161.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A256D5452B5 for ; Tue, 13 Oct 2026 20:15:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922553; cv=none; b=fVqeLCDUjM4Mk3NTYmcQOQKfqJLviyYmClcYSy9R4mUMZEJD8TZFqaR5+gP3kCQDK+DM/qd24tHVu1HTue9I+AQ+1LG0YHZvmnBFB0Ws17bqkdb0lGmaCoDTUQNmAiQw2znuZZ+L7DHpxLV0U4lBn7zcI9B4tmq71dxICJsUix4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922553; c=relaxed/simple; bh=XEdgWnlnp+WrdXDPIgVg/CPIC6pGiI8j0SR5FY7OKm8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Q2w0Sc/m0omcfoET9p+A7h5Qyp2hxR6i5fgMdKbonc1T3sBl5kzreg8nAg0haq3eEHG4eP7TEsMnuky2jFa3Ri/LvS1qhJ02LgJUDgD9sk9Qzo1oJZ+S3V5eA+IxU8QtQYnKahu5VabwmTwuzuBFn8r93lrUCtfrhQ45T+bNvC4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RFtjtRIx; arc=none smtp.client-ip=209.85.161.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RFtjtRIx" Received: by mail-oo1-f50.google.com with SMTP id 006d021491bc7-6de1fd5f572so1503921eaf.3 for ; Tue, 13 Oct 2026 13:15:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922549; x=1792527349; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kqAeJF9RdF1+vlcqpXvRCOXwyjxYtKo+iVbyXPC3Jlw=; b=RFtjtRIxm8AvYtH9FLe1evJ3jXnc/pCnawHtOM/XYmB5p3k5DCo1t5A7EnxsZBJpTJ oEFjWMiZ9JRfbNj4BhFrQY2iLGdepcPdStRKzMaQ6LXGpanWlP4RWuzfXMWLXamWHEwZ LoWlKH9PCK7Lt35dubaeDidqLdX5KWqNSTyxIMETCW7RxjJJH0yB5H1Mmg/NQES1hlqw tKoA8enJJp1mS+SYOyhiVPaHtzgueT7OF3QTahCVs688EyjlRkPaHrg3keElpClNZqRY sPlDB126S8f/Cw7OmS1pxwHzi582F3SyKputWYOez5xv4NVWd+gdOkuhRfe8sp2bwe9j 4SIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922549; x=1792527349; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=kqAeJF9RdF1+vlcqpXvRCOXwyjxYtKo+iVbyXPC3Jlw=; b=a85RSQWqn77yMaFXgC4lWJfBNlmWTkM2kkP1TJONxLQMedHFH7LDXyFkM/MsZOVDFU JIrHeTOu1P+gqDnann8nleQkM+IDVtFK6PojiTr3FH0AnqhEDg6cfGtfhk3pb6ztSIuf NmsG7QbJEzBF7gyxWFaeiyh9MSqHlv1o99qopdsUMqiuOsrDpUdv9YQ81XTaA6DHN+dI vdPD0iPCcla8y/QZD91eZkPi1DA8QuCUKseT7SYLksSUQ1VoHQpDXXUM7hTB/irwCxs4 aMFNVurs2I+ziuMjM+tAoA6VmzJ1G97LuopAON1OqVVC2r+sGXuU9XyFBz9vTs/j8G4h FCAw== X-Forwarded-Encrypted: i=1; AKwUvBwBRi5M3VrMzESvkbyYnG9+9TqsRreMbaZawlEJKNm4QnUe+JxDHvkG/jG1FYreeh6CHo1oaE1OkFP37hA=@vger.kernel.org X-Gm-Message-State: AFq9FYJgfLkfQM4nlYlJ7R1u9FL8uTBxnruGiqQeODHsZo4xVohrmZJk lm/yp3e7qMpYUa6S+kqozmEjkj9KScz6fQWA5ns3H9QOJWffx7V+XUhc X-Gm-Gg: AYBFou01wbT0sbZ6m6vDrJIH+lcFcbsnKjDb8Tmql1VQu7gXw5qmtBoUVGWX2AfJZy+ ZDPW/vkoSr95rneXBAeF2Oj7SclDVD/y45X+eiZrScSFYFcWzrx5E5Q6Um4B2ZPU310WyfTXEjS uzGzTixarYJLAklDScx5sR4ei/DaTbaDG3tqXQ3tczoEd5uMAQpqElsqi1F9Ducoe8T00MmBJPj hRuP+6qVIKUr5k5N31RdJdFr9e0/jZI2pbCVs09yyEdUr0lwIC0aM1V8qo71IXd57BkJmVJauNA XgoV0P1eUa961sEBF58MSMu5MnpxXVMYmFNFHEj0k24loWTkdGffLSBxOFS/4JjqhOvJM77phnJ za5MrSEbB7xK10uQlX6EgwIt4Rdl0k++UExklT1EiiawoMA25zjFbF/EQPxVdJW1QaRo5zo0NQJ x/DzggzAJX6HqyiGM6900y0XhQIev5bFo4j9+vyej7+l8tZi2CSelV4MkZ5sIt3TLU+RAjpIEvu mp4HLfgm8pKIw== X-Received: by 2002:a05:6820:2d0c:b0:6d9:779e:4f88 with SMTP id 006d021491bc7-6ef08e7d448mr9812220eaf.8.1791922549289; Tue, 13 Oct 2026 13:15:49 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:47 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 06/10] staging: rtl8723bs: remove unused num member from struct mlme_handler Date: Tue, 13 Oct 2026 15:15:34 -0500 Message-ID: <20261013201538.43156-7-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The num member of struct mlme_handler is initialised in mlme_sta_tbl[] with the WIFI_* subtype constants but is never read. The table is indexed directly by the frame subtype in mgt_dispatcher(), and only the func member of each entry is used. Remove the member and its initialisers. This drops the last references to several WIFI_* constants that have no equivalent in , such as WIFI_ACTION_NOACK, so that the private frame type definitions can be removed in a later change. No functional change intended. Signed-off-by: Rishik Yechuri --- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 30 +++++++++---------- .../staging/rtl8723bs/include/rtw_mlme_ext.h | 1 - 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index e315d693f..3096d4c61 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -12,23 +12,23 @@ #include =20 static struct mlme_handler mlme_sta_tbl[] =3D { - {WIFI_ASSOCREQ, "OnAssocReq", &OnAssocReq}, - {WIFI_ASSOCRSP, "OnAssocRsp", &OnAssocRsp}, - {WIFI_REASSOCREQ, "OnReAssocReq", &OnAssocReq}, - {WIFI_REASSOCRSP, "OnReAssocRsp", &OnAssocRsp}, - {WIFI_PROBEREQ, "OnProbeReq", &OnProbeReq}, - {WIFI_PROBERSP, "OnProbeRsp", &OnProbeRsp}, + {"OnAssocReq", &OnAssocReq}, + {"OnAssocRsp", &OnAssocRsp}, + {"OnReAssocReq", &OnAssocReq}, + {"OnReAssocRsp", &OnAssocRsp}, + {"OnProbeReq", &OnProbeReq}, + {"OnProbeRsp", &OnProbeRsp}, =20 /* below 2 are reserved */ - {0, "DoReserved", &DoReserved}, - {0, "DoReserved", &DoReserved}, - {WIFI_BEACON, "OnBeacon", &OnBeacon}, - {WIFI_ATIM, "OnATIM", &OnAtim}, - {WIFI_DISASSOC, "OnDisassoc", &OnDisassoc}, - {WIFI_AUTH, "OnAuth", &OnAuthClient}, - {WIFI_DEAUTH, "OnDeAuth", &OnDeAuth}, - {WIFI_ACTION, "OnAction", &OnAction}, - {WIFI_ACTION_NOACK, "OnActionNoAck", &OnAction}, + {"DoReserved", &DoReserved}, + {"DoReserved", &DoReserved}, + {"OnBeacon", &OnBeacon}, + {"OnATIM", &OnAtim}, + {"OnDisassoc", &OnDisassoc}, + {"OnAuth", &OnAuthClient}, + {"OnDeAuth", &OnDeAuth}, + {"OnAction", &OnAction}, + {"OnActionNoAck", &OnAction}, }; =20 static struct action_handler OnAction_tbl[] =3D { diff --git a/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h b/drivers/sta= ging/rtl8723bs/include/rtw_mlme_ext.h index 847a1d75f..5ef81c347 100644 --- a/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h +++ b/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h @@ -205,7 +205,6 @@ enum { }; =20 struct mlme_handler { - unsigned int num; char *str; unsigned int (*func)(struct adapter *padapter, union recv_frame *precv_fr= ame); }; --=20 2.43.0 From nobody Sat Oct 24 13:19:48 2026 Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EDE91552956 for ; Tue, 13 Oct 2026 20:15:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922555; cv=none; b=VrEJOPF8yjwKg73KHT1qb6/pVHIl9nh19hY77ExMH7Ybtk5yXgSkAtXCe9AF5VcvJw0IJB8xZclmDtBtRld+Zw+XaH9Wd9Yuv5OY+VIjyfql7rYh8nM7x+NOvytCEAVO1LxCIHunNNy/ruW+EZzKlsC9X0JJCqq9dJUMCv8GLhQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922555; c=relaxed/simple; bh=FH90RTY9dmf2Y6ilpKpufRljtleaS3xcvDszTxFb3bI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YJdcy6uNx/wwX54x4YQwkHKBD13dspEJ2w7Y8wEuL4yrjroap2Uik+1NM98SJ4HBvVOVWbUCqvu4h9mg2FemyTl8LPNaOeLWEZg0S24Q5Tb9wt75o66QiyoHMFE8QNlQQ1JGc42OkwJVDNRiu2XSqxCglUFGkbUymXxE3LkjgFQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bO+ryw/U; arc=none smtp.client-ip=209.85.210.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bO+ryw/U" Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-823b938464fso169665a34.2 for ; Tue, 13 Oct 2026 13:15:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922551; x=1792527351; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=l4IW3PR4H6DX7tYNqgL8fObncZmGU80iuedORYXX8rw=; b=bO+ryw/UFJxwD3OYxLcRzDW+GaOAqiSlHBNuNb1mS53tUB9m9raqh1KfLuWjwRSQgc 2S5xPvPVwn8SVRg3X3kAcqCkA2aNEQ3jhlLaq0I2TqcaSRMeBus4RbT0/yRfZa8pyDce 7m4/wNGMm5nPwj1rUdaqZosA2Y9EhzccPZUDPb1lEkNM41KdPFwW/5QqjSUCPj/vKQp7 n7vyYbthcVUfkPeDWvVwQxsjNWYtM08lzYYPEhpdYV+6OISl6/z2m4oKuyaxxPKHdovF pdjps8vJIKFXIlJOYoi/dyomQddiF0fjLjwJF8fqohb3xk6o04TIqwuOEplekz6jddg6 9g2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922551; x=1792527351; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=l4IW3PR4H6DX7tYNqgL8fObncZmGU80iuedORYXX8rw=; b=Lf5HJ/Fbd4/UYu2tOFabTsbHDsT56mPY+N2juX31D46iKv7HFsLqnH1MJbFlaI67QM eduGUJr4io3QXyrO4U1TRv7Vps7Z5m9OZsCwo5HjPg827LG5CUWAha/Df+IV4PhPWtqY v2APpfXeg8c5W5QvFn4KAtk+uGHoeddgLGuPERbqISehit3hyo1ECDxxkhc/in6+COUa /ZZRksMfKs2eTBCxoNScJ0KVBKrwmsC1mvVBq1K7rpdaClGwAZ+abTZBiksa8JMnSJ1W kcMjDxsaekIjcLBQb80QS1GWPrsFbwZkgauTIXnYoJGBDK3tirQBOAJG02MLvxX10Bkj MXrg== X-Forwarded-Encrypted: i=1; AKwUvBziWnAR5g7B/a4Rwpbf46qXBXEIbpyj7C0khr/TpG8SYj7dmdMP8ZfP7S9+yV6mi6lUfBEJeBq8hlDNGF8=@vger.kernel.org X-Gm-Message-State: AFq9FYJxVP4bUgkmecztK5eQanDGS1MpB5DBtomysrwqpmbcXsX/czqr LVHt42NGrqgvbDJ7Hdhc1yMAonVq669JyznyxJzX1MqimAcxxyFEFq7lRW38DU6wFbc= X-Gm-Gg: AYBFou3osyFjgNgyMU4wsQ4L03h7V8gJtWPmohHG1injONvdTWspgEl+GOWGqIjCgsM eEF2ae4KyaS9b5J+Ht7nKkmiI+EUuzQU/bl1F2Nu+aX/MX5eczTzp2obYsnvIM2EJ8V/mDM0zkl 2OtW/67lIyi5pg/8fRn2yobC2u7gwskjL0XD6iubCe1AWofDkRq9ieRf/4aNU7fB4egDtf7C7W9 Kj1CpgleSyR9i1/D9Bs81mqXwM7fYeztjL9PItA8ewUiJHpCzkaKG7NEvCwCPwk2M/IPNdgtfWP 7p71lCu9B4aL22Rmubsnl/5TuEk/fkY8ZgQkHBfPJa6NfeS0Nn+GVf6uaOfts4QVq/0nFWhY+Rh bQECtZPBuCUrKk3Oqbx3wWE0gSLM1+nPsu3pkgOIVIfPcCo+CvzosVZT5AwNaNRfY1K4byO+YkL QSrcGl2KeGX9B12mUVol1OHlLnNkN7qvlc4wAvQqSzzDu3WbC0z2jr63FOB2E4P1VEJ8qnEecAx yBVIBaf1lim0w== X-Received: by 2002:a05:6830:3894:b0:81f:b957:abba with SMTP id 46e09a7af769-83097975c98mr12665701a34.23.1791922551383; Tue, 13 Oct 2026 13:15:51 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:49 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 07/10] staging: rtl8723bs: use IEEE80211_FTYPE_* and IEEE80211_STYPE_* values Date: Tue, 13 Oct 2026 15:15:35 -0500 Message-ID: <20261013201538.43156-8-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The driver sets the type and subtype of transmitted frames with SetFrameSubType() using its private WIFI_* enumeration, which encodes the same values as the IEEE80211_FTYPE_* and IEEE80211_STYPE_* constants in . Replace each SetFrameSubType() call with an OR of the corresponding IEEE80211_FTYPE_* and IEEE80211_STYPE_* values into frame_control. At every call site the Frame Control field has already been cleared, so the type and subtype bits are zero and the OR is equivalent to the clear and set performed by the macro. Flags that some callers set before the subtype, such as Power Management and From DS, are preserved as before. Convert the values stored in pattrib->subtype and passed to issue_asocrsp() to the kernel definitions as well. They are numerically identical to the WIFI_* values they replace. Remove SetFrameSubType(), the unused SetFrameType(), and the WIFI_* frame type and subtype enumerations, which no longer have any users. Update comments that referred to the removed constants. No functional change intended. Signed-off-by: Rishik Yechuri --- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 36 ++++++------ drivers/staging/rtl8723bs/core/rtw_xmit.c | 8 +-- drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c | 12 ++-- drivers/staging/rtl8723bs/include/wifi.h | 58 ------------------- .../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 8 +-- 5 files changed, 32 insertions(+), 90 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index 3096d4c61..000c23983 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -943,7 +943,7 @@ unsigned int OnAssocReq(struct adapter *padapter, union= recv_frame *precv_frame) =20 if (ieee80211_is_assoc_req(hdr->frame_control)) ie_offset =3D _ASOCREQ_IE_OFFSET_; - else /* WIFI_REASSOCREQ */ + else /* reassociation request */ ie_offset =3D _REASOCREQ_IE_OFFSET_; =20 if (pkt_len < sizeof(struct ieee80211_hdr_3addr) + ie_offset) @@ -1286,9 +1286,9 @@ unsigned int OnAssocReq(struct adapter *padapter, uni= on recv_frame *precv_frame) =20 /* 2 issue assoc rsp before notify station join event. */ if (ieee80211_is_assoc_req(hdr->frame_control)) - issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP); + issue_asocrsp(padapter, status, pstat, IEEE80211_STYPE_ASSOC_RESP); else - issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP); + issue_asocrsp(padapter, status, pstat, IEEE80211_STYPE_REASSOC_RESP); =20 spin_lock_bh(&pstat->lock); kfree(pstat->passoc_req); @@ -1315,9 +1315,9 @@ unsigned int OnAssocReq(struct adapter *padapter, uni= on recv_frame *precv_frame) =20 pstat->aid =3D 0; if (ieee80211_is_assoc_req(hdr->frame_control)) - issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP); + issue_asocrsp(padapter, status, pstat, IEEE80211_STYPE_ASSOC_RESP); else - issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP); + issue_asocrsp(padapter, status, pstat, IEEE80211_STYPE_REASSOC_RESP); =20 return _FAIL; } @@ -2083,7 +2083,7 @@ void issue_beacon(struct adapter *padapter, int timeo= ut_ms) memcpy(pwlanhdr->addr3, get_my_bssid(cur_network), ETH_ALEN); =20 SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/); - SetFrameSubType(pframe, WIFI_BEACON); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D sizeof(struct ieee80211_hdr_3addr); @@ -2235,7 +2235,7 @@ void issue_probersp(struct adapter *padapter, unsigne= d char *da, u8 is_valid_p2p =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(fctrl, WIFI_PROBERSP); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RESP= ); =20 pattrib->hdrlen =3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D pattrib->hdrlen; @@ -2432,7 +2432,7 @@ static void issue_probereq(struct adapter *padapter, = struct ndis_802_11_ssid *ps =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(pframe, WIFI_PROBEREQ); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_REQ); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D sizeof(struct ieee80211_hdr_3addr); @@ -2499,7 +2499,7 @@ void issue_auth(struct adapter *padapter, struct sta_= info *psta, unsigned short =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(pframe, WIFI_AUTH); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D sizeof(struct ieee80211_hdr_3addr); @@ -2628,8 +2628,8 @@ void issue_asocrsp(struct adapter *padapter, unsigned= short status, struct sta_i =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - if ((pkt_type =3D=3D WIFI_ASSOCRSP) || (pkt_type =3D=3D WIFI_REASSOCRSP))= { - SetFrameSubType(pwlanhdr, pkt_type); + if (pkt_type =3D=3D IEEE80211_STYPE_ASSOC_RESP || pkt_type =3D=3D IEEE802= 11_STYPE_REASSOC_RESP) { + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | pkt_type); } else { rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf); rtw_free_xmitframe(pxmitpriv, pmgntframe); @@ -2755,7 +2755,7 @@ void issue_assocreq(struct adapter *padapter) =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(pframe, WIFI_ASSOCREQ); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ASSOC_REQ); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D sizeof(struct ieee80211_hdr_3addr); @@ -2938,7 +2938,7 @@ static int _issue_nulldata(struct adapter *padapter, = unsigned char *da, =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(pframe, WIFI_DATA_NULL); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D sizeof(struct ieee80211_hdr_3addr); @@ -3085,7 +3085,7 @@ static int _issue_qos_nulldata(struct adapter *padapt= er, unsigned char *da, =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(pframe, WIFI_QOS_DATA_NULL); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLFU= NC); =20 pframe +=3D sizeof(struct ieee80211_qos_hdr); pattrib->pktlen =3D sizeof(struct ieee80211_qos_hdr); @@ -3177,7 +3177,7 @@ static int _issue_deauth(struct adapter *padapter, un= signed char *da, =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(pframe, WIFI_DEAUTH); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_DEAUTH); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D sizeof(struct ieee80211_hdr_3addr); @@ -3271,7 +3271,7 @@ void issue_action_SA_Query(struct adapter *padapter, = unsigned char *raddr, unsig =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(pframe, WIFI_ACTION); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D sizeof(struct ieee80211_hdr_3addr); @@ -3344,7 +3344,7 @@ void issue_action_BA(struct adapter *padapter, unsign= ed char *raddr, unsigned ch =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(pframe, WIFI_ACTION); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D sizeof(struct ieee80211_hdr_3addr); @@ -3498,7 +3498,7 @@ static void issue_action_BSSCoexistPacket(struct adap= ter *padapter) =20 SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); pmlmeext->mgnt_seq++; - SetFrameSubType(pframe, WIFI_ACTION); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pattrib->pktlen =3D sizeof(struct ieee80211_hdr_3addr); diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rt= l8723bs/core/rtw_xmit.c index 920f0b93b..8855f80f7 100644 --- a/drivers/staging/rtl8723bs/core/rtw_xmit.c +++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c @@ -650,7 +650,7 @@ static int set_qos(struct pkt_file *ppktfile, struct pk= t_attrib *pattrib) } pattrib->priority =3D UserPriority; pattrib->hdrlen =3D WLAN_HDR_A3_QOS_LEN; - pattrib->subtype =3D WIFI_QOS_DATA_TYPE; + pattrib->subtype =3D IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_DATA; =20 return 0; } @@ -774,7 +774,7 @@ static int update_attrib(struct adapter *padapter, stru= ct sk_buff *pkt, struct p pattrib->pkt_hdrlen =3D ETH_HLEN;/* pattrib->ether_type =3D=3D 0x8100) ? = (14 + 4): 14; vlan tag */ =20 pattrib->hdrlen =3D WLAN_HDR_A3_LEN; - pattrib->subtype =3D WIFI_DATA_TYPE; + pattrib->subtype =3D IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA; pattrib->priority =3D 0; =20 if (check_fwstate(pmlmepriv, WIFI_AP_STATE | WIFI_ADHOC_STATE | WIFI_ADHO= C_MASTER_STATE)) { @@ -914,9 +914,9 @@ int rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr,= struct pkt_attrib *pattr =20 memset(hdr, 0, WLANHDR_OFFSET); =20 - SetFrameSubType(fctrl, pattrib->subtype); + *fctrl |=3D cpu_to_le16(pattrib->subtype); =20 - if (pattrib->subtype & WIFI_DATA_TYPE) { + if (pattrib->subtype & IEEE80211_FTYPE_DATA) { if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { { /* 1.Data transfer to AP */ diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c b/drivers/staging= /rtl8723bs/hal/rtl8723b_cmd.c index 5600d9064..c5518eeea 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c @@ -116,7 +116,7 @@ static void ConstructBeacon(struct adapter *padapter, u= 8 *pframe, u32 *pLength) ether_addr_copy(pwlanhdr->addr3, get_my_bssid(cur_network)); =20 SetSeqNum(pwlanhdr, 0); - SetFrameSubType(pframe, WIFI_BEACON); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); pktlen =3D sizeof(struct ieee80211_hdr_3addr); @@ -193,7 +193,7 @@ static void ConstructPSPoll(struct adapter *padapter, u= 8 *pframe, u32 *pLength) fctrl =3D &pwlanhdr->frame_control; *(fctrl) =3D 0; *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_PM); - SetFrameSubType(pframe, WIFI_PSPOLL); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_PSPOLL); =20 /* AID. */ SetDuration(pframe, (pmlmeinfo->aid | 0xc000)); @@ -257,7 +257,7 @@ static void ConstructNullFunctionData(struct adapter *p= adapter, if (bQoS) { struct ieee80211_qos_hdr *pwlanqoshdr; =20 - SetFrameSubType(pframe, WIFI_QOS_DATA_NULL); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLF= UNC); =20 pwlanqoshdr =3D (struct ieee80211_qos_hdr *)pframe; SetPriority(&pwlanqoshdr->qos_ctrl, AC); @@ -265,7 +265,7 @@ static void ConstructNullFunctionData(struct adapter *p= adapter, =20 pktlen =3D sizeof(struct ieee80211_qos_hdr); } else { - SetFrameSubType(pframe, WIFI_DATA_NULL); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC); =20 pktlen =3D sizeof(struct ieee80211_hdr_3addr); } @@ -745,7 +745,7 @@ static void ConstructBtNullFunctionData(struct adapter = *padapter, if (bQoS) { struct ieee80211_qos_hdr *pwlanqoshdr; =20 - SetFrameSubType(pframe, WIFI_QOS_DATA_NULL); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLF= UNC); =20 pwlanqoshdr =3D (struct ieee80211_qos_hdr *)pframe; SetPriority(&pwlanqoshdr->qos_ctrl, AC); @@ -753,7 +753,7 @@ static void ConstructBtNullFunctionData(struct adapter = *padapter, =20 pktlen =3D sizeof(struct ieee80211_qos_hdr); } else { - SetFrameSubType(pframe, WIFI_DATA_NULL); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC); =20 pktlen =3D sizeof(struct ieee80211_hdr_3addr); } diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl= 8723bs/include/wifi.h index b46ff7020..9790bd850 100644 --- a/drivers/staging/rtl8723bs/include/wifi.h +++ b/drivers/staging/rtl8723bs/include/wifi.h @@ -18,64 +18,6 @@ /* This test verifies the WLAN NIC can update the NAV through sending the= CTS with large duration. */ #define WiFiNavUpperUs 30000 /* 30 ms */ =20 -enum { - WIFI_MGT_TYPE =3D (0), - WIFI_CTRL_TYPE =3D (BIT(2)), - WIFI_DATA_TYPE =3D (BIT(3)), - WIFI_QOS_DATA_TYPE =3D (BIT(7)|BIT(3)), /* QoS Data */ -}; - -enum { - - /* below is for mgt frame */ - WIFI_ASSOCREQ =3D (0 | WIFI_MGT_TYPE), - WIFI_ASSOCRSP =3D (BIT(4) | WIFI_MGT_TYPE), - WIFI_REASSOCREQ =3D (BIT(5) | WIFI_MGT_TYPE), - WIFI_REASSOCRSP =3D (BIT(5) | BIT(4) | WIFI_MGT_TYPE), - WIFI_PROBEREQ =3D (BIT(6) | WIFI_MGT_TYPE), - WIFI_PROBERSP =3D (BIT(6) | BIT(4) | WIFI_MGT_TYPE), - WIFI_BEACON =3D (BIT(7) | WIFI_MGT_TYPE), - WIFI_ATIM =3D (BIT(7) | BIT(4) | WIFI_MGT_TYPE), - WIFI_DISASSOC =3D (BIT(7) | BIT(5) | WIFI_MGT_TYPE), - WIFI_AUTH =3D (BIT(7) | BIT(5) | BIT(4) | WIFI_MGT_TYPE), - WIFI_DEAUTH =3D (BIT(7) | BIT(6) | WIFI_MGT_TYPE), - WIFI_ACTION =3D (BIT(7) | BIT(6) | BIT(4) | WIFI_MGT_TYPE), - WIFI_ACTION_NOACK =3D (BIT(7) | BIT(6) | BIT(5) | WIFI_MGT_TYPE), - - /* below is for control frame */ - WIFI_NDPA =3D (BIT(6) | BIT(4) | WIFI_CTRL_TYPE), - WIFI_PSPOLL =3D (BIT(7) | BIT(5) | WIFI_CTRL_TYPE), - WIFI_RTS =3D (BIT(7) | BIT(5) | BIT(4) | WIFI_CTRL_TYPE), - WIFI_CTS =3D (BIT(7) | BIT(6) | WIFI_CTRL_TYPE), - WIFI_ACK =3D (BIT(7) | BIT(6) | BIT(4) | WIFI_CTRL_TYPE), - WIFI_CFEND =3D (BIT(7) | BIT(6) | BIT(5) | WIFI_CTRL_TYPE), - WIFI_CFEND_CFACK =3D (BIT(7) | BIT(6) | BIT(5) | BIT(4) | WIFI_CTRL= _TYPE), - - /* below is for data frame */ - WIFI_DATA =3D (0 | WIFI_DATA_TYPE), - WIFI_DATA_CFACK =3D (BIT(4) | WIFI_DATA_TYPE), - WIFI_DATA_CFPOLL =3D (BIT(5) | WIFI_DATA_TYPE), - WIFI_DATA_CFACKPOLL =3D (BIT(5) | BIT(4) | WIFI_DATA_TYPE), - WIFI_DATA_NULL =3D (BIT(6) | WIFI_DATA_TYPE), - WIFI_CF_ACK =3D (BIT(6) | BIT(4) | WIFI_DATA_TYPE), - WIFI_CF_POLL =3D (BIT(6) | BIT(5) | WIFI_DATA_TYPE), - WIFI_CF_ACKPOLL =3D (BIT(6) | BIT(5) | BIT(4) | WIFI_DATA_TYPE), - WIFI_QOS_DATA_NULL =3D (BIT(6) | WIFI_QOS_DATA_TYPE), -}; - -#define SetFrameType(pbuf, type) \ - do { \ - *(unsigned short *)(pbuf) &=3D cpu_to_le16(~(BIT(3) | BIT(2))); \ - *(unsigned short *)(pbuf) |=3D cpu_to_le16(type); \ - } while (0) - -#define SetFrameSubType(pbuf, type) \ - do { \ - *(__le16 *)(pbuf) &=3D cpu_to_le16(~(BIT(7) | BIT(6) | \ - BIT(5) | BIT(4) | BIT(3) | BIT(2))); \ - *(__le16 *)(pbuf) |=3D cpu_to_le16(type); \ - } while (0) - #define GetSequence(pbuf) \ (le16_to_cpu(*(__le16 *)((size_t)(pbuf) + 22)) >> 4) =20 diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/st= aging/rtl8723bs/os_dep/ioctl_cfg80211.c index 150469cda..d52bcf1b1 100644 --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c @@ -283,12 +283,12 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(struct a= dapter *padapter, struct wl =20 SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/); =20 - if (pnetwork->network.reserved[0] =3D=3D 1) { /* WIFI_BEACON */ + if (pnetwork->network.reserved[0] =3D=3D 1) { /* beacon */ eth_broadcast_addr(pwlanhdr->addr1); - SetFrameSubType(pbuf, WIFI_BEACON); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON); } else { memcpy(pwlanhdr->addr1, myid(&padapter->eeprompriv), ETH_ALEN); - SetFrameSubType(pbuf, WIFI_PROBERSP); + *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RES= P); } =20 memcpy(pwlanhdr->addr2, pnetwork->network.mac_address, ETH_ALEN); @@ -1903,7 +1903,7 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *= padapter, u8 *pmgmt_frame, =20 if (ieee80211_is_assoc_req(hdr->frame_control)) ie_offset =3D _ASOCREQ_IE_OFFSET_; - else /* WIFI_REASSOCREQ */ + else /* reassociation request */ ie_offset =3D _REASOCREQ_IE_OFFSET_; =20 sinfo.filled =3D 0; --=20 2.43.0 From nobody Sat Oct 24 13:19:48 2026 Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E28EB542817 for ; Tue, 13 Oct 2026 20:15:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922558; cv=none; b=iC5I+kDEgearkwOT+8WFQivTlkpk6pBAlCN6G8HomdhA6YKminGnSizjwMwBQQA+MEeFYbCJL5Y9Zz+7P35l1BBXmpde0YSJuunLZRKhtza0/2LQa001t3TrnQzKoPhhjzn3yQcbiNH+L3rEmnH2wbzaVF4KCWjYZiCt1pUYZo0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922558; c=relaxed/simple; bh=QhdnGdpvtmparr4Xi8uw/xZgYagD6HCTCg8um9xEWng=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XElxQJGGJgHCB5RBFe2lzkhrJg3eqyQVfpCRvCzik7yLXBmbZuWgj6Hu6vCjoa+hnfDUhxoB8tXj7wF9SJOn7D8xPMg4zqGE6vRkl78/xqgI/tS+VFJzBAcs1gT3VBy+DEBVPDFLeUfwMsXr1PHqy55kLEK0cyT88syDoX6IZ/8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=momiZkAN; arc=none smtp.client-ip=209.85.210.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="momiZkAN" Received: by mail-ot1-f54.google.com with SMTP id 46e09a7af769-824e6e6ed71so213720a34.1 for ; Tue, 13 Oct 2026 13:15:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922554; x=1792527354; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=icsSJV72bXxG8OjYZeuIPNKvf6R3bMtCE307eWSpXdc=; b=momiZkAN0lGWnijj6Jb9O+46Mc5iKGBAsqpTBaw+vmflRFboZC2PN0+YaxZNqE/KZR oJWg9uAI95YitpvDKy1aebHva0uQORcxYswe2UVQq2DecOolr13cJBk7qgWOg+ERrhL4 Vlu9qYMBRW5uKv9Gdj7i3wiCxhhbgEJaAIXDQ3yQ+5VniUUAnA0Ifq+uu8gfFbfDGEkc JR3pPwHDCYsR/5AaiQzt8TSR+RKcLaYeF90d3qVUgbLxegSd51RDF+HJkSx9y4X3lcl+ 0n3FwKRUnovJM6giYtOkymIl11CX1dgy8P2wUlVJazJk09r+RuzGzI9y/Wzd5dPWYVPm TWAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922554; x=1792527354; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=icsSJV72bXxG8OjYZeuIPNKvf6R3bMtCE307eWSpXdc=; b=XGNvorYcxVwcZyDcd2P823pR6Beoh/79no87IW8YXuBMNEBPhia6lzgslaQkb36pLO ivlKs/cn3Gy/D4x6phm2f0smlRLzCqb90KeVeb2habcEIUMZv7G1fvPOjrWQ5lQu3Lv1 fOfOBKWKWsAuyEkphWRM6QNhHBNtzADePUxjxQdMntVS461tQRaWYUbpBS1iBPg5YVPl OYokH9hGjcZsiXyenKn9CDa0VIVOU8ThFMFzt7T7QORxBo20EnJrpMtZfqZGPmHz/8KT vXFldDKgHAT5YsiOMZ3eL3gr2wzq4bMcxqmSz5hx+oYiE/VZvt61TddGtaWbmyOx6rTb /NqQ== X-Forwarded-Encrypted: i=1; AKwUvBwHJ86O2A6UwZhuXKevQPmPv/jQkim6MeJ15lJqVFZZOnfAiP9mIlhNeuOqHfMAVfy2XWUYikjglLnN31w=@vger.kernel.org X-Gm-Message-State: AFq9FYIl+CZ3rfFhS2SS+4dlcgdDb2Z46Z5RWmvMe9PplMZTeTdIjANS bzT6/49KmMdAu096cDz1M0LErYhUvJnQntpnjuvGK0q2vUMekzj0a3fb9vq06VvANA8= X-Gm-Gg: AYBFou3x+JqOZzpB1fYz6ankQOvuchoELYlE/INBkC9CyjXGsnXKyEDsSbfE8RK/m0y jrjcQY6Ci9c46cfx2lrJfxjc6tfFx+MWmtusIjnQ95lus4Pa+0f/oVoGcQ5AFxifp7zReNeJAK7 3q1KzkSbpv5A6BDkIbwzQPGc9rpLqClvQUlxUwm2aHKSHnvLbIZk+v8Jtw9iMfofi0XtoxeKS7t 5FkWS16HyWHUnvPtAf9CDN7Yl7MG687AS/xqakwqPEfYPwTlxWMv4K19R4693M2yfrx0rR7Vf/x mn8r02X4CO3GChULY6e53JYpOk6h2+2zFccYsfZm4I630qPtyN993sfPpDih9Db57UXn2lbPSba GrnVBLz+owMJPKi0V9pSseLKsgE8tvFrW5HwfQmwoZYkG0pa/XRvhQdgqif2u6QyrXEZ6bm4Gd9 TvJdz45gqPbRYelHMHNBvVIygm7o/xf0/78hkORDgzdLQ6qAxZbBUyqUbOET7dNTyWJ/OQUcFPr H8= X-Received: by 2002:a9d:65c9:0:b0:826:b77:adef with SMTP id 46e09a7af769-83095b27f85mr9727096a34.14.1791922554456; Tue, 13 Oct 2026 13:15:54 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:51 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 08/10] staging: rtl8723bs: use struct ieee80211_hdr for seq_ctrl and duration_id Date: Tue, 13 Oct 2026 15:15:36 -0500 Message-ID: <20261013201538.43156-9-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The driver reads and writes the Sequence Control and Duration/ID fields of IEEE 802.11 headers with the SetSeqNum(), GetSequence(), GetFragNum(), SetDuration() and GetAid() macros, which access the frame buffer at hardcoded byte offsets. struct ieee80211_hdr provides the seq_ctrl and duration_id members for these fields, and provides IEEE80211_SCTL_* masks and helpers to convert between sequence numbers and the Sequence Control field. Replace GetSequence() with ieee80211_get_sn(), GetFragNum() with a mask of seq_ctrl with IEEE80211_SCTL_FRAG, and SetDuration() and GetAid() with accesses to duration_id. SetSeqNum() updates the sequence number while preserving the fragment number. Where the header has just been cleared, replace it with an assignment of IEEE80211_SN_TO_SEQ() to seq_ctrl. The reserved page frames built in rtl8723b_cmd.c are written into a buffer that is not cleared between uses. Those callers set a sequence number of zero, so replace them with a mask that clears the sequence number and keeps the fragment number, as SetSeqNum() did. Remove these macros and the unused SetFragNum(). No functional change intended. Signed-off-by: Rishik Yechuri --- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 24 ++++++++--------- drivers/staging/rtl8723bs/core/rtw_recv.c | 6 ++--- drivers/staging/rtl8723bs/core/rtw_xmit.c | 3 ++- drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c | 10 +++---- drivers/staging/rtl8723bs/include/wifi.h | 26 ------------------- .../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 6 ++--- 6 files changed, 25 insertions(+), 50 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index 000c23983..ec0046d3a 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -2082,7 +2082,7 @@ void issue_beacon(struct adapter *padapter, int timeo= ut_ms) memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(cur_network), ETH_ALEN); =20 - SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/); + pwlanhdr->seq_ctrl =3D 0; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); @@ -2233,7 +2233,7 @@ void issue_probersp(struct adapter *padapter, unsigne= d char *da, u8 is_valid_p2p memcpy(pwlanhdr->addr2, mac, ETH_ALEN); memcpy(pwlanhdr->addr3, bssid, ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RESP= ); =20 @@ -2430,7 +2430,7 @@ static void issue_probereq(struct adapter *padapter, = struct ndis_802_11_ssid *ps =20 memcpy(pwlanhdr->addr2, mac, ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_REQ); =20 @@ -2497,7 +2497,7 @@ void issue_auth(struct adapter *padapter, struct sta_= info *psta, unsigned short fctrl =3D &(pwlanhdr->frame_control); *(fctrl) =3D 0; =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH); =20 @@ -2626,7 +2626,7 @@ void issue_asocrsp(struct adapter *padapter, unsigned= short status, struct sta_i memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; if (pkt_type =3D=3D IEEE80211_STYPE_ASSOC_RESP || pkt_type =3D=3D IEEE802= 11_STYPE_REASSOC_RESP) { *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | pkt_type); @@ -2753,7 +2753,7 @@ void issue_assocreq(struct adapter *padapter) memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ASSOC_REQ); =20 @@ -2936,7 +2936,7 @@ static int _issue_nulldata(struct adapter *padapter, = unsigned char *da, memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC); =20 @@ -3083,7 +3083,7 @@ static int _issue_qos_nulldata(struct adapter *padapt= er, unsigned char *da, memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLFU= NC); =20 @@ -3175,7 +3175,7 @@ static int _issue_deauth(struct adapter *padapter, un= signed char *da, memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_DEAUTH); =20 @@ -3269,7 +3269,7 @@ void issue_action_SA_Query(struct adapter *padapter, = unsigned char *raddr, unsig memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); =20 @@ -3342,7 +3342,7 @@ void issue_action_BA(struct adapter *padapter, unsign= ed char *raddr, unsigned ch memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); =20 @@ -3496,7 +3496,7 @@ static void issue_action_BSSCoexistPacket(struct adap= ter *padapter) memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); =20 - SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pwlanhdr->seq_ctrl =3D cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq= )); pmlmeext->mgnt_seq++; *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); =20 diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rt= l8723bs/core/rtw_recv.c index 75eef9662..b09ea6f76 100644 --- a/drivers/staging/rtl8723bs/core/rtw_recv.c +++ b/drivers/staging/rtl8723bs/core/rtw_recv.c @@ -935,7 +935,7 @@ static signed int validate_recv_ctrl_frame(struct adapt= er *padapter, union recv_ u16 aid; u8 wmmps_ac =3D 0; =20 - aid =3D GetAid(pframe); + aid =3D le16_to_cpu(hdr->duration_id) & 0x3fff; if (psta->aid !=3D aid) return _FAIL; =20 @@ -1448,8 +1448,8 @@ static signed int validate_recv_frame(struct adapter = *adapter, union recv_frame pattrib->to_fr_ds =3D (ieee80211_has_tods(hdr->frame_control) << 1) | ieee80211_has_fromds(hdr->frame_control); =20 - pattrib->frag_num =3D GetFragNum(ptr); - pattrib->seq_num =3D GetSequence(ptr); + pattrib->frag_num =3D le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG; + pattrib->seq_num =3D ieee80211_get_sn(hdr); =20 pattrib->pw_save =3D ieee80211_has_pm(hdr->frame_control); pattrib->mfrag =3D ieee80211_has_morefrags(hdr->frame_control); diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rt= l8723bs/core/rtw_xmit.c index 8855f80f7..1624bf6de 100644 --- a/drivers/staging/rtl8723bs/core/rtw_xmit.c +++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c @@ -987,7 +987,8 @@ int rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr,= struct pkt_attrib *pattr psta->sta_xmitpriv.txseq_tid[pattrib->priority] %=3D 4096u; pattrib->seqnum =3D psta->sta_xmitpriv.txseq_tid[pattrib->priority]; =20 - SetSeqNum(hdr, pattrib->seqnum); + pwlanhdr->seq_ctrl =3D + cpu_to_le16(IEEE80211_SN_TO_SEQ(pattrib->seqnum)); =20 /* check if enable ampdu */ if (pattrib->ht_en && psta->htpriv.ampdu_enable) diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c b/drivers/staging= /rtl8723bs/hal/rtl8723b_cmd.c index c5518eeea..756d6dc84 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c @@ -115,7 +115,7 @@ static void ConstructBeacon(struct adapter *padapter, u= 8 *pframe, u32 *pLength) ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); ether_addr_copy(pwlanhdr->addr3, get_my_bssid(cur_network)); =20 - SetSeqNum(pwlanhdr, 0); + pwlanhdr->seq_ctrl &=3D cpu_to_le16(IEEE80211_SCTL_FRAG); *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON); =20 pframe +=3D sizeof(struct ieee80211_hdr_3addr); @@ -196,7 +196,7 @@ static void ConstructPSPoll(struct adapter *padapter, u= 8 *pframe, u32 *pLength) *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_PSPOLL); =20 /* AID. */ - SetDuration(pframe, (pmlmeinfo->aid | 0xc000)); + pwlanhdr->duration_id =3D cpu_to_le16(pmlmeinfo->aid | 0xc000); =20 /* BSSID. */ ether_addr_copy(pwlanhdr->addr1, get_my_bssid(&pmlmeinfo->network)); @@ -252,7 +252,7 @@ static void ConstructNullFunctionData(struct adapter *p= adapter, break; } =20 - SetSeqNum(pwlanhdr, 0); + pwlanhdr->seq_ctrl &=3D cpu_to_le16(IEEE80211_SCTL_FRAG); =20 if (bQoS) { struct ieee80211_qos_hdr *pwlanqoshdr; @@ -739,8 +739,8 @@ static void ConstructBtNullFunctionData(struct adapter = *padapter, ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); ether_addr_copy(pwlanhdr->addr3, myid(&padapter->eeprompriv)); =20 - SetDuration(pwlanhdr, 0); - SetSeqNum(pwlanhdr, 0); + pwlanhdr->duration_id =3D 0; + pwlanhdr->seq_ctrl &=3D cpu_to_le16(IEEE80211_SCTL_FRAG); =20 if (bQoS) { struct ieee80211_qos_hdr *pwlanqoshdr; diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl= 8723bs/include/wifi.h index 9790bd850..85348979a 100644 --- a/drivers/staging/rtl8723bs/include/wifi.h +++ b/drivers/staging/rtl8723bs/include/wifi.h @@ -18,30 +18,6 @@ /* This test verifies the WLAN NIC can update the NAV through sending the= CTS with large duration. */ #define WiFiNavUpperUs 30000 /* 30 ms */ =20 -#define GetSequence(pbuf) \ - (le16_to_cpu(*(__le16 *)((size_t)(pbuf) + 22)) >> 4) - -#define GetFragNum(pbuf) \ - (le16_to_cpu(*(__le16 *)((size_t)(pbuf) + 22)) & 0x0f) - -#define SetFragNum(pbuf, num) \ - do { \ - *(unsigned short *)((size_t)(pbuf) + 22) =3D \ - ((*(unsigned short *)((size_t)(pbuf) + 22)) & \ - le16_to_cpu(~(0x000f))) | \ - cpu_to_le16(0x0f & (num)); \ - } while (0) - -#define SetSeqNum(pbuf, num) \ - do { \ - *(__le16 *)((size_t)(pbuf) + 22) =3D \ - ((*(__le16 *)((size_t)(pbuf) + 22)) & cpu_to_le16((unsigned short)0x000= f)) | \ - cpu_to_le16((unsigned short)(0xfff0 & (num << 4))); \ - } while (0) - -#define SetDuration(pbuf, dur) \ - (*(__le16 *)((size_t)(pbuf) + 2) =3D cpu_to_le16(0xffff & (dur))) - #define SetPriority(pbuf, tid) \ (*(__le16 *)(pbuf) |=3D cpu_to_le16(tid & 0xf)) =20 @@ -57,8 +33,6 @@ =20 #define GetAMsdu(pbuf) (((le16_to_cpu(*(__le16 *)pbuf)) >> 7) & 0x1) =20 -#define GetAid(pbuf) (le16_to_cpu(*(__le16 *)((size_t)(pbuf) + 2)) & 0x3ff= f) - static inline unsigned char *rtl8723bs_get_ra(unsigned char *pframe) { struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/st= aging/rtl8723bs/os_dep/ioctl_cfg80211.c index d52bcf1b1..fe59307bf 100644 --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c @@ -281,7 +281,7 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(struct ada= pter *padapter, struct wl fctrl =3D &pwlanhdr->frame_control; *(fctrl) =3D 0; =20 - SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/); + pwlanhdr->seq_ctrl =3D 0; =20 if (pnetwork->network.reserved[0] =3D=3D 1) { /* beacon */ eth_broadcast_addr(pwlanhdr->addr1); @@ -2074,7 +2074,7 @@ static netdev_tx_t rtw_cfg80211_monitor_if_xmit_entry= (struct sk_buff *skb, struc =20 pwlanhdr =3D (struct ieee80211_hdr *)pframe; /* update seq number */ - pmlmeext->mgnt_seq =3D GetSequence(pwlanhdr); + pmlmeext->mgnt_seq =3D ieee80211_get_sn(pwlanhdr); pattrib->seqnum =3D pmlmeext->mgnt_seq; pmlmeext->mgnt_seq++; =20 @@ -2480,7 +2480,7 @@ static int _cfg80211_rtw_mgmt_tx(struct adapter *pada= pter, u8 tx_ch, const u8 *b =20 pwlanhdr =3D (struct ieee80211_hdr *)pframe; /* update seq number */ - pmlmeext->mgnt_seq =3D GetSequence(pwlanhdr); + pmlmeext->mgnt_seq =3D ieee80211_get_sn(pwlanhdr); pattrib->seqnum =3D pmlmeext->mgnt_seq; pmlmeext->mgnt_seq++; =20 --=20 2.43.0 From nobody Sat Oct 24 13:19:48 2026 Received: from mail-ot1-f52.google.com (mail-ot1-f52.google.com [209.85.210.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E3A05581E4 for ; Tue, 13 Oct 2026 20:15:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922559; cv=none; b=iG8LjoSVnhltP0NjINT3KR/GYlvIEYgD3N2pwQnZD6GY6+CzvXKbjfWbHBGAgEbvlvBLGSDunnHaF6OEY0ALajiPxbVfnMyuVXVWpEROUifaBL+94H15tVAliSNIbutMzOziRNZN5rizzk2Be4zmk20ahXA/wSyjzM9Lyn90leE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922559; c=relaxed/simple; bh=XrOKi5+LPvGwFwVerfisjs3shnJ7pN8myymdFyxc1Ec=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oQt1Cp/+RLz1XpfPeMFYFoTb8OLVlVHOxnTRu9F6g1V7y9zPSx/iIizzIOwkwMULVTZWiaReSMbRo8KyXTQwWw6BY7ZElNGvzHr5wHzVF5Kk2t4vnpC/I7meD/ehJ0v91jjy/WKVMtvu6S9TesA/H4IIQgTjbzg5ehVCZ7lAC/0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=I4mjsctT; arc=none smtp.client-ip=209.85.210.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="I4mjsctT" Received: by mail-ot1-f52.google.com with SMTP id 46e09a7af769-81ba09a5d23so197405a34.3 for ; Tue, 13 Oct 2026 13:15:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922556; x=1792527356; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=jcBlwSovPnfSTK4K/hUxzccfjyfeJvmVDVyKW4TD8gg=; b=I4mjsctTKb7oRBP3zs0EneI4caacajmVHeXHIs6KvyRYozxoDbERtI1z+qJsGBE3A8 3Ps2dGoAS/PgqLnWwYMlNk6o5PUnT4G1kSSg5B37GkZ+DrAT9YIhf9BdDYVBjvyn/qBI orVZJ0hfcBe0DpKibUdjmvrHriBNz34NRusK0/xHWiPztDVdzJ8OgDqW5AOKZt/OhxjV ZUpEztw8f7EfBLkPVJI7iwAly6KNI0gYyKnXOuSbZ1YvSB7euIKSKjfjb5IqLg/bvNvR cV5ozgXVyZtl8TKPj1Q/lWqFKZZnWAOb1DmYcCuuzAKco8+rVDgpkfcP+I/N1Sv1TWV3 yH3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922556; x=1792527356; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=jcBlwSovPnfSTK4K/hUxzccfjyfeJvmVDVyKW4TD8gg=; b=ALjU7SiMoErM62XmbaaeKjPcVEMexROUUyonf1VnVmRpcxRuSNB+6SZ0Sax1gFEPNx QYWJidhgxCdmShwYUMmHkmztOJ6p8zjLXDJqeMOQQp67hHKaz9LcYrtLqn7RQf+UHPMD hH4UJsj6ec3G6yM+nm2/PXFALS1DVjw6Hx7ldVIkcZEK7mny9mfUCpHZRikNCfh6LdgT 8OWkU0Z11HcCIgon7RN0TdRt2gDrCOBhi1XD6I7zj7QdiDJisHjQ8lsLyNmvyFMh7NqD op0nD3h54zrIPID8jS8myitNWkO0RhOVg72VvodglLnBRPfWhU+Vjf16fupxORE+LJ4h iXIw== X-Forwarded-Encrypted: i=1; AKwUvByOgIIags2WtxOJObGibjzA5oSyDi7en0jOwyFIpsLZ5yQCjss3WJGFEiCVRAi2Rf7ArZXH5AsJe2YwBhg=@vger.kernel.org X-Gm-Message-State: AFq9FYLkgQsIqPQMtNi11jkP+RRQaIimsbpK+iezcel3rZ6Vyhn0hsPZ EWgrl53BSzGlP8kT1FNJvYQNDFoPRrDRuBvKYWVIW2uqfc/P2bzyFZ42 X-Gm-Gg: AYBFou3Hty5hozelfIfkHkZ/N87TAkYY9U1EjguMklr85h3bCr/TMURm+zMfN9MP8/M 0/PUq0ZfTD2BTToqqIdsJ2Rbl9++qOs1RtvT8BCG/KsVSz+eN/1ZlFUeWtGZG7SNsjygvNnmvFO zp+2EILKmZU3/kO0IuFDE6MDccRjyT3726K+7h4sBO4jGEO5DWvMjT8gwxAGQZjQ77WNdO3AyWH DdiY/h5Ee/mDoGiTqKqPw4y7itGraCcBluF6zM8I/CRX5dKgddSoF5vMN/q4ftSbUWBrAcn2vcX V1LEyOy12r9/cBUUfFxg/8TSplrJlCGx5jSggNZk8CXv9c0e9DZiCxbVEgl4CmWCsnMtYT/xkRr O0NvXej0VUnZgNSV7kOBRnIsJiaHw3puZe+x++CXXKqsraKFS03+UL7MEW+fJt7615IWgln8k7p iAFaZ/EoMwGyjLdG6rgFJkQShEssFXrESwqqbsl+1M//V3JQGQwT7uTolZamZfCZ8aQRtrdVpaM /s= X-Received: by 2002:a05:6830:6f8d:b0:824:e29:e00e with SMTP id 46e09a7af769-830971a491fmr11696739a34.20.1791922556403; Tue, 13 Oct 2026 13:15:56 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:55 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 09/10] staging: rtl8723bs: use IEEE80211_QOS_CTL_* masks for QoS control Date: Tue, 13 Oct 2026 15:15:37 -0500 Message-ID: <20261013201538.43156-10-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The driver reads and writes the QoS Control field with the SetPriority(), GetPriority(), SetEOSP(), SetAckpolicy(), GetAckpolicy() and GetAMsdu() macros, which shift and mask the field by hand. defines IEEE80211_QOS_CTL_* masks for the TID, EOSP, Ack Policy and A-MSDU Present subfields. On transmit, set the subfields with le16_encode_bits() and the corresponding masks, and declare the QoS Control pointers as __le16 to match the byte order of the field. le16_encode_bits() masks the value to the width of the subfield, as the macros did. On receive, locate the field with ieee80211_get_qos_ctl() instead of a fixed offset of 24 bytes, and extract the subfields with u8_get_bits(). Frames with four addresses are rejected by validate_recv_data_frame() before the QoS Control field is parsed, so the helper always returns the same offset as before. Remove the macro definitions, which no longer have any users. No functional change intended. Signed-off-by: Rishik Yechuri --- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 10 +++++----- drivers/staging/rtl8723bs/core/rtw_recv.c | 8 +++++--- drivers/staging/rtl8723bs/core/rtw_xmit.c | 12 +++++++----- drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c | 8 ++++---- drivers/staging/rtl8723bs/include/wifi.h | 15 --------------- 5 files changed, 21 insertions(+), 32 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index ec0046d3a..4d8073d48 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -3039,7 +3039,7 @@ static int _issue_qos_nulldata(struct adapter *padapt= er, unsigned char *da, unsigned char *pframe; struct ieee80211_hdr *pwlanhdr; __le16 *fctrl; - u16 *qc; + __le16 *qc; struct xmit_priv *pxmitpriv =3D &(padapter->xmitpriv); struct mlme_ext_priv *pmlmeext =3D &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo =3D &pmlmeext->mlmext_info; @@ -3071,13 +3071,13 @@ static int _issue_qos_nulldata(struct adapter *pada= pter, unsigned char *da, else if ((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_STATION_STATE) *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_TODS); =20 - qc =3D (unsigned short *)(pframe + pattrib->hdrlen - 2); + qc =3D (__le16 *)(pframe + pattrib->hdrlen - 2); =20 - SetPriority(qc, tid); + *qc |=3D le16_encode_bits(tid, IEEE80211_QOS_CTL_TID_MASK); =20 - SetEOSP(qc, pattrib->eosp); + *qc |=3D le16_encode_bits(pattrib->eosp, IEEE80211_QOS_CTL_EOSP); =20 - SetAckpolicy(qc, pattrib->ack_policy); + *qc |=3D le16_encode_bits(pattrib->ack_policy, IEEE80211_QOS_CTL_ACK_POLI= CY_MASK); =20 memcpy(pwlanhdr->addr1, da, ETH_ALEN); memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rt= l8723bs/core/rtw_recv.c index b09ea6f76..a7462444e 100644 --- a/drivers/staging/rtl8723bs/core/rtw_recv.c +++ b/drivers/staging/rtl8723bs/core/rtw_recv.c @@ -1309,9 +1309,11 @@ static signed int validate_recv_data_frame(struct ad= apter *adapter, union recv_f pattrib->ack_policy =3D 0; /* parsing QC field */ if (pattrib->qos =3D=3D 1) { - pattrib->priority =3D GetPriority((ptr + 24)); - pattrib->ack_policy =3D GetAckpolicy((ptr + 24)); - pattrib->amsdu =3D GetAMsdu((ptr + 24)); + u8 *qc =3D ieee80211_get_qos_ctl(hdr); + + pattrib->priority =3D u8_get_bits(*qc, IEEE80211_QOS_CTL_TID_MASK); + pattrib->ack_policy =3D u8_get_bits(*qc, IEEE80211_QOS_CTL_ACK_POLICY_MA= SK); + pattrib->amsdu =3D u8_get_bits(*qc, IEEE80211_QOS_CTL_A_MSDU_PRESENT); pattrib->hdrlen =3D pattrib->to_fr_ds =3D=3D 3 ? 32 : 26; =20 if (pattrib->priority !=3D 0 && pattrib->priority !=3D 3) diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rt= l8723bs/core/rtw_xmit.c index 1624bf6de..290e7e589 100644 --- a/drivers/staging/rtl8723bs/core/rtw_xmit.c +++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c @@ -904,7 +904,7 @@ static void xmitframe_swencrypt(struct adapter *padapte= r, struct xmit_frame *pxm =20 int rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib = *pattrib) { - u16 *qc; + __le16 *qc; =20 struct ieee80211_hdr *pwlanhdr =3D (struct ieee80211_hdr *)hdr; struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; @@ -956,14 +956,16 @@ int rtw_make_wlanhdr(struct adapter *padapter, u8 *hd= r, struct pkt_attrib *pattr *fctrl |=3D cpu_to_le16(IEEE80211_FCTL_PROTECTED); =20 if (qos_option) { - qc =3D (unsigned short *)(hdr + pattrib->hdrlen - 2); + qc =3D (__le16 *)(hdr + pattrib->hdrlen - 2); =20 if (pattrib->priority) - SetPriority(qc, pattrib->priority); + *qc |=3D le16_encode_bits(pattrib->priority, + IEEE80211_QOS_CTL_TID_MASK); =20 - SetEOSP(qc, pattrib->eosp); + *qc |=3D le16_encode_bits(pattrib->eosp, IEEE80211_QOS_CTL_EOSP); =20 - SetAckpolicy(qc, pattrib->ack_policy); + *qc |=3D le16_encode_bits(pattrib->ack_policy, + IEEE80211_QOS_CTL_ACK_POLICY_MASK); } =20 /* TODO: fill HT Control Field */ diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c b/drivers/staging= /rtl8723bs/hal/rtl8723b_cmd.c index 756d6dc84..24cf2b6eb 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c @@ -260,8 +260,8 @@ static void ConstructNullFunctionData(struct adapter *p= adapter, *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLF= UNC); =20 pwlanqoshdr =3D (struct ieee80211_qos_hdr *)pframe; - SetPriority(&pwlanqoshdr->qos_ctrl, AC); - SetEOSP(&pwlanqoshdr->qos_ctrl, bEosp); + pwlanqoshdr->qos_ctrl |=3D le16_encode_bits(AC, IEEE80211_QOS_CTL_TID_MA= SK); + pwlanqoshdr->qos_ctrl |=3D le16_encode_bits(bEosp, IEEE80211_QOS_CTL_EOS= P); =20 pktlen =3D sizeof(struct ieee80211_qos_hdr); } else { @@ -748,8 +748,8 @@ static void ConstructBtNullFunctionData(struct adapter = *padapter, *fctrl |=3D cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLF= UNC); =20 pwlanqoshdr =3D (struct ieee80211_qos_hdr *)pframe; - SetPriority(&pwlanqoshdr->qos_ctrl, AC); - SetEOSP(&pwlanqoshdr->qos_ctrl, bEosp); + pwlanqoshdr->qos_ctrl |=3D le16_encode_bits(AC, IEEE80211_QOS_CTL_TID_MA= SK); + pwlanqoshdr->qos_ctrl |=3D le16_encode_bits(bEosp, IEEE80211_QOS_CTL_EOS= P); =20 pktlen =3D sizeof(struct ieee80211_qos_hdr); } else { diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl= 8723bs/include/wifi.h index 85348979a..d1bb9076d 100644 --- a/drivers/staging/rtl8723bs/include/wifi.h +++ b/drivers/staging/rtl8723bs/include/wifi.h @@ -18,21 +18,6 @@ /* This test verifies the WLAN NIC can update the NAV through sending the= CTS with large duration. */ #define WiFiNavUpperUs 30000 /* 30 ms */ =20 -#define SetPriority(pbuf, tid) \ - (*(__le16 *)(pbuf) |=3D cpu_to_le16(tid & 0xf)) - -#define GetPriority(pbuf) ((le16_to_cpu(*(__le16 *)(pbuf))) & 0xf) - -#define SetEOSP(pbuf, eosp) \ - (*(__le16 *)(pbuf) |=3D cpu_to_le16((eosp & 1) << 4)) - -#define SetAckpolicy(pbuf, ack) \ - (*(__le16 *)(pbuf) |=3D cpu_to_le16((ack & 3) << 5)) - -#define GetAckpolicy(pbuf) (((le16_to_cpu(*(__le16 *)pbuf)) >> 5) & 0x3) - -#define GetAMsdu(pbuf) (((le16_to_cpu(*(__le16 *)pbuf)) >> 7) & 0x1) - static inline unsigned char *rtl8723bs_get_ra(unsigned char *pframe) { struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; --=20 2.43.0 From nobody Sat Oct 24 13:19:48 2026 Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B3DB0558202 for ; Tue, 13 Oct 2026 20:16:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922562; cv=none; b=oXsBNJqqymw2lA/w2IB5A7MXxTAfMg8vGy2Nel9syhwAbUqug6ARz4QT+ucVIUrBSCpYqjOv+wProO/Zj97sQ3xgIDfnT1VccE9XX3UfBsKv/1/g3VgU+j2XllMentmiTMmmTZ0Sajv7aqxBHER5THaQ7y+lasuFmyW3fCJ+ivU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791922562; c=relaxed/simple; bh=kM8gNkcHALJ1XoQI31RCNqvCKt4vwFdZxV/0arrWzkA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mQMRLe8HWeAig/iP7bgdw02Y+IQRTtH6orqTvH0T02repIEBxADS1OMfJC3nGo2OMZR8LkeBLvSmFTQVzZOL85T5Y9L7FUIRA6UV2hpPUwIAFkp4FKIafquQ8pL2NTone+ztwW92bkS1faqU12U2jrpWsofPN8v5I1osTyMC64A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=keHxGaOy; arc=none smtp.client-ip=209.85.210.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="keHxGaOy" Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-81b54d0cb17so2650341a34.1 for ; Tue, 13 Oct 2026 13:16:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791922559; x=1792527359; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=E/4b+TJz9S7CmbJRM4Put6V6x6XUmOynyHpylpy+Fww=; b=keHxGaOypO9Ju3WzbfLV4su4u16Do6cV+907S3X4YfuNkOso1ehLREsgnHVVioLIzp BNZX6WeEA4QlnxBmSkbgJhGiwIxEhFlED/0HGNNOrCEMT0WU87zRfaaj2Q69AcHUfc5S YsrHB743hOGWXf4mSQRVCnzRtDQUaNAo9Guio5XF/MQqvoN1+GMOXodlDF+5EjCJHzOl mEgCJ/iEeT7J8wfaBFZeWS4m4Bd+syOfoQLaStzgF9KQmQRFwEie0AnhN29de504YSby loCzKVzEYyPRM+NZGfG6jQJbP/ylD201NnfRdQKxXIh4zXuyOPl0FoUQAbKyeulFdAKm J38w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791922559; x=1792527359; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=E/4b+TJz9S7CmbJRM4Put6V6x6XUmOynyHpylpy+Fww=; b=KB43GqX8OQa1OLf0h+IsI7GcfK6NG75bC7QAUVHzuQ6h1drSfKBjECBTEoRNJqdoqt i+16tn1I04tmv86r/7/kEjKVdLIlrzBe001sW34Rhu4gc/vKSf2AzGer86d/7qwnSro3 rF3MWmFWf2NSKXxbWNRSH7JNg5jSq7xFusuJv25J7mCaY1gv+33UE+1UC7rT/9gO6PA2 uBjhsvxnj6w0h9UvBq3ZT4jrvsrLqOfYwoCjDc4g8WU6oq2QWTpO4H9xYa9K8pvHGnYr QENo0dx4ULSrhRTX8+xeyZV0gPZcI9BsfsmHIxBZMakRWJ9KATOR6efX2rqqUiuu/JhO WfsA== X-Forwarded-Encrypted: i=1; AKwUvBxuBnkXy+f3bzA4gUUznYcT8JoEaPWlxAS8ratAvAL6nauR5hFNu2pdsCnjFqb/Mudon9OMsUEq2WyovFU=@vger.kernel.org X-Gm-Message-State: AFq9FYILRHPWeJEi84fbWFce2mZy+1LOR6mSIto3lrxSBeYakZ4XSrCj 9eQrzLtylxjDVwwNy1ENV7bAZMwOcXZ+gyO3Kr10TcqksRh5cWkhE++jSHmRzeyd1kU= X-Gm-Gg: AYBFou38gTOHMNU0/o4jLHxT1ouFGJcfwBnW9mRS3mKA1qZoD7Vm+gzMKhWJBwS2JY1 eY3pbdQMiepJBrIVqOzwm+rLa0nonWOTuJ1oMlUT5xujORB10beXWjii6KGW+kXBgvEH4Mb2qcj uyZIirqrdRbbk7k/gE2gndI3IlVY5JdRCvnXYtwRNVj4jDd1Gct4l6mKVuct7xyVNiqzlHnNU26 rWD0qhNEZA8T3SE8o+/X1qbtIs4pnpqq6lIzJzrAhYj9rTJkbAe8LOLAmVeQc4A2rLXFMq89DjM GTQepNeZ/95keWK9KhLjheVDYCK6huldG6APmoq61CNGB+r5BV9wzfXMaJ8fBFRg0fIOBFJabzC wI27Hx3W6UBpboARevnXzTSX4HkvQOAvXbX3m055kluqkmLxUI7ClFGtMC/4gUumb4F6e59CaGY hDtOr6yvSdaJXy0CFxhViEOVoVVTautbbvpykVgEh2E+vW9XDzOHn81pQFQIa8ppSpksfXZO7Xa ec= X-Received: by 2002:a05:6830:a8f:b0:824:df9:975 with SMTP id 46e09a7af769-83098155f01mr14651914a34.29.1791922559445; Tue, 13 Oct 2026 13:15:59 -0700 (PDT) Received: from pop-os.. ([24.32.17.59]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-83038f82468sm13557570a34.11.2026.10.13.13.15.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 13:15:58 -0700 (PDT) From: Rishik Yechuri X-Google-Original-From: Rishik Yechuri To: Greg Kroah-Hartman Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Rishik Yechuri Subject: [PATCH 10/10] staging: rtl8723bs: use ieee80211_get_DA() and ieee80211_get_SA() Date: Tue, 13 Oct 2026 15:15:38 -0500 Message-ID: <20261013201538.43156-11-rishik.yechuri.code@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> References: <20261013201538.43156-1-rishik.yechuri.code@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" get_da() and get_sa() in wifi.h select the destination and source address of a frame according to the To DS and From DS bits. They duplicate ieee80211_get_DA() and ieee80211_get_SA() from , which return the same address for every combination of these bits. rtl8723bs_get_ra() and get_ta() only return the addr1 and addr2 members of the header. Replace get_da() and get_sa() with the generic helpers, replace rtl8723bs_get_ra() and get_ta() with direct accesses to addr1 and addr2, and remove the four functions. No functional change intended. Signed-off-by: Rishik Yechuri --- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 8 ++- drivers/staging/rtl8723bs/core/rtw_recv.c | 4 +- .../staging/rtl8723bs/hal/rtl8723bs_recv.c | 4 +- drivers/staging/rtl8723bs/include/wifi.h | 68 ------------------- 4 files changed, 9 insertions(+), 75 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index 4d8073d48..dde78ecb7 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -501,6 +501,7 @@ unsigned int OnProbeReq(struct adapter *padapter, union= recv_frame *precv_frame) struct mlme_ext_info *pmlmeinfo =3D &pmlmeext->mlmext_info; struct wlan_bssid_ex *cur =3D &pmlmeinfo->network; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; uint len =3D precv_frame->u.hdr.len; u8 is_valid_p2p_probereq =3D false; =20 @@ -529,7 +530,7 @@ unsigned int OnProbeReq(struct adapter *padapter, union= recv_frame *precv_frame) if ((check_fwstate(pmlmepriv, _FW_LINKED) && pmlmepriv->cur_network.join_res) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) - issue_probersp(padapter, get_sa(pframe), is_valid_p2p_probereq); + issue_probersp(padapter, ieee80211_get_SA(hdr), is_valid_p2p_probereq); } =20 return _SUCCESS; @@ -853,7 +854,7 @@ unsigned int OnAuthClient(struct adapter *padapter, uni= on recv_frame *precv_fram uint pkt_len =3D precv_frame->u.hdr.len; =20 /* check A1 matches or not */ - if (memcmp(myid(&(padapter->eeprompriv)), get_da(pframe), ETH_ALEN)) + if (memcmp(myid(&(padapter->eeprompriv)), ieee80211_get_DA(hdr), ETH_ALEN= )) return _SUCCESS; =20 if (!(pmlmeinfo->state & WIFI_FW_AUTH_STATE)) @@ -1332,10 +1333,11 @@ unsigned int OnAssocRsp(struct adapter *padapter, u= nion recv_frame *precv_frame) struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo =3D &pmlmeext->mlmext_info; u8 *pframe =3D precv_frame->u.hdr.rx_data; + struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; uint pkt_len =3D precv_frame->u.hdr.len; =20 /* check A1 matches or not */ - if (memcmp(myid(&(padapter->eeprompriv)), get_da(pframe), ETH_ALEN)) + if (memcmp(myid(&(padapter->eeprompriv)), ieee80211_get_DA(hdr), ETH_ALEN= )) return _SUCCESS; =20 if (!(pmlmeinfo->state & (WIFI_FW_AUTH_SUCCESS | WIFI_FW_ASSOC_STATE))) diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rt= l8723bs/core/rtw_recv.c index a7462444e..eec1b400d 100644 --- a/drivers/staging/rtl8723bs/core/rtw_recv.c +++ b/drivers/staging/rtl8723bs/core/rtw_recv.c @@ -1251,8 +1251,8 @@ static signed int validate_recv_data_frame(struct ada= pter *adapter, union recv_f signed int ret =3D _SUCCESS; =20 bretry =3D ieee80211_has_retry(hdr->frame_control); - pda =3D get_da(ptr); - psa =3D get_sa(ptr); + pda =3D ieee80211_get_DA(hdr); + psa =3D ieee80211_get_SA(hdr); pbssid =3D get_hdr_bssid(ptr); =20 if (!pbssid) { diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/stagi= ng/rtl8723bs/hal/rtl8723bs_recv.c index 79d6d7431..14686f5eb 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c @@ -106,7 +106,7 @@ static void update_recvframe_phyinfo(union recv_frame *= precvframe, !pattrib->icv_err && !pattrib->crc_err && ether_addr_equal(rx_bssid, my_bssid)); =20 - rx_ra =3D rtl8723bs_get_ra(wlanhdr); + rx_ra =3D hdr->addr1; my_hwaddr =3D myid(&padapter->eeprompriv); pkt_info.to_self =3D pkt_info.bssid_match && ether_addr_equal(rx_ra, my_hwaddr); @@ -114,7 +114,7 @@ static void update_recvframe_phyinfo(union recv_frame *= precvframe, pkt_info.is_beacon =3D pkt_info.bssid_match && ieee80211_is_beacon(hdr->frame_control); =20 - sa =3D get_ta(wlanhdr); + sa =3D hdr->addr2; =20 pkt_info.station_id =3D 0xFF; =20 diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl= 8723bs/include/wifi.h index d1bb9076d..4619cb672 100644 --- a/drivers/staging/rtl8723bs/include/wifi.h +++ b/drivers/staging/rtl8723bs/include/wifi.h @@ -18,74 +18,6 @@ /* This test verifies the WLAN NIC can update the NAV through sending the= CTS with large duration. */ #define WiFiNavUpperUs 30000 /* 30 ms */ =20 -static inline unsigned char *rtl8723bs_get_ra(unsigned char *pframe) -{ - struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; - unsigned char *ra; - - ra =3D hdr->addr1; - return ra; -} - -static inline unsigned char *get_ta(unsigned char *pframe) -{ - struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; - unsigned char *ta; - - ta =3D hdr->addr2; - return ta; -} - -static inline unsigned char *get_da(unsigned char *pframe) -{ - struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; - unsigned char *da; - unsigned int to_fr_ds =3D (ieee80211_has_tods(hdr->frame_control) << 1) | - ieee80211_has_fromds(hdr->frame_control); - - switch (to_fr_ds) { - case 0x00: /* ToDs =3D 0, FromDs =3D 0 */ - da =3D hdr->addr1; - break; - case 0x01: /* ToDs =3D 0, FromDs =3D 1 */ - da =3D hdr->addr1; - break; - case 0x02: /* ToDs =3D 1, FromDs =3D 0 */ - da =3D hdr->addr3; - break; - default: /* ToDs =3D 1, FromDs =3D 1 */ - da =3D hdr->addr3; - break; - } - - return da; -} - -static inline unsigned char *get_sa(unsigned char *pframe) -{ - struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; - unsigned char *sa; - unsigned int to_fr_ds =3D (ieee80211_has_tods(hdr->frame_control) << 1) | - ieee80211_has_fromds(hdr->frame_control); - - switch (to_fr_ds) { - case 0x00: /* ToDs =3D 0, FromDs =3D 0 */ - sa =3D hdr->addr2; - break; - case 0x01: /* ToDs =3D 0, FromDs =3D 1 */ - sa =3D hdr->addr3; - break; - case 0x02: /* ToDs =3D 1, FromDs =3D 0 */ - sa =3D hdr->addr2; - break; - default: /* ToDs =3D 1, FromDs =3D 1 */ - sa =3D hdr->addr4; - break; - } - - return sa; -} - static inline unsigned char *get_hdr_bssid(unsigned char *pframe) { struct ieee80211_hdr *hdr =3D (struct ieee80211_hdr *)pframe; --=20 2.43.0