Deleted Added
full compact
if_rsu.c (298818) if_rsu.c (300754)
1/* $OpenBSD: if_rsu.c,v 1.17 2013/04/15 09:23:01 mglocker Exp $ */
2
3/*-
4 * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18#include <sys/cdefs.h>
1/* $OpenBSD: if_rsu.c,v 1.17 2013/04/15 09:23:01 mglocker Exp $ */
2
3/*-
4 * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18#include <sys/cdefs.h>
19__FBSDID("$FreeBSD: head/sys/dev/usb/wlan/if_rsu.c 298818 2016-04-29 22:14:11Z avos $");
19__FBSDID("$FreeBSD: head/sys/dev/usb/wlan/if_rsu.c 300754 2016-05-26 16:39:11Z avos $");
20
21/*
22 * Driver for Realtek RTL8188SU/RTL8191SU/RTL8192SU.
23 *
24 * TODO:
25 * o h/w crypto
26 * o hostap / ibss / mesh
27 * o sensible RSSI levels

--- 137 unchanged lines hidden (view full) ---

165 struct usb_device_request *, void *);
166static struct ieee80211vap *
167 rsu_vap_create(struct ieee80211com *, const char name[],
168 int, enum ieee80211_opmode, int, const uint8_t bssid[],
169 const uint8_t mac[]);
170static void rsu_vap_delete(struct ieee80211vap *);
171static void rsu_scan_start(struct ieee80211com *);
172static void rsu_scan_end(struct ieee80211com *);
20
21/*
22 * Driver for Realtek RTL8188SU/RTL8191SU/RTL8192SU.
23 *
24 * TODO:
25 * o h/w crypto
26 * o hostap / ibss / mesh
27 * o sensible RSSI levels

--- 137 unchanged lines hidden (view full) ---

165 struct usb_device_request *, void *);
166static struct ieee80211vap *
167 rsu_vap_create(struct ieee80211com *, const char name[],
168 int, enum ieee80211_opmode, int, const uint8_t bssid[],
169 const uint8_t mac[]);
170static void rsu_vap_delete(struct ieee80211vap *);
171static void rsu_scan_start(struct ieee80211com *);
172static void rsu_scan_end(struct ieee80211com *);
173static void rsu_getradiocaps(struct ieee80211com *, int, int *,
174 struct ieee80211_channel[]);
173static void rsu_set_channel(struct ieee80211com *);
174static void rsu_update_mcast(struct ieee80211com *);
175static int rsu_alloc_rx_list(struct rsu_softc *);
176static void rsu_free_rx_list(struct rsu_softc *);
177static int rsu_alloc_tx_list(struct rsu_softc *);
178static void rsu_free_tx_list(struct rsu_softc *);
179static void rsu_free_list(struct rsu_softc *, struct rsu_data [], int);
180static struct rsu_data *_rsu_getbuf(struct rsu_softc *);

--- 66 unchanged lines hidden (view full) ---

247
248DRIVER_MODULE(rsu, uhub, rsu_driver, rsu_devclass, NULL, 0);
249MODULE_DEPEND(rsu, wlan, 1, 1, 1);
250MODULE_DEPEND(rsu, usb, 1, 1, 1);
251MODULE_DEPEND(rsu, firmware, 1, 1, 1);
252MODULE_VERSION(rsu, 1);
253USB_PNP_HOST_INFO(rsu_devs);
254
175static void rsu_set_channel(struct ieee80211com *);
176static void rsu_update_mcast(struct ieee80211com *);
177static int rsu_alloc_rx_list(struct rsu_softc *);
178static void rsu_free_rx_list(struct rsu_softc *);
179static int rsu_alloc_tx_list(struct rsu_softc *);
180static void rsu_free_tx_list(struct rsu_softc *);
181static void rsu_free_list(struct rsu_softc *, struct rsu_data [], int);
182static struct rsu_data *_rsu_getbuf(struct rsu_softc *);

--- 66 unchanged lines hidden (view full) ---

249
250DRIVER_MODULE(rsu, uhub, rsu_driver, rsu_devclass, NULL, 0);
251MODULE_DEPEND(rsu, wlan, 1, 1, 1);
252MODULE_DEPEND(rsu, usb, 1, 1, 1);
253MODULE_DEPEND(rsu, firmware, 1, 1, 1);
254MODULE_VERSION(rsu, 1);
255USB_PNP_HOST_INFO(rsu_devs);
256
257static const uint8_t rsu_chan_2ghz[] =
258 { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
259
255static uint8_t rsu_wme_ac_xfer_map[4] = {
256 [WME_AC_BE] = RSU_BULK_TX_BE_BK,
257 [WME_AC_BK] = RSU_BULK_TX_BE_BK,
258 [WME_AC_VI] = RSU_BULK_TX_VI_VO,
259 [WME_AC_VO] = RSU_BULK_TX_VI_VO,
260};
261
262/* XXX hard-coded */

--- 136 unchanged lines hidden (view full) ---

