iprowifi2200: Sync with FreeBSD 11.1.

Untested, but the changes are relatively minimal (mostly adapations
to the new FreeBSD KPIs), and ttcoder recently opened a ticket (#14258)
about it, so he can test.
This commit is contained in:
Augustin Cavalier
2018-07-10 18:28:02 -04:00
parent e6f6c1b463
commit e131a159c3
6 changed files with 380 additions and 251 deletions
@@ -10,13 +10,13 @@ SubInclude HAIKU_TOP src add-ons kernel drivers network wlan marvell88w8335 ;
# FreeBSD 9.3 drivers
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan atheroswifi ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan broadcom43xx ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi2200 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan marvell88w8363 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan ralinkwifi ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan wavelanwifi ;
# FreeBSD 11.1 drivers
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan aironetwifi ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi2200 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi3945 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi4965 ;
@@ -1,8 +1,8 @@
SubDir HAIKU_TOP src add-ons kernel drivers network wlan iprowifi2200 ;
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ]
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd11_network compat ]
: true ;
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_wlan ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd11_wlan ] : true ;
UsePrivateHeaders net system ;
UsePrivateKernelHeaders ;
@@ -10,10 +10,10 @@ UsePrivateKernelHeaders ;
Includes [ FGristFiles kernel_c++_structs.h ]
: <src!system!kernel>kernel_c++_struct_sizes.h ;
SubDirCcFlags [ FDefines _KERNEL=1 FBSD_DRIVER=1 ]
-Wno-format
-Wno-unused
-Wno-uninitialized
SubDirCcFlags [ FDefines _KERNEL=1 FBSD_DRIVER=1 ]
-Wno-format
-Wno-unused
-Wno-uninitialized
-Werror ;
UseHeaders [ FDirName $(SUBDIR) ] : true ;
@@ -24,8 +24,8 @@ KernelAddon iprowifi2200 :
if_iwi.c
glue.c
:
libfreebsd_wlan.a
libfreebsd_network.a
libfreebsd11_wlan.a
libfreebsd11_network.a
;
# Note: Due to licensing restrictions, we can only distribute the archive.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,25 @@
/*-
* Copyright (c) 2014 Adrian Chadd <adrian@FreeBSD.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $FreeBSD: releng/11.2/sys/dev/iwi/if_iwi_ioctl.h 263920 2014-03-29 19:53:04Z adrian $
*/
#ifndef __IF_IWI_IOCTL_H__
#define __IF_IWI_IOCTL_H__
/* XXX how should I pick appropriate ioctl numbers? */
#define SIOCGIWISTATS _IOWR('i', 147, struct ifreq)
#define SIOCZIWISTATS _IOWR('i', 148, struct ifreq)
#endif /* __IF_IWI_IOCTL_H__ */
@@ -1,4 +1,4 @@
/* $FreeBSD$ */
/* $FreeBSD: releng/11.2/sys/dev/iwi/if_iwireg.h 331722 2018-03-29 02:50:57Z eadler $ */
/*-
* Copyright (c) 2004, 2005
@@ -221,6 +221,7 @@ struct iwi_notif_association {
/* structure for notification IWI_NOTIF_TYPE_SCAN_CHANNEL */
struct iwi_notif_scan_channel {
uint8_t nchan;
/* XXX this is iwi_cmd_stats, and a u8 reserved field */
uint8_t reserved[47];
} __packed;
@@ -239,6 +240,68 @@ struct iwi_notif_beacon_state {
uint32_t number;
} __packed;
/* structure(s) for notification IWI_NOTIF_TYPE_LINK_QUALITY */
#define RX_FREE_BUFFERS 32
#define RX_LOW_WATERMARK 8
#define SUP_RATE_11A_MAX_NUM_CHANNELS 8
#define SUP_RATE_11B_MAX_NUM_CHANNELS 4
#define SUP_RATE_11G_MAX_NUM_CHANNELS 12
// Used for passing to driver number of successes and failures per rate
struct iwi_rate_histogram {
union {
uint32_t a[SUP_RATE_11A_MAX_NUM_CHANNELS];
uint32_t b[SUP_RATE_11B_MAX_NUM_CHANNELS];
uint32_t g[SUP_RATE_11G_MAX_NUM_CHANNELS];
} success;
union {
uint32_t a[SUP_RATE_11A_MAX_NUM_CHANNELS];
uint32_t b[SUP_RATE_11B_MAX_NUM_CHANNELS];
uint32_t g[SUP_RATE_11G_MAX_NUM_CHANNELS];
} failed;
} __packed;
/* statistics command response */
struct iwi_cmd_stats {
uint8_t cmd_id;
uint8_t seq_num;
uint16_t good_sfd;
uint16_t bad_plcp;
uint16_t wrong_bssid;
uint16_t valid_mpdu;
uint16_t bad_mac_header;
uint16_t reserved_frame_types;
uint16_t rx_ina;
uint16_t bad_crc32;
uint16_t invalid_cts;
uint16_t invalid_acks;
uint16_t long_distance_ina_fina;
uint16_t dsp_silence_unreachable;
uint16_t accumulated_rssi;
uint16_t rx_ovfl_frame_tossed;
uint16_t rssi_silence_threshold;
uint16_t rx_ovfl_frame_supplied;
uint16_t last_rx_frame_signal;
uint16_t last_rx_frame_noise;
uint16_t rx_autodetec_no_ofdm;
uint16_t rx_autodetec_no_barker;
uint16_t reserved;
} __packed;
#define SILENCE_OVER_THRESH (1)
#define SILENCE_UNDER_THRESH (2)
struct iwi_notif_link_quality {
struct iwi_cmd_stats stats;
uint8_t rate;
uint8_t modulation;
struct iwi_rate_histogram histogram;
uint8_t silence_notification_type; /* SILENCE_OVER/UNDER_THRESH */
uint16_t silence_count;
} __packed;
/* received frame header */
struct iwi_frame {
uint32_t reserved1[2];
@@ -418,7 +481,7 @@ struct iwi_scan {
#define IWI_SCAN_TYPES 5
/* scan result codes */
#define IWI_SCAN_COMPLETED 1 /* scan compeleted sucessfully */
#define IWI_SCAN_COMPLETED 1 /* scan compeleted successfully */
#define IWI_SCAN_ABORTED 2 /* scan was aborted by the driver */
/* structure for command IWI_CMD_SCAN_EXT */
@@ -1,4 +1,4 @@
/* $FreeBSD$ */
/* $FreeBSD: releng/11.2/sys/dev/iwi/if_iwivar.h 331722 2018-03-29 02:50:57Z eadler $ */
/*-
* Copyright (c) 2004, 2005
@@ -125,11 +125,13 @@ struct iwi_vap {
#define IWI_VAP(vap) ((struct iwi_vap *)(vap))
struct iwi_softc {
struct ifnet *sc_ifp;
void (*sc_node_free)(struct ieee80211_node *);
struct mtx sc_mtx;
struct ieee80211com sc_ic;
struct mbufq sc_snd;
device_t sc_dev;
struct mtx sc_mtx;
void (*sc_node_free)(struct ieee80211_node *);
uint8_t sc_mcast[IEEE80211_ADDR_LEN];
struct unrhdr *sc_unr;
@@ -190,10 +192,10 @@ struct iwi_softc {
struct task sc_radiofftask; /* radio off processing */
struct task sc_restarttask; /* restart adapter processing */
struct task sc_disassoctask;
struct task sc_wmetask; /* set wme parameters */
struct task sc_monitortask;
unsigned int sc_softled : 1, /* enable LED gpio status */
unsigned int sc_running : 1, /* initialized */
sc_softled : 1, /* enable LED gpio status */
sc_ledstate: 1, /* LED on/off state */
sc_blinking: 1; /* LED blink operation active */
u_int sc_nictype; /* NIC type from EEPROM */
@@ -216,6 +218,9 @@ struct iwi_softc {
struct iwi_rx_radiotap_header sc_rxtap;
struct iwi_tx_radiotap_header sc_txtap;
struct iwi_notif_link_quality sc_linkqual;
int sc_linkqual_valid;
#if defined(__HAIKU__)
uint32_t sc_intr_status;
#endif