On Sun, Mar 22, 2015 at 06:27:19PM +0100, Mattieu Baptiste wrote: > On Sun, Mar 22, 2015 at 2:06 PM, Jonathan Gray <j...@jsg.id.au> wrote: > > On Sun, Mar 22, 2015 at 06:49:33AM -0400, Ted Unangst wrote: > >> Jonathan Gray wrote: > >> > On Sun, Mar 22, 2015 at 09:16:08AM +0100, Stefan Sperling wrote: > >> > > > >> > > If the firmare image is not present at boot, no interface is created. > >> > > After installing the firmware with fw_update (which succeeds because > >> > > it looks for "iwm" in dmesg not ifconfig) there is no way to recover > >> > > the interface without a reboot because 'ifconfig iwm0' doesn't work. > >> > >> > If the mac address and the supported 802.11 modes depend on > >> > having the firmware loaded, is it really worth adding a > >> > interface that allows invalid parameters to be set? > >> > >> Maybe? See above. If I don't have firmware when I boot, but install > >> firmware > >> later, the interface should still be useable. Putting the interface into a > >> "must reboot" state should be considered a bug. > >> > > > > I'd be surprised if the 802.11 reattach doesn't cause problems... > > > > Anyway here is the minimal version > > Hi, > Unfortunately, neither of the two patchs works for me. > Errors are the same. > Is there something I can do to help debugging this?
Updated diff that makes 11a scanning conditional. diff --git sys/dev/pci/if_iwm.c sys/dev/pci/if_iwm.c index 6072e6a..4815e06 100644 --- sys/dev/pci/if_iwm.c +++ sys/dev/pci/if_iwm.c @@ -5470,9 +5470,10 @@ iwm_endscan_cb(void *arg) int done; DPRINTF(("scan ended\n")); - if (sc->sc_scanband == IEEE80211_CHAN_2GHZ) { + if (sc->sc_scanband == IEEE80211_CHAN_2GHZ && + sc->sc_nvm.sku_cap_band_52GHz_enable) { int error; done = 0; if ((error = iwm_mvm_scan_request(sc, IEEE80211_CHAN_5GHZ, ic->ic_des_esslen != 0, @@ -6409,8 +6410,13 @@ iwm_preinit(struct iwm_softc *sc) IWM_UCODE_MINOR(sc->sc_fwver), IWM_UCODE_API(sc->sc_fwver), ether_sprintf(sc->sc_nvm.hw_addr)); + /* not all hardware can do 5GHz band */ + if (!sc->sc_nvm.sku_cap_band_52GHz_enable) + memset(&ic->ic_sup_rates[IEEE80211_MODE_11A], 0, + sizeof(ic->ic_sup_rates[IEEE80211_MODE_11A])); + /* Reattach net80211 so MAC address and channel map are picked up. */ ieee80211_ifdetach(ifp); ieee80211_ifattach(ifp);