iprowifi4965: Upgrade to FreeBSD 12.

Tested on a ThinkPad T61.
This commit is contained in:
Augustin Cavalier
2019-01-08 20:54:21 -05:00
parent 27632129b2
commit 4e5a521c2a
8 changed files with 503 additions and 472 deletions
@@ -1,11 +1,9 @@
SubDir HAIKU_TOP src add-ons kernel drivers network wlan ; SubDir HAIKU_TOP src add-ons kernel drivers network wlan ;
# FreeBSD 11.1 drivers # FreeBSD 11.1 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 broadcom43xx ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi2100 ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi2100 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi3945 ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi3945 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi4965 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan marvell88w8335 ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan marvell88w8335 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan marvell88w8363 ; 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 ralinkwifi ;
@@ -16,5 +14,7 @@ SubInclude HAIKU_TOP src add-ons kernel drivers network wlan wavelanwifi ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi2200 ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi2200 ;
# FreeBSD 12 drivers # FreeBSD 12 drivers
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan atheroswifi ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan aironetwifi ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan aironetwifi ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan idualwifi7260 ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan idualwifi7260 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi4965 ;
File diff suppressed because it is too large Load Diff
@@ -14,7 +14,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* *
* $FreeBSD$ * $FreeBSD: releng/12.0/sys/dev/iwn/if_iwn_chip_cfg.h 335785 2018-06-28 21:59:45Z eadler $
*/ */
#ifndef __IF_IWN_CHIP_CFG_H__ #ifndef __IF_IWN_CHIP_CFG_H__
@@ -19,7 +19,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* *
* $FreeBSD$ * $FreeBSD: releng/12.0/sys/dev/iwn/if_iwn_debug.h 315946 2017-03-25 13:15:43Z avos $
*/ */
#ifndef __IF_IWN_DEBUG_H__ #ifndef __IF_IWN_DEBUG_H__
@@ -72,6 +72,7 @@ iwn_intr_str(uint8_t cmd)
case IWN_RX_PHY: return "RX_PHY"; case IWN_RX_PHY: return "RX_PHY";
case IWN_MPDU_RX_DONE: return "MPDU_RX_DONE"; case IWN_MPDU_RX_DONE: return "MPDU_RX_DONE";
case IWN_RX_DONE: return "RX_DONE"; case IWN_RX_DONE: return "RX_DONE";
case IWN_RX_COMPRESSED_BA: return "RX_COMPRESSED_BA";
/* Command Notifications */ /* Command Notifications */
case IWN_CMD_RXON: return "IWN_CMD_RXON"; case IWN_CMD_RXON: return "IWN_CMD_RXON";
@@ -81,6 +82,7 @@ iwn_intr_str(uint8_t cmd)
case IWN_CMD_LINK_QUALITY: return "IWN_CMD_LINK_QUALITY"; case IWN_CMD_LINK_QUALITY: return "IWN_CMD_LINK_QUALITY";
case IWN_CMD_SET_LED: return "IWN_CMD_SET_LED"; case IWN_CMD_SET_LED: return "IWN_CMD_SET_LED";
case IWN5000_CMD_WIMAX_COEX: return "IWN5000_CMD_WIMAX_COEX"; case IWN5000_CMD_WIMAX_COEX: return "IWN5000_CMD_WIMAX_COEX";
case IWN_TEMP_NOTIFICATION: return "IWN_TEMP_NOTIFICATION";
case IWN5000_CMD_CALIB_CONFIG: return "IWN5000_CMD_CALIB_CONFIG"; case IWN5000_CMD_CALIB_CONFIG: return "IWN5000_CMD_CALIB_CONFIG";
case IWN5000_CMD_CALIB_RESULT: return "IWN5000_CMD_CALIB_RESULT"; case IWN5000_CMD_CALIB_RESULT: return "IWN5000_CMD_CALIB_RESULT";
case IWN5000_CMD_CALIB_COMPLETE: return "IWN5000_CMD_CALIB_COMPLETE"; case IWN5000_CMD_CALIB_COMPLETE: return "IWN5000_CMD_CALIB_COMPLETE";
@@ -13,7 +13,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* *
* $FreeBSD$ * $FreeBSD: releng/12.0/sys/dev/iwn/if_iwn_devid.h 335812 2018-06-30 04:30:08Z eadler $
*/ */
#ifndef __IF_IWN_DEVID_H__ #ifndef __IF_IWN_DEVID_H__
@@ -13,7 +13,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* *
* $FreeBSD$ * $FreeBSD: releng/12.0/sys/dev/iwn/if_iwn_ioctl.h 287312 2015-08-30 21:54:33Z adrian $
*/ */
#ifndef __IF_IWN_IOCTL_H__ #ifndef __IF_IWN_IOCTL_H__
#define __IF_IWN_IOCTL_H__ #define __IF_IWN_IOCTL_H__
@@ -1,4 +1,4 @@
/* $FreeBSD$ */ /* $FreeBSD: releng/12.0/sys/dev/iwn/if_iwnreg.h 315958 2017-03-25 15:57:47Z avos $ */
/* $OpenBSD: if_iwnreg.h,v 1.40 2010/05/05 19:41:57 damien Exp $ */ /* $OpenBSD: if_iwnreg.h,v 1.40 2010/05/05 19:41:57 damien Exp $ */
/*- /*-
@@ -617,6 +617,34 @@ struct iwn_rxon {
#define IWN4965_RXONSZ (sizeof (struct iwn_rxon) - 6) #define IWN4965_RXONSZ (sizeof (struct iwn_rxon) - 6)
#define IWN5000_RXONSZ (sizeof (struct iwn_rxon)) #define IWN5000_RXONSZ (sizeof (struct iwn_rxon))
/* Structure for command IWN_CMD_RXON_ASSOC (4965AGN only.) */
struct iwn4965_rxon_assoc {
uint32_t flags;
uint32_t filter;
uint8_t ofdm_mask;
uint8_t cck_mask;
uint8_t ht_single_mask;
uint8_t ht_dual_mask;
uint16_t rxchain;
uint16_t reserved;
} __packed;
/* Structure for command IWN_CMD_RXON_ASSOC (5000 Series only.) */
struct iwn5000_rxon_assoc {
uint32_t flags;
uint32_t filter;
uint8_t ofdm_mask;
uint8_t cck_mask;
uint16_t reserved1;
uint8_t ht_single_mask;
uint8_t ht_dual_mask;
uint8_t ht_triple_mask;
uint8_t reserved2;
uint16_t rxchain;
uint16_t acquisition;
uint32_t reserved3;
} __packed;
/* Structure for command IWN_CMD_ASSOCIATE. */ /* Structure for command IWN_CMD_ASSOCIATE. */
struct iwn_assoc { struct iwn_assoc {
uint32_t flags; uint32_t flags;
@@ -662,13 +690,15 @@ struct iwn_node_info {
uint8_t macaddr[IEEE80211_ADDR_LEN]; uint8_t macaddr[IEEE80211_ADDR_LEN];
uint16_t reserved2; uint16_t reserved2;
uint8_t id; uint8_t id;
#define IWN_ID_BSS 0 #define IWN_ID_BSS 0
#define IWN_STA_ID 1 #define IWN_STA_ID 1
#define IWN_PAN_ID_BCAST 14 #define IWN_PAN_ID_BCAST 14
#define IWN5000_ID_BROADCAST 15 #define IWN5000_ID_BROADCAST 15
#define IWN4965_ID_BROADCAST 31 #define IWN4965_ID_BROADCAST 31
#define IWN_ID_UNDEFINED (uint8_t)-1
uint8_t flags; uint8_t flags;
#define IWN_FLAG_SET_KEY (1 << 0) #define IWN_FLAG_SET_KEY (1 << 0)
#define IWN_FLAG_SET_DISABLE_TID (1 << 1) #define IWN_FLAG_SET_DISABLE_TID (1 << 1)
@@ -736,6 +766,10 @@ struct iwn4965_node_info {
uint32_t reserved7; uint32_t reserved7;
} __packed; } __packed;
#define IWN_RFLAG_RATE 0xff
#define IWN_RFLAG_RATE_MCS 0x1f
#define IWN_RFLAG_HT40_DUP 0x20
#define IWN_RFLAG_MCS (1 << 8) #define IWN_RFLAG_MCS (1 << 8)
#define IWN_RFLAG_CCK (1 << 9) #define IWN_RFLAG_CCK (1 << 9)
#define IWN_RFLAG_GREENFIELD (1 << 10) #define IWN_RFLAG_GREENFIELD (1 << 10)
@@ -1,4 +1,4 @@
/* $FreeBSD$ */ /* $FreeBSD: releng/12.0/sys/dev/iwn/if_iwnvar.h 314923 2017-03-08 22:49:22Z avos $ */
/* $OpenBSD: if_iwnvar.h,v 1.18 2010/04/30 16:06:46 damien Exp $ */ /* $OpenBSD: if_iwnvar.h,v 1.18 2010/04/30 16:06:46 damien Exp $ */
/*- /*-
@@ -206,10 +206,10 @@ struct iwn_ops {
uint16_t); uint16_t);
int (*get_temperature)(struct iwn_softc *); int (*get_temperature)(struct iwn_softc *);
int (*get_rssi)(struct iwn_softc *, struct iwn_rx_stat *); int (*get_rssi)(struct iwn_softc *, struct iwn_rx_stat *);
int (*set_txpower)(struct iwn_softc *, int (*set_txpower)(struct iwn_softc *, int);
struct ieee80211_channel *, int);
int (*init_gains)(struct iwn_softc *); int (*init_gains)(struct iwn_softc *);
int (*set_gains)(struct iwn_softc *); int (*set_gains)(struct iwn_softc *);
int (*rxon_assoc)(struct iwn_softc *, int);
int (*add_node)(struct iwn_softc *, struct iwn_node_info *, int (*add_node)(struct iwn_softc *, struct iwn_node_info *,
int); int);
void (*tx_done)(struct iwn_softc *, struct iwn_rx_desc *, void (*tx_done)(struct iwn_softc *, struct iwn_rx_desc *,
@@ -305,8 +305,7 @@ struct iwn_softc {
int sc_cap_off; /* PCIe Capabilities. */ int sc_cap_off; /* PCIe Capabilities. */
/* Tasks used by the driver */ /* Tasks used by the driver */
struct task sc_radioon_task; struct task sc_rftoggle_task;
struct task sc_radiooff_task;
struct task sc_panic_task; struct task sc_panic_task;
struct task sc_xmit_task; struct task sc_xmit_task;
@@ -405,11 +404,6 @@ struct iwn_softc {
struct iwn_rx_radiotap_header sc_rxtap; struct iwn_rx_radiotap_header sc_rxtap;
struct iwn_tx_radiotap_header sc_txtap; struct iwn_tx_radiotap_header sc_txtap;
#if defined(__HAIKU__)
uint32_t sc_intr_status_1;
uint32_t sc_intr_status_2;
#endif
/* The power save level originally configured by user */ /* The power save level originally configured by user */
int desired_pwrsave_level; int desired_pwrsave_level;
@@ -431,6 +425,11 @@ struct iwn_softc {
* frames whilst waiting for beacons.) * frames whilst waiting for beacons.)
*/ */
struct mbufq sc_xmit_queue; struct mbufq sc_xmit_queue;
#if defined(__HAIKU__)
uint32_t sc_intr_status_1;
uint32_t sc_intr_status_2;
#endif
}; };
#define IWN_LOCK_INIT(_sc) \ #define IWN_LOCK_INIT(_sc) \