Fri Jun 8 11:09:24 2018 UTC ()
Fix "ifconfig iwm0" failures reported by ryoon@n.o. Advised nonaka@n.o and ozaki-r@n.o, thanks.


(knakahara)
diff -r1.80 -r1.81 src/sys/dev/pci/if_iwm.c

cvs diff -r1.80 -r1.81 src/sys/dev/pci/if_iwm.c (expand / switch to unified diff)

--- src/sys/dev/pci/if_iwm.c 2018/06/06 01:49:08 1.80
+++ src/sys/dev/pci/if_iwm.c 2018/06/08 11:09:24 1.81
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: if_iwm.c,v 1.80 2018/06/06 01:49:08 maya Exp $ */ 1/* $NetBSD: if_iwm.c,v 1.81 2018/06/08 11:09:24 knakahara Exp $ */
2/* OpenBSD: if_iwm.c,v 1.148 2016/11/19 21:07:08 stsp Exp */ 2/* OpenBSD: if_iwm.c,v 1.148 2016/11/19 21:07:08 stsp Exp */
3#define IEEE80211_NO_HT 3#define IEEE80211_NO_HT
4/* 4/*
5 * Copyright (c) 2014, 2016 genua gmbh <info@genua.de> 5 * Copyright (c) 2014, 2016 genua gmbh <info@genua.de>
6 * Author: Stefan Sperling <stsp@openbsd.org> 6 * Author: Stefan Sperling <stsp@openbsd.org>
7 * Copyright (c) 2014 Fixup Software Ltd. 7 * Copyright (c) 2014 Fixup Software Ltd.
8 * 8 *
9 * Permission to use, copy, modify, and distribute this software for any 9 * Permission to use, copy, modify, and distribute this software for any
10 * purpose with or without fee is hereby granted, provided that the above 10 * purpose with or without fee is hereby granted, provided that the above
11 * copyright notice and this permission notice appear in all copies. 11 * copyright notice and this permission notice appear in all copies.
12 * 12 *
13 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 13 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
14 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 14 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
@@ -96,27 +96,27 @@ @@ -96,27 +96,27 @@
96 * purpose with or without fee is hereby granted, provided that the above 96 * purpose with or without fee is hereby granted, provided that the above
97 * copyright notice and this permission notice appear in all copies. 97 * copyright notice and this permission notice appear in all copies.
98 * 98 *
99 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 99 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
100 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 100 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
101 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 101 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
102 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 102 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
103 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 103 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
104 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 104 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
105 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 105 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
106 */ 106 */
107 107
108#include <sys/cdefs.h> 108#include <sys/cdefs.h>
109__KERNEL_RCSID(0, "$NetBSD: if_iwm.c,v 1.80 2018/06/06 01:49:08 maya Exp $"); 109__KERNEL_RCSID(0, "$NetBSD: if_iwm.c,v 1.81 2018/06/08 11:09:24 knakahara Exp $");
110 110
111#include <sys/param.h> 111#include <sys/param.h>
112#include <sys/conf.h> 112#include <sys/conf.h>
113#include <sys/kernel.h> 113#include <sys/kernel.h>
114#include <sys/kmem.h> 114#include <sys/kmem.h>
115#include <sys/mbuf.h> 115#include <sys/mbuf.h>
116#include <sys/mutex.h> 116#include <sys/mutex.h>
117#include <sys/proc.h> 117#include <sys/proc.h>
118#include <sys/socket.h> 118#include <sys/socket.h>
119#include <sys/sockio.h> 119#include <sys/sockio.h>
120#include <sys/sysctl.h> 120#include <sys/sysctl.h>
121#include <sys/systm.h> 121#include <sys/systm.h>
122 122
@@ -7752,26 +7752,31 @@ iwm_preinit(struct iwm_softc *sc) @@ -7752,26 +7752,31 @@ iwm_preinit(struct iwm_softc *sc)
7752 sc->sc_hw_rev & IWM_CSR_HW_REV_TYPE_MSK, sc->sc_fwver, 7752 sc->sc_hw_rev & IWM_CSR_HW_REV_TYPE_MSK, sc->sc_fwver,
7753 ether_sprintf(sc->sc_nvm.hw_addr)); 7753 ether_sprintf(sc->sc_nvm.hw_addr));
7754 7754
7755#ifndef IEEE80211_NO_HT 7755#ifndef IEEE80211_NO_HT
7756 if (sc->sc_nvm.sku_cap_11n_enable) 7756 if (sc->sc_nvm.sku_cap_11n_enable)
7757 iwm_setup_ht_rates(sc); 7757 iwm_setup_ht_rates(sc);
7758#endif 7758#endif
7759 7759
7760 /* not all hardware can do 5GHz band */ 7760 /* not all hardware can do 5GHz band */
7761 if (sc->sc_nvm.sku_cap_band_52GHz_enable) 7761 if (sc->sc_nvm.sku_cap_band_52GHz_enable)
7762 ic->ic_sup_rates[IEEE80211_MODE_11A] = ieee80211_std_rateset_11a; 7762 ic->ic_sup_rates[IEEE80211_MODE_11A] = ieee80211_std_rateset_11a;
7763 7763
7764 ether_ifdetach(ifp); 7764 ether_ifdetach(ifp);
 7765 /*
 7766 * XXX
 7767 * ether_ifdetach() overwrites ifp->if_ioctl, so restore it here.
 7768 */
 7769 ifp->if_ioctl = iwm_ioctl;
7765 ieee80211_ifattach(ic); 7770 ieee80211_ifattach(ic);
7766 7771
7767 ic->ic_node_alloc = iwm_node_alloc; 7772 ic->ic_node_alloc = iwm_node_alloc;
7768 7773
7769 /* Override 802.11 state transition machine. */ 7774 /* Override 802.11 state transition machine. */
7770 sc->sc_newstate = ic->ic_newstate; 7775 sc->sc_newstate = ic->ic_newstate;
7771 ic->ic_newstate = iwm_newstate; 7776 ic->ic_newstate = iwm_newstate;
7772 ieee80211_media_init(ic, iwm_media_change, ieee80211_media_status); 7777 ieee80211_media_init(ic, iwm_media_change, ieee80211_media_status);
7773 ieee80211_announce(ic); 7778 ieee80211_announce(ic);
7774 7779
7775 iwm_radiotap_attach(sc); 7780 iwm_radiotap_attach(sc);
7776 7781
7777 return 0; 7782 return 0;