Commit 3cd32dde authored by Kalle Valo's avatar Kalle Valo

Merge branch 'ath-current' into ath-next

Commit 3c97f5de ("ath10k: implement NAPI support") conflicts with
ath-current. To avoid any merge problems merge ath-current to ath-next already now.

Conflicts:
	drivers/net/wireless/ath/ath10k/htt_rx.c
parents 78a9e170 e34f2ff4
...@@ -1520,7 +1520,7 @@ static void ath10k_htt_rx_h_filter(struct ath10k *ar, ...@@ -1520,7 +1520,7 @@ static void ath10k_htt_rx_h_filter(struct ath10k *ar,
static int ath10k_htt_rx_handle_amsdu(struct ath10k_htt *htt) static int ath10k_htt_rx_handle_amsdu(struct ath10k_htt *htt)
{ {
struct ath10k *ar = htt->ar; struct ath10k *ar = htt->ar;
static struct ieee80211_rx_status rx_status; struct ieee80211_rx_status *rx_status = &htt->rx_status;
struct sk_buff_head amsdu; struct sk_buff_head amsdu;
int ret, num_msdus; int ret, num_msdus;
...@@ -1545,11 +1545,11 @@ static int ath10k_htt_rx_handle_amsdu(struct ath10k_htt *htt) ...@@ -1545,11 +1545,11 @@ static int ath10k_htt_rx_handle_amsdu(struct ath10k_htt *htt)
} }
num_msdus = skb_queue_len(&amsdu); num_msdus = skb_queue_len(&amsdu);
ath10k_htt_rx_h_ppdu(ar, &amsdu, &rx_status, 0xffff); ath10k_htt_rx_h_ppdu(ar, &amsdu, rx_status, 0xffff);
ath10k_htt_rx_h_unchain(ar, &amsdu, ret > 0); ath10k_htt_rx_h_unchain(ar, &amsdu, ret > 0);
ath10k_htt_rx_h_filter(ar, &amsdu, &rx_status); ath10k_htt_rx_h_filter(ar, &amsdu, rx_status);
ath10k_htt_rx_h_mpdu(ar, &amsdu, &rx_status); ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status);
ath10k_htt_rx_h_deliver(ar, &amsdu, &rx_status); ath10k_htt_rx_h_deliver(ar, &amsdu, rx_status);
return num_msdus; return num_msdus;
} }
......
...@@ -3181,7 +3181,6 @@ static int ath10k_pci_probe(struct pci_dev *pdev, ...@@ -3181,7 +3181,6 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
pci_hard_reset = ath10k_pci_qca988x_chip_reset; pci_hard_reset = ath10k_pci_qca988x_chip_reset;
break; break;
case QCA9887_1_0_DEVICE_ID: case QCA9887_1_0_DEVICE_ID:
dev_warn(&pdev->dev, "QCA9887 support is still experimental, there are likely bugs. You have been warned.\n");
hw_rev = ATH10K_HW_QCA9887; hw_rev = ATH10K_HW_QCA9887;
pci_ps = false; pci_ps = false;
pci_soft_reset = ath10k_pci_warm_reset; pci_soft_reset = ath10k_pci_warm_reset;
......
...@@ -2482,6 +2482,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah) ...@@ -2482,6 +2482,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)
return -EINVAL; return -EINVAL;
} }
ath9k_gpio_cap_init(ah);
if (AR_SREV_9485(ah) || if (AR_SREV_9485(ah) ||
AR_SREV_9285(ah) || AR_SREV_9285(ah) ||
AR_SREV_9330(ah) || AR_SREV_9330(ah) ||
...@@ -2531,8 +2533,6 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah) ...@@ -2531,8 +2533,6 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)
else else
pCap->hw_caps &= ~ATH9K_HW_CAP_HT; pCap->hw_caps &= ~ATH9K_HW_CAP_HT;
ath9k_gpio_cap_init(ah);
if (AR_SREV_9160_10_OR_LATER(ah) || AR_SREV_9100(ah)) if (AR_SREV_9160_10_OR_LATER(ah) || AR_SREV_9100(ah))
pCap->rts_aggr_limit = ATH_AMPDU_LIMIT_MAX; pCap->rts_aggr_limit = ATH_AMPDU_LIMIT_MAX;
else else
......
...@@ -718,9 +718,12 @@ static int ath9k_start(struct ieee80211_hw *hw) ...@@ -718,9 +718,12 @@ static int ath9k_start(struct ieee80211_hw *hw)
if (!ath_complete_reset(sc, false)) if (!ath_complete_reset(sc, false))
ah->reset_power_on = false; ah->reset_power_on = false;
if (ah->led_pin >= 0) if (ah->led_pin >= 0) {
ath9k_hw_set_gpio(ah, ah->led_pin, ath9k_hw_set_gpio(ah, ah->led_pin,
(ah->config.led_active_high) ? 1 : 0); (ah->config.led_active_high) ? 1 : 0);
ath9k_hw_gpio_request_out(ah, ah->led_pin, NULL,
AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
}
/* /*
* Reset key cache to sane defaults (all entries cleared) instead of * Reset key cache to sane defaults (all entries cleared) instead of
...@@ -864,9 +867,11 @@ static void ath9k_stop(struct ieee80211_hw *hw) ...@@ -864,9 +867,11 @@ static void ath9k_stop(struct ieee80211_hw *hw)
spin_lock_bh(&sc->sc_pcu_lock); spin_lock_bh(&sc->sc_pcu_lock);
if (ah->led_pin >= 0) if (ah->led_pin >= 0) {
ath9k_hw_set_gpio(ah, ah->led_pin, ath9k_hw_set_gpio(ah, ah->led_pin,
(ah->config.led_active_high) ? 0 : 1); (ah->config.led_active_high) ? 0 : 1);
ath9k_hw_gpio_request_in(ah, ah->led_pin, NULL);
}
ath_prepare_reset(sc); ath_prepare_reset(sc);
...@@ -1154,6 +1159,7 @@ void ath9k_calculate_summary_state(struct ath_softc *sc, ...@@ -1154,6 +1159,7 @@ void ath9k_calculate_summary_state(struct ath_softc *sc,
bool changed = (iter_data.primary_sta != ctx->primary_sta); bool changed = (iter_data.primary_sta != ctx->primary_sta);
if (iter_data.primary_sta) { if (iter_data.primary_sta) {
iter_data.primary_beacon_vif = iter_data.primary_sta;
iter_data.beacons = true; iter_data.beacons = true;
ath9k_set_assoc_state(sc, iter_data.primary_sta, ath9k_set_assoc_state(sc, iter_data.primary_sta,
changed); changed);
...@@ -1563,13 +1569,13 @@ static int ath9k_sta_state(struct ieee80211_hw *hw, ...@@ -1563,13 +1569,13 @@ static int ath9k_sta_state(struct ieee80211_hw *hw,
struct ath_common *common = ath9k_hw_common(sc->sc_ah); struct ath_common *common = ath9k_hw_common(sc->sc_ah);
int ret = 0; int ret = 0;
if (old_state == IEEE80211_STA_AUTH && if (old_state == IEEE80211_STA_NOTEXIST &&
new_state == IEEE80211_STA_ASSOC) { new_state == IEEE80211_STA_NONE) {
ret = ath9k_sta_add(hw, vif, sta); ret = ath9k_sta_add(hw, vif, sta);
ath_dbg(common, CONFIG, ath_dbg(common, CONFIG,
"Add station: %pM\n", sta->addr); "Add station: %pM\n", sta->addr);
} else if (old_state == IEEE80211_STA_ASSOC && } else if (old_state == IEEE80211_STA_NONE &&
new_state == IEEE80211_STA_AUTH) { new_state == IEEE80211_STA_NOTEXIST) {
ret = ath9k_sta_remove(hw, vif, sta); ret = ath9k_sta_remove(hw, vif, sta);
ath_dbg(common, CONFIG, ath_dbg(common, CONFIG,
"Remove station: %pM\n", sta->addr); "Remove station: %pM\n", sta->addr);
......
...@@ -205,7 +205,8 @@ mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv, ...@@ -205,7 +205,8 @@ mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv,
do { do {
/* Check if AMSDU can accommodate this MSDU */ /* Check if AMSDU can accommodate this MSDU */
if (skb_tailroom(skb_aggr) < (skb_src->len + LLC_SNAP_LEN)) if ((skb_aggr->len + skb_src->len + LLC_SNAP_LEN) >
adapter->tx_buf_size)
break; break;
skb_src = skb_dequeue(&pra_list->skb_head); skb_src = skb_dequeue(&pra_list->skb_head);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment