Skip to content

Commit 79201f3

Browse files
committed
Merge tag 'wireless-drivers-next-2021-02-12' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valo says: ==================== wireless-drivers-next patches for v5.12 Second set of patches for v5.12. Last time there was a smaller pull request so unsurprisingly this time we have a big one. mt76 has new hardware support and lots of new features, iwlwifi getting new features and rtw88 got NAPI support. And the usual cleanups and fixes all over. Major changes: ath10k * support setting SAR limits via nl80211 rtw88 * support 8821 RFE type2 devices * NAPI support iwlwifi * add new FW API support * support for new So devices * support for RF interference mitigation (RFI) * support for PNVM (Platform Non-Volatile Memory, a firmware data file) from BIOS mt76 * add new mt7921e driver * 802.11 encap offload support * support for multiple pcie gen1 host interfaces on 7915 * 7915 testmode support * 7915 txbf support brcmfmac * support for CQM RSSI notifications wil6210 * support for extended DMG MCS 12.1 rate ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 295f830 + 9d08334 commit 79201f3

File tree

224 files changed

+40724
-13053
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

224 files changed

+40724
-13053
lines changed

drivers/net/wireless/ath/ath10k/core.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
9090
.hw_filter_reset_required = true,
9191
.fw_diag_ce_download = false,
9292
.tx_stats_over_pktlog = true,
93+
.dynamic_sar_support = false,
9394
},
9495
{
9596
.id = QCA988X_HW_2_0_VERSION,
@@ -124,6 +125,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
124125
.hw_filter_reset_required = true,
125126
.fw_diag_ce_download = false,
126127
.tx_stats_over_pktlog = true,
128+
.dynamic_sar_support = false,
127129
},
128130
{
129131
.id = QCA9887_HW_1_0_VERSION,
@@ -159,6 +161,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
159161
.hw_filter_reset_required = true,
160162
.fw_diag_ce_download = false,
161163
.tx_stats_over_pktlog = false,
164+
.dynamic_sar_support = false,
162165
},
163166
{
164167
.id = QCA6174_HW_3_2_VERSION,
@@ -189,6 +192,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
189192
.tx_stats_over_pktlog = false,
190193
.bmi_large_size_download = true,
191194
.supports_peer_stats_info = true,
195+
.dynamic_sar_support = true,
192196
},
193197
{
194198
.id = QCA6174_HW_2_1_VERSION,
@@ -223,6 +227,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
223227
.hw_filter_reset_required = true,
224228
.fw_diag_ce_download = false,
225229
.tx_stats_over_pktlog = false,
230+
.dynamic_sar_support = false,
226231
},
227232
{
228233
.id = QCA6174_HW_2_1_VERSION,
@@ -257,6 +262,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
257262
.hw_filter_reset_required = true,
258263
.fw_diag_ce_download = false,
259264
.tx_stats_over_pktlog = false,
265+
.dynamic_sar_support = false,
260266
},
261267
{
262268
.id = QCA6174_HW_3_0_VERSION,
@@ -291,6 +297,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
291297
.hw_filter_reset_required = true,
292298
.fw_diag_ce_download = false,
293299
.tx_stats_over_pktlog = false,
300+
.dynamic_sar_support = false,
294301
},
295302
{
296303
.id = QCA6174_HW_3_2_VERSION,
@@ -329,6 +336,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
329336
.fw_diag_ce_download = true,
330337
.tx_stats_over_pktlog = false,
331338
.supports_peer_stats_info = true,
339+
.dynamic_sar_support = true,
332340
},
333341
{
334342
.id = QCA99X0_HW_2_0_DEV_VERSION,
@@ -369,6 +377,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
369377
.hw_filter_reset_required = true,
370378
.fw_diag_ce_download = false,
371379
.tx_stats_over_pktlog = false,
380+
.dynamic_sar_support = false,
372381
},
373382
{
374383
.id = QCA9984_HW_1_0_DEV_VERSION,
@@ -416,6 +425,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
416425
.hw_filter_reset_required = true,
417426
.fw_diag_ce_download = false,
418427
.tx_stats_over_pktlog = false,
428+
.dynamic_sar_support = false,
419429
},
420430
{
421431
.id = QCA9888_HW_2_0_DEV_VERSION,
@@ -460,6 +470,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
460470
.hw_filter_reset_required = true,
461471
.fw_diag_ce_download = false,
462472
.tx_stats_over_pktlog = false,
473+
.dynamic_sar_support = false,
463474
},
464475
{
465476
.id = QCA9377_HW_1_0_DEV_VERSION,
@@ -494,6 +505,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
494505
.hw_filter_reset_required = true,
495506
.fw_diag_ce_download = false,
496507
.tx_stats_over_pktlog = false,
508+
.dynamic_sar_support = false,
497509
},
498510
{
499511
.id = QCA9377_HW_1_1_DEV_VERSION,
@@ -530,6 +542,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
530542
.hw_filter_reset_required = true,
531543
.fw_diag_ce_download = true,
532544
.tx_stats_over_pktlog = false,
545+
.dynamic_sar_support = false,
533546
},
534547
{
535548
.id = QCA9377_HW_1_1_DEV_VERSION,
@@ -557,6 +570,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
557570
.ast_skid_limit = 0x10,
558571
.num_wds_entries = 0x20,
559572
.uart_pin_workaround = true,
573+
.dynamic_sar_support = false,
560574
},
561575
{
562576
.id = QCA4019_HW_1_0_DEV_VERSION,
@@ -598,6 +612,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
598612
.hw_filter_reset_required = true,
599613
.fw_diag_ce_download = false,
600614
.tx_stats_over_pktlog = false,
615+
.dynamic_sar_support = false,
601616
},
602617
{
603618
.id = WCN3990_HW_1_0_DEV_VERSION,
@@ -625,6 +640,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
625640
.hw_filter_reset_required = false,
626641
.fw_diag_ce_download = false,
627642
.tx_stats_over_pktlog = false,
643+
.dynamic_sar_support = true,
628644
},
629645
};
630646

