Merge git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git
Stephen Rothwell reported quite a few conflicts in iwlwifi between wireless-drivers and wireless-drivers-next. To avoid any problems later in other trees merge w-d to w-d-next to fix those conflicts early.
This commit is contained in:
@@ -841,8 +841,10 @@ static int iwl_mvm_sar_get_wgds_table(struct iwl_mvm *mvm)
|
||||
|
||||
entry = &wifi_pkg->package.elements[idx++];
|
||||
if ((entry->type != ACPI_TYPE_INTEGER) ||
|
||||
(entry->integer.value > U8_MAX))
|
||||
return -EINVAL;
|
||||
(entry->integer.value > U8_MAX)) {
|
||||
ret = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
mvm->geo_profiles[i].values[j] = entry->integer.value;
|
||||
}
|
||||
|
@@ -2553,8 +2553,18 @@ static void iwl_mvm_purge_deferred_tx_frames(struct iwl_mvm *mvm,
|
||||
spin_lock_bh(&mvm_sta->lock);
|
||||
for (i = 0; i <= IWL_MAX_TID_COUNT; i++) {
|
||||
tid_data = &mvm_sta->tid_data[i];
|
||||
while ((skb = __skb_dequeue(&tid_data->deferred_tx_frames)))
|
||||
|
||||
while ((skb = __skb_dequeue(&tid_data->deferred_tx_frames))) {
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
|
||||
/*
|
||||
* The first deferred frame should've stopped the MAC
|
||||
* queues, so we should never get a second deferred
|
||||
* frame for the RA/TID.
|
||||
*/
|
||||
iwl_mvm_start_mac_queues(mvm, info->hw_queue);
|
||||
ieee80211_free_txskb(mvm->hw, skb);
|
||||
}
|
||||
}
|
||||
spin_unlock_bh(&mvm_sta->lock);
|
||||
}
|
||||
|
@@ -1336,7 +1336,7 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
|
||||
* first index into rate scale table.
|
||||
*/
|
||||
if (info->flags & IEEE80211_TX_STAT_AMPDU) {
|
||||
rs_collect_tpc_data(mvm, lq_sta, curr_tbl, lq_rate.index,
|
||||
rs_collect_tpc_data(mvm, lq_sta, curr_tbl, tx_resp_rate.index,
|
||||
info->status.ampdu_len,
|
||||
info->status.ampdu_ack_len,
|
||||
reduced_txp);
|
||||
@@ -1357,8 +1357,7 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
|
||||
if (info->status.ampdu_ack_len == 0)
|
||||
info->status.ampdu_len = 1;
|
||||
|
||||
rs_collect_tlc_data(mvm, mvmsta, tid, curr_tbl,
|
||||
lq_rate.index,
|
||||
rs_collect_tlc_data(mvm, mvmsta, tid, curr_tbl, tx_resp_rate.index,
|
||||
info->status.ampdu_len,
|
||||
info->status.ampdu_ack_len);
|
||||
|
||||
@@ -1394,11 +1393,11 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
|
||||
continue;
|
||||
|
||||
rs_collect_tpc_data(mvm, lq_sta, tmp_tbl,
|
||||
lq_rate.index, 1,
|
||||
tx_resp_rate.index, 1,
|
||||
i < retries ? 0 : legacy_success,
|
||||
reduced_txp);
|
||||
rs_collect_tlc_data(mvm, mvmsta, tid, tmp_tbl,
|
||||
lq_rate.index, 1,
|
||||
tx_resp_rate.index, 1,
|
||||
i < retries ? 0 : legacy_success);
|
||||
}
|
||||
|
||||
|
@@ -635,9 +635,9 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
|
||||
|
||||
baid_data = rcu_dereference(mvm->baid_map[baid]);
|
||||
if (!baid_data) {
|
||||
WARN(!(reorder & IWL_RX_MPDU_REORDER_BA_OLD_SN),
|
||||
"Received baid %d, but no data exists for this BAID - reorder data 0x%x\n",
|
||||
baid, reorder);
|
||||
IWL_DEBUG_RX(mvm,
|
||||
"Got valid BAID but no baid allocated, bypass the re-ordering buffer. Baid %d reorder 0x%x\n",
|
||||
baid, reorder);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -758,9 +758,9 @@ static void iwl_mvm_agg_rx_received(struct iwl_mvm *mvm,
|
||||
|
||||
data = rcu_dereference(mvm->baid_map[baid]);
|
||||
if (!data) {
|
||||
WARN(!(reorder_data & IWL_RX_MPDU_REORDER_BA_OLD_SN),
|
||||
"OLD_SN isn't set, but no data exists for baid %d - reorder data 0x%x\n",
|
||||
baid, reorder_data);
|
||||
IWL_DEBUG_RX(mvm,
|
||||
"Got valid BAID but no baid allocated, bypass the re-ordering buffer. Baid %d reorder 0x%x\n",
|
||||
baid, reorder_data);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@@ -121,7 +121,8 @@ int iwl_mvm_sta_send_to_fw(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
|
||||
.mac_id_n_color = cpu_to_le32(mvm_sta->mac_id_n_color),
|
||||
.add_modify = update ? 1 : 0,
|
||||
.station_flags_msk = cpu_to_le32(STA_FLG_FAT_EN_MSK |
|
||||
STA_FLG_MIMO_EN_MSK),
|
||||
STA_FLG_MIMO_EN_MSK |
|
||||
STA_FLG_RTS_MIMO_PROT),
|
||||
.tid_disable_tx = cpu_to_le16(mvm_sta->tid_disable_agg),
|
||||
};
|
||||
int ret;
|
||||
@@ -290,8 +291,8 @@ static void iwl_mvm_rx_agg_session_expired(unsigned long data)
|
||||
goto unlock;
|
||||
|
||||
mvm_sta = iwl_mvm_sta_from_mac80211(sta);
|
||||
ieee80211_stop_rx_ba_session_offl(mvm_sta->vif,
|
||||
sta->addr, ba_data->tid);
|
||||
ieee80211_rx_ba_timer_expired(mvm_sta->vif,
|
||||
sta->addr, ba_data->tid);
|
||||
unlock:
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
@@ -184,8 +184,14 @@ static u16 iwl_mvm_tx_csum(struct iwl_mvm *mvm, struct sk_buff *skb,
|
||||
else
|
||||
udp_hdr(skb)->check = 0;
|
||||
|
||||
/* mac header len should include IV, size is in words */
|
||||
if (info->control.hw_key)
|
||||
/*
|
||||
* mac header len should include IV, size is in words unless
|
||||
* the IV is added by the firmware like in WEP.
|
||||
* In new Tx API, the IV is always added by the firmware.
|
||||
*/
|
||||
if (!iwl_mvm_has_new_tx_api(mvm) && info->control.hw_key &&
|
||||
info->control.hw_key->cipher != WLAN_CIPHER_SUITE_WEP40 &&
|
||||
info->control.hw_key->cipher != WLAN_CIPHER_SUITE_WEP104)
|
||||
mh_len += info->control.hw_key->iv_len;
|
||||
mh_len /= 2;
|
||||
offload_assist |= mh_len << TX_CMD_OFFLD_MH_SIZE;
|
||||
@@ -1735,6 +1741,8 @@ void iwl_mvm_rx_ba_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb)
|
||||
struct iwl_mvm_tid_data *tid_data;
|
||||
struct iwl_mvm_sta *mvmsta;
|
||||
|
||||
ba_info.flags = IEEE80211_TX_STAT_AMPDU;
|
||||
|
||||
if (iwl_mvm_has_new_tx_api(mvm)) {
|
||||
struct iwl_mvm_compressed_ba_notif *ba_res =
|
||||
(void *)pkt->data;
|
||||
|
Viittaa uudesa ongelmassa
Block a user