On Sun, Jul 10, 2016 at 02:28:32AM +0200, Xianwen Chen wrote:
> Hello,
> 
> I have not been able to use iwi0 on OpenBSD 5.9 i386 on ThinkPad R52.
> 
> The firmware was installed via
> # fw_update
> 
> When I try to connect to an open wifi network:
> # ifconfig iwi0 nwid HUAZHU-Hanting up
> 
> I obtain the following error messages when I run 'dmesg':
> 
> iwi0: fatal firmware error
> iwi0: fatal firmware error
> iwi0: timeout waiting for master
> iwi0: fatal firmware error
> iwi0: timeout waiting for master
> iwi0: fatal firmware error
> iwi0: timeout waiting for master
> iwi0: fatal firmware error
> iwi0: timeout waiting for master
> iwi0: fatal firmware error
> iwi0: fatal firmware error
> iwi0: timeout waiting for master
> iwi0: fatal firmware error
> iwi0: fatal firmware error
> iwi0: fatal firmware error
> 
> The wireless network adapter worked a few days ago, when the laptop was
> running Windows XP.
> 
> What shall I do to make iwi0 working?
> 
> Warm regards,
> 
> Xianwen
> 

iwi(4) was accidentally broken in 5.9-release.

There is a patch in 5.9-stable which makes iwi(4) work again.
No errata was issued for this patch. I've included the patch below.

If you already have a CVS checkout from the OPENSD_5_9 tag, then the
steps you can follow are:

  cd /usr/src/sys
  cvs up net80211/ieee80211_node.c
  Now build and install a new kernel.

For more information about how to get the -stable source tree and how
to build the system from source, see http://www.openbsd.org/faq/faq5.html

Index: ieee80211_node.c
===================================================================
RCS file: /cvs/src/sys/net80211/ieee80211_node.c,v
retrieving revision 1.99
retrieving revision 1.99.2.1
diff -u -p -r1.99 -r1.99.2.1
--- ieee80211_node.c    25 Jan 2016 15:14:22 -0000      1.99
+++ ieee80211_node.c    5 May 2016 09:41:33 -0000       1.99.2.1
@@ -630,6 +630,8 @@ ieee80211_end_scan(struct ifnet *ifp)
                goto notfound;
        (*ic->ic_node_copy)(ic, ic->ic_bss, selbs);
        ni = ic->ic_bss;
+
+       ic->ic_curmode = ieee80211_chan2mode(ic, ni->ni_chan);
 
        if (ic->ic_flags & IEEE80211_F_RSNON)
                ieee80211_choose_rsnparams(ic);

Reply via email to