399
400static int
401rsu_attach(device_t self)
402{
403 struct usb_attach_arg *uaa = device_get_ivars(self);
404 struct rsu_softc *sc = device_get_softc(self);
405 struct ieee80211com *ic = &sc->sc_ic;
406 int error;
260static uint8_t rsu_wme_ac_xfer_map[4] = {
261 [WME_AC_BE] = RSU_BULK_TX_BE_BK,
262 [WME_AC_BK] = RSU_BULK_TX_BE_BK,
263 [WME_AC_VI] = RSU_BULK_TX_VI_VO,
264 [WME_AC_VO] = RSU_BULK_TX_VI_VO,
265};
266
267/* XXX hard-coded */

--- 136 unchanged lines hidden (view full) ---

404
405static int
406rsu_attach(device_t self)
407{
408 struct usb_attach_arg *uaa = device_get_ivars(self);
409 struct rsu_softc *sc = device_get_softc(self);
410 struct ieee80211com *ic = &sc->sc_ic;
411 int error;
407 uint8_t bands[IEEE80211_MODE_BYTES];
408 uint8_t iface_index;
409 struct usb_interface *iface;
410 const char *rft;
411
412 device_set_usb_desc(self);
413 sc->sc_udev = uaa->device;
414 sc->sc_dev = self;
415 if (rsu_enable_11n)

--- 113 unchanged lines hidden (view full) ---

529 IEEE80211_HTCAP_SMPS_OFF;
530 ic->ic_htcaps |= IEEE80211_HTCAP_CHWIDTH40;
531
532 /* set number of spatial streams */
533 ic->ic_txstream = sc->sc_ntxstream;
534 ic->ic_rxstream = sc->sc_nrxstream;
535 }
536
412 uint8_t iface_index;
413 struct usb_interface *iface;
414 const char *rft;
415
416 device_set_usb_desc(self);
417 sc->sc_udev = uaa->device;
418 sc->sc_dev = self;
419 if (rsu_enable_11n)

--- 113 unchanged lines hidden (view full) ---

533 IEEE80211_HTCAP_SMPS_OFF;
534 ic->ic_htcaps |= IEEE80211_HTCAP_CHWIDTH40;
535
536 /* set number of spatial streams */
537 ic->ic_txstream = sc->sc_ntxstream;
538 ic->ic_rxstream = sc->sc_nrxstream;
539 }
540
537 /* Set supported .11b and .11g rates. */
538 memset(bands, 0, sizeof(bands));
539 setbit(bands, IEEE80211_MODE_11B);
540 setbit(bands, IEEE80211_MODE_11G);
541 if (sc->sc_ht)
542 setbit(bands, IEEE80211_MODE_11NG);
543 ieee80211_init_channels(ic, NULL, bands);
541 rsu_getradiocaps(ic, IEEE80211_CHAN_MAX, &ic->ic_nchans,
542 ic->ic_channels);
544
545 ieee80211_ifattach(ic);
546 ic->ic_raw_xmit = rsu_raw_xmit;
547 ic->ic_scan_start = rsu_scan_start;
548 ic->ic_scan_end = rsu_scan_end;
543
544 ieee80211_ifattach(ic);
545 ic->ic_raw_xmit = rsu_raw_xmit;
546 ic->ic_scan_start = rsu_scan_start;
547 ic->ic_scan_end = rsu_scan_end;
548 ic->ic_getradiocaps = rsu_getradiocaps;
549 ic->ic_set_channel = rsu_set_channel;
550 ic->ic_vap_create = rsu_vap_create;
551 ic->ic_vap_delete = rsu_vap_delete;
552 ic->ic_update_mcast = rsu_update_mcast;
553 ic->ic_parent = rsu_parent;
554 ic->ic_transmit = rsu_transmit;
555 ic->ic_send_mgmt = rsu_send_mgmt;
556 ic->ic_update_chw = rsu_update_chw;

--- 137 unchanged lines hidden (view full) ---

694
695static void
696rsu_scan_end(struct ieee80211com *ic)
697{
698 /* Nothing to do here. */
699}
700
701static void
549 ic->ic_set_channel = rsu_set_channel;
550 ic->ic_vap_create = rsu_vap_create;
551 ic->ic_vap_delete = rsu_vap_delete;
552 ic->ic_update_mcast = rsu_update_mcast;
553 ic->ic_parent = rsu_parent;
554 ic->ic_transmit = rsu_transmit;
555 ic->ic_send_mgmt = rsu_send_mgmt;
556 ic->ic_update_chw = rsu_update_chw;

--- 137 unchanged lines hidden (view full) ---

694
695static void
696rsu_scan_end(struct ieee80211com *ic)
697{
698 /* Nothing to do here. */
699}
700
701static void
702rsu_getradiocaps(struct ieee80211com *ic,
703 int maxchans, int *nchans, struct ieee80211_channel chans[])
704{
705 struct rsu_softc *sc = ic->ic_softc;
706 uint8_t bands[IEEE80211_MODE_BYTES];
707
708 /* Set supported .11b and .11g rates. */
709 memset(bands, 0, sizeof(bands));
710 setbit(bands, IEEE80211_MODE_11B);
711 setbit(bands, IEEE80211_MODE_11G);
712 if (sc->sc_ht)
713 setbit(bands, IEEE80211_MODE_11NG);
714 ieee80211_add_channel_list_2ghz(chans, maxchans, nchans,
715 rsu_chan_2ghz, nitems(rsu_chan_2ghz), bands, 0);
716}
717
718static void
702rsu_set_channel(struct ieee80211com *ic __unused)
703{
704 /* We are unable to switch channels, yet. */
705}
706
707static void
708rsu_update_mcast(struct ieee80211com *ic)
709{

--- 2237 unchanged lines hidden ---
719rsu_set_channel(struct ieee80211com *ic __unused)
720{
721 /* We are unable to switch channels, yet. */
722}
723
724static void
725rsu_update_mcast(struct ieee80211com *ic)
726{

--- 2237 unchanged lines hidden ---