Module Name: src
Committed By: phil
Date: Mon Jul 16 20:11:12 UTC 2018
Modified Files:
src/sys/dev/usb [phil-wifi]: if_urtwn.c if_urtwnvar.h
src/sys/net80211 [phil-wifi]: ieee80211.c ieee80211_acl.c
ieee80211_amrr.c ieee80211_crypto.c ieee80211_crypto_tkip.c
ieee80211_crypto_wep.c ieee80211_ht.c ieee80211_hwmp.c
ieee80211_input.c ieee80211_ioctl.c ieee80211_mesh.c
ieee80211_netbsd.c ieee80211_netbsd.h ieee80211_node.c
ieee80211_output.c ieee80211_proto.c ieee80211_proto.h
ieee80211_ratectl.c ieee80211_ratectl.h ieee80211_ratectl_none.c
ieee80211_rssadapt.c ieee80211_scan.c ieee80211_scan_sta.c
ieee80211_var.h ieee80211_xauth.c
Log Message:
State save.
urtwn now can attach and shows up in the "ifconfig -a" list.
To generate a diff of this commit:
cvs rdiff -u -r1.59.2.1 -r1.59.2.2 src/sys/dev/usb/if_urtwn.c
cvs rdiff -u -r1.10 -r1.10.16.1 src/sys/dev/usb/if_urtwnvar.h
cvs rdiff -u -r1.56.18.2 -r1.56.18.3 src/sys/net80211/ieee80211.c
cvs rdiff -u -r1.9.54.2 -r1.9.54.3 src/sys/net80211/ieee80211_acl.c
cvs rdiff -u -r1.3.18.2 -r1.3.18.3 src/sys/net80211/ieee80211_amrr.c
cvs rdiff -u -r1.23.2.2 -r1.23.2.3 src/sys/net80211/ieee80211_crypto.c
cvs rdiff -u -r1.14.4.2 -r1.14.4.3 src/sys/net80211/ieee80211_crypto_tkip.c
cvs rdiff -u -r1.12.2.2 -r1.12.2.3 src/sys/net80211/ieee80211_crypto_wep.c
cvs rdiff -u -r1.1.56.3 -r1.1.56.4 src/sys/net80211/ieee80211_ht.c \
src/sys/net80211/ieee80211_scan.c src/sys/net80211/ieee80211_scan_sta.c
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/sys/net80211/ieee80211_hwmp.c \
src/sys/net80211/ieee80211_mesh.c src/sys/net80211/ieee80211_ratectl.c \
src/sys/net80211/ieee80211_ratectl_none.c
cvs rdiff -u -r1.114.2.2 -r1.114.2.3 src/sys/net80211/ieee80211_input.c
cvs rdiff -u -r1.60.18.2 -r1.60.18.3 src/sys/net80211/ieee80211_ioctl.c
cvs rdiff -u -r1.31.2.2 -r1.31.2.3 src/sys/net80211/ieee80211_netbsd.c
cvs rdiff -u -r1.21.2.3 -r1.21.2.4 src/sys/net80211/ieee80211_netbsd.h
cvs rdiff -u -r1.75.4.2 -r1.75.4.3 src/sys/net80211/ieee80211_node.c
cvs rdiff -u -r1.63.2.2 -r1.63.2.3 src/sys/net80211/ieee80211_output.c
cvs rdiff -u -r1.34.14.2 -r1.34.14.3 src/sys/net80211/ieee80211_proto.c
cvs rdiff -u -r1.23.16.3 -r1.23.16.4 src/sys/net80211/ieee80211_proto.h
cvs rdiff -u -r1.1.2.3 -r1.1.2.4 src/sys/net80211/ieee80211_ratectl.h
cvs rdiff -u -r1.21.16.2 -r1.21.16.3 src/sys/net80211/ieee80211_rssadapt.c
cvs rdiff -u -r1.33.2.3 -r1.33.2.4 src/sys/net80211/ieee80211_var.h
cvs rdiff -u -r1.5.158.2 -r1.5.158.3 src/sys/net80211/ieee80211_xauth.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/usb/if_urtwn.c
diff -u src/sys/dev/usb/if_urtwn.c:1.59.2.1 src/sys/dev/usb/if_urtwn.c:1.59.2.2
--- src/sys/dev/usb/if_urtwn.c:1.59.2.1 Thu Jul 12 16:35:33 2018
+++ src/sys/dev/usb/if_urtwn.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: if_urtwn.c,v 1.59.2.1 2018/07/12 16:35:33 phil Exp $ */
+/* $NetBSD: if_urtwn.c,v 1.59.2.2 2018/07/16 20:11:11 phil Exp $ */
/* $OpenBSD: if_urtwn.c,v 1.42 2015/02/10 23:25:46 mpi Exp $ */
/*-
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.59.2.1 2018/07/12 16:35:33 phil Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.59.2.2 2018/07/16 20:11:11 phil Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -37,6 +37,7 @@ __KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v
#include <sys/sysctl.h>
#include <sys/mbuf.h>
#include <sys/kernel.h>
+#include <sys/kmem.h>
#include <sys/socket.h>
#include <sys/systm.h>
#include <sys/module.h>
@@ -92,7 +93,8 @@ __KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v
#define DBG_RF __BIT(5)
#define DBG_REG __BIT(6)
#define DBG_ALL 0xffffffffU
-u_int urtwn_debug = 0;
+/* NNN Reset urtwn_debug to 0 when done debugging. */
+u_int urtwn_debug = DBG_INIT|DBG_FN|DBG_STM;
#define DPRINTFN(n, s) \
do { if (urtwn_debug & (n)) printf s; } while (/*CONSTCOND*/0)
#else
@@ -258,7 +260,7 @@ static void urtwn_set_led(struct urtwn_s
static void urtwn_calib_to(void *);
static void urtwn_calib_to_cb(struct urtwn_softc *, void *);
static void urtwn_next_scan(void *);
-static int urtwn_newstate(struct urtwn_softc *, enum ieee80211_state,
+static int urtwn_newstate(struct ieee80211vap *, enum ieee80211_state,
int);
static void urtwn_newstate_cb(struct urtwn_softc *, void *);
static int urtwn_wme_update(struct ieee80211com *);
@@ -275,7 +277,6 @@ static struct urtwn_tx_data *
urtwn_get_tx_data(struct urtwn_softc *, size_t);
static void urtwn_start(struct ifnet *);
static void urtwn_watchdog(struct ifnet *);
-static int urtwn_ioctl(struct ifnet *, u_long, void *);
static int urtwn_r92c_power_on(struct urtwn_softc *);
static int urtwn_r92e_power_on(struct urtwn_softc *);
static int urtwn_r88e_power_on(struct urtwn_softc *);
@@ -306,10 +307,17 @@ static void urtwn_lc_calib(struct urtwn_
static void urtwn_temp_calib(struct urtwn_softc *);
static int urtwn_init(struct ifnet *);
static void urtwn_stop(struct ifnet *, int);
-static int urtwn_reset(struct ifnet *);
+static int urtwn_reset(struct ieee80211vap *, u_long);
static void urtwn_chip_stop(struct urtwn_softc *);
static void urtwn_newassoc(struct ieee80211_node *, int);
static void urtwn_delay_ms(struct urtwn_softc *, int ms);
+static struct ieee80211vap *
+ urtwn_vap_create(struct ieee80211com *,
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
+static void urtwn_vap_delete(struct ieee80211vap *);
+static int urtwn_ioctl(struct ifnet *, u_long, void *);
/* Aliases. */
#define urtwn_bb_write urtwn_write_4
@@ -339,7 +347,6 @@ urtwn_attach(device_t parent, device_t s
{
struct urtwn_softc *sc = device_private(self);
struct ieee80211com *ic = &sc->sc_ic;
- struct ifnet *ifp = &sc->sc_if;
struct usb_attach_arg *uaa = aux;
char *devinfop;
const struct urtwn_dev *dev;
@@ -447,8 +454,7 @@ urtwn_attach(device_t parent, device_t s
/*
* Setup the 802.11 device.
*/
- /* ic->ic_ifp = ifp; NNN need to do this later... */
- /* ic->ic_state = IEEE80211_S_INIT; NNN do this to the vap */
+ ic->ic_softc = sc;
ic->ic_phytype = IEEE80211_T_OFDM; /* Not only, but not used. */
ic->ic_opmode = IEEE80211_M_STA; /* Default to BSS mode. */
@@ -462,8 +468,11 @@ urtwn_attach(device_t parent, device_t s
IEEE80211_C_WME | /* 802.11e */
IEEE80211_C_WPA; /* 802.11i */
+ ic->ic_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
+
/* Set supported .11b and .11g channels (1 through 14). */
- for (i = 1; i <= 14; i++) {
+ ic->ic_nchans = 14; /* NNN ? get this from somewhere? */
+ for (i = 0; i < 14; i++) {
ic->ic_channels[i].ic_freq =
ieee80211_ieee2mhz(i, IEEE80211_CHAN_2GHZ);
ic->ic_channels[i].ic_flags =
@@ -471,33 +480,34 @@ urtwn_attach(device_t parent, device_t s
IEEE80211_CHAN_DYN | IEEE80211_CHAN_2GHZ;
}
- ifp->if_softc = sc;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_init = urtwn_init;
- ifp->if_ioctl = urtwn_ioctl;
- ifp->if_start = urtwn_start;
- ifp->if_watchdog = urtwn_watchdog;
- IFQ_SET_READY(&ifp->if_snd);
- memcpy(ifp->if_xname, device_xname(sc->sc_dev), IFNAMSIZ);
+ printf ("eurtwn: Calling ieee80211_ifattach()\n");
- if_attach(ifp);
ieee80211_ifattach(ic);
+ printf ("urtwn: Returned from ieee80211_ifattach().\n");
+
/* override default methods NNN Need a lot more here!!! */
ic->ic_newassoc = urtwn_newassoc;
ic->ic_wme.wme_update = urtwn_wme_update;
+ ic->ic_vap_create = urtwn_vap_create;
+ ic->ic_vap_delete = urtwn_vap_delete;
-#if 0
- /* XXX .... vap routines ... in vap_create? */
- vap->iv_reset = urtwn_reset;
+ /* Shouldn't do it, but call vap_create??? */
+ uint8_t bssid[IEEE80211_ADDR_LEN] = {0};
- /* Override state transition machine. */
- sc->sc_newstate = ic->ic_newstate;
- ic->ic_newstate = urtwn_newstate;
- ieee80211_media_init(ic, urtwn_media_change, ieee80211_media_status);
-#endif
+ struct ieee80211vap *vap =
+ urtwn_vap_create(ic, device_xname(sc->sc_dev),
+ device_unit(sc->sc_dev), IEEE80211_M_IBSS,
+ IEEE80211_CLONE_MACADDR, bssid, ic->ic_macaddr);
+
+ if (vap == NULL) {
+ /* Didn't work ... now what! */
+ printf ("vap_create didn't work ...\n");
+ ieee80211_ifdetach(ic);
+ goto fail;
+ }
- bpf_attach2(ifp, DLT_IEEE802_11_RADIO,
+ bpf_attach2(vap->iv_ifp, DLT_IEEE802_11_RADIO,
sizeof(struct ieee80211_frame) + IEEE80211_RADIOTAP_HDRLEN,
&sc->sc_drvbpf);
@@ -517,6 +527,7 @@ urtwn_attach(device_t parent, device_t s
aprint_error_dev(self, "couldn't establish power handler\n");
SET(sc->sc_flags, URTWN_FLAG_ATTACHED);
+printf ("urtwn: Finished attach.\n");
return;
fail:
@@ -528,7 +539,6 @@ static int
urtwn_detach(device_t self, int flags)
{
struct urtwn_softc *sc = device_private(self);
- struct ifnet *ifp = &sc->sc_if;
int s;
DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__));
@@ -544,12 +554,8 @@ urtwn_detach(device_t self, int flags)
if (ISSET(sc->sc_flags, URTWN_FLAG_ATTACHED)) {
usb_rem_task(sc->sc_udev, &sc->sc_task);
- urtwn_stop(ifp, 0);
- ifp->if_flags &= ~(IFF_RUNNING | IFF_OACTIVE);
- bpf_detach(ifp);
ieee80211_ifdetach(&sc->sc_ic);
- if_detach(ifp);
/* Close Tx/Rx pipes. Abort done by urtwn_stop. */
urtwn_close_pipes(sc);
@@ -574,18 +580,14 @@ urtwn_detach(device_t self, int flags)
static int
urtwn_activate(device_t self, enum devact act)
{
-#if notyet
struct urtwn_softc *sc = device_private(self);
-#endif
DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__));
switch (act) {
case DVACT_DEACTIVATE:
-#if notyet
- FOR_EACH(vap in sc->sc_vaps) ???
- if_deactivate(vap->iv_ifp);
-#endif
+ if_deactivate(TAILQ_FIRST(&(sc->sc_ic.ic_vaps))->iv_ifp);
+
return 0;
default:
return EOPNOTSUPP;
@@ -1832,8 +1834,9 @@ urtwn_newassoc(struct ieee80211_node *ni
}
static __unused int
-urtwn_newstate(struct urtwn_softc *sc, enum ieee80211_state nstate, int arg)
+urtwn_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
{
+ struct urtwn_softc *sc = vap->iv_ic->ic_softc;
struct urtwn_cmd_newstate cmd;
DPRINTFN(DBG_FN, ("%s: %s: nstate=%s(%d), arg=%d\n",
@@ -2151,7 +2154,7 @@ urtwn_newstate_cb(struct urtwn_softc *sc
break;
}
- (*sc->sc_newstate)(ic, nstate, cmd->arg);
+ (*sc->sc_newstate)(vap, nstate, cmd->arg);
mutex_exit(&sc->sc_write_mtx);
splx(s);
@@ -2561,7 +2564,7 @@ urtwn_txeof(struct usbd_xfer *xfer, void
{
struct urtwn_tx_data *data = priv;
struct urtwn_softc *sc = data->sc;
- struct ifnet *ifp = &sc->sc_if;
+ struct ifnet *ifp = TAILQ_FIRST(&sc->sc_ic.ic_vaps)->iv_ifp;
size_t pidx = data->pidx;
int s;
@@ -2955,10 +2958,85 @@ urtwn_watchdog(struct ifnet *ifp)
//NNN ieee80211_watchdog(&sc->sc_ic); Not sure what is happening!
}
+/*
+ * Create a VAP node for use with the urtwn driver.
+ */
+
+static struct ieee80211vap *
+urtwn_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ],
+ int unit, enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t macaddr[IEEE80211_ADDR_LEN])
+{
+ printf ("in urtwn_vap_create ... \n");
+
+ struct urtwn_softc *sc = ic->ic_softc;
+ struct ifnet *ifp;
+ struct ieee80211vap *vap;
+
+ DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__));
+
+ /* Allow only one VAP for the urtwn driver. */
+ if (!TAILQ_EMPTY(&ic->ic_vaps))
+ return NULL;
+
+ /* Allocate the vap and setup. */
+ vap = kmem_zalloc(sizeof(struct ieee80211vap), KM_SLEEP);
+ if (ieee80211_vap_setup(ic, vap, name, unit, opmode,
+ flags | IEEE80211_CLONE_NOBEACONS, bssid) != 0) {
+ kmem_free(vap, sizeof(struct ieee80211vap));
+ return NULL;
+ }
+
+ printf ("vap_create: after vap_setup\n");
+
+ /* Local setup */
+ vap->iv_reset = urtwn_reset;
+
+ ifp = vap->iv_ifp;
+ ifp->if_init = urtwn_init;
+ ifp->if_ioctl = urtwn_ioctl;
+ ifp->if_start = urtwn_start;
+ ifp->if_watchdog = urtwn_watchdog;
+ IFQ_SET_READY(&ifp->if_snd);
+ memcpy(ifp->if_xname, device_xname(sc->sc_dev), IFNAMSIZ);
+
+ /* NNN needed ??? */
+ /* if_attach(ifp); */
+
+ /* Override state transition machine. */
+ sc->sc_newstate = vap->iv_newstate;
+ vap->iv_newstate = urtwn_newstate;
+
+ /* Finish setup */
+ ieee80211_vap_attach(vap, urtwn_media_change,
+ ieee80211_media_status, macaddr);
+ ic->ic_opmode = opmode;
+
+ return vap;
+}
+
+static void
+urtwn_vap_delete(struct ieee80211vap *vap)
+{
+ struct ifnet *ifp = vap->iv_ifp;
+ struct urtwn_softc *sc __unused =vap->iv_ic->ic_softc;
+
+ DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__));
+
+ urtwn_stop(ifp, 0);
+ ifp->if_flags &= ~(IFF_RUNNING | IFF_OACTIVE);
+ bpf_detach(ifp);
+ if_detach(ifp);
+ kmem_free(vap, sizeof(struct ieee80211vap));
+}
+
static int
urtwn_ioctl(struct ifnet *ifp, u_long cmd, void *data)
{
- struct urtwn_softc *sc __unused = ifp->if_softc;
+
+ struct ieee80211vap *vap = ifp->if_softc;
+ struct urtwn_softc *sc __unused = vap->iv_ic->ic_softc;
int s, error = 0;
DPRINTFN(DBG_FN, ("%s: %s: cmd=0x%08lx, data=%p\n",
@@ -4999,9 +5077,10 @@ urtwn_stop(struct ifnet *ifp, int disabl
urtwn_chip_stop(sc);
}
-static __unused int
-urtwn_reset(struct ifnet *ifp)
+static int
+urtwn_reset(struct ieee80211vap *vap, u_long arg)
{
+ struct ifnet *ifp = vap->iv_ifp;
struct urtwn_softc *sc = ifp->if_softc;
struct ieee80211com *ic = &sc->sc_ic;
Index: src/sys/dev/usb/if_urtwnvar.h
diff -u src/sys/dev/usb/if_urtwnvar.h:1.10 src/sys/dev/usb/if_urtwnvar.h:1.10.16.1
--- src/sys/dev/usb/if_urtwnvar.h:1.10 Wed Oct 12 03:23:29 2016
+++ src/sys/dev/usb/if_urtwnvar.h Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: if_urtwnvar.h,v 1.10 2016/10/12 03:23:29 nat Exp $ */
+/* $NetBSD: if_urtwnvar.h,v 1.10.16.1 2018/07/16 20:11:11 phil Exp $ */
/* $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ */
/*-
@@ -111,9 +111,9 @@ struct urtwn_host_cmd_ring {
struct urtwn_softc {
device_t sc_dev;
struct ieee80211com sc_ic;
- struct ethercom sc_ec;
-#define sc_if sc_ec.ec_if
- int (*sc_newstate)(struct ieee80211com *,
+ // struct ethercom sc_ec;
+ //#define sc_if sc_ec.ec_if
+ int (*sc_newstate)(struct ieee80211vap *,
enum ieee80211_state, int);
struct usbd_device * sc_udev;
Index: src/sys/net80211/ieee80211.c
diff -u src/sys/net80211/ieee80211.c:1.56.18.2 src/sys/net80211/ieee80211.c:1.56.18.3
--- src/sys/net80211/ieee80211.c:1.56.18.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211.c,v 1.56.18.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211.c,v 1.56.18.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -330,6 +330,8 @@ static struct mtx ic_list_mtx;
MTX_SYSINIT(ic_list, &ic_list_mtx, "ieee80211com list", MTX_DEF);
#elif __NetBSD__
static kmutex_t ic_list_mtx;
+static uint ic_list_mtx_needsinit = 1;
+static uint ic_list_mtx_ready = 0;
#endif
#if notyet
@@ -370,12 +372,29 @@ SYSCTL_PROC(_net_wlan, OID_AUTO, devices
void
ieee80211_ifattach(struct ieee80211com *ic)
{
+#if __NetBSD__
+ /* Initialize the ic_list_mtx the first time here.
+ * Only want to use the big lock on first try to initialize.
+ * Once initialized, it won't use the big lock any more.
+ */
+ if (ic_list_mtx_needsinit) {
+ KERNEL_LOCK(1, NULL);
+ if (!ic_list_mtx_ready) {
+ mutex_init(&ic_list_mtx, MUTEX_DEFAULT, IPL_NET);
+ ic_list_mtx_ready = 1;
+ ic_list_mtx_needsinit = 0;
+ /* Doing this one-time initialization here also. */
+ ieee80211_auth_setup();
+ }
+ KERNEL_UNLOCK_ONE(NULL);
+ }
+#endif
IEEE80211_LOCK_INIT(ic, ic->ic_name);
IEEE80211_TX_LOCK_INIT(ic, ic->ic_name);
TAILQ_INIT(&ic->ic_vaps);
-#ifdef notyet
+#if __FreeBSD__
/* Create a taskqueue for all state changes */
ic->ic_tq = taskqueue_create("ic_taskq", M_WAITOK | M_ZERO,
taskqueue_thread_enqueue, &ic->ic_tq);
@@ -383,7 +402,12 @@ ieee80211_ifattach(struct ieee80211com *
ic->ic_name);
ic->ic_ierrors = counter_u64_alloc(M_WAITOK);
ic->ic_oerrors = counter_u64_alloc(M_WAITOK);
+#elif__NetBSD__
+ /* NNN task/workqueue get it ready.... */
+ ic->ic_ierrors = 0;
+ ic->ic_oerrors = 0;
#endif
+
/*
* Fill in 802.11 available channel set, mark all
* available channels as active, and pick a default
@@ -567,21 +591,22 @@ ieee80211_vap_setup(struct ieee80211com
__func__);
return ENOMEM;
}
+#if __NetBSD__
+ if_initialize(ifp);
+#endif
if_initname(ifp, name, unit);
ifp->if_softc = vap; /* back pointer */
ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST;
ifp->if_transmit = ieee80211_vap_transmit;
-#ifdef __FreeBSD__
+#if __FreeBSD__
ifp->if_qflush = ieee80211_vap_qflush;
#endif
-#ifdef notyet
ifp->if_ioctl = ieee80211_ioctl;
ifp->if_init = ieee80211_init;
-#endif
-#ifdef __FreeBSD__
+
+#if notyet
ifp->if_get_counter = ieee80211_get_counter;
#endif
-
vap->iv_ifp = ifp;
vap->iv_ic = ic;
vap->iv_flags = ic->ic_flags; /* propagate common flags */
@@ -728,10 +753,9 @@ ieee80211_vap_attach(struct ieee80211vap
ether_ifattach(ifp, macaddr);
IEEE80211_ADDR_COPY(vap->iv_myaddr, IF_LLADDR(ifp));
/* hook output method setup by ether_ifattach */
-#ifdef notyet
vap->iv_output = ifp->if_output;
ifp->if_output = ieee80211_output;
-#endif
+
/* NB: if_mtu set by ether_ifattach to ETHERMTU */
IEEE80211_LOCK(ic);
@@ -752,6 +776,10 @@ ieee80211_vap_attach(struct ieee80211vap
ieee80211_syncflag_vht_locked(ic, IEEE80211_FVHT_USEVHT160);
IEEE80211_UNLOCK(ic);
+#if __NetBSD__
+ if_register(ifp);
+#endif
+
return 1;
}
Index: src/sys/net80211/ieee80211_acl.c
diff -u src/sys/net80211/ieee80211_acl.c:1.9.54.2 src/sys/net80211/ieee80211_acl.c:1.9.54.3
--- src/sys/net80211/ieee80211_acl.c:1.9.54.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_acl.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_acl.c,v 1.9.54.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_acl.c,v 1.9.54.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
__FBSDID("$FreeBSD$");
#endif
@@ -57,8 +57,10 @@ __FBSDID("$FreeBSD$");
#include <net/if.h>
#include <net/if_media.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
#include <net/ethernet.h>
+#elif __NetBSD__
+#include <net/if_ether.h>
#endif
#include <net/route.h>
@@ -101,7 +103,7 @@ struct aclstate {
#define ACL_HASH(addr) \
(((const uint8_t *)(addr))[IEEE80211_ADDR_LEN - 1] % ACL_HASHSIZE)
-#ifdef __FreeBSD__
+#if __FreeBSD__
static MALLOC_DEFINE(M_80211_ACL, "acl", "802.11 station acl");
#endif
Index: src/sys/net80211/ieee80211_amrr.c
diff -u src/sys/net80211/ieee80211_amrr.c:1.3.18.2 src/sys/net80211/ieee80211_amrr.c:1.3.18.3
--- src/sys/net80211/ieee80211_amrr.c:1.3.18.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_amrr.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_amrr.c,v 1.3.18.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_amrr.c,v 1.3.18.3 2018/07/16 20:11:11 phil Exp $ */
/* $OpenBSD: ieee80211_amrr.c,v 1.1 2006/06/17 19:07:19 damien Exp $ */
@@ -97,10 +97,10 @@ static void amrr_node_stats(struct ieee8
/* number of references from net80211 layer */
static int nrefs = 0;
-#ifdef notyet
+#if __FreeBSD__
static const struct ieee80211_ratectl amrr = {
#else
-static const struct ieee80211_ratectl __unused amrr = {
+const struct ieee80211_ratectl ratectl_amrr = {
#endif
.ir_name = "amrr",
.ir_attach = NULL,
@@ -115,11 +115,9 @@ static const struct ieee80211_ratectl __
.ir_setinterval = amrr_setinterval,
.ir_node_stats = amrr_node_stats,
};
+#if __FreeBSD__
IEEE80211_RATECTL_MODULE(amrr, 1);
IEEE80211_RATECTL_ALG(amrr, IEEE80211_RATECTL_AMRR, amrr);
-
-#ifdef __NetBSD__
-#define amrr amrr0
#endif
static void
Index: src/sys/net80211/ieee80211_crypto.c
diff -u src/sys/net80211/ieee80211_crypto.c:1.23.2.2 src/sys/net80211/ieee80211_crypto.c:1.23.2.3
--- src/sys/net80211/ieee80211_crypto.c:1.23.2.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_crypto.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_crypto.c,v 1.23.2.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_crypto.c,v 1.23.2.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
__FBSDID("$FreeBSD$");
#endif
@@ -47,10 +47,11 @@ __FBSDID("$FreeBSD$");
#include <net/if.h>
#include <net/if_media.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
#include <net/ethernet.h> /* XXX ETHER_HDR_LEN */
#endif
-#ifdef __NetBSD__
+#if __NetBSD__
+#include <net/if_ether.h>
#include <net/route.h>
#endif
@@ -248,7 +249,7 @@ ieee80211_crypto_available(u_int cipher)
return cipher < IEEE80211_CIPHER_MAX && ciphers[cipher] != NULL;
}
-#ifdef __FreeBSD__
+#if __FreeBSD__
/* XXX well-known names! */
static const char *cipher_modnames[IEEE80211_CIPHER_MAX] = {
[IEEE80211_CIPHER_WEP] = "wlan_wep",
Index: src/sys/net80211/ieee80211_crypto_tkip.c
diff -u src/sys/net80211/ieee80211_crypto_tkip.c:1.14.4.2 src/sys/net80211/ieee80211_crypto_tkip.c:1.14.4.3
--- src/sys/net80211/ieee80211_crypto_tkip.c:1.14.4.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_crypto_tkip.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_crypto_tkip.c,v 1.14.4.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_crypto_tkip.c,v 1.14.4.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -205,12 +205,22 @@ tkip_encap(struct ieee80211_key *k, stru
* Handle TKIP counter measures requirement.
*/
if (vap->iv_flags & IEEE80211_F_COUNTERM) {
+#if __FreeBSD__
#ifdef IEEE80211_DEBUG
struct ieee80211_frame *wh = mtod(m, struct ieee80211_frame *);
#endif
IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_CRYPTO, wh->i_addr2,
"discard frame due to countermeasures (%s)", __func__);
+#elif __NetBSD__
+#ifdef IEEE80211_DEBUG
+ struct ieee80211_frame *wh1 = mtod(m, struct ieee80211_frame *);
+#endif
+
+ IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_CRYPTO,
+ (const __uint8_t *)wh1->i_addr2,
+ "discard frame due to countermeasures (%s)", __func__);
+#endif
vap->iv_stats.is_crypto_tkipcm++;
return 0;
}
Index: src/sys/net80211/ieee80211_crypto_wep.c
diff -u src/sys/net80211/ieee80211_crypto_wep.c:1.12.2.2 src/sys/net80211/ieee80211_crypto_wep.c:1.12.2.3
--- src/sys/net80211/ieee80211_crypto_wep.c:1.12.2.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_crypto_wep.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_crypto_wep.c,v 1.12.2.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_crypto_wep.c,v 1.12.2.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$");
#include <net/ethernet.h>
#endif
#ifdef __NetBSD__
+#include <net/if_ether.h>
#include <net/route.h>
#endif
@@ -413,8 +414,13 @@ wep_encrypt(struct ieee80211_key *key, s
if (m->m_next == NULL) {
if (data_len != 0) { /* out of data */
IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_CRYPTO,
+#if __FreeBSD__
ether_sprintf(mtod(m0,
struct ieee80211_frame *)->i_addr2),
+#elif __NetBSD__
+ ether_sprintf((const __uint8_t *)mtod(m0,
+ struct ieee80211_frame *)->i_addr2),
+#endif
"out of data for WEP (data_len %zu)",
data_len);
/* XXX stat */
Index: src/sys/net80211/ieee80211_ht.c
diff -u src/sys/net80211/ieee80211_ht.c:1.1.56.3 src/sys/net80211/ieee80211_ht.c:1.1.56.4
--- src/sys/net80211/ieee80211_ht.c:1.1.56.3 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_ht.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_ht.c,v 1.1.56.3 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_ht.c,v 1.1.56.4 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -2023,7 +2023,11 @@ ieee80211_setup_basic_htrates(struct iee
static void
ampdu_tx_setup(struct ieee80211_tx_ampdu *tap)
{
+#if __FreeBSD__
callout_init(&tap->txa_timer, 1);
+#elif __NetBSD__
+ callout_init(&tap->txa_timer, CALLOUT_MPSAFE);
+#endif
tap->txa_flags |= IEEE80211_AGGR_SETUP;
tap->txa_lastsample = ticks;
}
Index: src/sys/net80211/ieee80211_scan.c
diff -u src/sys/net80211/ieee80211_scan.c:1.1.56.3 src/sys/net80211/ieee80211_scan.c:1.1.56.4
--- src/sys/net80211/ieee80211_scan.c:1.1.56.3 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_scan.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_scan.c,v 1.1.56.3 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_scan.c,v 1.1.56.4 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
__FBSDID("$FreeBSD$");
#endif
@@ -47,14 +47,15 @@ __FBSDID("$FreeBSD$");
#include <sys/socket.h>
#include <net/if.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
#include <net/if_var.h>
#endif
#include <net/if_media.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
#include <net/ethernet.h>
#endif
-#ifdef __NetBSD__
+#if __NetBSD__
+#include <net/if_ether.h>
#include <net/route.h>
#endif
Index: src/sys/net80211/ieee80211_scan_sta.c
diff -u src/sys/net80211/ieee80211_scan_sta.c:1.1.56.3 src/sys/net80211/ieee80211_scan_sta.c:1.1.56.4
--- src/sys/net80211/ieee80211_scan_sta.c:1.1.56.3 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_scan_sta.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_scan_sta.c,v 1.1.56.3 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_scan_sta.c,v 1.1.56.4 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
__FBSDID("$FreeBSD$");
#endif
@@ -50,14 +50,15 @@ __FBSDID("$FreeBSD$");
#include <sys/socket.h>
#include <net/if.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
#include <net/if_var.h>
#endif
#include <net/if_media.h>
-#ifdef __FreeBSD__
+#if __FreeBSD__
#include <net/ethernet.h>
#endif
-#ifdef __NetBSD__
+#if __NetBSD__
+#include <net/if_ether.h>
#include <net/route.h>
#endif
Index: src/sys/net80211/ieee80211_hwmp.c
diff -u src/sys/net80211/ieee80211_hwmp.c:1.1.2.2 src/sys/net80211/ieee80211_hwmp.c:1.1.2.3
--- src/sys/net80211/ieee80211_hwmp.c:1.1.2.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_hwmp.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_hwmp.c,v 1.1.2.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_hwmp.c,v 1.1.2.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$");
#include <net/ethernet.h>
#endif
#ifdef __NetBSD__
+#include <net/if_ether.h>
#include <net/route.h>
#endif
@@ -276,7 +277,11 @@ hwmp_vattach(struct ieee80211vap *vap)
return;
}
hs->hs_maxhops = IEEE80211_HWMP_DEFAULT_MAXHOPS;
+#if __FreeBSD__
callout_init(&hs->hs_roottimer, 1);
+#elif __NetBSD__
+ callout_init(&hs->hs_roottimer, CALLOUT_MPSAFE);
+#endif
vap->iv_hwmp = hs;
}
Index: src/sys/net80211/ieee80211_mesh.c
diff -u src/sys/net80211/ieee80211_mesh.c:1.1.2.2 src/sys/net80211/ieee80211_mesh.c:1.1.2.3
--- src/sys/net80211/ieee80211_mesh.c:1.1.2.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_mesh.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_mesh.c,v 1.1.2.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_mesh.c,v 1.1.2.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -228,7 +228,11 @@ mesh_rt_add_locked(struct ieee80211vap *
IEEE80211_ADDR_COPY(rt->rt_dest, dest);
rt->rt_priv = (void *)ALIGN(&rt[1]);
MESH_RT_ENTRY_LOCK_INIT(rt, "MBSS_RT");
+#if __FreeBSD__
callout_init(&rt->rt_discovery, 1);
+#elif __NetBSD__
+ callout_init(&rt->rt_discovery, CALLOUT_MPSAFE);
+#endif
rt->rt_updtime = ticks; /* create time */
TAILQ_INSERT_TAIL(&ms->ms_routes, rt, rt_next);
}
@@ -688,8 +692,13 @@ mesh_vattach(struct ieee80211vap *vap)
TAILQ_INIT(&ms->ms_known_gates);
TAILQ_INIT(&ms->ms_routes);
MESH_RT_LOCK_INIT(ms, "MBSS");
+#if __FreeBSD__
callout_init(&ms->ms_cleantimer, 1);
callout_init(&ms->ms_gatetimer, 1);
+#elif __NetBSD__
+ callout_init(&ms->ms_cleantimer, CALLOUT_MPSAFE);
+ callout_init(&ms->ms_gatetimer, CALLOUT_MPSAFE);
+#endif
ms->ms_gateseq = 0;
mesh_select_proto_metric(vap, "AIRTIME");
KASSERT(ms->ms_pmetric, ("ms_pmetric == NULL"));
@@ -1298,7 +1307,11 @@ mesh_decap(struct ieee80211vap *vap, str
WHDIR(wh) == IEEE80211_FC1_DIR_DSTODS,
("bogus dir, fc 0x%x:0x%x", wh->i_fc[0], wh->i_fc[1]));
+#if __FreeBSD__
llc = (struct llc *)(mtod(m, caddr_t) + hdrlen);
+#elif __NetBSD__
+ llc = (struct llc *)(mtod(m, __uint8_t *) + hdrlen);
+#endif
if (llc->llc_dsap == LLC_SNAP_LSAP && llc->llc_ssap == LLC_SNAP_LSAP &&
llc->llc_control == LLC_UI && llc->llc_snap.org_code[0] == 0 &&
llc->llc_snap.org_code[1] == 0 && llc->llc_snap.org_code[2] == 0 &&
@@ -3397,8 +3410,13 @@ void
ieee80211_mesh_node_init(struct ieee80211vap *vap, struct ieee80211_node *ni)
{
ni->ni_flags |= IEEE80211_NODE_QOS;
+#if __FreeBSD__
callout_init(&ni->ni_mltimer, 1);
callout_init(&ni->ni_mlhtimer, 1);
+#elif __NetBSD__
+ callout_init(&ni->ni_mltimer, CALLOUT_MPSAFE);
+ callout_init(&ni->ni_mlhtimer, CALLOUT_MPSAFE);
+#endif
}
/*
Index: src/sys/net80211/ieee80211_ratectl.c
diff -u src/sys/net80211/ieee80211_ratectl.c:1.1.2.2 src/sys/net80211/ieee80211_ratectl.c:1.1.2.3
--- src/sys/net80211/ieee80211_ratectl.c:1.1.2.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_ratectl.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_ratectl.c,v 1.1.2.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_ratectl.c,v 1.1.2.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -49,17 +49,32 @@ __FBSDID("$FreeBSD$");
#include <net80211/ieee80211_var.h>
#include <net80211/ieee80211_ratectl.h>
+#if __FreeBSD__
static const struct ieee80211_ratectl *ratectls[IEEE80211_RATECTL_MAX];
-static const char *ratectl_modnames[IEEE80211_RATECTL_MAX] __unused = {
+static const char *ratectl_modnames[IEEE80211_RATECTL_MAX] = {
[IEEE80211_RATECTL_AMRR] = "wlan_amrr",
[IEEE80211_RATECTL_RSSADAPT] = "wlan_rssadapt",
[IEEE80211_RATECTL_ONOE] = "wlan_onoe",
[IEEE80211_RATECTL_SAMPLE] = "wlan_sample",
[IEEE80211_RATECTL_NONE] = "wlan_none",
-};
MALLOC_DEFINE(M_80211_RATECTL, "80211ratectl", "802.11 rate control");
+};
+#elif __NetBSD__
+extern const struct ieee80211_ratectl ratectl_amrr;
+extern const struct ieee80211_ratectl ratectl_rssadapt;
+extern const struct ieee80211_ratectl ratectl_none;
+
+static const struct ieee80211_ratectl *ratectls[IEEE80211_RATECTL_MAX] = {
+ [IEEE80211_RATECTL_AMRR] = &ratectl_amrr,
+ [IEEE80211_RATECTL_RSSADAPT] = &ratectl_rssadapt,
+ [IEEE80211_RATECTL_ONOE] = NULL,
+ [IEEE80211_RATECTL_SAMPLE] = NULL,
+ [IEEE80211_RATECTL_NONE] = &ratectl_none,
+};
+#endif
+
void
ieee80211_ratectl_register(int type, const struct ieee80211_ratectl *ratectl)
@@ -117,9 +132,12 @@ ieee80211_ratectl_sysctl_stats(SYSCTL_HA
void
ieee80211_ratectl_init(struct ieee80211vap *vap)
{
+ printf ("ratectl_init enter\n");
if (vap->iv_rate == ratectls[IEEE80211_RATECTL_NONE])
ieee80211_ratectl_set(vap, IEEE80211_RATECTL_AMRR);
+ printf ("ratectl_init middle\n");
vap->iv_rate->ir_init(vap);
+ printf ("ratectl_init end\n");
#ifdef notyet
/* Attach generic stats sysctl */
@@ -134,8 +152,8 @@ ieee80211_ratectl_set(struct ieee80211va
{
if (type >= IEEE80211_RATECTL_MAX)
return;
-#ifdef notyet
if (ratectls[type] == NULL) {
+#if __FreeBSD__
ieee80211_load_module(ratectl_modnames[type]);
if (ratectls[type] == NULL) {
IEEE80211_DPRINTF(vap, IEEE80211_MSG_RATECTL,
@@ -144,7 +162,11 @@ ieee80211_ratectl_set(struct ieee80211va
vap->iv_rate = ratectls[IEEE80211_RATECTL_NONE];
return;
}
- }
+#elsif __NetBSD__
+ type = IEEE80211_RATECTL_NONE;
#endif
+ }
+
+
vap->iv_rate = ratectls[type];
}
Index: src/sys/net80211/ieee80211_ratectl_none.c
diff -u src/sys/net80211/ieee80211_ratectl_none.c:1.1.2.2 src/sys/net80211/ieee80211_ratectl_none.c:1.1.2.3
--- src/sys/net80211/ieee80211_ratectl_none.c:1.1.2.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_ratectl_none.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_ratectl_none.c,v 1.1.2.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_ratectl_none.c,v 1.1.2.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -114,7 +114,11 @@ none_setinterval(const struct ieee80211v
/* number of references from net80211 layer */
static int nrefs __unused = 0;
-static const struct ieee80211_ratectl none __unused = {
+#if __FreeBSD__
+static const struct ieee80211_ratectl none = {
+#elif __NetBSD__
+const struct ieee80211_ratectl ratectl_none = {
+#endif
.ir_name = "none",
.ir_attach = NULL,
.ir_detach = NULL,
@@ -127,7 +131,8 @@ static const struct ieee80211_ratectl no
.ir_tx_update = none_tx_update,
.ir_setinterval = none_setinterval,
};
-#ifdef notyet
+
+#if __FreeBSD__
IEEE80211_RATECTL_MODULE(ratectl_none, 1);
IEEE80211_RATECTL_ALG(none, IEEE80211_RATECTL_NONE, none);
#endif
Index: src/sys/net80211/ieee80211_input.c
diff -u src/sys/net80211/ieee80211_input.c:1.114.2.2 src/sys/net80211/ieee80211_input.c:1.114.2.3
--- src/sys/net80211/ieee80211_input.c:1.114.2.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_input.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_input.c,v 1.114.2.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_input.c,v 1.114.2.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -342,7 +342,11 @@ ieee80211_decap(struct ieee80211vap *vap
return NULL;
}
memcpy(&wh, mtod(m, caddr_t), hdrlen);
+#if __FreeBSD__
llc = (struct llc *)(mtod(m, caddr_t) + hdrlen);
+#elif __NetBSD__
+ llc = (struct llc *)(mtod(m, __uint8_t *) + hdrlen);
+#endif
if (llc->llc_dsap == LLC_SNAP_LSAP && llc->llc_ssap == LLC_SNAP_LSAP &&
llc->llc_control == LLC_UI && llc->llc_snap.org_code[0] == 0 &&
llc->llc_snap.org_code[1] == 0 && llc->llc_snap.org_code[2] == 0 &&
@@ -932,7 +936,11 @@ ieee80211_getbssid(const struct ieee8021
return wh->i_addr3;
}
+#if __FreeBSD__
#include <machine/stdarg.h>
+#elif __NetBSD__
+#include <sys/stdarg.h>
+#endif
void
ieee80211_note(const struct ieee80211vap *vap, const char *fmt, ...)
Index: src/sys/net80211/ieee80211_ioctl.c
diff -u src/sys/net80211/ieee80211_ioctl.c:1.60.18.2 src/sys/net80211/ieee80211_ioctl.c:1.60.18.3
--- src/sys/net80211/ieee80211_ioctl.c:1.60.18.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_ioctl.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_ioctl.c,v 1.60.18.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_ioctl.c,v 1.60.18.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -784,7 +784,7 @@ IEEE80211_IOCTL_GET(dummy, dummy_ioctl_g
static int
ieee80211_ioctl_getdefault(struct ieee80211vap *vap, struct ieee80211req *ireq)
{
-#ifdef notyet
+#if notyet
ieee80211_ioctl_getfunc * const *get;
int error;
@@ -793,6 +793,8 @@ ieee80211_ioctl_getdefault(struct ieee80
if (error != ENOSYS)
return error;
}
+#else
+ printf ("i33380211_ioctl_getdefault called\n");
#endif
return EINVAL;
}
@@ -2712,6 +2714,8 @@ ieee80211_ioctl_setdefault(struct ieee80
if (error != ENOSYS)
return error;
}
+#else
+ printf ("ieee80211_ioctl_setdefault called\n");
#endif
return EINVAL;
}
@@ -3496,7 +3500,12 @@ ieee80211_ioctl_set80211(struct ieee8021
if (error == ENETRESET) {
/* XXX need to re-think AUTO handling */
if (IS_UP_AUTO(vap))
+#if __FreeBSD__
ieee80211_init(vap);
+#elif __NetBSD__
+ /* arg is a vap in 802.11 code */
+ ieee80211_init((struct ifnet *)vap);
+#endif
error = 0;
}
return error;
Index: src/sys/net80211/ieee80211_netbsd.c
diff -u src/sys/net80211/ieee80211_netbsd.c:1.31.2.2 src/sys/net80211/ieee80211_netbsd.c:1.31.2.3
--- src/sys/net80211/ieee80211_netbsd.c:1.31.2.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_netbsd.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_netbsd.c,v 1.31.2.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_netbsd.c,v 1.31.2.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -29,7 +29,7 @@
#include <sys/cdefs.h>
/* __FBSDID("$FreeBSD$"); */
-__KERNEL_RCSID(0, "$NetBSD: ieee80211_netbsd.c,v 1.31.2.2 2018/07/12 16:35:34 phil Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ieee80211_netbsd.c,v 1.31.2.3 2018/07/16 20:11:11 phil Exp $");
/*
* IEEE 802.11 support (NetBSD-specific code)
@@ -69,16 +69,15 @@ static int ieee80211_debug = 0;
SYSCTL_INT(_net_wlan, OID_AUTO, debug, CTLFLAG_RW, &ieee80211_debug,
0, "debugging printfs");
#endif
-#endif /* notyet */
-/* static MALLOC_DEFINE(M_80211_COM, "80211com", "802.11 com state"); NNN */
+static struct if_clone *wlan_cloner;
+#endif
+/* notyet */
-#ifdef notyet
static const char wlanname[] = "wlan";
-static struct if_clone *wlan_cloner;
-static int
-wlan_clone_create(struct if_clone *ifc, int unit, caddr_t params)
+static __unused int
+wlan_clone_create(struct if_clone *ifc, int unit, void * params)
{
struct ieee80211_clone_params cp;
struct ieee80211vap *vap;
@@ -119,7 +118,7 @@ wlan_clone_create(struct if_clone *ifc,
return (vap == NULL ? EIO : 0);
}
-static void
+static __unused void
wlan_clone_destroy(struct ifnet *ifp)
{
struct ieee80211vap *vap = ifp->if_softc;
@@ -127,7 +126,6 @@ wlan_clone_destroy(struct ifnet *ifp)
ic->ic_vap_delete(vap);
}
-#endif
void
ieee80211_vap_destroy(struct ieee80211vap *vap)
@@ -137,7 +135,7 @@ ieee80211_vap_destroy(struct ieee80211va
if_clone_destroyif(wlan_cloner, vap->iv_ifp);
CURVNET_RESTORE();
#else
- panic("ieee80211_vap_destroy");
+ printf ("vap_destroy called ... what next?\n");
#endif
}
@@ -929,11 +927,10 @@ ieee80211_notify_radio(struct ieee80211c
}
}
+#ifdef notyet
void
ieee80211_load_module(const char *modname)
{
-
-#ifdef notyet
struct thread *td = curthread;
if (suser(td) == 0 && securelevel_gt(td->td_ucred, 0) == 0) {
@@ -941,10 +938,8 @@ ieee80211_load_module(const char *modnam
(void) linker_load_module(modname, NULL, NULL, NULL, NULL);
mtx_unlock(&Giant);
}
-#else
- printf("%s: load the %s module by hand for now.\n", __func__, modname);
-#endif
}
+#endif
#ifdef notyet
static eventhandler_tag wlan_bpfevent;
@@ -1198,8 +1193,8 @@ m_unshare(struct mbuf *m0, int how)
if (mprev && (mprev->m_flags & M_EXT) &&
m->m_len <= M_TRAILINGSPACE(mprev)) {
/* XXX: this ignores mbuf types */
- memcpy(mtod(mprev, caddr_t) + mprev->m_len,
- mtod(m, caddr_t), m->m_len);
+ memcpy(mtod(mprev, __uint8_t *) + mprev->m_len,
+ mtod(m, __uint8_t *), m->m_len);
mprev->m_len += m->m_len;
mprev->m_next = m->m_next; /* unlink from chain */
m_free(m); /* reclaim mbuf */
@@ -1227,8 +1222,8 @@ m_unshare(struct mbuf *m0, int how)
if (mprev != NULL && (mprev->m_flags & M_EXT) &&
m->m_len <= M_TRAILINGSPACE(mprev)) {
/* XXX: this ignores mbuf types */
- memcpy(mtod(mprev, caddr_t) + mprev->m_len,
- mtod(m, caddr_t), m->m_len);
+ memcpy(mtod(mprev, __uint8_t *) + mprev->m_len,
+ mtod(m, __uint8_t *), m->m_len);
mprev->m_len += m->m_len;
mprev->m_next = m->m_next; /* unlink from chain */
m_free(m); /* reclaim mbuf */
@@ -1259,7 +1254,7 @@ m_unshare(struct mbuf *m0, int how)
mlast = NULL;
for (;;) {
int cc = min(len, MCLBYTES);
- memcpy(mtod(n, caddr_t), mtod(m, caddr_t) + off, cc);
+ memcpy(mtod(n, __uint8_t *), mtod(m, __uint8_t *) + off, cc);
n->m_len = cc;
if (mlast != NULL)
mlast->m_next = n;
Index: src/sys/net80211/ieee80211_netbsd.h
diff -u src/sys/net80211/ieee80211_netbsd.h:1.21.2.3 src/sys/net80211/ieee80211_netbsd.h:1.21.2.4
--- src/sys/net80211/ieee80211_netbsd.h:1.21.2.3 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_netbsd.h Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_netbsd.h,v 1.21.2.3 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_netbsd.h,v 1.21.2.4 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -60,7 +60,7 @@
#define __offsetof(type, field) __builtin_offsetof(type, field)
#define arc4random cprng_fast32
#define atomic_subtract_int(var,val) atomic_add_int(var,-(val))
-#define caddr_t __caddr_t
+#define caddr_t void *
#define callout_drain(x) callout_halt(x, NULL)
#define m_catpkt(x,y) m_cat(x,y)
#define mtx_lock(mtx) mutex_enter(mtx)
@@ -482,7 +482,6 @@ SYSCTL_DECL(_net_wlan);
int ieee80211_sysctl_msecs_ticks(SYSCTL_HANDLER_ARGS);
#endif
-void ieee80211_load_module(const char *);
#ifdef notyet
Index: src/sys/net80211/ieee80211_node.c
diff -u src/sys/net80211/ieee80211_node.c:1.75.4.2 src/sys/net80211/ieee80211_node.c:1.75.4.3
--- src/sys/net80211/ieee80211_node.c:1.75.4.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_node.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_node.c,v 1.75.4.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_node.c,v 1.75.4.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -131,7 +131,11 @@ ieee80211_node_attach(struct ieee80211co
"802.11 staging q");
ieee80211_node_table_init(ic, &ic->ic_sta, "station",
IEEE80211_INACT_INIT, ic->ic_max_keyix);
+#if __FreeBSD__
callout_init(&ic->ic_inact, 1);
+#elif __NetBSD__
+ callout_init(&ic->ic_inact, CALLOUT_MPSAFE);
+#endif
callout_reset(&ic->ic_inact, IEEE80211_INACT_WAIT*hz,
ieee80211_node_timeout, ic);
@@ -460,16 +464,27 @@ ieee80211_create_ibss(struct ieee80211va
void
ieee80211_reset_bss(struct ieee80211vap *vap)
{
+ printf ("reset_bss: vap is 0x%lx\n", (unsigned long) vap);
struct ieee80211com *ic = vap->iv_ic;
struct ieee80211_node *ni, *obss;
+ printf ("reset_bss: ic is 0x%lx\n", (unsigned long) ic);
+
ieee80211_node_table_reset(&ic->ic_sta, vap);
+
+ printf ("reset_bss: after table_reset\n");
/* XXX multi-bss: wrong */
ieee80211_reset_erp(ic);
+ printf ("reset_bss: after reset_erp\n");
+
ni = ieee80211_alloc_node(&ic->ic_sta, vap, vap->iv_myaddr);
KASSERT(ni != NULL, ("unable to setup initial BSS node"));
+
+ printf ("reset_bss: after alloc_node\n");
+
obss = vap->iv_bss;
+printf ("reset_bss: obss is 0x%lx\n", (unsigned long int)obss);
vap->iv_bss = ieee80211_ref_node(ni);
if (obss != NULL) {
copy_bss(ni, obss);
@@ -1442,7 +1457,9 @@ ieee80211_alloc_node(struct ieee80211_no
IEEE80211_NOTE(vap, IEEE80211_MSG_INACT, ni,
"%s: inact_reload %u", __func__, ni->ni_inact_reload);
+ printf ("before ratectl_node_init call\n");
ieee80211_ratectl_node_init(ni);
+ printf ("after ratectl_node_init\n");
return ni;
}
Index: src/sys/net80211/ieee80211_output.c
diff -u src/sys/net80211/ieee80211_output.c:1.63.2.2 src/sys/net80211/ieee80211_output.c:1.63.2.3
--- src/sys/net80211/ieee80211_output.c:1.63.2.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_output.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_output.c,v 1.63.2.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_output.c,v 1.63.2.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -644,9 +644,15 @@ ieee80211_validate_frame(struct mbuf *m,
* connect bpf write calls to the 802.11 layer for injecting
* raw 802.11 frames.
*/
+#if __FreeBSD__
int
ieee80211_output(struct ifnet *ifp, struct mbuf *m,
const struct sockaddr *dst, struct route *ro)
+#elif __NetBSD__
+int
+ieee80211_output(struct ifnet *ifp, struct mbuf *m,
+ const struct sockaddr *dst, const struct rtentry *ro)
+#endif
{
#define senderr(e) do { error = (e); goto bad;} while (0)
const struct ieee80211_bpf_params *params = NULL;
Index: src/sys/net80211/ieee80211_proto.c
diff -u src/sys/net80211/ieee80211_proto.c:1.34.14.2 src/sys/net80211/ieee80211_proto.c:1.34.14.3
--- src/sys/net80211/ieee80211_proto.c:1.34.14.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_proto.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_proto.c,v 1.34.14.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_proto.c,v 1.34.14.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -81,6 +81,10 @@ __FBSDID("$FreeBSD$");
#define KASSERT(__cond, __complaint) FBSDKASSERT(__cond, __complaint)
#endif
+#if __NetBSD__
+extern const struct ieee80211_authenticator auth_xauth;
+#endif
+
/* XXX tunables */
#define AGGRESSIVE_MODE_SWITCH_HYSTERESIS 3 /* pkts / 100ms */
#define HIGH_PRI_SWITCH_THRESH 10 /* pkts / 100ms */
@@ -357,8 +361,11 @@ ieee80211_proto_vattach(struct ieee80211
vap->iv_bmiss_max = IEEE80211_BMISS_MAX;
#if __FreeBSD__
callout_init_mtx(&vap->iv_swbmiss, IEEE80211_LOCK_OBJ(ic), 0);
-#endif
callout_init(&vap->iv_mgtsend, 1);
+#elif __NetBSD__
+ /* NNN need to do something with iv_swbmiss ... */
+ callout_init(&vap->iv_mgtsend, CALLOUT_MPSAFE);
+#endif
TASK_INIT(&vap->iv_nstate_task, 0, ieee80211_newstate_cb, vap);
TASK_INIT(&vap->iv_swbmiss_task, 0, beacon_swmiss, vap);
TASK_INIT(&vap->iv_wme_task, 0, vap_update_wme, vap);
@@ -450,6 +457,7 @@ ieee80211_proto_vdetach(struct ieee80211
#define IEEE80211_AUTH_MAX (IEEE80211_AUTH_WPA+1)
/* XXX well-known names */
+#if __FreeBSD__
static const char *auth_modnames[IEEE80211_AUTH_MAX] = {
"wlan_internal", /* IEEE80211_AUTH_NONE */
"wlan_internal", /* IEEE80211_AUTH_OPEN */
@@ -458,6 +466,8 @@ static const char *auth_modnames[IEEE802
"wlan_internal", /* IEEE80211_AUTH_AUTO */
"wlan_xauth", /* IEEE80211_AUTH_WPA */
};
+#endif
+
static const struct ieee80211_authenticator *authenticators[IEEE80211_AUTH_MAX];
static const struct ieee80211_authenticator auth_internal = {
@@ -468,15 +478,24 @@ static const struct ieee80211_authentica
.ia_node_leave = NULL,
};
+
/*
* Setup internal authenticators once; they are never unregistered.
*/
-static __unused void
+#if __FreeBSD__
+static void
+#elif __NetBSD__
+void
+#endif
ieee80211_auth_setup(void)
{
ieee80211_authenticator_register(IEEE80211_AUTH_OPEN, &auth_internal);
ieee80211_authenticator_register(IEEE80211_AUTH_SHARED, &auth_internal);
ieee80211_authenticator_register(IEEE80211_AUTH_AUTO, &auth_internal);
+#if __NetBSD__
+ ieee80211_authenticator_register(IEEE80211_AUTH_8021X, &auth_xauth);
+ ieee80211_authenticator_register(IEEE80211_AUTH_WPA, &auth_xauth);
+#endif
}
SYSINIT(wlan_auth, SI_SUB_DRIVERS, SI_ORDER_FIRST, ieee80211_auth_setup, NULL);
@@ -485,8 +504,10 @@ ieee80211_authenticator_get(int auth)
{
if (auth >= IEEE80211_AUTH_MAX)
return NULL;
+#if __FreeBSD__
if (authenticators[auth] == NULL)
ieee80211_load_module(auth_modnames[auth]);
+#endif
return authenticators[auth];
}
@@ -532,8 +553,10 @@ ieee80211_aclator_unregister(const struc
const struct ieee80211_aclator *
ieee80211_aclator_get(const char *name)
{
+#if __FreeBSD__
if (acl == NULL)
ieee80211_load_module("wlan_acl");
+#endif
return acl != NULL && strcmp(acl->iac_name, name) == 0 ? acl : NULL;
}
@@ -1600,6 +1623,7 @@ ieee80211_start_locked(struct ieee80211v
/*
* Start a single vap.
*/
+#if __FreeBSD__
void
ieee80211_init(void *arg)
{
@@ -1612,6 +1636,21 @@ ieee80211_init(void *arg)
ieee80211_start_locked(vap);
IEEE80211_UNLOCK(vap->iv_ic);
}
+#elif __NetBSD__
+int
+ieee80211_init(struct ifnet *ifp)
+{
+ struct ieee80211vap *vap = ifp->if_softc;
+
+ IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE | IEEE80211_MSG_DEBUG,
+ "%s\n", __func__);
+
+ IEEE80211_LOCK(vap->iv_ic);
+ ieee80211_start_locked(vap);
+ IEEE80211_UNLOCK(vap->iv_ic);
+ return 0;
+}
+#endif
/*
* Start all runnable vap's on a device.
Index: src/sys/net80211/ieee80211_proto.h
diff -u src/sys/net80211/ieee80211_proto.h:1.23.16.3 src/sys/net80211/ieee80211_proto.h:1.23.16.4
--- src/sys/net80211/ieee80211_proto.h:1.23.16.3 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_proto.h Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_proto.h,v 1.23.16.3 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_proto.h,v 1.23.16.4 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -70,6 +70,10 @@ ieee80211_ctl_subtype_name(uint8_t subty
IEEE80211_FC0_SUBTYPE_SHIFT];
}
+#if __NetBSD__
+void ieee80211_auth_setup(void);
+#endif
+
const char *ieee80211_reason_to_string(uint16_t);
void ieee80211_proto_attach(struct ieee80211com *);
@@ -96,8 +100,13 @@ int ieee80211_mgmt_output(struct ieee802
struct ieee80211_bpf_params *);
int ieee80211_raw_xmit(struct ieee80211_node *, struct mbuf *,
const struct ieee80211_bpf_params *);
+#if __FreeBSD__
int ieee80211_output(struct ifnet *, struct mbuf *,
const struct sockaddr *, struct route *ro);
+#elif __NetBSD__
+int ieee80211_output(struct ifnet *, struct mbuf *,
+ const struct sockaddr *, const struct rtentry *ro);
+#endif
int ieee80211_vap_pkt_send_dest(struct ieee80211vap *, struct mbuf *,
struct ieee80211_node *);
int ieee80211_raw_output(struct ieee80211vap *, struct ieee80211_node *,
@@ -334,7 +343,11 @@ ieee80211_gettid(const struct ieee80211_
void ieee80211_waitfor_parent(struct ieee80211com *);
void ieee80211_start_locked(struct ieee80211vap *);
+#if __FreeBSD__
void ieee80211_init(void *);
+#elif __NetBSD__
+int ieee80211_init(struct ifnet *);
+#endif
void ieee80211_start_all(struct ieee80211com *);
void ieee80211_stop_locked(struct ieee80211vap *);
void ieee80211_stop(struct ieee80211vap *);
Index: src/sys/net80211/ieee80211_ratectl.h
diff -u src/sys/net80211/ieee80211_ratectl.h:1.1.2.3 src/sys/net80211/ieee80211_ratectl.h:1.1.2.4
--- src/sys/net80211/ieee80211_ratectl.h:1.1.2.3 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_ratectl.h Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_ratectl.h,v 1.1.2.3 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_ratectl.h,v 1.1.2.4 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -117,6 +117,9 @@ ieee80211_ratectl_node_init(struct ieee8
{
const struct ieee80211vap *vap = ni->ni_vap;
+ printf ("ratectl_node_init, vap->iv_rate is 0x%lx\n",
+ (unsigned long)vap->iv_rate);
+
vap->iv_rate->ir_node_init(ni);
}
Index: src/sys/net80211/ieee80211_rssadapt.c
diff -u src/sys/net80211/ieee80211_rssadapt.c:1.21.16.2 src/sys/net80211/ieee80211_rssadapt.c:1.21.16.3
--- src/sys/net80211/ieee80211_rssadapt.c:1.21.16.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_rssadapt.c Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_rssadapt.c,v 1.21.16.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_rssadapt.c,v 1.21.16.3 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-3-Clause
@@ -113,7 +113,11 @@ static void rssadapt_sysctlattach(struct
/* number of references from net80211 layer */
static int nrefs = 0;
-static const struct ieee80211_ratectl rssadapt __unused = {
+#if __FreeBSD__
+static const struct ieee80211_ratectl rssadapt = {
+#elif __NetBSD__
+const struct ieee80211_ratectl ratectl_rssadapt = {
+#endif
.ir_name = "rssadapt",
.ir_attach = NULL,
.ir_detach = NULL,
@@ -126,8 +130,10 @@ static const struct ieee80211_ratectl rs
.ir_tx_update = NULL,
.ir_setinterval = rssadapt_setinterval,
};
+#if __FreeBSD__
IEEE80211_RATECTL_MODULE(rssadapt, 1);
IEEE80211_RATECTL_ALG(rssadapt, IEEE80211_RATECTL_RSSADAPT, rssadapt);
+#endif
static void
rssadapt_setinterval(const struct ieee80211vap *vap, int msecs)
Index: src/sys/net80211/ieee80211_var.h
diff -u src/sys/net80211/ieee80211_var.h:1.33.2.3 src/sys/net80211/ieee80211_var.h:1.33.2.4
--- src/sys/net80211/ieee80211_var.h:1.33.2.3 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_var.h Mon Jul 16 20:11:11 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_var.h,v 1.33.2.3 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_var.h,v 1.33.2.4 2018/07/16 20:11:11 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -560,9 +560,14 @@ struct ieee80211vap {
int (*iv_newstate)(struct ieee80211vap *,
enum ieee80211_state, int);
/* 802.3 output method for raw frame xmit */
+#if __FreeBSD__
int (*iv_output)(struct ifnet *, struct mbuf *,
const struct sockaddr *, struct route *);
-
+#elif __NetBSD__
+ int (*iv_output)(struct ifnet *, struct mbuf *,
+ const struct sockaddr *,
+ const struct rtentry *);
+#endif
int (*iv_wme_update)(struct ieee80211vap *,
const struct wmeParams *wme_params);
struct task iv_wme_task; /* deferred VAP WME update */
Index: src/sys/net80211/ieee80211_xauth.c
diff -u src/sys/net80211/ieee80211_xauth.c:1.5.158.2 src/sys/net80211/ieee80211_xauth.c:1.5.158.3
--- src/sys/net80211/ieee80211_xauth.c:1.5.158.2 Thu Jul 12 16:35:34 2018
+++ src/sys/net80211/ieee80211_xauth.c Mon Jul 16 20:11:12 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ieee80211_xauth.c,v 1.5.158.2 2018/07/12 16:35:34 phil Exp $ */
+/* $NetBSD: ieee80211_xauth.c,v 1.5.158.3 2018/07/16 20:11:12 phil Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -72,7 +72,11 @@ static int nrefs __unused = 0;
* One module handles everything for now. May want
* to split things up for embedded applications.
*/
-static const struct ieee80211_authenticator xauth __unused = {
+#if __FreeBSD__
+static const struct ieee80211_authenticator xauth = {
+#elif __NetBSD__
+const struct ieee80211_authenticator auth_xauth = {
+#endif
.ia_name = "external",
.ia_attach = NULL,
.ia_detach = NULL,
@@ -80,6 +84,8 @@ static const struct ieee80211_authentica
.ia_node_leave = NULL,
};
+#if __FreeBSD__
IEEE80211_AUTH_MODULE(xauth, 1);
IEEE80211_AUTH_ALG(x8021x, IEEE80211_AUTH_8021X, xauth);
IEEE80211_AUTH_ALG(wpa, IEEE80211_AUTH_WPA, xauth);
+#endif