Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
ath.git patches for 4.17. Major changes: wil6210 * support multiple virtual interfaces
This commit is contained in:
@@ -88,7 +88,7 @@ static const struct ieee80211_channel ath9k_5ghz_chantable[] = {
|
||||
CHAN5G(5825, 37), /* Channel 165 */
|
||||
};
|
||||
|
||||
/* Atheros hardware rate code addition for short premble */
|
||||
/* Atheros hardware rate code addition for short preamble */
|
||||
#define SHPCHECK(__hw_rate, __flags) \
|
||||
((__flags & IEEE80211_RATE_SHORT_PREAMBLE) ? (__hw_rate | 0x04 ) : 0)
|
||||
|
||||
|
@@ -479,14 +479,16 @@ ath_cmn_is_fft_buf_full(struct ath_spec_scan_priv *spec_priv)
|
||||
{
|
||||
int i = 0;
|
||||
int ret = 0;
|
||||
struct rchan_buf *buf;
|
||||
struct rchan *rc = spec_priv->rfs_chan_spec_scan;
|
||||
|
||||
for_each_online_cpu(i)
|
||||
ret += relay_buf_full(*per_cpu_ptr(rc->buf, i));
|
||||
for_each_possible_cpu(i) {
|
||||
if ((buf = *per_cpu_ptr(rc->buf, i))) {
|
||||
ret += relay_buf_full(buf);
|
||||
}
|
||||
}
|
||||
|
||||
i = num_online_cpus();
|
||||
|
||||
if (ret == i)
|
||||
if (ret)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
|
@@ -184,7 +184,8 @@ u16 ath9k_hw_computetxtime(struct ath_hw *ah,
|
||||
break;
|
||||
case WLAN_RC_PHY_OFDM:
|
||||
if (ah->curchan && IS_CHAN_QUARTER_RATE(ah->curchan)) {
|
||||
bitsPerSymbol = (kbps * OFDM_SYMBOL_TIME_QUARTER) / 1000;
|
||||
bitsPerSymbol =
|
||||
((kbps >> 2) * OFDM_SYMBOL_TIME_QUARTER) / 1000;
|
||||
numBits = OFDM_PLCP_BITS + (frameLen << 3);
|
||||
numSymbols = DIV_ROUND_UP(numBits, bitsPerSymbol);
|
||||
txTime = OFDM_SIFS_TIME_QUARTER
|
||||
@@ -192,7 +193,8 @@ u16 ath9k_hw_computetxtime(struct ath_hw *ah,
|
||||
+ (numSymbols * OFDM_SYMBOL_TIME_QUARTER);
|
||||
} else if (ah->curchan &&
|
||||
IS_CHAN_HALF_RATE(ah->curchan)) {
|
||||
bitsPerSymbol = (kbps * OFDM_SYMBOL_TIME_HALF) / 1000;
|
||||
bitsPerSymbol =
|
||||
((kbps >> 1) * OFDM_SYMBOL_TIME_HALF) / 1000;
|
||||
numBits = OFDM_PLCP_BITS + (frameLen << 3);
|
||||
numSymbols = DIV_ROUND_UP(numBits, bitsPerSymbol);
|
||||
txTime = OFDM_SIFS_TIME_HALF +
|
||||
@@ -1036,7 +1038,7 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
|
||||
int acktimeout, ctstimeout, ack_offset = 0;
|
||||
int slottime;
|
||||
int sifstime;
|
||||
int rx_lat = 0, tx_lat = 0, eifs = 0;
|
||||
int rx_lat = 0, tx_lat = 0, eifs = 0, ack_shift = 0;
|
||||
u32 reg;
|
||||
|
||||
ath_dbg(ath9k_hw_common(ah), RESET, "ah->misc_mode 0x%x\n",
|
||||
@@ -1068,6 +1070,7 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
|
||||
|
||||
sifstime = 32;
|
||||
ack_offset = 16;
|
||||
ack_shift = 3;
|
||||
slottime = 13;
|
||||
} else if (IS_CHAN_QUARTER_RATE(chan)) {
|
||||
eifs = 340;
|
||||
@@ -1078,6 +1081,7 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
|
||||
|
||||
sifstime = 64;
|
||||
ack_offset = 32;
|
||||
ack_shift = 1;
|
||||
slottime = 21;
|
||||
} else {
|
||||
if (AR_SREV_9287(ah) && AR_SREV_9287_13_OR_LATER(ah)) {
|
||||
@@ -1134,6 +1138,10 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
|
||||
SM(tx_lat, AR_USEC_TX_LAT),
|
||||
AR_USEC_TX_LAT | AR_USEC_RX_LAT | AR_USEC_USEC);
|
||||
|
||||
if (IS_CHAN_HALF_RATE(chan) || IS_CHAN_QUARTER_RATE(chan))
|
||||
REG_RMW(ah, AR_TXSIFS,
|
||||
sifstime | SM(ack_shift, AR_TXSIFS_ACK_SHIFT),
|
||||
(AR_TXSIFS_TIME | AR_TXSIFS_ACK_SHIFT));
|
||||
}
|
||||
EXPORT_SYMBOL(ath9k_hw_init_global_settings);
|
||||
|
||||
|
@@ -2892,6 +2892,8 @@ void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an)
|
||||
struct ath_txq *txq;
|
||||
int tidno;
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
for (tidno = 0; tidno < IEEE80211_NUM_TIDS; tidno++) {
|
||||
tid = ath_node_to_tid(an, tidno);
|
||||
txq = tid->txq;
|
||||
@@ -2909,6 +2911,8 @@ void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an)
|
||||
if (!an->sta)
|
||||
break; /* just one multicast ath_atx_tid */
|
||||
}
|
||||
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ATH9K_TX99
|
||||
|
Reference in New Issue
Block a user