svn commit: r365419 - in head/sys/dev: ath bwi iwm iwn mwl otus usb/wlan wtap

Bjoern A. Zeeb bz at FreeBSD.org
Mon Sep 7 15:35:42 UTC 2020


Author: bz
Date: Mon Sep  7 15:35:40 2020
New Revision: 365419
URL: https://svnweb.freebsd.org/changeset/base/365419

Log:
  WiFi: fix ieee80211_media_change() callers
  
  In r178354 with the introduction of multi-bss ("vap") support factoring
  out started and with r193340 ieee80211_media_change() no longer returned
  ENETRESET but only 0 or error.
  As ieee80211(9) tells the ieee80211_media_change() function should not
  be called directly but is registered with ieee80211_vap_attach() instead.
  
  Some drivers have not been fully converted.  After fixing the return
  checking some of these functions were simply wrappers between
  ieee80211_vap_attach() and ieee80211_media_change(), so remove the extra
  function, where possible as well.
  
  PR:		248955
  Submitted by:	Tong Zhang (ztong0001 gmail.com) (original)
  MFC after:	3 days
  Sponsored by:	The FreeBSD Foundation

Modified:
  head/sys/dev/ath/if_ath.c
  head/sys/dev/bwi/if_bwi.c
  head/sys/dev/iwm/if_iwm.c
  head/sys/dev/iwn/if_iwn.c
  head/sys/dev/mwl/if_mwl.c
  head/sys/dev/otus/if_otus.c
  head/sys/dev/usb/wlan/if_run.c
  head/sys/dev/wtap/if_wtap.c

Modified: head/sys/dev/ath/if_ath.c
==============================================================================
--- head/sys/dev/ath/if_ath.c	Mon Sep  7 14:40:33 2020	(r365418)
+++ head/sys/dev/ath/if_ath.c	Mon Sep  7 15:35:40 2020	(r365419)
@@ -160,7 +160,6 @@ static int	ath_init(struct ath_softc *);
 static void	ath_stop(struct ath_softc *);
 static int	ath_reset_vap(struct ieee80211vap *, u_long);
 static int	ath_transmit(struct ieee80211com *, struct mbuf *);
-static int	ath_media_change(struct ifnet *);
 static void	ath_watchdog(void *);
 static void	ath_parent(struct ieee80211com *);
 static void	ath_fatal_proc(void *, int);
@@ -1766,8 +1765,8 @@ ath_vap_create(struct ieee80211com *ic, const char nam
 	ATH_UNLOCK(sc);
 
 	/* complete setup */
-	ieee80211_vap_attach(vap, ath_media_change, ieee80211_media_status,
-	    mac);
+	ieee80211_vap_attach(vap, ieee80211_media_change,
+	    ieee80211_media_status, mac);
 	return vap;
 bad2:
 	reclaim_address(sc, mac);
@@ -3541,14 +3540,6 @@ finish:
 	ATH_KTR(sc, ATH_KTR_TX, 0, "ath_transmit: finished");
 
 	return (retval);
-}
-
-static int
-ath_media_change(struct ifnet *ifp)
-{
-	int error = ieee80211_media_change(ifp);
-	/* NB: only the fixed rate can change and that doesn't need a reset */
-	return (error == ENETRESET ? 0 : error);
 }
 
 /*

Modified: head/sys/dev/bwi/if_bwi.c
==============================================================================
--- head/sys/dev/bwi/if_bwi.c	Mon Sep  7 14:40:33 2020	(r365418)
+++ head/sys/dev/bwi/if_bwi.c	Mon Sep  7 15:35:40 2020	(r365419)
@@ -118,7 +118,6 @@ static void	bwi_set_channel(struct ieee80211com *);
 static void	bwi_scan_end(struct ieee80211com *);
 static int	bwi_newstate(struct ieee80211vap *, enum ieee80211_state, int);
 static void	bwi_updateslot(struct ieee80211com *);
-static int	bwi_media_change(struct ifnet *);
 
 static void	bwi_calibrate(void *);
 
@@ -607,8 +606,8 @@ bwi_vap_create(struct ieee80211com *ic, const char nam
 	ieee80211_ratectl_init(vap);
 
 	/* complete setup */
