Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 3 Oct 2015 22:33:45 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r288641 - head/sys/dev/usb/wlan
Message-ID:  <201510032233.t93MXjjs051369@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Sat Oct  3 22:33:45 2015
New Revision: 288641
URL: https://svnweb.freebsd.org/changeset/base/288641

Log:
  run(4): fix WME support (untested).
  
  Now run(4) fetches parameters from ic->ic_wme.wme_params array, which is never initialized
  (and can be safely removed). This patch replaces &ic->ic_wme.wme_params with
  &ic->ic_wme.wme_chanParams.cap_wmeParams (contains parameters for local station;
  used by other drivers with WME support).
  
  Tested:
  
  * me: STA: run0: MAC/BBP RT5390 (rev 0x0502), RF RT5370 (MIMO 1T1R), address 38:83:45:11:78:ae

Modified:
  head/sys/dev/usb/wlan/if_run.c

Modified: head/sys/dev/usb/wlan/if_run.c
==============================================================================
--- head/sys/dev/usb/wlan/if_run.c	Sat Oct  3 22:27:14 2015	(r288640)
+++ head/sys/dev/usb/wlan/if_run.c	Sat Oct  3 22:33:45 2015	(r288641)
@@ -2162,7 +2162,8 @@ run_wme_update_cb(void *arg)
 {
 	struct ieee80211com *ic = arg;
 	struct run_softc *sc = ic->ic_softc;
-	struct ieee80211_wme_state *wmesp = &ic->ic_wme;
+	const struct wmeParams (*ac)[WME_NUM_AC] =
+	    &ic->ic_wme.wme_chanParams.cap_wmeParams;
 	int aci, error = 0;
 
 	RUN_LOCK_ASSERT(sc, MA_OWNED);
@@ -2170,39 +2171,39 @@ run_wme_update_cb(void *arg)
 	/* update MAC TX configuration registers */
 	for (aci = 0; aci < WME_NUM_AC; aci++) {
 		error = run_write(sc, RT2860_EDCA_AC_CFG(aci),
-		    wmesp->wme_params[aci].wmep_logcwmax << 16 |
-		    wmesp->wme_params[aci].wmep_logcwmin << 12 |
-		    wmesp->wme_params[aci].wmep_aifsn  <<  8 |
-		    wmesp->wme_params[aci].wmep_txopLimit);
+		    ac[aci]->wmep_logcwmax << 16 |
+		    ac[aci]->wmep_logcwmin << 12 |
+		    ac[aci]->wmep_aifsn    <<  8 |
+		    ac[aci]->wmep_txopLimit);
 		if (error) goto err;
 	}
 
 	/* update SCH/DMA registers too */
 	error = run_write(sc, RT2860_WMM_AIFSN_CFG,
-	    wmesp->wme_params[WME_AC_VO].wmep_aifsn  << 12 |
-	    wmesp->wme_params[WME_AC_VI].wmep_aifsn  <<  8 |
-	    wmesp->wme_params[WME_AC_BK].wmep_aifsn  <<  4 |
-	    wmesp->wme_params[WME_AC_BE].wmep_aifsn);
+	    ac[WME_AC_VO]->wmep_aifsn  << 12 |
+	    ac[WME_AC_VI]->wmep_aifsn  <<  8 |
+	    ac[WME_AC_BK]->wmep_aifsn  <<  4 |
+	    ac[WME_AC_BE]->wmep_aifsn);
 	if (error) goto err;
 	error = run_write(sc, RT2860_WMM_CWMIN_CFG,
-	    wmesp->wme_params[WME_AC_VO].wmep_logcwmin << 12 |
-	    wmesp->wme_params[WME_AC_VI].wmep_logcwmin <<  8 |
-	    wmesp->wme_params[WME_AC_BK].wmep_logcwmin <<  4 |
-	    wmesp->wme_params[WME_AC_BE].wmep_logcwmin);
+	    ac[WME_AC_VO]->wmep_logcwmin << 12 |
+	    ac[WME_AC_VI]->wmep_logcwmin <<  8 |
+	    ac[WME_AC_BK]->wmep_logcwmin <<  4 |
+	    ac[WME_AC_BE]->wmep_logcwmin);
 	if (error) goto err;
 	error = run_write(sc, RT2860_WMM_CWMAX_CFG,
-	    wmesp->wme_params[WME_AC_VO].wmep_logcwmax << 12 |
-	    wmesp->wme_params[WME_AC_VI].wmep_logcwmax <<  8 |
-	    wmesp->wme_params[WME_AC_BK].wmep_logcwmax <<  4 |
-	    wmesp->wme_params[WME_AC_BE].wmep_logcwmax);
+	    ac[WME_AC_VO]->wmep_logcwmax << 12 |
+	    ac[WME_AC_VI]->wmep_logcwmax <<  8 |
+	    ac[WME_AC_BK]->wmep_logcwmax <<  4 |
+	    ac[WME_AC_BE]->wmep_logcwmax);
 	if (error) goto err;
 	error = run_write(sc, RT2860_WMM_TXOP0_CFG,
-	    wmesp->wme_params[WME_AC_BK].wmep_txopLimit << 16 |
-	    wmesp->wme_params[WME_AC_BE].wmep_txopLimit);
+	    ac[WME_AC_BK]->wmep_txopLimit << 16 |
+	    ac[WME_AC_BE]->wmep_txopLimit);
 	if (error) goto err;
 	error = run_write(sc, RT2860_WMM_TXOP1_CFG,
-	    wmesp->wme_params[WME_AC_VO].wmep_txopLimit << 16 |
-	    wmesp->wme_params[WME_AC_VI].wmep_txopLimit);
+	    ac[WME_AC_VO]->wmep_txopLimit << 16 |
+	    ac[WME_AC_VI]->wmep_txopLimit);
 
 err:
 	if (error)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510032233.t93MXjjs051369>