drivers/net/wireless/ath/ath10k/core.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1019,7 +1019,6 @@ struct ath10k {
10191019
enum ath10k_hw_rev hw_rev;
10201020
u16 dev_id;
10211021
u32 chip_id;
1022-
enum ath10k_dev_type dev_type;
10231022
u32 target_version;
10241023
u8 fw_version_major;
10251024
u32 fw_version_minor;
@@ -1296,6 +1295,9 @@ struct ath10k {
12961295
bool coex_support;
12971296
int coex_gpio_pin;
12981297

1298+
s32 tx_power_2g_limit;
1299+
s32 tx_power_5g_limit;
1300+
12991301
/* must be last */
13001302
u8 drv_priv[] __aligned(sizeof(void *));
13011303
};

drivers/net/wireless/ath/ath10k/debug.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ enum ath10k_debug_mask {
3434
ATH10K_DBG_USB_BULK = 0x00080000,
3535
ATH10K_DBG_SNOC = 0x00100000,
3636
ATH10K_DBG_QMI = 0x00200000,
37+
ATH10K_DBG_STA = 0x00400000,
3738
ATH10K_DBG_ANY = 0xffffffff,
3839
};
3940

drivers/net/wireless/ath/ath10k/htc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,10 @@ void ath10k_htc_rx_completion_handler(struct ath10k *ar, struct sk_buff *skb)
449449
}
450450

451451
ep = &htc->endpoint[eid];
452+
if (ep->service_id == ATH10K_HTC_SVC_ID_UNUSED) {
453+
ath10k_warn(ar, "htc rx endpoint %d is not connected\n", eid);
454+
goto out;
455+
}
452456

453457
payload_len = __le16_to_cpu(hdr->len);
454458

