From 617f8b101e7f7baf049762cbc3cd3e4ffe133ea4 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Mon, 20 Feb 2017 02:08:08 +0000 Subject: [net80211] RX parameter shuffle in net80211 in preparation for 4x4 NICs and 160MHz channels. * Migrate the rx_params stuff out from ieee80211_freebsd.h where it doesn't belong - this isn't freebsd specific anymore. * Don't use a hard-coded number of chains in the ioctl header; now we can shuffle MAX_CHAINS around so it can be used in the right spot. * Extend the signal/noisefloor levels in the mimo stats struct to userland to include the signal and noisefloor levels for each 20MHz slice of a 160MHz channel. * Bump the number of EVM pilots in preparation for 4x4 and 160MHz channels. Tested: * ath(4), STA mode * iwn(4), STA mode * local ath10k port, STA mode TODO: * 11ax chips will come with 5GHz 8x8 hardware for lots of MU-MIMO - I'll re-bump it at that point. Note: * This breaks the driver and ifconfig ABI; please recompile the kernel, ifconfig and wpa_supplicant/hostapd. --- sys/dev/iwn/if_iwn.c | 7 +++++++ sys/dev/mwl/if_mwl.c | 12 ++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'sys/dev') diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c index a40e6223d5dac..56d71e8029e94 100644 --- a/sys/dev/iwn/if_iwn.c +++ b/sys/dev/iwn/if_iwn.c @@ -4402,6 +4402,13 @@ iwn_tx_data(struct iwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni) tid = 0; } ac = M_WME_GETAC(m); + + /* + * XXX TODO: Group addressed frames aren't aggregated and must + * go to the normal non-aggregation queue, and have a NONQOS TID + * assigned from net80211. + */ + if (m->m_flags & M_AMPDU_MPDU) { uint16_t seqno; struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[ac]; diff --git a/sys/dev/mwl/if_mwl.c b/sys/dev/mwl/if_mwl.c index 1027eb0524db4..79172aaf7bd72 100644 --- a/sys/dev/mwl/if_mwl.c +++ b/sys/dev/mwl/if_mwl.c @@ -2434,13 +2434,13 @@ mwl_node_getmimoinfo(const struct ieee80211_node *ni, if (mn->mn_ai.rssi_c > rssi_max) rssi_max = mn->mn_ai.rssi_c; - CVT(mi->rssi[0], mn->mn_ai.rssi_a); - CVT(mi->rssi[1], mn->mn_ai.rssi_b); - CVT(mi->rssi[2], mn->mn_ai.rssi_c); + CVT(mi->ch[0].rssi[0], mn->mn_ai.rssi_a); + CVT(mi->ch[1].rssi[0], mn->mn_ai.rssi_b); + CVT(mi->ch[2].rssi[0], mn->mn_ai.rssi_c); - mi->noise[0] = mn->mn_ai.nf_a; - mi->noise[1] = mn->mn_ai.nf_b; - mi->noise[2] = mn->mn_ai.nf_c; + mi->ch[0].noise[0] = mn->mn_ai.nf_a; + mi->ch[1].noise[0] = mn->mn_ai.nf_b; + mi->ch[2].noise[0] = mn->mn_ai.nf_c; #undef CVT } -- cgit v1.3