-	ieee80211_vap_attach(vap, bwi_media_change, ieee80211_media_status,
-	    mac);
+	ieee80211_vap_attach(vap, ieee80211_media_change,
+	    ieee80211_media_status, mac);
 	ic->ic_opmode = opmode;
 	return vap;
 }
@@ -1807,14 +1806,6 @@ back:
 	BWI_UNLOCK(sc);
 
 	return error;
-}
-
-static int
-bwi_media_change(struct ifnet *ifp)
-{
-	int error = ieee80211_media_change(ifp);
-	/* NB: only the fixed rate can change and that doesn't need a reset */
-	return (error == ENETRESET ? 0 : error);
 }
 
 static int

Modified: head/sys/dev/iwm/if_iwm.c
==============================================================================
--- head/sys/dev/iwm/if_iwm.c	Mon Sep  7 14:40:33 2020	(r365418)
+++ head/sys/dev/iwm/if_iwm.c	Mon Sep  7 15:35:40 2020	(r365419)
@@ -4426,8 +4426,8 @@ iwm_media_change(struct ifnet *ifp)
 	int error;
 
 	error = ieee80211_media_change(ifp);
-	if (error != ENETRESET)
-		return error;
+	if (error != 0)
+		return (error);
 
 	IWM_LOCK(sc);
 	if (ic->ic_nrunning > 0) {
@@ -4435,7 +4435,7 @@ iwm_media_change(struct ifnet *ifp)
 		iwm_init(sc);
 	}
 	IWM_UNLOCK(sc);