drivers/net/wireless/ath/ath10k/htt.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2241,7 +2241,7 @@ struct htt_rx_chan_info {
22412241
* Should be: sizeof(struct htt_host_rx_desc) + max rx MSDU size,
22422242
* rounded up to a cache line size.
22432243
*/
2244-
#define HTT_RX_BUF_SIZE 1920
2244+
#define HTT_RX_BUF_SIZE 2048
22452245
#define HTT_RX_MSDU_SIZE (HTT_RX_BUF_SIZE - (int)sizeof(struct htt_rx_desc))
22462246

22472247
/* Refill a bunch of RX buffers for each refill round so that FW/HW can handle

drivers/net/wireless/ath/ath10k/htt_rx.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2781,13 +2781,13 @@ static void ath10k_htt_rx_addba(struct ath10k *ar, struct htt_resp *resp)
27812781
peer_id = MS(info0, HTT_RX_BA_INFO0_PEER_ID);
27822782

27832783
ath10k_dbg(ar, ATH10K_DBG_HTT,
2784-
"htt rx addba tid %hu peer_id %hu size %hhu\n",
2784+
"htt rx addba tid %u peer_id %u size %u\n",
27852785
tid, peer_id, ev->window_size);
27862786

27872787
spin_lock_bh(&ar->data_lock);
27882788
peer = ath10k_peer_find_by_id(ar, peer_id);
27892789
if (!peer) {
2790-
ath10k_warn(ar, "received addba event for invalid peer_id: %hu\n",
2790+
ath10k_warn(ar, "received addba event for invalid peer_id: %u\n",
27912791
peer_id);
27922792
spin_unlock_bh(&ar->data_lock);
27932793
return;
@@ -2802,7 +2802,7 @@ static void ath10k_htt_rx_addba(struct ath10k *ar, struct htt_resp *resp)
28022802
}
28032803

28042804
ath10k_dbg(ar, ATH10K_DBG_HTT,
2805-
"htt rx start rx ba session sta %pM tid %hu size %hhu\n",
2805+
"htt rx start rx ba session sta %pM tid %u size %u\n",
28062806
peer->addr, tid, ev->window_size);
28072807

28082808
ieee80211_start_rx_ba_session_offl(arvif->vif, peer->addr, tid);
@@ -2821,13 +2821,13 @@ static void ath10k_htt_rx_delba(struct ath10k *ar, struct htt_resp *resp)
28212821
peer_id = MS(info0, HTT_RX_BA_INFO0_PEER_ID);
28222822

28232823
ath10k_dbg(ar, ATH10K_DBG_HTT,
2824-
"htt rx delba tid %hu peer_id %hu\n",
2824+
"htt rx delba tid %u peer_id %u\n",
28252825
tid, peer_id);
28262826

28272827
spin_lock_bh(&ar->data_lock);
28282828
peer = ath10k_peer_find_by_id(ar, peer_id);
28292829
if (!peer) {
2830-
ath10k_warn(ar, "received addba event for invalid peer_id: %hu\n",
2830+
ath10k_warn(ar, "received addba event for invalid peer_id: %u\n",
28312831
peer_id);
28322832
spin_unlock_bh(&ar->data_lock);
28332833
return;
@@ -2842,7 +2842,7 @@ static void ath10k_htt_rx_delba(struct ath10k *ar, struct htt_resp *resp)
28422842
}
28432843

28442844
ath10k_dbg(ar, ATH10K_DBG_HTT,
2845-
"htt rx stop rx ba session sta %pM tid %hu\n",
2845+
"htt rx stop rx ba session sta %pM tid %u\n",
28462846
peer->addr, tid);
28472847

28482848
ieee80211_stop_rx_ba_session_offl(arvif->vif, peer->addr, tid);
@@ -3102,7 +3102,7 @@ static void ath10k_htt_rx_tx_fetch_ind(struct ath10k *ar, struct sk_buff *skb)
31023102
return;
31033103
}
31043104

3105-
ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx tx fetch ind num records %hu num resps %hu seq %hu\n",
3105+
ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx tx fetch ind num records %u num resps %u seq %u\n",
31063106
num_records, num_resp_ids,
31073107
le16_to_cpu(resp->tx_fetch_ind.fetch_seq_num));
31083108

@@ -3127,12 +3127,12 @@ static void ath10k_htt_rx_tx_fetch_ind(struct ath10k *ar, struct sk_buff *skb)
31273127
max_num_msdus = le16_to_cpu(record->num_msdus);
31283128
max_num_bytes = le32_to_cpu(record->num_bytes);
31293129

3130-
ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx tx fetch record %i peer_id %hu tid %hhu msdus %zu bytes %zu\n",
3130+
ath10k_dbg(ar, ATH10K_DBG_HTT, "htt rx tx fetch record %i peer_id %u tid %u msdus %zu bytes %zu\n",
31313131
i, peer_id, tid, max_num_msdus, max_num_bytes);
31323132

31333133
if (unlikely(peer_id >= ar->htt.tx_q_state.num_peers) ||
31343134
unlikely(tid >= ar->htt.tx_q_state.num_tids)) {
3135-
ath10k_warn(ar, "received out of range peer_id %hu tid %hhu\n",
3135+
ath10k_warn(ar, "received out of range peer_id %u tid %u\n",
31363136
peer_id, tid);
31373137
continue;
31383138
}
@@ -3146,7 +3146,7 @@ static void ath10k_htt_rx_tx_fetch_ind(struct ath10k *ar, struct sk_buff *skb)
31463146
*/
31473147

31483148
if (unlikely(!txq)) {
3149-
ath10k_warn(ar, "failed to lookup txq for peer_id %hu tid %hhu\n",
3149+
ath10k_warn(ar, "failed to lookup txq for peer_id %u tid %u\n",
31503150
peer_id, tid);
31513151
continue;
31523152
}
@@ -3259,7 +3259,7 @@ static void ath10k_htt_rx_tx_mode_switch_ind(struct ath10k *ar,
32593259
threshold = MS(info1, HTT_TX_MODE_SWITCH_IND_INFO1_THRESHOLD);
32603260

32613261
ath10k_dbg(ar, ATH10K_DBG_HTT,
3262-
"htt rx tx mode switch ind info0 0x%04hx info1 0x%04hx enable %d num records %zd mode %d threshold %hu\n",
3262+
"htt rx tx mode switch ind info0 0x%04hx info1 0x%04x enable %d num records %zd mode %d threshold %u\n",
32633263
info0, info1, enable, num_records, mode, threshold);
32643264

32653265
len += sizeof(resp->tx_mode_switch_ind.records[0]) * num_records;
@@ -3296,7 +3296,7 @@ static void ath10k_htt_rx_tx_mode_switch_ind(struct ath10k *ar,
32963296

32973297
if (unlikely(peer_id >= ar->htt.tx_q_state.num_peers) ||
32983298
unlikely(tid >= ar->htt.tx_q_state.num_tids)) {
3299-
ath10k_warn(ar, "received out of range peer_id %hu tid %hhu\n",
3299+
ath10k_warn(ar, "received out of range peer_id %u tid %u\n",
33003300
peer_id, tid);
33013301
continue;
33023302
}
@@ -3310,7 +3310,7 @@ static void ath10k_htt_rx_tx_mode_switch_ind(struct ath10k *ar,
33103310
*/
33113311

33123312
if (unlikely(!txq)) {
3313-
ath10k_warn(ar, "failed to lookup txq for peer_id %hu tid %hhu\n",
3313+
ath10k_warn(ar, "failed to lookup txq for peer_id %u tid %u\n",
33143314
peer_id, tid);
33153315
continue;
33163316
}
@@ -3348,7 +3348,7 @@ static inline s8 ath10k_get_legacy_rate_idx(struct ath10k *ar, u8 rate)
33483348
return i;
33493349
}
33503350

3351-
ath10k_warn(ar, "Invalid legacy rate %hhd peer stats", rate);
3351+
ath10k_warn(ar, "Invalid legacy rate %d peer stats", rate);
33523352
return -EINVAL;
33533353
}
33543354

@@ -3502,13 +3502,13 @@ ath10k_update_per_peer_tx_stats(struct ath10k *ar,
35023502
return;
35033503

35043504
if (txrate.flags == WMI_RATE_PREAMBLE_VHT && txrate.mcs > 9) {
3505-
ath10k_warn(ar, "Invalid VHT mcs %hhd peer stats", txrate.mcs);
3505+
ath10k_warn(ar, "Invalid VHT mcs %d peer stats", txrate.mcs);
35063506
return;
35073507
}
35083508

35093509
if (txrate.flags == WMI_RATE_PREAMBLE_HT &&
35103510
(txrate.mcs > 7 || txrate.nss < 1)) {
3511-
ath10k_warn(ar, "Invalid HT mcs %hhd nss %hhd peer stats",
3511+
ath10k_warn(ar, "Invalid HT mcs %d nss %d peer stats",
35123512
txrate.mcs, txrate.nss);
35133513
return;
35143514
}

drivers/net/wireless/ath/ath10k/htt_tx.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ static void __ath10k_htt_tx_txq_recalc(struct ieee80211_hw *hw,
7272

7373
if (unlikely(peer_id >= ar->htt.tx_q_state.num_peers) ||
7474
unlikely(tid >= ar->htt.tx_q_state.num_tids)) {
75-
ath10k_warn(ar, "refusing to update txq for peer_id %hu tid %hhu due to out of bounds\n",
75+
ath10k_warn(ar, "refusing to update txq for peer_id %u tid %u due to out of bounds\n",
7676
peer_id, tid);
7777
return;
7878
}
@@ -81,7 +81,7 @@ static void __ath10k_htt_tx_txq_recalc(struct ieee80211_hw *hw,
8181
ar->htt.tx_q_state.vaddr->map[tid][idx] &= ~bit;
8282
ar->htt.tx_q_state.vaddr->map[tid][idx] |= count ? bit : 0;
8383

84-
ath10k_dbg(ar, ATH10K_DBG_HTT, "htt tx txq state update peer_id %hu tid %hhu count %hhu\n",
84+
ath10k_dbg(ar, ATH10K_DBG_HTT, "htt tx txq state update peer_id %u tid %u count %u\n",
8585
peer_id, tid, count);
8686
}
8787

@@ -213,7 +213,7 @@ void ath10k_htt_tx_free_msdu_id(struct ath10k_htt *htt, u16 msdu_id)
213213

214214
lockdep_assert_held(&htt->tx_lock);
215215

216-
ath10k_dbg(ar, ATH10K_DBG_HTT, "htt tx free msdu_id %hu\n", msdu_id);
216+
ath10k_dbg(ar, ATH10K_DBG_HTT, "htt tx free msdu_id %u\n", msdu_id);
217217

218218
idr_remove(&htt->pending_tx, msdu_id);
219219
}
@@ -507,7 +507,7 @@ static int ath10k_htt_tx_clean_up_pending(int msdu_id, void *skb, void *ctx)
507507
struct ath10k_htt *htt = &ar->htt;
508508
struct htt_tx_done tx_done = {0};
509509

510-
ath10k_dbg(ar, ATH10K_DBG_HTT, "force cleanup msdu_id %hu\n", msdu_id);
510+
ath10k_dbg(ar, ATH10K_DBG_HTT, "force cleanup msdu_id %u\n", msdu_id);
511511

512512
tx_done.msdu_id = msdu_id;
513513
tx_done.status = HTT_TX_COMPL_STATE_DISCARD;
@@ -569,6 +569,8 @@ void ath10k_htt_htc_tx_complete(struct ath10k *ar, struct sk_buff *skb)
569569
desc_hdr = (struct htt_data_tx_desc *)
570570
(skb->data + sizeof(*htt_hdr));
571571
flags1 = __le16_to_cpu(desc_hdr->flags1);
572+
skb_pull(skb, sizeof(struct htt_cmd_hdr));
573+
skb_pull(skb, sizeof(struct htt_data_tx_desc));
572574
}
573575
}
574576

@@ -1557,7 +1559,7 @@ static int ath10k_htt_tx_32(struct ath10k_htt *htt,
15571559

15581560
trace_ath10k_htt_tx(ar, msdu_id, msdu->len, vdev_id, tid);
15591561
ath10k_dbg(ar, ATH10K_DBG_HTT,
1560-
"htt tx flags0 %hhu flags1 %hu len %d id %hu frags_paddr %pad, msdu_paddr %pad vdev %hhu tid %hhu freq %hu\n",
1562+
"htt tx flags0 %u flags1 %u len %d id %u frags_paddr %pad, msdu_paddr %pad vdev %u tid %u freq %u\n",
15611563
flags0, flags1, msdu->len, msdu_id, &frags_paddr,
15621564
&skb_cb->paddr, vdev_id, tid, freq);
15631565
ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt tx msdu: ",
@@ -1766,7 +1768,7 @@ static int ath10k_htt_tx_64(struct ath10k_htt *htt,
17661768

17671769
trace_ath10k_htt_tx(ar, msdu_id, msdu->len, vdev_id, tid);
17681770
ath10k_dbg(ar, ATH10K_DBG_HTT,
1769-
"htt tx flags0 %hhu flags1 %hu len %d id %hu frags_paddr %pad, msdu_paddr %pad vdev %hhu tid %hhu freq %hu\n",
1771+
"htt tx flags0 %u flags1 %u len %d id %u frags_paddr %pad, msdu_paddr %pad vdev %u tid %u freq %u\n",
17701772
flags0, flags1, msdu->len, msdu_id, &frags_paddr,
17711773
&skb_cb->paddr, vdev_id, tid, freq);
17721774
ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL, "htt tx msdu: ",

drivers/net/wireless/ath/ath10k/hw.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,8 @@ struct ath10k_hw_params {
623623

624624
/* provides bitrates for sta_statistics using WMI_TLV_PEER_STATS_INFO_EVENTID */
625625
bool supports_peer_stats_info;
626+
627+
bool dynamic_sar_support;
626628
};
627629

628630
struct htt_rx_desc;

0 commit comments

Comments
 (0)