mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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


  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®