-	return error;
+	return (0);
 }
 
 static void

Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c	Mon Sep  7 14:40:33 2020	(r365418)
+++ head/sys/dev/iwn/if_iwn.c	Mon Sep  7 15:35:40 2020	(r365419)
@@ -194,7 +194,6 @@ static void	iwn_read_eeprom_enhinfo(struct iwn_softc *
 static struct ieee80211_node *iwn_node_alloc(struct ieee80211vap *,
 		    const uint8_t mac[IEEE80211_ADDR_LEN]);
 static void	iwn_newassoc(struct ieee80211_node *, int);
-static int	iwn_media_change(struct ifnet *);
 static int	iwn_newstate(struct ieee80211vap *, enum ieee80211_state, int);
 static void	iwn_calib_timeout(void *);
 static void	iwn_rx_phy(struct iwn_softc *, struct iwn_rx_desc *);
@@ -1356,8 +1355,8 @@ iwn_vap_create(struct ieee80211com *ic, const char nam
 
 	ieee80211_ratectl_init(vap);
 	/* Complete setup. */
-	ieee80211_vap_attach(vap, iwn_media_change, ieee80211_media_status,
-	    mac);
+	ieee80211_vap_attach(vap, ieee80211_media_change,
+	    ieee80211_media_status, mac);
 	ic->ic_opmode = opmode;
 	return vap;
 }
@@ -2881,16 +2880,6 @@ static void
 iwn_newassoc(struct ieee80211_node *ni, int isnew)
 {
 	/* Doesn't do anything at the moment */
-}
-
-static int
-iwn_media_change(struct ifnet *ifp)
-{
-	int error;
-
-	error = ieee80211_media_change(ifp);
-	/* NB: only the fixed rate can change and that doesn't need a reset */
-	return (error == ENETRESET ? 0 : error);
 }
 
 static int

Modified: head/sys/dev/mwl/if_mwl.c
==============================================================================
--- head/sys/dev/mwl/if_mwl.c	Mon Sep  7 14:40:33 2020	(r365418)
+++ head/sys/dev/mwl/if_mwl.c	Mon Sep  7 15:35:40 2020	(r365419)
@@ -1471,16 +1471,17 @@ mwl_raw_xmit(struct ieee80211_node *ni, struct mbuf *m
 static int
 mwl_media_change(struct ifnet *ifp)
 {
-	struct ieee80211vap *vap = ifp->if_softc;
+	struct ieee80211vap *vap;
 	int error;
 
-	error = ieee80211_media_change(ifp);
 	/* NB: only the fixed rate can change and that doesn't need a reset */
-	if (error == ENETRESET) {
-		mwl_setrates(vap);
-		error = 0;
-	}
-	return error;
+	error = ieee80211_media_change(ifp);
+	if (error != 0)
+		return (error);
+
+	vap = ifp->if_softc;
+	mwl_setrates(vap);
+	return (0);
 }
 
 #ifdef MWL_DEBUG

Modified: head/sys/dev/otus/if_otus.c
==============================================================================
--- head/sys/dev/otus/if_otus.c	Mon Sep  7 14:40:33 2020	(r365418)
+++ head/sys/dev/otus/if_otus.c	Mon Sep  7 15:35:40 2020	(r365419)
@@ -166,7 +166,6 @@ void		otus_write(struct otus_softc *, uint32_t, uint32
 int		otus_write_barrier(struct otus_softc *);
 static struct	ieee80211_node *otus_node_alloc(struct ieee80211vap *vap,
 		    const uint8_t mac[IEEE80211_ADDR_LEN]);
-int		otus_media_change(struct ifnet *);
 int		otus_read_eeprom(struct otus_softc *);
 void		otus_newassoc(struct ieee80211_node *, int);
 void		otus_cmd_rxeof(struct otus_softc *, uint8_t *, int);
@@ -1337,35 +1336,6 @@ otus_node_alloc(struct ieee80211vap *vap, const uint8_
 	return malloc(sizeof (struct otus_node), M_80211_NODE,
 	    M_NOWAIT | M_ZERO);
 }
-
-#if 0
-int
-otus_media_change(struct ifnet *ifp)
-{
-	struct otus_softc *sc = ifp->if_softc;
-	struct ieee80211com *ic = &sc->sc_ic;
-	uint8_t rate, ridx;
-	int error;
-
-	error = ieee80211_media_change(ifp);
-	if (error != ENETRESET)
-		return error;
-
-	if (ic->ic_fixed_rate != -1) {
-		rate = ic->ic_sup_rates[ic->ic_curmode].
-		    rs_rates[ic->ic_fixed_rate] & IEEE80211_RATE_VAL;
-		for (ridx = 0; ridx <= OTUS_RIDX_MAX; ridx++)
-			if (otus_rates[ridx].rate == rate)
-				break;
-		sc->fixed_ridx = ridx;
-	}
-
-	if ((ifp->if_flags & (IFF_UP | IFF_RUNNING)) == (IFF_UP | IFF_RUNNING))
-		error = otus_init(sc);
-
-	return error;
-}
-#endif
 
 int
 otus_read_eeprom(struct otus_softc *sc)

Modified: head/sys/dev/usb/wlan/if_run.c
==============================================================================
--- head/sys/dev/usb/wlan/if_run.c	Mon Sep  7 14:40:33 2020	(r365418)
+++ head/sys/dev/usb/wlan/if_run.c	Mon Sep  7 15:35:40 2020	(r365419)
@@ -2126,7 +2126,7 @@ run_media_change(struct ifnet *ifp)
 	RUN_LOCK(sc);
 
 	error = ieee80211_media_change(ifp);
-	if (error != ENETRESET) {
+	if (error != 0) {
 		RUN_UNLOCK(sc);
 		return (error);
 	}

Modified: head/sys/dev/wtap/if_wtap.c
==============================================================================
--- head/sys/dev/wtap/if_wtap.c	Mon Sep  7 14:40:33 2020	(r365418)
+++ head/sys/dev/wtap/if_wtap.c	Mon Sep  7 15:35:40 2020	(r365419)
@@ -150,16 +150,6 @@ wtap_medium_enqueue(struct wtap_vap *avp, struct mbuf 
 	return medium_transmit(avp->av_md, avp->id, m);
 }
 
-static int
-wtap_media_change(struct ifnet *ifp)
-{
-
-	DWTAP_PRINTF("%s\n", __func__);
-	int error = ieee80211_media_change(ifp);
-	/* NB: only the fixed rate can change and that doesn't need a reset */
-	return (error == ENETRESET ? 0 : error);
-}
-
 /*
  * Intercept management frames to collect beacon rssi data
  * and to do ibss merges.
@@ -352,8 +342,8 @@ wtap_vap_create(struct ieee80211com *ic, const char na
 	vap->iv_bmiss = wtap_bmiss;
 
 	/* complete setup */
-	ieee80211_vap_attach(vap, wtap_media_change, ieee80211_media_status,
-	    mac);
+	ieee80211_vap_attach(vap, ieee80211_media_change,
+	    ieee80211_media_status, mac);
 	avp->av_dev = make_dev(&wtap_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600,
 	    "%s", (const char *)sc->name);
 


More information about the svn-src-head mailing list