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

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Thu, 10 Sep 2020 10:22:05 +0000
On 9 Sep 2020, at 22:41, Tomoaki AOKI wrote:

> This breaks at least iwm. (Other drivers not tested.)
>
> Messages below are repeatedly shown and no carrier detected.
> Manually reverting this commit fixes the issue.
>
> iwm0: failed to send antennas before calibration: 35
> iwm_run_init_ucode: failed 35
> iwm_init_hw failed 35
> iwm0: could not initiate scan
>
>
> and lesser times messages below.
>
> iwm0: iwm_send_phy_db_data: Cannot send HCMD of Phy DB cfg section, 35
> iwm_init_hw failed 35
> iwm0: could not initiate scan
>


I’ll try to test iwm as well, in case you are faster, can you please 
try this instead of reverting;  the previous version never made it past 
the first return anymore in the last years it seems, so we can remove 
the function entirely to keep the status quo:

Sorry for the oversight.


Index: if_iwm.c
===================================================================
--- if_iwm.c    (revision 365559)
+++ if_iwm.c    (working copy)
_at__at_ -354,7 +354,6 _at__at_ static struct ieee80211_node *
  static uint8_t iwm_rate_from_ucode_rate(uint32_t);
  static int     iwm_rate2ridx(struct iwm_softc *, uint8_t);
  static void    iwm_setrates(struct iwm_softc *, struct iwm_node *, 
int);
-static int     iwm_media_change(struct ifnet *);
  static int     iwm_newstate(struct ieee80211vap *, enum 
ieee80211_state, int);
  static void    iwm_endscan_cb(void *, int);
  static int     iwm_send_bt_init_conf(struct iwm_softc *);
_at__at_ -4417,27 +4416,6 _at__at_ iwm_setrates(struct iwm_softc *sc, struct 
iwm_node
         }
  }

-static int
-iwm_media_change(struct ifnet *ifp)
-{
-       struct ieee80211vap *vap = ifp->if_softc;
-       struct ieee80211com *ic = vap->iv_ic;
-       struct iwm_softc *sc = ic->ic_softc;
-       int error;
-
-       error = ieee80211_media_change(ifp);
-       if (error != 0)
-               return (error);
-
-       IWM_LOCK(sc);
-       if (ic->ic_nrunning > 0) {
-               iwm_stop(sc);
-               iwm_init(sc);
-       }
-       IWM_UNLOCK(sc);
-       return (0);
-}
-
  static void
  iwm_bring_down_firmware(struct iwm_softc *sc, struct ieee80211vap 
*vap)
  {
_at__at_ -6432,8 +6410,8 _at__at_ iwm_vap_create(struct ieee80211com *ic, const char

         ieee80211_ratectl_init(vap);
         /* Complete setup. */
-       ieee80211_vap_attach(vap, iwm_media_change, 
ieee80211_media_status,
-           mac);
+       ieee80211_vap_attach(vap, ieee80211_media_change,
+           ieee80211_media_status, mac);
         ic->ic_opmode = opmode;

         return vap;




>
>> 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)
>> _at__at_ -160,7 +160,6 _at__at_ 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);
>
> (snip)
>
>> 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)
>> _at__at_ -4426,8 +4426,8 _at__at_ 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) {
>> _at__at_ -4435,7 +4435,7 _at__at_ iwm_media_change(struct ifnet *ifp)
>>  		iwm_init(sc);
>>  	}
>>  	IWM_UNLOCK(sc);
>> -	return error;
>> +	return (0);
>>  }
>>
>>  static void
>
> (snip)
>
>
> -- 
> Tomoaki AOKI    <junchoon_at_dec.sakura.ne.jp>
Received on Thu Sep 10 2020 - 08:24:41 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:25 UTC