From: Martin Kaiser <martin@kaiser.cx>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Larry Finger <Larry.Finger@lwfinger.net>,
Phillip Potter <phil@philpotter.co.uk>,
Michael Straube <straube.linux@gmail.com>,
Pavel Skripkin <paskripkin@gmail.com>,
linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org,
Martin Kaiser <martin@kaiser.cx>
Subject: [PATCH 09/20] staging: r8188eu: simplify frame type check
Date: Fri, 30 Dec 2022 19:06:35 +0100 [thread overview]
Message-ID: <20221230180646.91008-10-martin@kaiser.cx> (raw)
In-Reply-To: <20221230180646.91008-1-martin@kaiser.cx>
Reorder the code in rtw_make_wlanhdr to make the function simpler.
There's a large if statement to check that we process only data frames.
Revert the condition and exit for non-data frames.
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
---
drivers/staging/r8188eu/core/rtw_xmit.c | 139 ++++++++++++------------
1 file changed, 70 insertions(+), 69 deletions(-)
diff --git a/drivers/staging/r8188eu/core/rtw_xmit.c b/drivers/staging/r8188eu/core/rtw_xmit.c
index 2bccb9ca42e9..502f9a6f4250 100644
--- a/drivers/staging/r8188eu/core/rtw_xmit.c
+++ b/drivers/staging/r8188eu/core/rtw_xmit.c
@@ -809,90 +809,91 @@ s32 rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattr
SetFrameSubType(fctrl, pattrib->subtype);
- if (pattrib->subtype & IEEE80211_FTYPE_DATA) {
- if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
- /* to_ds = 1, fr_ds = 0; */
- /* Data transfer to AP */
- SetToDs(fctrl);
- memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN);
- memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
- memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN);
-
- if (pqospriv->qos_option)
- qos_option = true;
- } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
- /* to_ds = 0, fr_ds = 1; */
- SetFrDs(fctrl);
- memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
- memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv), ETH_ALEN);
- memcpy(pwlanhdr->addr3, pattrib->src, ETH_ALEN);
-
- if (psta->qos_option)
- qos_option = true;
- } else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
- check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
- memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
- memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
- memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv), ETH_ALEN);
-
- if (psta->qos_option)
- qos_option = true;
- } else {
- res = _FAIL;
- goto exit;
- }
+ if (!(pattrib->subtype & IEEE80211_FTYPE_DATA))
+ return _SUCCESS;
+
+ if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+ /* to_ds = 1, fr_ds = 0; */
+ /* Data transfer to AP */
+ SetToDs(fctrl);
+ memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN);
+ memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
+ memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN);
+
+ if (pqospriv->qos_option)
+ qos_option = true;
+ } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
+ /* to_ds = 0, fr_ds = 1; */
+ SetFrDs(fctrl);
+ memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
+ memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv), ETH_ALEN);
+ memcpy(pwlanhdr->addr3, pattrib->src, ETH_ALEN);
- if (pattrib->mdata)
- SetMData(fctrl);
+ if (psta->qos_option)
+ qos_option = true;
+ } else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
+ check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
+ memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
+ memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
+ memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv), ETH_ALEN);
- if (pattrib->encrypt)
- SetPrivacy(fctrl);
+ if (psta->qos_option)
+ qos_option = true;
+ } else {
+ res = _FAIL;
+ goto exit;
+ }
- if (qos_option) {
- qc = (unsigned short *)(hdr + pattrib->hdrlen - 2);
+ if (pattrib->mdata)
+ SetMData(fctrl);
- if (pattrib->priority)
- SetPriority(qc, pattrib->priority);
+ if (pattrib->encrypt)
+ SetPrivacy(fctrl);
- SetEOSP(qc, pattrib->eosp);
+ if (qos_option) {
+ qc = (unsigned short *)(hdr + pattrib->hdrlen - 2);
- SetAckpolicy(qc, pattrib->ack_policy);
- }
+ if (pattrib->priority)
+ SetPriority(qc, pattrib->priority);
- /* TODO: fill HT Control Field */
+ SetEOSP(qc, pattrib->eosp);
- /* Update Seq Num will be handled by f/w */
- if (psta) {
- psta->sta_xmitpriv.txseq_tid[pattrib->priority]++;
- psta->sta_xmitpriv.txseq_tid[pattrib->priority] &= 0xFFF;
+ SetAckpolicy(qc, pattrib->ack_policy);
+ }
- pattrib->seqnum = psta->sta_xmitpriv.txseq_tid[pattrib->priority];
+ /* TODO: fill HT Control Field */
- SetSeqNum(hdr, pattrib->seqnum);
+ /* Update Seq Num will be handled by f/w */
+ if (psta) {
+ psta->sta_xmitpriv.txseq_tid[pattrib->priority]++;
+ psta->sta_xmitpriv.txseq_tid[pattrib->priority] &= 0xFFF;
- /* check if enable ampdu */
- if (pattrib->ht_en && psta->htpriv.ampdu_enable) {
- if (psta->htpriv.agg_enable_bitmap & BIT(pattrib->priority))
- pattrib->ampdu_en = true;
- }
+ pattrib->seqnum = psta->sta_xmitpriv.txseq_tid[pattrib->priority];
- /* re-check if enable ampdu by BA_starting_seqctrl */
- if (pattrib->ampdu_en) {
- u16 tx_seq;
+ SetSeqNum(hdr, pattrib->seqnum);
- tx_seq = psta->BA_starting_seqctrl[pattrib->priority & 0x0f];
+ /* check if enable ampdu */
+ if (pattrib->ht_en && psta->htpriv.ampdu_enable) {
+ if (psta->htpriv.agg_enable_bitmap & BIT(pattrib->priority))
+ pattrib->ampdu_en = true;
+ }
- /* check BA_starting_seqctrl */
- if (SN_LESS(pattrib->seqnum, tx_seq)) {
- pattrib->ampdu_en = false;/* AGG BK */
- } else if (SN_EQUAL(pattrib->seqnum, tx_seq)) {
- psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (tx_seq + 1) & 0xfff;
+ /* re-check if enable ampdu by BA_starting_seqctrl */
+ if (pattrib->ampdu_en) {
+ u16 tx_seq;
- pattrib->ampdu_en = true;/* AGG EN */
- } else {
- psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (pattrib->seqnum + 1) & 0xfff;
- pattrib->ampdu_en = true;/* AGG EN */
- }
+ tx_seq = psta->BA_starting_seqctrl[pattrib->priority & 0x0f];
+
+ /* check BA_starting_seqctrl */
+ if (SN_LESS(pattrib->seqnum, tx_seq)) {
+ pattrib->ampdu_en = false;/* AGG BK */
+ } else if (SN_EQUAL(pattrib->seqnum, tx_seq)) {
+ psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (tx_seq + 1) & 0xfff;
+
+ pattrib->ampdu_en = true;/* AGG EN */
+ } else {
+ psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (pattrib->seqnum + 1) & 0xfff;
+ pattrib->ampdu_en = true;/* AGG EN */
}
}
}
--
2.30.2
next prev parent reply other threads:[~2022-12-30 18:07 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-30 18:06 [PATCH 00/20] staging: r8188eu: some xmit cleanups Martin Kaiser
2022-12-30 18:06 ` [PATCH 01/20] staging: r8188eu: make xmitframe_swencrypt a void function Martin Kaiser
2022-12-30 18:06 ` [PATCH 02/20] staging: r8188eu: remove some unused CAM defines Martin Kaiser
2022-12-30 18:06 ` [PATCH 03/20] staging: r8188eu: cmd_seq is write-only Martin Kaiser
2022-12-30 18:06 ` [PATCH 04/20] staging: r8188eu: return immediately if we're not meant to encrypt Martin Kaiser
2022-12-30 18:06 ` [PATCH 05/20] staging: r8188eu: remove unused parameter Martin Kaiser
2022-12-30 18:06 ` [PATCH 06/20] staging: r8188eu: simplify rtl8188eu_xmit_tasklet Martin Kaiser
2022-12-30 18:06 ` [PATCH 07/20] staging: r8188eu: remove rtl8188eu_init_xmit_priv Martin Kaiser
2022-12-30 18:06 ` [PATCH 08/20] staging: r8188eu: remove duplicate psta check Martin Kaiser
2022-12-30 18:06 ` Martin Kaiser [this message]
2022-12-30 18:06 ` [PATCH 10/20] staging: r8188eu: simplify rtw_make_wlanhdr's error handling Martin Kaiser
2022-12-30 18:06 ` [PATCH 11/20] staging: r8188eu: clean up qos_option setting Martin Kaiser
2022-12-30 18:06 ` [PATCH 12/20] staging: r8188eu: remove unused bpending array Martin Kaiser
2022-12-30 18:06 ` [PATCH 13/20] staging: r8188eu: remove unused dma_transfer_addr Martin Kaiser
2022-12-30 18:06 ` [PATCH 14/20] staging: r8188eu: bm_pending is not used Martin Kaiser
2022-12-30 18:06 ` [PATCH 15/20] staging: r8188eu: terminate_xmitthread_sema " Martin Kaiser
2022-12-30 18:06 ` [PATCH 16/20] staging: r8188eu: tx_retevt semaphore " Martin Kaiser
2022-12-30 18:06 ` [PATCH 17/20] staging: r8188eu: remove unnecessary rtw_free_xmitframe call Martin Kaiser
2022-12-30 18:06 ` [PATCH 18/20] staging: r8188eu: phwxmit parameter is unused Martin Kaiser
2022-12-30 18:06 ` [PATCH 19/20] staging: r8188eu: rtw_init_hwxmits is not needed Martin Kaiser
2022-12-30 18:06 ` [PATCH 20/20] staging: r8188eu: we use a constant number of hw_xmit entries Martin Kaiser
2023-01-17 18:33 ` Greg Kroah-Hartman
2022-12-31 10:08 ` [PATCH 00/20] staging: r8188eu: some xmit cleanups Philipp Hortmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221230180646.91008-10-martin@kaiser.cx \
--to=martin@kaiser.cx \
--cc=Larry.Finger@lwfinger.net \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=paskripkin@gmail.com \
--cc=phil@philpotter.co.uk \
--cc=straube.linux@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®