[PATCH 2/3] staging: brcm80211: made overlapping WMM functions more similar

Roland Vossen rvossen at broadcom.com
Wed Mar 30 09:21:00 UTC 2011


Code cleanup. Functions wlc_edcf_setparams() and
wlc_wme_setparams() duplicate code amongst each other. This commit
attempts to make life easier for the reviewer, by introducing non
functional changes that bring wlc_edcf_setparams() more in line
with wlc_wme_setparams(). As a result the subsequent commit can be
reviewed more easily.

Signed-off-by: Roland Vossen <rvossen at broadcom.com>
Reviewed-by: Arend van Spriel <arend at broadcom.com>
---
 drivers/staging/brcm80211/brcmsmac/wlc_main.c |   30 +++++++++++++++---------
 1 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_main.c b/drivers/staging/brcm80211/brcmsmac/wlc_main.c
index 51bc3ee..8d38652 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_main.c
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_main.c
@@ -1434,16 +1434,21 @@ void wlc_wme_setparams(struct wlc_info *wlc, u16 aci,
 
 void wlc_edcf_setparams(struct wlc_info *wlc, bool suspend)
 {
-	uint aci, i, j;
+	u16 aci;
+	int i_ac, i;
 	edcf_acparam_t *edcf_acp;
 	shm_acparams_t acp_shm;
 	u16 *shm_entry;
+	struct ieee80211_tx_queue_params txq_pars;
+	struct ieee80211_tx_queue_params *params = &txq_pars;
 
 	ASSERT(wlc);
 
 	/* Only apply params if the core is out of reset and has clocks */
-	if (!wlc->clk)
+	if (!wlc->clk) {
+		WL_ERROR("wl%d: %s : no-clock\n", wlc->pub->unit, __func__);
 		return;
+	}
 
 	/*
 	 * AP uses AC params from wme_param_ie_ap.
@@ -1455,7 +1460,7 @@ void wlc_edcf_setparams(struct wlc_info *wlc, bool suspend)
 
 	wlc->wme_admctl = 0;
 
-	for (i = 0; i < AC_COUNT; i++, edcf_acp++) {
+	for (i_ac = 0; i_ac < AC_COUNT; i_ac++, edcf_acp++) {
 		memset((char *)&acp_shm, 0, sizeof(shm_acparams_t));
 		/* find out which ac this set of params applies to */
 		aci = (edcf_acp->ACI & EDCF_ACI_MASK) >> EDCF_ACI_SHIFT;
@@ -1466,12 +1471,13 @@ void wlc_edcf_setparams(struct wlc_info *wlc, bool suspend)
 		}
 
 		/* fill in shm ac params struct */
-		acp_shm.txop = le16_to_cpu(edcf_acp->TXOP);
+		params->txop = edcf_acp->TXOP;
+		acp_shm.txop = le16_to_cpu(params->txop);
 		/* convert from units of 32us to us for ucode */
-		wlc->edcf_txop[aci] = acp_shm.txop =
+		wlc->edcf_txop[aci & 0x3] = acp_shm.txop =
 		    EDCF_TXOP2USEC(acp_shm.txop);
-		acp_shm.aifs = (edcf_acp->ACI & EDCF_AIFSN_MASK);
-
+		params->aifs = edcf_acp->ACI;
+		acp_shm.aifs = (params->aifs & EDCF_AIFSN_MASK);
 		if (aci == AC_VI && acp_shm.txop == 0
 		    && acp_shm.aifs < EDCF_AIFSN_MAX)
 			acp_shm.aifs++;
@@ -1484,10 +1490,12 @@ void wlc_edcf_setparams(struct wlc_info *wlc, bool suspend)
 		}
 
 		/* CWmin = 2^(ECWmin) - 1 */
-		acp_shm.cwmin = EDCF_ECW2CW(edcf_acp->ECW & EDCF_ECWMIN_MASK);
+		params->cw_min = EDCF_ECW2CW(edcf_acp->ECW & EDCF_ECWMIN_MASK);
+		acp_shm.cwmin = params->cw_min;
 		/* CWmax = 2^(ECWmax) - 1 */
-		acp_shm.cwmax = EDCF_ECW2CW((edcf_acp->ECW & EDCF_ECWMAX_MASK)
+		params->cw_max = EDCF_ECW2CW((edcf_acp->ECW & EDCF_ECWMAX_MASK)
 					    >> EDCF_ECWMAX_SHIFT);
+		acp_shm.cwmax = params->cw_max;
 		acp_shm.cwcur = acp_shm.cwmin;
 		acp_shm.bslots =
 		    R_REG(&wlc->regs->tsf_random) & acp_shm.cwcur;
@@ -1501,10 +1509,10 @@ void wlc_edcf_setparams(struct wlc_info *wlc, bool suspend)
 
 		/* Fill in shm acparam table */
 		shm_entry = (u16 *) &acp_shm;
-		for (j = 0; j < (int)sizeof(shm_acparams_t); j += 2)
+		for (i = 0; i < (int)sizeof(shm_acparams_t); i += 2)
 			wlc_write_shm(wlc,
 				      M_EDCF_QINFO +
-				      wme_shmemacindex(aci) * M_EDCF_QLEN + j,
+				      wme_shmemacindex(aci) * M_EDCF_QLEN + i,
 				      *shm_entry++);
 	}
 
-- 
1.7.1





More information about the devel mailing list