From a0977ba4a997f31cabe4cacba55f34b505cd667e Mon Sep 17 00:00:00 2001 From: ZqinKing Date: Wed, 2 Apr 2025 08:36:24 +0000 Subject: [PATCH] fix mac80211 Signed-off-by: ZqinKing --- ...-wifi-ath11k-poll-reo-status-ipq5018.patch | 10 +-- ...-genlmsg_multicast_allns-upstream-ba.patch | 2 +- .../068-ath11k-add-rx-histogram-stats.patch | 10 +-- ...69-ath11k-add-HE-stats-in-peer-stats.patch | 28 +++---- ...dma-counter-increamenting-improperly.patch | 2 +- ...ul-ofdma-ru-allocation-in-peer-stats.patch | 14 ++-- .../113-ath11k-add-8023-undecap-support.patch | 4 +- ...-ath11k_nss-add-nss-driver-interface.patch | 2 +- .../199-003-ath11k-add-nss-support.patch | 28 +++---- ...207-ath11k-Enable-256_512MB-profiles.patch | 4 +- ...-support-on-NSS-offload-for-STA-mode.patch | 6 +- ...pport-for-WDS-offload-in-NSS-offload.patch | 4 +- ...ow-fast-rx-by-bypassing-stats-update.patch | 26 +++--- .../nss/ath11k/244-ath11k-dp-tx-perf.patch | 14 ++-- .../300-ath11k-nss-mesh-offload-support.patch | 14 ++-- ...se-DECLARE_BITMAP-for-idr-operations.patch | 16 ++-- ...ing-rx-stats-with-monitor-vif-enable.patch | 8 +- ...356-ath11k-invalid-desc-sanity-check.patch | 4 +- ...Fix-ppdu_id-from-firmware-PPDU-stats.patch | 8 +- ...Add-retry-mechanism-for-update_rx_qu.patch | 40 ++++----- ...oid-memset-of-ppdu-info-for-next-skb.patch | 6 +- ...k-make-debugfs-sta-htt-stats-modular.patch | 4 +- ...-ath11k-fix-invalid-access-to-memory.patch | 6 +- ...11k-Disable-rx_header-tlv-for-2K-SKB.patch | 48 +++++------ ...999-336-0001-ath11k-idr-optimization.patch | 10 +-- .../999-336-0002-ath11k-Use-idr_replace.patch | 24 +++--- ...k-skb_headroom-before-using-skb_push.patch | 24 +++--- .../999-900-bss-transition-handling.patch | 81 +++++++++---------- ...9-903-ath11k-use-ath11k_sta_to_arsta.patch | 10 +-- 29 files changed, 230 insertions(+), 227 deletions(-) diff --git a/package/kernel/mac80211/patches/ath11k/932-wifi-ath11k-poll-reo-status-ipq5018.patch b/package/kernel/mac80211/patches/ath11k/932-wifi-ath11k-poll-reo-status-ipq5018.patch index 8cb7bd6b08..693cb0e0d4 100644 --- a/package/kernel/mac80211/patches/ath11k/932-wifi-ath11k-poll-reo-status-ipq5018.patch +++ b/package/kernel/mac80211/patches/ath11k/932-wifi-ath11k-poll-reo-status-ipq5018.patch @@ -34,7 +34,7 @@ Signed-off-by: Sriram R .name = "qca2066 hw2.1", --- a/drivers/net/wireless/ath/ath11k/dp.c +++ b/drivers/net/wireless/ath/ath11k/dp.c -@@ -361,12 +361,66 @@ void ath11k_dp_stop_shadow_timers(struct +@@ -348,12 +348,66 @@ void ath11k_dp_stop_shadow_timers(struct ath11k_dp_shadow_stop_timer(ab, &ab->dp.reo_cmd_timer); } @@ -101,7 +101,7 @@ Signed-off-by: Sriram R ath11k_dp_srng_cleanup(ab, &dp->wbm_desc_rel_ring); ath11k_dp_srng_cleanup(ab, &dp->tcl_cmd_ring); ath11k_dp_srng_cleanup(ab, &dp->tcl_status_ring); -@@ -388,6 +442,8 @@ static int ath11k_dp_srng_common_setup(s +@@ -375,6 +429,8 @@ static int ath11k_dp_srng_common_setup(s int i, ret; u8 tcl_num, wbm_num; @@ -112,7 +112,7 @@ Signed-off-by: Sriram R DP_WBM_RELEASE_RING_SIZE); --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -44,6 +44,8 @@ struct dp_rx_tid { +@@ -46,6 +46,8 @@ struct dp_rx_tid { #define DP_MON_PURGE_TIMEOUT_MS 100 #define DP_MON_SERVICE_BUDGET 128 @@ -121,7 +121,7 @@ Signed-off-by: Sriram R struct dp_reo_cache_flush_elem { struct list_head list; struct dp_rx_tid data; -@@ -286,6 +288,10 @@ struct ath11k_dp { +@@ -288,6 +290,10 @@ struct ath11k_dp { spinlock_t reo_cmd_lock; struct ath11k_hp_update_timer reo_cmd_timer; struct ath11k_hp_update_timer tx_ring_timer[DP_TCL_NUM_RING_MAX]; @@ -132,7 +132,7 @@ Signed-off-by: Sriram R }; /* HTT definitions */ -@@ -1689,5 +1695,6 @@ void ath11k_dp_shadow_init_timer(struct +@@ -1691,5 +1697,6 @@ void ath11k_dp_shadow_init_timer(struct struct ath11k_hp_update_timer *update_timer, u32 interval, u32 ring_id); void ath11k_dp_stop_shadow_timers(struct ath11k_base *ab); diff --git a/package/kernel/mac80211/patches/build/300-backports-handle-genlmsg_multicast_allns-upstream-ba.patch b/package/kernel/mac80211/patches/build/300-backports-handle-genlmsg_multicast_allns-upstream-ba.patch index 5ab6bb736d..523b5c67f4 100644 --- a/package/kernel/mac80211/patches/build/300-backports-handle-genlmsg_multicast_allns-upstream-ba.patch +++ b/package/kernel/mac80211/patches/build/300-backports-handle-genlmsg_multicast_allns-upstream-ba.patch @@ -43,8 +43,8 @@ Signed-off-by: Christian Marangi +compat-$(CPTCFG_KERNEL_5_15) += backport-5.15.o backport-genetlink.o +compat-$(CPTCFG_KERNEL_6_1) += backport-genetlink.o compat-$(CPTCFG_KERNEL_6_4) += backport-6.4.o + compat-$(CPTCFG_KERNEL_6_11) += backport-6.11.o - compat-$(CPTCFG_BPAUTO_BUILD_CRYPTO_LIB_ARC4) += lib-crypto-arc4.o --- a/compat/backport-genetlink.c +++ b/compat/backport-genetlink.c @@ -17,6 +17,7 @@ diff --git a/package/kernel/mac80211/patches/nss/ath11k/068-ath11k-add-rx-histogram-stats.patch b/package/kernel/mac80211/patches/nss/ath11k/068-ath11k-add-rx-histogram-stats.patch index 29cb3e029b..5023201fa7 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/068-ath11k-add-rx-histogram-stats.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/068-ath11k-add-rx-histogram-stats.patch @@ -269,7 +269,7 @@ Signed-off-by: Manikanta Pubbisetty &fops_htt_peer_stats); --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -2762,10 +2762,43 @@ exit: +@@ -2753,10 +2753,43 @@ exit: return total_msdu_reaped; } @@ -313,7 +313,7 @@ Signed-off-by: Manikanta Pubbisetty u32 num_msdu; int i; -@@ -2775,6 +2808,8 @@ static void ath11k_dp_rx_update_peer_sta +@@ -2766,6 +2799,8 @@ static void ath11k_dp_rx_update_peer_sta arsta->rssi_comb = ppdu_info->rssi_comb; ewma_avg_rssi_add(&arsta->avg_rssi, ppdu_info->rssi_comb); @@ -322,7 +322,7 @@ Signed-off-by: Manikanta Pubbisetty num_msdu = ppdu_info->tcp_msdu_count + ppdu_info->tcp_ack_msdu_count + ppdu_info->udp_msdu_count + ppdu_info->other_msdu_count; -@@ -2791,18 +2826,6 @@ static void ath11k_dp_rx_update_peer_sta +@@ -2782,18 +2817,6 @@ static void ath11k_dp_rx_update_peer_sta ppdu_info->tid = IEEE80211_NUM_TIDS; } @@ -341,7 +341,7 @@ Signed-off-by: Manikanta Pubbisetty if (ppdu_info->ldpc < HAL_RX_SU_MU_CODING_MAX) rx_stats->coding_count[ppdu_info->ldpc] += num_msdu; -@@ -2831,8 +2854,6 @@ static void ath11k_dp_rx_update_peer_sta +@@ -2822,8 +2845,6 @@ static void ath11k_dp_rx_update_peer_sta rx_stats->dcm_count += ppdu_info->dcm; rx_stats->ru_alloc_cnt[ppdu_info->ru_alloc] += num_msdu; @@ -350,7 +350,7 @@ Signed-off-by: Manikanta Pubbisetty BUILD_BUG_ON(ARRAY_SIZE(arsta->chain_signal) > ARRAY_SIZE(ppdu_info->rssi_chain_pri20)); -@@ -2841,6 +2862,52 @@ static void ath11k_dp_rx_update_peer_sta +@@ -2832,6 +2853,52 @@ static void ath11k_dp_rx_update_peer_sta rx_stats->rx_duration += ppdu_info->rx_duration; arsta->rx_duration = rx_stats->rx_duration; diff --git a/package/kernel/mac80211/patches/nss/ath11k/069-ath11k-add-HE-stats-in-peer-stats.patch b/package/kernel/mac80211/patches/nss/ath11k/069-ath11k-add-HE-stats-in-peer-stats.patch index 44306c223e..745c2f6aa3 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/069-ath11k-add-HE-stats-in-peer-stats.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/069-ath11k-add-HE-stats-in-peer-stats.patch @@ -317,7 +317,7 @@ Signed-off-by: Miles Hu if (len > size) --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -601,6 +601,45 @@ enum htt_ppdu_stats_tag_type { +@@ -603,6 +603,45 @@ enum htt_ppdu_stats_tag_type { BIT(HTT_PPDU_STATS_TAG_TX_MGMTCTRL_PAYLOAD) | \ HTT_PPDU_STATS_TAG_DEFAULT) @@ -363,7 +363,7 @@ Signed-off-by: Miles Hu /* HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG Message * * details: -@@ -1240,6 +1279,19 @@ enum htt_ppdu_stats_gi { +@@ -1242,6 +1281,19 @@ enum htt_ppdu_stats_gi { #define HTT_PPDU_STATS_USER_RATE_INFO0_USER_POS_M GENMASK(3, 0) #define HTT_PPDU_STATS_USER_RATE_INFO0_MU_GROUP_ID_M GENMASK(11, 4) @@ -383,7 +383,7 @@ Signed-off-by: Miles Hu #define HTT_PPDU_STATS_USER_RATE_INFO1_RESP_TYPE_VALD_M BIT(0) #define HTT_PPDU_STATS_USER_RATE_INFO1_PPDU_TYPE_M GENMASK(5, 1) -@@ -1267,6 +1319,12 @@ enum htt_ppdu_stats_gi { +@@ -1269,6 +1321,12 @@ enum htt_ppdu_stats_gi { FIELD_GET(HTT_PPDU_STATS_USER_RATE_FLAGS_GI_M, _val) #define HTT_USR_RATE_DCM(_val) \ FIELD_GET(HTT_PPDU_STATS_USER_RATE_FLAGS_DCM_M, _val) @@ -396,7 +396,7 @@ Signed-off-by: Miles Hu #define HTT_PPDU_STATS_USER_RATE_RESP_FLAGS_LTF_SIZE_M GENMASK(1, 0) #define HTT_PPDU_STATS_USER_RATE_RESP_FLAGS_STBC_M BIT(2) -@@ -1358,16 +1416,33 @@ struct htt_ppdu_stats_usr_cmpltn_ack_ba_ +@@ -1360,16 +1418,33 @@ struct htt_ppdu_stats_usr_cmpltn_ack_ba_ u32 success_bytes; } __packed; @@ -431,7 +431,7 @@ Signed-off-by: Miles Hu #define HTT_PPDU_DESC_MAX_DEPTH 16 struct htt_ppdu_stats { -@@ -1376,7 +1451,7 @@ struct htt_ppdu_stats { +@@ -1378,7 +1453,7 @@ struct htt_ppdu_stats { }; struct htt_ppdu_stats_info { @@ -442,7 +442,7 @@ Signed-off-by: Miles Hu }; --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -1253,9 +1253,10 @@ static int ath11k_htt_tlv_ppdu_stats_par +@@ -1244,9 +1244,10 @@ static int ath11k_htt_tlv_ppdu_stats_par void *data) { struct htt_ppdu_stats_info *ppdu_info; @@ -454,7 +454,7 @@ Signed-off-by: Miles Hu ppdu_info = data; -@@ -1268,6 +1269,26 @@ static int ath11k_htt_tlv_ppdu_stats_par +@@ -1259,6 +1260,26 @@ static int ath11k_htt_tlv_ppdu_stats_par } memcpy((void *)&ppdu_info->ppdu_stats.common, ptr, sizeof(struct htt_ppdu_stats_common)); @@ -481,7 +481,7 @@ Signed-off-by: Miles Hu break; case HTT_PPDU_STATS_TAG_USR_RATE: if (len < sizeof(struct htt_ppdu_stats_user_rate)) { -@@ -1300,6 +1321,7 @@ static int ath11k_htt_tlv_ppdu_stats_par +@@ -1291,6 +1312,7 @@ static int ath11k_htt_tlv_ppdu_stats_par peer_id); if (cur_user < 0) return -EINVAL; @@ -489,7 +489,7 @@ Signed-off-by: Miles Hu user_stats = &ppdu_info->ppdu_stats.user_stats[cur_user]; user_stats->peer_id = peer_id; user_stats->is_valid_peer_id = true; -@@ -1328,44 +1350,30 @@ static int ath11k_htt_tlv_ppdu_stats_par +@@ -1319,44 +1341,30 @@ static int ath11k_htt_tlv_ppdu_stats_par sizeof(struct htt_ppdu_stats_usr_cmpltn_ack_ba_status)); user_stats->tlv_flags |= BIT(tag); break; @@ -554,7 +554,7 @@ Signed-off-by: Miles Hu return 0; } -@@ -1383,8 +1391,8 @@ ath11k_update_per_peer_tx_stats(struct a +@@ -1374,8 +1382,8 @@ ath11k_update_per_peer_tx_stats(struct a struct htt_ppdu_stats_common *common = &ppdu_stats->common; int ret; u8 flags, mcs, nss, bw, sgi, dcm, rate_idx = 0; @@ -565,7 +565,7 @@ Signed-off-by: Miles Hu u32 tx_duration = 0; u8 tid = HTT_PPDU_STATS_NON_QOS_TID; bool is_ampdu = false; -@@ -1415,6 +1423,11 @@ ath11k_update_per_peer_tx_stats(struct a +@@ -1406,6 +1414,11 @@ ath11k_update_per_peer_tx_stats(struct a mcs = HTT_USR_RATE_MCS(user_rate->rate_flags); sgi = HTT_USR_RATE_GI(user_rate->rate_flags); dcm = HTT_USR_RATE_DCM(user_rate->rate_flags); @@ -577,7 +577,7 @@ Signed-off-by: Miles Hu /* Note: If host configured fixed rates and in some other special * cases, the broadcast/management frames are sent in different rates. -@@ -1509,6 +1522,12 @@ ath11k_update_per_peer_tx_stats(struct a +@@ -1500,6 +1513,12 @@ ath11k_update_per_peer_tx_stats(struct a peer_stats->ba_fails = HTT_USR_CMPLTN_LONG_RETRY(usr_stats->cmpltn_cmn.flags) + HTT_USR_CMPLTN_SHORT_RETRY(usr_stats->cmpltn_cmn.flags); @@ -590,7 +590,7 @@ Signed-off-by: Miles Hu if (ath11k_debugfs_is_extd_tx_stats_enabled(ar)) ath11k_debugfs_sta_add_tx_stats(arsta, peer_stats, rate_idx); -@@ -1561,13 +1580,89 @@ struct htt_ppdu_stats_info *ath11k_dp_ht +@@ -1552,13 +1571,89 @@ struct htt_ppdu_stats_info *ath11k_dp_ht return ppdu_info; } @@ -681,7 +681,7 @@ Signed-off-by: Miles Hu u8 pdev_id; u32 ppdu_id, len; -@@ -1602,6 +1697,47 @@ static int ath11k_htt_pull_ppdu_stats(st +@@ -1593,6 +1688,47 @@ static int ath11k_htt_pull_ppdu_stats(st goto out_unlock_data; } diff --git a/package/kernel/mac80211/patches/nss/ath11k/087-ath11k-fix-ul-ofdma-counter-increamenting-improperly.patch b/package/kernel/mac80211/patches/nss/ath11k/087-ath11k-fix-ul-ofdma-counter-increamenting-improperly.patch index 9b3cabc1b1..6055b59d79 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/087-ath11k-fix-ul-ofdma-counter-increamenting-improperly.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/087-ath11k-fix-ul-ofdma-counter-increamenting-improperly.patch @@ -5,7 +5,7 @@ --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -5518,8 +5518,11 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -5509,8 +5509,11 @@ int ath11k_dp_rx_process_mon_status(stru goto next_skb; } diff --git a/package/kernel/mac80211/patches/nss/ath11k/108-ath11k-enable-ul-ofdma-ru-allocation-in-peer-stats.patch b/package/kernel/mac80211/patches/nss/ath11k/108-ath11k-enable-ul-ofdma-ru-allocation-in-peer-stats.patch index 71186b257d..c860d203fc 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/108-ath11k-enable-ul-ofdma-ru-allocation-in-peer-stats.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/108-ath11k-enable-ul-ofdma-ru-allocation-in-peer-stats.patch @@ -15,7 +15,7 @@ --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -2901,11 +2901,12 @@ exit: +@@ -2892,11 +2892,12 @@ exit: static void ath11k_dp_rx_update_peer_rate_table_stats(struct ath11k_rx_peer_stats *rx_stats, struct hal_rx_mon_ppdu_info *ppdu_info, @@ -30,7 +30,7 @@ u32 bw_idx = ppdu_info->bw; u32 gi_idx = ppdu_info->gi; -@@ -2927,10 +2928,13 @@ ath11k_dp_rx_update_peer_rate_table_stat +@@ -2918,10 +2919,13 @@ ath11k_dp_rx_update_peer_rate_table_stat } rx_stats->pkt_stats.rx_rate[rate_idx] += num_msdu; @@ -46,7 +46,7 @@ struct hal_rx_mon_ppdu_info *ppdu_info) { struct ath11k_rx_peer_stats *rx_stats = arsta->rx_stats; -@@ -2988,7 +2992,6 @@ static void ath11k_dp_rx_update_peer_sta +@@ -2979,7 +2983,6 @@ static void ath11k_dp_rx_update_peer_sta rx_stats->num_mpdu_fcs_ok += ppdu_info->num_mpdu_fcs_ok; rx_stats->num_mpdu_fcs_err += ppdu_info->num_mpdu_fcs_err; rx_stats->dcm_count += ppdu_info->dcm; @@ -54,7 +54,7 @@ BUILD_BUG_ON(ARRAY_SIZE(arsta->chain_signal) > ARRAY_SIZE(ppdu_info->rssi_chain_pri20)); -@@ -3006,10 +3009,10 @@ static void ath11k_dp_rx_update_peer_sta +@@ -2997,10 +3000,10 @@ static void ath11k_dp_rx_update_peer_sta if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11N && ppdu_info->mcs <= HAL_RX_MAX_MCS_HT) { @@ -69,7 +69,7 @@ } if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AC && -@@ -3042,7 +3045,120 @@ static void ath11k_dp_rx_update_peer_sta +@@ -3033,7 +3036,120 @@ static void ath11k_dp_rx_update_peer_sta rx_stats->byte_stats.bw_count[ppdu_info->bw] += ppdu_info->mpdu_len; } @@ -191,7 +191,7 @@ } -@@ -5444,6 +5560,55 @@ static void ath11k_dp_rx_mon_dest_proces +@@ -5435,6 +5551,55 @@ static void ath11k_dp_rx_mon_dest_proces } } @@ -247,7 +247,7 @@ int ath11k_dp_rx_process_mon_status(struct ath11k_base *ab, int mac_id, struct napi_struct *napi, int budget) { -@@ -5520,8 +5685,13 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -5511,8 +5676,13 @@ int ath11k_dp_rx_process_mon_status(stru if ((ppdu_info->fc_valid) && (ppdu_info->ast_index != HAL_AST_IDX_INVALID)) { diff --git a/package/kernel/mac80211/patches/nss/ath11k/113-ath11k-add-8023-undecap-support.patch b/package/kernel/mac80211/patches/nss/ath11k/113-ath11k-add-8023-undecap-support.patch index 2ba2411c3e..c0b84c6865 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/113-ath11k-add-8023-undecap-support.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/113-ath11k-add-8023-undecap-support.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -2305,6 +2305,42 @@ static void ath11k_dp_rx_h_undecap_eth(s +@@ -2296,6 +2296,42 @@ static void ath11k_dp_rx_h_undecap_eth(s ether_addr_copy(ieee80211_get_SA(hdr), sa); } @@ -43,7 +43,7 @@ static void ath11k_dp_rx_h_undecap(struct ath11k *ar, struct sk_buff *msdu, struct hal_rx_desc *rx_desc, enum hal_encrypt_type enctype, -@@ -2346,7 +2382,8 @@ static void ath11k_dp_rx_h_undecap(struc +@@ -2337,7 +2373,8 @@ static void ath11k_dp_rx_h_undecap(struc enctype, status); break; case DP_RX_DECAP_TYPE_8023: diff --git a/package/kernel/mac80211/patches/nss/ath11k/199-002-ath11k_nss-add-nss-driver-interface.patch b/package/kernel/mac80211/patches/nss/ath11k/199-002-ath11k_nss-add-nss-driver-interface.patch index 8dce7720d1..754913843e 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/199-002-ath11k_nss-add-nss-driver-interface.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/199-002-ath11k_nss-add-nss-driver-interface.patch @@ -2816,7 +2816,7 @@ Signed-off-by: Sriram R --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -993,6 +993,29 @@ unlock_exit: +@@ -994,6 +994,29 @@ unlock_exit: spin_unlock_bh(&ab->base_lock); } diff --git a/package/kernel/mac80211/patches/nss/ath11k/199-003-ath11k-add-nss-support.patch b/package/kernel/mac80211/patches/nss/ath11k/199-003-ath11k-add-nss-support.patch index c1214625ee..46049c89a7 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/199-003-ath11k-add-nss-support.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/199-003-ath11k-add-nss-support.patch @@ -227,7 +227,7 @@ Signed-off-by: Sriram R if (ret) { ath11k_warn(ab, "failed to set default routing %d peer :%pM vdev_id :%d\n", -@@ -135,6 +140,18 @@ static int ath11k_dp_srng_calculate_msi_ +@@ -133,6 +138,18 @@ static int ath11k_dp_srng_calculate_msi_ { const u8 *grp_mask; @@ -246,7 +246,7 @@ Signed-off-by: Sriram R switch (type) { case HAL_WBM2SW_RELEASE: if (ring_num == DP_RX_RELEASE_RING_NUM) { -@@ -848,14 +865,16 @@ int ath11k_dp_service_srng(struct ath11k +@@ -835,14 +852,16 @@ int ath11k_dp_service_srng(struct ath11k int work_done = 0; int i, j; int tot_work_done = 0; @@ -268,7 +268,7 @@ Signed-off-by: Sriram R work_done = ath11k_dp_process_rx_err(ab, napi, budget); budget -= work_done; tot_work_done += work_done; -@@ -863,7 +882,7 @@ int ath11k_dp_service_srng(struct ath11k +@@ -850,7 +869,7 @@ int ath11k_dp_service_srng(struct ath11k goto done; } @@ -277,7 +277,7 @@ Signed-off-by: Sriram R work_done = ath11k_dp_rx_process_wbm_err(ab, napi, budget); -@@ -874,7 +893,7 @@ int ath11k_dp_service_srng(struct ath11k +@@ -861,7 +880,7 @@ int ath11k_dp_service_srng(struct ath11k goto done; } @@ -286,7 +286,7 @@ Signed-off-by: Sriram R i = fls(ab->hw_params.ring_mask->rx[grp_id]) - 1; work_done = ath11k_dp_process_rx(ab, i, napi, budget); -@@ -908,7 +927,7 @@ int ath11k_dp_service_srng(struct ath11k +@@ -895,7 +914,7 @@ int ath11k_dp_service_srng(struct ath11k if (ab->hw_params.ring_mask->reo_status[grp_id]) ath11k_dp_process_reo_status(ab); @@ -297,7 +297,7 @@ Signed-off-by: Sriram R --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -196,6 +196,7 @@ struct ath11k_pdev_dp { +@@ -198,6 +198,7 @@ struct ath11k_pdev_dp { #define DP_AVG_MSDUS_PER_MPDU 4 #define DP_RX_HASH_ENABLE 1 /* Enable hash based Rx steering */ @@ -357,7 +357,7 @@ Signed-off-by: Sriram R if (ar->ab->hw_params.rxdma1_enable) { rx_ring = &dp->rxdma_mon_buf_ring; -@@ -2062,7 +2065,7 @@ int ath11k_dp_rx_crypto_mic_len(struct a +@@ -2053,7 +2056,7 @@ int ath11k_dp_rx_crypto_mic_len(struct a return 0; } @@ -366,7 +366,7 @@ Signed-off-by: Sriram R enum hal_encrypt_type enctype) { switch (enctype) { -@@ -2090,7 +2093,7 @@ static int ath11k_dp_rx_crypto_param_len +@@ -2081,7 +2084,7 @@ static int ath11k_dp_rx_crypto_param_len return 0; } @@ -375,7 +375,7 @@ Signed-off-by: Sriram R enum hal_encrypt_type enctype) { switch (enctype) { -@@ -2826,6 +2829,22 @@ static void ath11k_dp_rx_process_receive +@@ -2817,6 +2820,22 @@ static void ath11k_dp_rx_process_receive } } @@ -398,7 +398,7 @@ Signed-off-by: Sriram R int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id, struct napi_struct *napi, int budget) { -@@ -3125,7 +3144,8 @@ static void ath11k_dp_rx_update_user_sta +@@ -3116,7 +3135,8 @@ static void ath11k_dp_rx_update_user_sta peer = ath11k_peer_find_by_ast(ar->ab, user_stats->ast_index); if (peer == NULL) { @@ -408,7 +408,7 @@ Signed-off-by: Sriram R user_stats->ast_index); return; } -@@ -3133,6 +3153,13 @@ static void ath11k_dp_rx_update_user_sta +@@ -3124,6 +3144,13 @@ static void ath11k_dp_rx_update_user_sta arsta = (struct ath11k_sta *)peer->sta->drv_priv; rx_stats = arsta->rx_stats; @@ -422,7 +422,7 @@ Signed-off-by: Sriram R if (!rx_stats) return; -@@ -3209,8 +3236,10 @@ static void ath11k_dp_rx_update_peer_mu_ +@@ -3200,8 +3227,10 @@ static void ath11k_dp_rx_update_peer_mu_ { u32 num_users, i; @@ -434,7 +434,7 @@ Signed-off-by: Sriram R num_users = ppdu_info->num_users; if (num_users > HAL_MAX_UL_MU_USERS) -@@ -5677,7 +5706,7 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -5668,7 +5697,7 @@ int ath11k_dp_rx_process_mon_status(stru struct sk_buff *skb; struct sk_buff_head skb_list; struct ath11k_peer *peer; @@ -443,7 +443,7 @@ Signed-off-by: Sriram R int num_buffs_reaped = 0; u32 rx_buf_sz; u16 log_type; -@@ -5748,6 +5777,7 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -5739,6 +5768,7 @@ int ath11k_dp_rx_process_mon_status(stru if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_SU) { arsta = (struct ath11k_sta *)peer->sta->drv_priv; ath11k_dp_rx_update_peer_su_stats(arsta, ppdu_info); diff --git a/package/kernel/mac80211/patches/nss/ath11k/207-ath11k-Enable-256_512MB-profiles.patch b/package/kernel/mac80211/patches/nss/ath11k/207-ath11k-Enable-256_512MB-profiles.patch index 2556f38a7c..2719d7735b 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/207-ath11k-Enable-256_512MB-profiles.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/207-ath11k-Enable-256_512MB-profiles.patch @@ -175,7 +175,7 @@ Signed-off-by: Ramya Gnanasekar u32 data_pos; --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -208,8 +208,9 @@ struct ath11k_pdev_dp { +@@ -210,8 +210,9 @@ struct ath11k_pdev_dp { #define DP_WBM_RELEASE_RING_SIZE 64 #define DP_TCL_DATA_RING_SIZE 512 #define DP_TCL_DATA_RING_SIZE_WCN6750 2048 @@ -186,7 +186,7 @@ Signed-off-by: Ramya Gnanasekar #define DP_TCL_CMD_RING_SIZE 32 #define DP_TCL_STATUS_RING_SIZE 32 #define DP_REO_DST_RING_MAX 4 -@@ -222,9 +223,9 @@ struct ath11k_pdev_dp { +@@ -224,9 +225,9 @@ struct ath11k_pdev_dp { #define DP_RXDMA_BUF_RING_SIZE 4096 #define DP_RXDMA_REFILL_RING_SIZE 2048 #define DP_RXDMA_ERR_DST_RING_SIZE 1024 diff --git a/package/kernel/mac80211/patches/nss/ath11k/211-002-ath11k-add-WDS-offload-support-on-NSS-offload-for-STA-mode.patch b/package/kernel/mac80211/patches/nss/ath11k/211-002-ath11k-add-WDS-offload-support-on-NSS-offload-for-STA-mode.patch index 69262847c2..b5a0fda671 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/211-002-ath11k-add-WDS-offload-support-on-NSS-offload-for-STA-mode.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/211-002-ath11k-add-WDS-offload-support-on-NSS-offload-for-STA-mode.patch @@ -46,7 +46,7 @@ Signed-off-by: Sathishkumar Muruganandam }; --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -1111,13 +1111,16 @@ struct htt_t2h_peer_map_event { +@@ -1113,13 +1113,16 @@ struct htt_t2h_peer_map_event { #define HTT_T2H_PEER_UNMAP_INFO_PEER_ID HTT_T2H_PEER_MAP_INFO_PEER_ID #define HTT_T2H_PEER_UNMAP_INFO1_MAC_ADDR_H16 \ HTT_T2H_PEER_MAP_INFO1_MAC_ADDR_H16 @@ -67,7 +67,7 @@ Signed-off-by: Sathishkumar Muruganandam struct htt_resp_msg { --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -1858,6 +1858,8 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s +@@ -1849,6 +1849,8 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s u16 peer_mac_h16; u16 ast_hash; u16 hw_peer_id; @@ -76,7 +76,7 @@ Signed-off-by: Sathishkumar Muruganandam ath11k_dbg(ab, ATH11K_DBG_DP_HTT, "dp_htt rx msg type :0x%0x\n", type); -@@ -1893,15 +1895,29 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s +@@ -1884,15 +1886,29 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s resp->peer_map_ev.info2); hw_peer_id = FIELD_GET(HTT_T2H_PEER_MAP_INFO1_HW_PEER_ID, resp->peer_map_ev.info1); diff --git a/package/kernel/mac80211/patches/nss/ath11k/235-003-ath11k-add-AP_VLAN-vif-support-for-WDS-offload-in-NSS-offload.patch b/package/kernel/mac80211/patches/nss/ath11k/235-003-ath11k-add-AP_VLAN-vif-support-for-WDS-offload-in-NSS-offload.patch index 6f68afce58..877fb187da 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/235-003-ath11k-add-AP_VLAN-vif-support-for-WDS-offload-in-NSS-offload.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/235-003-ath11k-add-AP_VLAN-vif-support-for-WDS-offload-in-NSS-offload.patch @@ -381,7 +381,7 @@ Signed-off-by: Sathishkumar Muruganandam WMI_STA_PS_PARAM_TX_WAKE_THRESHOLD = 1, --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -1122,12 +1122,13 @@ err_mem_free: +@@ -1113,12 +1113,13 @@ int ath11k_peer_rx_tid_setup(struct ath1 return ret; } @@ -397,7 +397,7 @@ Signed-off-by: Sathishkumar Muruganandam int ret; ret = ath11k_peer_rx_tid_setup(ar, params->sta->addr, vdev_id, -@@ -1139,13 +1140,13 @@ int ath11k_dp_rx_ampdu_start(struct ath1 +@@ -1130,13 +1131,13 @@ int ath11k_dp_rx_ampdu_start(struct ath1 return ret; } diff --git a/package/kernel/mac80211/patches/nss/ath11k/237-006-ath11k-Allow-fast-rx-by-bypassing-stats-update.patch b/package/kernel/mac80211/patches/nss/ath11k/237-006-ath11k-Allow-fast-rx-by-bypassing-stats-update.patch index fc92277ded..fc2bcb5d41 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/237-006-ath11k-Allow-fast-rx-by-bypassing-stats-update.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/237-006-ath11k-Allow-fast-rx-by-bypassing-stats-update.patch @@ -143,7 +143,7 @@ Signed-off-by: P Praneesh /* Returns number of Rx buffers replenished */ int ath11k_dp_rxbufs_replenish(struct ath11k_base *ab, int mac_id, struct dp_rxdma_ring *rx_ring, -@@ -1665,7 +1671,7 @@ int ath11k_dp_htt_tlv_iter(struct ath11k +@@ -1656,7 +1662,7 @@ int ath11k_dp_htt_tlv_iter(struct ath11k len -= sizeof(*tlv); if (tlv_len > len) { @@ -152,7 +152,7 @@ Signed-off-by: P Praneesh tlv_tag, ptr - begin, len, tlv_len); return -EINVAL; } -@@ -2454,10 +2460,60 @@ ath11k_dp_rx_h_find_peer(struct ath11k_b +@@ -2445,10 +2451,60 @@ ath11k_dp_rx_h_find_peer(struct ath11k_b return peer; } @@ -214,7 +214,7 @@ Signed-off-by: P Praneesh { bool fill_crypto_hdr; enum hal_encrypt_type enctype; -@@ -2468,9 +2524,13 @@ static void ath11k_dp_rx_h_mpdu(struct a +@@ -2459,9 +2515,13 @@ static void ath11k_dp_rx_h_mpdu(struct a struct rx_attention *rx_attention; u32 err_bitmap; @@ -229,7 +229,7 @@ Signed-off-by: P Praneesh rxcb->is_mcbc = fill_crypto_hdr; if (rxcb->is_mcbc) { -@@ -2481,6 +2541,26 @@ static void ath11k_dp_rx_h_mpdu(struct a +@@ -2472,6 +2532,26 @@ static void ath11k_dp_rx_h_mpdu(struct a spin_lock_bh(&ar->ab->base_lock); peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu); if (peer) { @@ -256,7 +256,7 @@ Signed-off-by: P Praneesh if (rxcb->is_mcbc) enctype = peer->sec_type_grp; else -@@ -2490,6 +2570,8 @@ static void ath11k_dp_rx_h_mpdu(struct a +@@ -2481,6 +2561,8 @@ static void ath11k_dp_rx_h_mpdu(struct a } spin_unlock_bh(&ar->ab->base_lock); @@ -265,7 +265,7 @@ Signed-off-by: P Praneesh rx_attention = ath11k_dp_rx_get_attention(ar->ab, rx_desc); err_bitmap = ath11k_dp_rx_h_attn_mpdu_err(rx_attention); if (enctype != HAL_ENCRYPT_TYPE_OPEN && !err_bitmap) -@@ -2731,7 +2813,8 @@ static void ath11k_dp_rx_deliver_msdu(st +@@ -2722,7 +2804,8 @@ static void ath11k_dp_rx_deliver_msdu(st static int ath11k_dp_rx_process_msdu(struct ath11k *ar, struct sk_buff *msdu, struct sk_buff_head *msdu_list, @@ -275,7 +275,7 @@ Signed-off-by: P Praneesh { struct ath11k_base *ab = ar->ab; struct hal_rx_desc *rx_desc, *lrx_desc; -@@ -2798,8 +2881,13 @@ static int ath11k_dp_rx_process_msdu(str +@@ -2789,8 +2872,13 @@ static int ath11k_dp_rx_process_msdu(str } } @@ -290,7 +290,7 @@ Signed-off-by: P Praneesh rx_status->flag |= RX_FLAG_SKIP_MONITOR | RX_FLAG_DUP_VALIDATED; -@@ -2814,10 +2902,12 @@ static void ath11k_dp_rx_process_receive +@@ -2805,10 +2893,12 @@ static void ath11k_dp_rx_process_receive struct sk_buff_head *msdu_list, int mac_id) { @@ -303,7 +303,7 @@ Signed-off-by: P Praneesh if (skb_queue_empty(msdu_list)) return; -@@ -2834,7 +2924,12 @@ static void ath11k_dp_rx_process_receive +@@ -2825,7 +2915,12 @@ static void ath11k_dp_rx_process_receive } while ((msdu = __skb_dequeue(msdu_list))) { @@ -317,7 +317,7 @@ Signed-off-by: P Praneesh if (unlikely(ret)) { ath11k_dbg(ab, ATH11K_DBG_DATA, "Unable to process msdu %d", ret); -@@ -2842,7 +2937,10 @@ static void ath11k_dp_rx_process_receive +@@ -2833,7 +2928,10 @@ static void ath11k_dp_rx_process_receive continue; } @@ -329,7 +329,7 @@ Signed-off-by: P Praneesh } } -@@ -2851,11 +2949,12 @@ void ath11k_dp_rx_from_nss(struct ath11k +@@ -2842,11 +2940,12 @@ void ath11k_dp_rx_from_nss(struct ath11k { struct ieee80211_rx_status rx_status = {0}; struct ath11k_skb_rxcb *rxcb; @@ -343,7 +343,7 @@ Signed-off-by: P Praneesh rx_status.flag |= RX_FLAG_SKIP_MONITOR | RX_FLAG_DUP_VALIDATED; -@@ -4387,6 +4486,7 @@ static int ath11k_dp_rx_h_null_q_desc(st +@@ -4378,6 +4477,7 @@ static int ath11k_dp_rx_h_null_q_desc(st struct ieee80211_rx_status *status, struct sk_buff_head *msdu_list) { @@ -351,7 +351,7 @@ Signed-off-by: P Praneesh u16 msdu_len; struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; struct rx_attention *rx_attention; -@@ -4436,7 +4536,8 @@ static int ath11k_dp_rx_h_null_q_desc(st +@@ -4427,7 +4527,8 @@ static int ath11k_dp_rx_h_null_q_desc(st } ath11k_dp_rx_h_ppdu(ar, desc, status); diff --git a/package/kernel/mac80211/patches/nss/ath11k/244-ath11k-dp-tx-perf.patch b/package/kernel/mac80211/patches/nss/ath11k/244-ath11k-dp-tx-perf.patch index e2b5e893cb..69f2c0aa31 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/244-ath11k-dp-tx-perf.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/244-ath11k-dp-tx-perf.patch @@ -50,7 +50,7 @@ Signed-off-by: P Praneesh }; --- a/drivers/net/wireless/ath/ath11k/dp.c +++ b/drivers/net/wireless/ath/ath11k/dp.c -@@ -372,7 +372,7 @@ void ath11k_dp_stop_shadow_timers(struct +@@ -359,7 +359,7 @@ void ath11k_dp_stop_shadow_timers(struct if (!ab->hw_params.supports_shadow_regs) return; @@ -59,7 +59,7 @@ Signed-off-by: P Praneesh ath11k_dp_shadow_stop_timer(ab, &ab->dp.tx_ring_timer[i]); ath11k_dp_shadow_stop_timer(ab, &ab->dp.reo_cmd_timer); -@@ -441,7 +441,7 @@ static void ath11k_dp_srng_common_cleanu +@@ -428,7 +428,7 @@ static void ath11k_dp_srng_common_cleanu ath11k_dp_srng_cleanup(ab, &dp->wbm_desc_rel_ring); ath11k_dp_srng_cleanup(ab, &dp->tcl_cmd_ring); ath11k_dp_srng_cleanup(ab, &dp->tcl_status_ring); @@ -68,7 +68,7 @@ Signed-off-by: P Praneesh ath11k_dp_srng_cleanup(ab, &dp->tx_ring[i].tcl_data_ring); ath11k_dp_srng_cleanup(ab, &dp->tx_ring[i].tcl_comp_ring); } -@@ -477,6 +477,11 @@ static int ath11k_dp_srng_common_setup(s +@@ -464,6 +464,11 @@ static int ath11k_dp_srng_common_setup(s goto err; } @@ -80,7 +80,7 @@ Signed-off-by: P Praneesh ret = ath11k_dp_srng_setup(ab, &dp->tcl_status_ring, HAL_TCL_STATUS, 0, 0, DP_TCL_STATUS_RING_SIZE); if (ret) { -@@ -484,7 +489,7 @@ static int ath11k_dp_srng_common_setup(s +@@ -471,7 +476,7 @@ static int ath11k_dp_srng_common_setup(s goto err; } @@ -89,7 +89,7 @@ Signed-off-by: P Praneesh tcl_num = ab->hw_params.hal_params->tcl2wbm_rbm_map[i].tcl_ring_num; wbm_num = ab->hw_params.hal_params->tcl2wbm_rbm_map[i].wbm_ring_num; -@@ -507,7 +512,7 @@ static int ath11k_dp_srng_common_setup(s +@@ -494,7 +499,7 @@ static int ath11k_dp_srng_common_setup(s } srng = &ab->hal.srng_list[dp->tx_ring[i].tcl_data_ring.ring_id]; @@ -98,7 +98,7 @@ Signed-off-by: P Praneesh ath11k_dp_shadow_init_timer(ab, &dp->tx_ring_timer[i], ATH11K_SHADOW_DP_TIMER_INTERVAL, -@@ -1121,7 +1126,7 @@ void ath11k_dp_free(struct ath11k_base * +@@ -1108,7 +1113,7 @@ void ath11k_dp_free(struct ath11k_base * ath11k_dp_reo_cmd_list_cleanup(ab); @@ -107,7 +107,7 @@ Signed-off-by: P Praneesh spin_lock_bh(&dp->tx_ring[i].tx_idr_lock); idr_for_each(&dp->tx_ring[i].txbuf_idr, ath11k_dp_tx_pending_cleanup, ab); -@@ -1172,7 +1177,7 @@ int ath11k_dp_alloc(struct ath11k_base * +@@ -1159,7 +1164,7 @@ int ath11k_dp_alloc(struct ath11k_base * size = sizeof(struct hal_wbm_release_ring) * DP_TX_COMP_RING_SIZE; diff --git a/package/kernel/mac80211/patches/nss/ath11k/300-ath11k-nss-mesh-offload-support.patch b/package/kernel/mac80211/patches/nss/ath11k/300-ath11k-nss-mesh-offload-support.patch index 0b145b4faf..87139d50f9 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/300-ath11k-nss-mesh-offload-support.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/300-ath11k-nss-mesh-offload-support.patch @@ -1014,7 +1014,7 @@ Signed-off-by: Vasanthakumar Thiagarajan +#endif --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -1436,15 +1436,29 @@ struct htt_ppdu_stats_user_common { +@@ -1438,15 +1438,29 @@ struct htt_ppdu_stats_user_common { u32 host_opaque_cookie; } __packed; @@ -1046,7 +1046,7 @@ Signed-off-by: Vasanthakumar Thiagarajan #define HTT_PPDU_STATS_MAX_USERS 37 --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -1410,6 +1410,71 @@ static int ath11k_htt_tlv_ppdu_stats_par +@@ -1401,6 +1401,71 @@ static int ath11k_htt_tlv_ppdu_stats_par return 0; } @@ -1118,7 +1118,7 @@ Signed-off-by: Vasanthakumar Thiagarajan static void ath11k_update_per_peer_tx_stats(struct ath11k *ar, struct htt_ppdu_stats *ppdu_stats, u8 user) -@@ -1433,6 +1498,9 @@ ath11k_update_per_peer_tx_stats(struct a +@@ -1424,6 +1489,9 @@ ath11k_update_per_peer_tx_stats(struct a if (!(usr_stats->tlv_flags & BIT(HTT_PPDU_STATS_TAG_USR_RATE))) return; @@ -1128,7 +1128,7 @@ Signed-off-by: Vasanthakumar Thiagarajan if (usr_stats->tlv_flags & BIT(HTT_PPDU_STATS_TAG_USR_COMPLTN_COMMON)) is_ampdu = HTT_USR_CMPLTN_IS_AMPDU(usr_stats->cmpltn_cmn.flags); -@@ -1566,6 +1634,8 @@ ath11k_update_per_peer_tx_stats(struct a +@@ -1557,6 +1625,8 @@ ath11k_update_per_peer_tx_stats(struct a ath11k_debugfs_sta_add_tx_stats(arsta, peer_stats, rate_idx); } @@ -1137,7 +1137,7 @@ Signed-off-by: Vasanthakumar Thiagarajan spin_unlock_bh(&ab->base_lock); rcu_read_unlock(); } -@@ -1686,6 +1756,69 @@ int ath11k_dp_htt_tlv_iter(struct ath11k +@@ -1677,6 +1747,69 @@ int ath11k_dp_htt_tlv_iter(struct ath11k return 0; } @@ -1207,7 +1207,7 @@ Signed-off-by: Vasanthakumar Thiagarajan static int ath11k_htt_pull_ppdu_stats(struct ath11k_base *ab, struct sk_buff *skb) { -@@ -1704,6 +1837,15 @@ static int ath11k_htt_pull_ppdu_stats(st +@@ -1695,6 +1828,15 @@ static int ath11k_htt_pull_ppdu_stats(st pdev_id = FIELD_GET(HTT_T2H_PPDU_STATS_INFO_PDEV_ID, msg->info); ppdu_id = msg->ppdu_id; @@ -1223,7 +1223,7 @@ Signed-off-by: Vasanthakumar Thiagarajan rcu_read_lock(); ar = ath11k_mac_get_ar_by_pdev_id(ab, pdev_id); if (!ar) { -@@ -1771,6 +1913,12 @@ static int ath11k_htt_pull_ppdu_stats(st +@@ -1762,6 +1904,12 @@ static int ath11k_htt_pull_ppdu_stats(st } } diff --git a/package/kernel/mac80211/patches/nss/ath11k/335-0002-ath11k-use-DECLARE_BITMAP-for-idr-operations.patch b/package/kernel/mac80211/patches/nss/ath11k/335-0002-ath11k-use-DECLARE_BITMAP-for-idr-operations.patch index de7b06aa78..d6f770f254 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/335-0002-ath11k-use-DECLARE_BITMAP-for-idr-operations.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/335-0002-ath11k-use-DECLARE_BITMAP-for-idr-operations.patch @@ -18,7 +18,7 @@ Signed-off-by: Venkateswara Naralasetty --- a/drivers/net/wireless/ath/ath11k/dp.c +++ b/drivers/net/wireless/ath/ath11k/dp.c -@@ -444,6 +444,8 @@ static void ath11k_dp_srng_common_cleanu +@@ -431,6 +431,8 @@ static void ath11k_dp_srng_common_cleanu for (i = 0; i < DP_TCL_NUM_RING_MAX; i++) { ath11k_dp_srng_cleanup(ab, &dp->tx_ring[i].tcl_data_ring); ath11k_dp_srng_cleanup(ab, &dp->tx_ring[i].tcl_comp_ring); @@ -27,7 +27,7 @@ Signed-off-by: Venkateswara Naralasetty } ath11k_dp_srng_cleanup(ab, &dp->reo_reinject_ring); ath11k_dp_srng_cleanup(ab, &dp->rx_rel_ring); -@@ -456,7 +458,7 @@ static int ath11k_dp_srng_common_setup(s +@@ -443,7 +445,7 @@ static int ath11k_dp_srng_common_setup(s { struct ath11k_dp *dp = &ab->dp; struct hal_srng *srng; @@ -36,7 +36,7 @@ Signed-off-by: Venkateswara Naralasetty u8 tcl_num, wbm_num; ath11k_dp_init_reo_status_timer(ab); -@@ -517,6 +519,18 @@ static int ath11k_dp_srng_common_setup(s +@@ -504,6 +506,18 @@ static int ath11k_dp_srng_common_setup(s ath11k_dp_shadow_init_timer(ab, &dp->tx_ring_timer[i], ATH11K_SHADOW_DP_TIMER_INTERVAL, dp->tx_ring[i].tcl_data_ring.ring_id); @@ -55,7 +55,7 @@ Signed-off-by: Venkateswara Naralasetty } ret = ath11k_dp_srng_setup(ab, &dp->reo_reinject_ring, HAL_REO_REINJECT, -@@ -1101,9 +1115,8 @@ void ath11k_dp_vdev_tx_attach(struct ath +@@ -1088,9 +1102,8 @@ void ath11k_dp_vdev_tx_attach(struct ath ath11k_dp_update_vdev_search(arvif); } @@ -66,7 +66,7 @@ Signed-off-by: Venkateswara Naralasetty struct sk_buff *msdu = skb; dma_unmap_single(ab->dev, ATH11K_SKB_CB(msdu)->paddr, msdu->len, -@@ -1117,21 +1130,28 @@ static int ath11k_dp_tx_pending_cleanup( +@@ -1104,21 +1117,28 @@ static int ath11k_dp_tx_pending_cleanup( void ath11k_dp_free(struct ath11k_base *ab) { struct ath11k_dp *dp = &ab->dp; @@ -111,7 +111,7 @@ Signed-off-by: Venkateswara Naralasetty #define MAX_RXDMA_PER_PDEV 2 -@@ -80,6 +81,13 @@ struct dp_rxdma_ring { +@@ -82,6 +83,13 @@ struct dp_rxdma_ring { #define ATH11K_TX_COMPL_NEXT(x) (((x) + 1) % DP_TX_COMP_RING_SIZE) @@ -125,7 +125,7 @@ Signed-off-by: Venkateswara Naralasetty struct dp_tx_ring { u8 tcl_data_ring_id; struct dp_srng tcl_data_ring; -@@ -90,6 +98,8 @@ struct dp_tx_ring { +@@ -92,6 +100,8 @@ struct dp_tx_ring { struct hal_wbm_release_ring *tx_status; int tx_status_head; int tx_status_tail; @@ -134,7 +134,7 @@ Signed-off-by: Venkateswara Naralasetty }; enum dp_mon_status_buf_state { -@@ -209,7 +219,6 @@ struct ath11k_pdev_dp { +@@ -211,7 +221,6 @@ struct ath11k_pdev_dp { #define DP_TCL_DATA_RING_SIZE 512 #define DP_TCL_DATA_RING_SIZE_WCN6750 2048 #define DP_TX_COMP_RING_SIZE ATH11K_DP_TX_COMP_RING_SIZE diff --git a/package/kernel/mac80211/patches/nss/ath11k/336-ath11k-Fix-updating-rx-stats-with-monitor-vif-enable.patch b/package/kernel/mac80211/patches/nss/ath11k/336-ath11k-Fix-updating-rx-stats-with-monitor-vif-enable.patch index 4dd6f03ccc..68116f76d1 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/336-ath11k-Fix-updating-rx-stats-with-monitor-vif-enable.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/336-ath11k-Fix-updating-rx-stats-with-monitor-vif-enable.patch @@ -16,7 +16,7 @@ Signed-off-by: Anilkumar Kolli --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -6021,12 +6021,23 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -6012,12 +6012,23 @@ int ath11k_dp_rx_process_mon_status(stru } } @@ -43,7 +43,7 @@ Signed-off-by: Anilkumar Kolli rcu_read_lock(); spin_lock_bh(&ab->base_lock); peer = ath11k_peer_find_by_id(ab, ppdu_info->peer_id); -@@ -6350,6 +6361,13 @@ static int ath11k_dp_full_mon_process_rx +@@ -6341,6 +6352,13 @@ static int ath11k_dp_full_mon_process_rx spin_lock_bh(&pmon->mon_lock); @@ -57,7 +57,7 @@ Signed-off-by: Anilkumar Kolli sw_mon_entries = &pmon->sw_mon_entries; rx_mon_stats = &pmon->rx_mon_stats; -@@ -6389,7 +6407,6 @@ static int ath11k_dp_full_mon_process_rx +@@ -6380,7 +6398,6 @@ static int ath11k_dp_full_mon_process_rx } rx_mon_stats->dest_ppdu_done++; @@ -65,7 +65,7 @@ Signed-off-by: Anilkumar Kolli pmon->buf_state = DP_MON_STATUS_LAG; pmon->mon_status_paddr = sw_mon_entries->mon_status_paddr; pmon->hold_mon_dst_ring = true; -@@ -6420,16 +6437,10 @@ reap_status_ring: +@@ -6411,16 +6428,10 @@ reap_status_ring: int ath11k_dp_rx_process_mon_rings(struct ath11k_base *ab, int mac_id, struct napi_struct *napi, int budget) { diff --git a/package/kernel/mac80211/patches/nss/ath11k/356-ath11k-invalid-desc-sanity-check.patch b/package/kernel/mac80211/patches/nss/ath11k/356-ath11k-invalid-desc-sanity-check.patch index efb38b457b..ab51d9d71b 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/356-ath11k-invalid-desc-sanity-check.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/356-ath11k-invalid-desc-sanity-check.patch @@ -57,7 +57,7 @@ Signed-off-by: Nagarajan Maran spin_unlock_bh(&rx_ring->idr_lock); if (buf_id <= 0) goto fail_dma_unmap; -@@ -3141,6 +3141,16 @@ try_again: +@@ -3132,6 +3132,16 @@ try_again: while (likely(desc = (struct hal_reo_dest_ring *)ath11k_hal_srng_dst_get_next_entry(ab, srng))) { @@ -74,7 +74,7 @@ Signed-off-by: Nagarajan Maran cookie = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE, desc->buf_addr_info.info1); buf_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_BUF_ID, -@@ -3171,8 +3181,6 @@ try_again: +@@ -3162,8 +3172,6 @@ try_again: num_buffs_reaped[mac_id]++; diff --git a/package/kernel/mac80211/patches/nss/ath11k/371-ath11k-Fix-ppdu_id-from-firmware-PPDU-stats.patch b/package/kernel/mac80211/patches/nss/ath11k/371-ath11k-Fix-ppdu_id-from-firmware-PPDU-stats.patch index ebbf3cea1b..7c5deae950 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/371-ath11k-Fix-ppdu_id-from-firmware-PPDU-stats.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/371-ath11k-Fix-ppdu_id-from-firmware-PPDU-stats.patch @@ -14,7 +14,7 @@ Signed-off-by: Ramya Gnanasekar --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -1419,6 +1419,7 @@ struct htt_ppdu_stats_usr_cmpltn_cmn { +@@ -1421,6 +1421,7 @@ struct htt_ppdu_stats_usr_cmpltn_cmn { #define HTT_PPDU_STATS_ACK_BA_INFO_TID_NUM GENMASK(31, 25) #define HTT_PPDU_STATS_NON_QOS_TID 16 @@ -24,7 +24,7 @@ Signed-off-by: Ramya Gnanasekar u32 ppdu_id; --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -1289,7 +1289,7 @@ static int ath11k_htt_tlv_ppdu_stats_par +@@ -1280,7 +1280,7 @@ static int ath11k_htt_tlv_ppdu_stats_par struct htt_ppdu_user_stats *user_stats = NULL; int cur_user; u16 peer_id; @@ -33,7 +33,7 @@ Signed-off-by: Ramya Gnanasekar ppdu_info = data; -@@ -1370,6 +1370,8 @@ static int ath11k_htt_tlv_ppdu_stats_par +@@ -1361,6 +1361,8 @@ static int ath11k_htt_tlv_ppdu_stats_par return -EINVAL; } @@ -42,7 +42,7 @@ Signed-off-by: Ramya Gnanasekar peer_id = ((struct htt_ppdu_stats_usr_cmpltn_ack_ba_status *)ptr)->sw_peer_id; cur_user = ath11k_get_ppdu_user_index(&ppdu_info->ppdu_stats, -@@ -1381,6 +1383,7 @@ static int ath11k_htt_tlv_ppdu_stats_par +@@ -1372,6 +1374,7 @@ static int ath11k_htt_tlv_ppdu_stats_par user_stats->is_valid_peer_id = true; memcpy((void *)&user_stats->ack_ba, ptr, sizeof(struct htt_ppdu_stats_usr_cmpltn_ack_ba_status)); diff --git a/package/kernel/mac80211/patches/nss/ath11k/373-ath11k-Add-retry-mechanism-for-update_rx_qu.patch b/package/kernel/mac80211/patches/nss/ath11k/373-ath11k-Add-retry-mechanism-for-update_rx_qu.patch index 329bd78472..98031c029b 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/373-ath11k-Add-retry-mechanism-for-update_rx_qu.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/373-ath11k-Add-retry-mechanism-for-update_rx_qu.patch @@ -74,7 +74,7 @@ Signed-off-by: Tamizh Chelvam Raja if (len > size) --- a/drivers/net/wireless/ath/ath11k/dp.c +++ b/drivers/net/wireless/ath/ath11k/dp.c -@@ -1171,8 +1171,10 @@ int ath11k_dp_alloc(struct ath11k_base * +@@ -1158,8 +1158,10 @@ int ath11k_dp_alloc(struct ath11k_base * INIT_LIST_HEAD(&dp->reo_cmd_list); INIT_LIST_HEAD(&dp->reo_cmd_cache_flush_list); @@ -87,15 +87,15 @@ Signed-off-by: Tamizh Chelvam Raja --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -24,6 +24,7 @@ struct dp_rx_tid { - u32 *vaddr; +@@ -23,6 +23,7 @@ struct dp_rx_tid { + u8 tid; dma_addr_t paddr; u32 size; + u32 pending_desc_size; u32 ba_win_sz; bool active; -@@ -53,6 +54,14 @@ struct dp_reo_cache_flush_elem { +@@ -55,6 +56,14 @@ struct dp_reo_cache_flush_elem { unsigned long ts; }; @@ -110,7 +110,7 @@ Signed-off-by: Tamizh Chelvam Raja struct dp_reo_cmd { struct list_head list; struct dp_rx_tid data; -@@ -297,6 +306,12 @@ struct ath11k_dp { +@@ -299,6 +308,12 @@ struct ath11k_dp { * - reo_cmd_cache_flush_count */ spinlock_t reo_cmd_lock; @@ -173,11 +173,11 @@ Signed-off-by: Tamizh Chelvam Raja + list) { + list_del(&cmd_queue->list); + rx_tid = &cmd_queue->data; -+ if (rx_tid->vaddr) { ++ if (rx_tid->vaddr_unaligned) { + dma_unmap_single(ab->dev, rx_tid->paddr, + rx_tid->size, DMA_BIDIRECTIONAL); -+ kfree(rx_tid->vaddr); -+ rx_tid->vaddr = NULL; ++ kfree(rx_tid->vaddr_unaligned); ++ rx_tid->vaddr_unaligned = NULL; + } + kfree(cmd_queue); + } @@ -235,10 +235,10 @@ Signed-off-by: Tamizh Chelvam Raja - if (ret) { - ath11k_err(ab, "failed to send HAL_REO_CMD_FLUSH_CACHE cmd, tid %d (%d)\n", - rx_tid->tid, ret); -- dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size, -- DMA_BIDIRECTIONAL); -- kfree(rx_tid->vaddr); -- rx_tid->vaddr = NULL; +- dma_free_noncoherent(ab->dev, rx_tid->unaligned_size, +- rx_tid->vaddr_unaligned, +- rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); +- rx_tid->vaddr_unaligned = NULL; - } + +exit: @@ -275,7 +275,7 @@ Signed-off-by: Tamizh Chelvam Raja + update_rx_tid->active = true; + break; + } -+ update_rx_tid->vaddr = NULL; ++ update_rx_tid->vaddr_unaligned = NULL; + update_rx_tid->paddr = 0; + update_rx_tid->size = 0; + update_rx_tid->pending_desc_size = 0; @@ -314,7 +314,7 @@ Signed-off-by: Tamizh Chelvam Raja } } spin_unlock_bh(&dp->reo_cmd_lock); -@@ -820,34 +897,48 @@ free_desc: +@@ -820,36 +897,50 @@ free_desc: void ath11k_peer_rx_tid_delete(struct ath11k *ar, struct ath11k_peer *peer, u8 tid) { @@ -353,9 +353,9 @@ Signed-off-by: Tamizh Chelvam Raja - if (ret != -ESHUTDOWN) - ath11k_err(ar->ab, "failed to send HAL_REO_CMD_UPDATE_RX_QUEUE cmd, tid %d (%d)\n", - tid, ret); -- dma_unmap_single(ar->ab->dev, rx_tid->paddr, rx_tid->size, -- DMA_BIDIRECTIONAL); -- kfree(rx_tid->vaddr); +- dma_free_noncoherent(ar->ab->dev, rx_tid->unaligned_size, +- rx_tid->vaddr_unaligned, +- rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); + list_for_each_entry_safe(elem, tmp, &dp->reo_cmd_update_rx_queue_list, + list) { + rx_tid = &elem->data; @@ -366,9 +366,11 @@ Signed-off-by: Tamizh Chelvam Raja + elem->reo_cmd_update_rx_queue_resend_flag = true; + break; + } - rx_tid->vaddr = NULL; + rx_tid->vaddr_unaligned = NULL; + rx_tid->paddr = 0; ++ rx_tid->paddr_unaligned = 0; + rx_tid->size = 0; ++ rx_tid->unaligned_size = 0; + rx_tid->pending_desc_size = 0; + + list_del(&elem->list); @@ -377,7 +379,9 @@ Signed-off-by: Tamizh Chelvam Raja + spin_unlock_bh(&dp->reo_cmd_update_queue_lock); - rx_tid->paddr = 0; +- rx_tid->paddr_unaligned = 0; - rx_tid->size = 0; +- rx_tid->unaligned_size = 0; + return; } diff --git a/package/kernel/mac80211/patches/nss/ath11k/457-wifi-ath11k-Avoid-memset-of-ppdu-info-for-next-skb.patch b/package/kernel/mac80211/patches/nss/ath11k/457-wifi-ath11k-Avoid-memset-of-ppdu-info-for-next-skb.patch index e45ecec1d9..d90823c34c 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/457-wifi-ath11k-Avoid-memset-of-ppdu-info-for-next-skb.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/457-wifi-ath11k-Avoid-memset-of-ppdu-info-for-next-skb.patch @@ -48,7 +48,7 @@ Signed-off-by: Yuvasree Sivasankaran --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -6089,7 +6089,9 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -6080,7 +6080,9 @@ int ath11k_dp_rx_process_mon_status(stru if (!num_buffs_reaped) goto exit; @@ -59,7 +59,7 @@ Signed-off-by: Yuvasree Sivasankaran ppdu_info->peer_id = HAL_INVALID_PEERID; while ((skb = __skb_dequeue(&skb_list))) { -@@ -6107,7 +6109,6 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -6098,7 +6100,6 @@ int ath11k_dp_rx_process_mon_status(stru if (log_type != ATH11K_PKTLOG_TYPE_INVALID) trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz); @@ -67,7 +67,7 @@ Signed-off-by: Yuvasree Sivasankaran ppdu_info->peer_id = HAL_INVALID_PEERID; hal_status = ath11k_hal_rx_parse_mon_status(ab, ppdu_info, skb); -@@ -6138,6 +6139,7 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -6129,6 +6130,7 @@ int ath11k_dp_rx_process_mon_status(stru if ((ppdu_info->peer_id == HAL_INVALID_PEERID || hal_status != HAL_RX_MON_STATUS_PPDU_DONE)) { dev_kfree_skb_any(skb); diff --git a/package/kernel/mac80211/patches/nss/ath11k/908-ath11k-make-debugfs-sta-htt-stats-modular.patch b/package/kernel/mac80211/patches/nss/ath11k/908-ath11k-make-debugfs-sta-htt-stats-modular.patch index 1939032c82..163c39cf6a 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/908-ath11k-make-debugfs-sta-htt-stats-modular.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/908-ath11k-make-debugfs-sta-htt-stats-modular.patch @@ -120,7 +120,7 @@ &fops_peer_ps_state); --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -1724,8 +1724,10 @@ ath11k_update_per_peer_tx_stats(struct a +@@ -1715,8 +1715,10 @@ ath11k_update_per_peer_tx_stats(struct a peer_stats->mu_pos = mu_pos; peer_stats->ru_tones = arsta->txrate.he_ru_alloc; @@ -131,7 +131,7 @@ } usr_stats->rate_stats_updated = true; -@@ -2171,7 +2173,9 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s +@@ -2162,7 +2164,9 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s ath11k_htt_pull_ppdu_stats(ab, skb); break; case HTT_T2H_MSG_TYPE_EXT_STATS_CONF: diff --git a/package/kernel/mac80211/patches/nss/ath11k/909-wifi-ath11k-fix-invalid-access-to-memory.patch b/package/kernel/mac80211/patches/nss/ath11k/909-wifi-ath11k-fix-invalid-access-to-memory.patch index c6550184ed..9a91eb4695 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/909-wifi-ath11k-fix-invalid-access-to-memory.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/909-wifi-ath11k-fix-invalid-access-to-memory.patch @@ -18,7 +18,7 @@ Signed-off-by: Sarika Sharma --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -2203,6 +2203,7 @@ static int ath11k_dp_rx_msdu_coalesce(st +@@ -2194,6 +2194,7 @@ static int ath11k_dp_rx_msdu_coalesce(st struct hal_rx_desc *ldesc; int space_extra, rem_len, buf_len; u32 hal_rx_desc_sz = ar->ab->hw_params.hal_desc_sz; @@ -26,7 +26,7 @@ Signed-off-by: Sarika Sharma /* As the msdu is spread across multiple rx buffers, * find the offset to the start of msdu for computing -@@ -2251,7 +2252,8 @@ static int ath11k_dp_rx_msdu_coalesce(st +@@ -2242,7 +2243,8 @@ static int ath11k_dp_rx_msdu_coalesce(st rem_len = msdu_len - buf_first_len; while ((skb = __skb_dequeue(msdu_list)) != NULL && rem_len > 0) { rxcb = ATH11K_SKB_RXCB(skb); @@ -36,7 +36,7 @@ Signed-off-by: Sarika Sharma buf_len = DP_RX_BUFFER_SIZE - hal_rx_desc_sz; else buf_len = rem_len; -@@ -2269,7 +2271,7 @@ static int ath11k_dp_rx_msdu_coalesce(st +@@ -2260,7 +2262,7 @@ static int ath11k_dp_rx_msdu_coalesce(st dev_kfree_skb_any(skb); rem_len -= buf_len; diff --git a/package/kernel/mac80211/patches/nss/ath11k/999-233-ath11k-Disable-rx_header-tlv-for-2K-SKB.patch b/package/kernel/mac80211/patches/nss/ath11k/999-233-ath11k-Disable-rx_header-tlv-for-2K-SKB.patch index dc091d678e..f985b7031f 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/999-233-ath11k-Disable-rx_header-tlv-for-2K-SKB.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/999-233-ath11k-Disable-rx_header-tlv-for-2K-SKB.patch @@ -30,7 +30,7 @@ Signed-off-by: Ramya Gnanasekar ret = ath11k_dp_tx_htt_rx_filter_setup(ar->ab, ring_id, ar->dp.mac_id, --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h -@@ -239,7 +239,8 @@ struct ath11k_pdev_dp { +@@ -241,7 +241,8 @@ struct ath11k_pdev_dp { #define DP_REO_CMD_RING_SIZE 256 #define DP_REO_STATUS_RING_SIZE 2048 #define DP_RXDMA_BUF_RING_SIZE 4096 @@ -40,7 +40,7 @@ Signed-off-by: Ramya Gnanasekar #define DP_RXDMA_ERR_DST_RING_SIZE 1024 #define DP_RXDMA_MON_STATUS_RING_SIZE ATH11K_DP_RXDMA_MON_STATUS_RING_SIZE #define DP_RXDMA_MONITOR_BUF_RING_SIZE ATH11K_DP_RXDMA_MONITOR_BUF_RING_SIZE -@@ -678,7 +679,7 @@ enum htt_stats_internal_ppdu_frametype { +@@ -680,7 +681,7 @@ enum htt_stats_internal_ppdu_frametype { * * |31 26|25|24|23 16|15 8|7 0| * |-----------------+----------------+----------------+---------------| @@ -49,7 +49,7 @@ Signed-off-by: Ramya Gnanasekar * |-------------------------------------------------------------------| * | rsvd2 | ring_buffer_size | * |-------------------------------------------------------------------| -@@ -692,6 +693,14 @@ enum htt_stats_internal_ppdu_frametype { +@@ -694,6 +695,14 @@ enum htt_stats_internal_ppdu_frametype { * |-------------------------------------------------------------------| * | tlv_filter_in_flags | * |-------------------------------------------------------------------| @@ -64,7 +64,7 @@ Signed-off-by: Ramya Gnanasekar * Where: * PS = pkt_swap * SS = status_swap -@@ -705,7 +714,10 @@ enum htt_stats_internal_ppdu_frametype { +@@ -707,7 +716,10 @@ enum htt_stats_internal_ppdu_frametype { * More details can be got from enum htt_srng_ring_id * b'24 - status_swap: 1 is to swap status TLV * b'25 - pkt_swap: 1 is to swap packet TLV @@ -76,7 +76,7 @@ Signed-off-by: Ramya Gnanasekar * dword1 - b'0:16 - ring_buffer_size: size of buffers referenced by rx ring, * in byte units. * Valid only for HW_TO_SW_RING and SW_TO_HW_RING -@@ -734,6 +746,42 @@ enum htt_stats_internal_ppdu_frametype { +@@ -736,6 +748,42 @@ enum htt_stats_internal_ppdu_frametype { * dword6 - b'0:31 - tlv_filter_in_flags: * Filter in Attention/MPDU/PPDU/Header/User tlvs * Refer to CFG_TLV_FILTER_IN_FLAG defs @@ -119,7 +119,7 @@ Signed-off-by: Ramya Gnanasekar */ #define HTT_RX_RING_SELECTION_CFG_CMD_INFO0_MSG_TYPE GENMASK(7, 0) -@@ -741,8 +789,16 @@ enum htt_stats_internal_ppdu_frametype { +@@ -743,8 +791,16 @@ enum htt_stats_internal_ppdu_frametype { #define HTT_RX_RING_SELECTION_CFG_CMD_INFO0_RING_ID GENMASK(23, 16) #define HTT_RX_RING_SELECTION_CFG_CMD_INFO0_SS BIT(24) #define HTT_RX_RING_SELECTION_CFG_CMD_INFO0_PS BIT(25) @@ -136,7 +136,7 @@ Signed-off-by: Ramya Gnanasekar enum htt_rx_filter_tlv_flags { HTT_RX_FILTER_TLV_FLAGS_MPDU_START = BIT(0), -@@ -1046,6 +1102,14 @@ enum htt_rx_data_pkt_filter_tlv_flasg3 { +@@ -1048,6 +1104,14 @@ enum htt_rx_data_pkt_filter_tlv_flasg3 { HTT_RX_FILTER_TLV_FLAGS_PER_MSDU_HEADER | \ HTT_RX_FILTER_TLV_FLAGS_ATTENTION) @@ -151,7 +151,7 @@ Signed-off-by: Ramya Gnanasekar struct htt_rx_ring_selection_cfg_cmd { u32 info0; u32 info1; -@@ -1054,6 +1118,10 @@ struct htt_rx_ring_selection_cfg_cmd { +@@ -1056,6 +1120,10 @@ struct htt_rx_ring_selection_cfg_cmd { u32 pkt_type_en_flags2; u32 pkt_type_en_flags3; u32 rx_filter_tlv; @@ -162,7 +162,7 @@ Signed-off-by: Ramya Gnanasekar } __packed; struct htt_rx_ring_tlv_filter { -@@ -1062,6 +1130,14 @@ struct htt_rx_ring_tlv_filter { +@@ -1064,6 +1132,14 @@ struct htt_rx_ring_tlv_filter { u32 pkt_filter_flags1; /* MGMT */ u32 pkt_filter_flags2; /* CTRL */ u32 pkt_filter_flags3; /* DATA */ @@ -228,7 +228,7 @@ Signed-off-by: Ramya Gnanasekar static void ath11k_dp_service_mon_ring(struct timer_list *t) { struct ath11k_base *ab = from_timer(ab, t, mon_reap_timer); -@@ -2389,6 +2424,49 @@ int ath11k_dp_rx_crypto_icv_len(struct a +@@ -2380,6 +2415,49 @@ int ath11k_dp_rx_crypto_icv_len(struct a return 0; } @@ -278,7 +278,7 @@ Signed-off-by: Ramya Gnanasekar static void ath11k_dp_rx_h_undecap_nwifi(struct ath11k *ar, struct sk_buff *msdu, u8 *first_hdr, -@@ -2402,7 +2480,8 @@ static void ath11k_dp_rx_h_undecap_nwifi +@@ -2393,7 +2471,8 @@ static void ath11k_dp_rx_h_undecap_nwifi u8 da[ETH_ALEN]; u8 sa[ETH_ALEN]; u16 qos_ctl = 0; @@ -288,7 +288,7 @@ Signed-off-by: Ramya Gnanasekar /* copy SA & DA and pull decapped header */ hdr = (struct ieee80211_hdr *)msdu->data; -@@ -2411,7 +2490,7 @@ static void ath11k_dp_rx_h_undecap_nwifi +@@ -2402,7 +2481,7 @@ static void ath11k_dp_rx_h_undecap_nwifi ether_addr_copy(sa, ieee80211_get_SA(hdr)); skb_pull(msdu, ieee80211_hdrlen(hdr->frame_control)); @@ -297,7 +297,7 @@ Signed-off-by: Ramya Gnanasekar /* original 802.11 header is valid for the first msdu * hence we can reuse the same header */ -@@ -2441,16 +2520,23 @@ static void ath11k_dp_rx_h_undecap_nwifi +@@ -2432,16 +2511,23 @@ static void ath11k_dp_rx_h_undecap_nwifi /* copy decap header before overwriting for reuse below */ memcpy(decap_hdr, (uint8_t *)hdr, hdr_len); @@ -326,7 +326,7 @@ Signed-off-by: Ramya Gnanasekar memcpy(skb_push(msdu, IEEE80211_QOS_CTL_LEN), &qos_ctl, IEEE80211_QOS_CTL_LEN); -@@ -2566,6 +2652,20 @@ static void ath11k_dp_rx_h_undecap_eth(s +@@ -2557,6 +2643,20 @@ static void ath11k_dp_rx_h_undecap_eth(s u8 da[ETH_ALEN]; u8 sa[ETH_ALEN]; void *rfc1042; @@ -347,7 +347,7 @@ Signed-off-by: Ramya Gnanasekar rfc1042 = ath11k_dp_rx_h_find_rfc1042(ar, msdu, enctype); if (WARN_ON_ONCE(!rfc1042)) -@@ -2594,6 +2694,7 @@ static void ath11k_dp_rx_h_undecap_eth(s +@@ -2585,6 +2685,7 @@ static void ath11k_dp_rx_h_undecap_eth(s memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); @@ -355,7 +355,7 @@ Signed-off-by: Ramya Gnanasekar /* original 802.11 header has a different DA and in * case of 4addr it may also have different SA */ -@@ -2612,6 +2713,7 @@ static void ath11k_dp_rx_h_undecap_snap( +@@ -2603,6 +2704,7 @@ static void ath11k_dp_rx_h_undecap_snap( size_t hdr_len; u8 l3_pad_bytes; struct hal_rx_desc *rx_desc; @@ -363,7 +363,7 @@ Signed-off-by: Ramya Gnanasekar /* Delivered decapped frame: * [amsdu header] <-- replaced with 802.11 hdr -@@ -2625,6 +2727,11 @@ static void ath11k_dp_rx_h_undecap_snap( +@@ -2616,6 +2718,11 @@ static void ath11k_dp_rx_h_undecap_snap( skb_put(msdu, l3_pad_bytes); skb_pull(msdu, sizeof(struct ath11k_dp_amsdu_subframe_hdr) + l3_pad_bytes); @@ -375,7 +375,7 @@ Signed-off-by: Ramya Gnanasekar hdr = (struct ieee80211_hdr *)first_hdr; hdr_len = ieee80211_hdrlen(hdr->frame_control); -@@ -3098,6 +3205,20 @@ static int ath11k_dp_rx_process_msdu(str +@@ -3089,6 +3196,20 @@ static int ath11k_dp_rx_process_msdu(str goto free_out; } @@ -396,7 +396,7 @@ Signed-off-by: Ramya Gnanasekar rxcb = ATH11K_SKB_RXCB(msdu); rxcb->rx_desc = rx_desc; msdu_len = ath11k_dp_rx_h_msdu_start_msdu_len(ab, rx_desc); -@@ -3110,8 +3231,9 @@ static int ath11k_dp_rx_process_msdu(str +@@ -3101,8 +3222,9 @@ static int ath11k_dp_rx_process_msdu(str hdr_status = ath11k_dp_rx_h_80211_hdr(ab, rx_desc); ret = -EINVAL; ath11k_warn(ab, "invalid msdu len %u\n", msdu_len); @@ -408,7 +408,7 @@ Signed-off-by: Ramya Gnanasekar ath11k_dbg_dump(ab, ATH11K_DBG_DATA, NULL, "", rx_desc, sizeof(struct hal_rx_desc)); goto free_out; -@@ -4070,6 +4192,7 @@ static int ath11k_dp_rx_h_verify_tkip_mi +@@ -4061,6 +4183,7 @@ static int ath11k_dp_rx_h_verify_tkip_mi hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz); hdr_len = ieee80211_hdrlen(hdr->frame_control); @@ -416,7 +416,7 @@ Signed-off-by: Ramya Gnanasekar head_len = hdr_len + hal_rx_desc_sz + IEEE80211_TKIP_IV_LEN; tail_len = IEEE80211_CCMP_MIC_LEN + IEEE80211_TKIP_ICV_LEN + FCS_LEN; -@@ -4350,8 +4473,8 @@ static void ath11k_dp_rx_h_sort_frags(st +@@ -4341,8 +4464,8 @@ static void ath11k_dp_rx_h_sort_frags(st static u64 ath11k_dp_rx_h_get_pn(struct ath11k *ar, struct sk_buff *skb) { @@ -426,7 +426,7 @@ Signed-off-by: Ramya Gnanasekar u8 *ehdr; u32 hal_rx_desc_sz = ar->ab->hw_params.hal_desc_sz; -@@ -4581,8 +4704,9 @@ ath11k_dp_process_rx_err_buf(struct ath1 +@@ -4572,8 +4695,9 @@ ath11k_dp_process_rx_err_buf(struct ath1 if ((msdu_len + hal_rx_desc_sz) > DP_RX_BUFFER_SIZE) { hdr_status = ath11k_dp_rx_h_80211_hdr(ar->ab, rx_desc); ath11k_warn(ar->ab, "invalid msdu leng %u", msdu_len); @@ -438,7 +438,7 @@ Signed-off-by: Ramya Gnanasekar ath11k_dbg_dump(ar->ab, ATH11K_DBG_DATA, NULL, "", rx_desc, sizeof(struct hal_rx_desc)); dev_kfree_skb_any(msdu); -@@ -5207,6 +5331,47 @@ void ath11k_dp_rx_pdev_free(struct ath11 +@@ -5198,6 +5322,47 @@ void ath11k_dp_rx_pdev_free(struct ath11 ath11k_dp_rxdma_pdev_buf_free(ar); } @@ -486,7 +486,7 @@ Signed-off-by: Ramya Gnanasekar int ath11k_dp_rx_pdev_alloc(struct ath11k_base *ab, int mac_id) { struct ath11k *ar = ab->pdevs[mac_id].ar; -@@ -5300,6 +5465,12 @@ config_refill_ring: +@@ -5291,6 +5456,12 @@ config_refill_ring: } } diff --git a/package/kernel/mac80211/patches/nss/ath11k/999-336-0001-ath11k-idr-optimization.patch b/package/kernel/mac80211/patches/nss/ath11k/999-336-0001-ath11k-idr-optimization.patch index 470e161f2d..c1b1c634c7 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/999-336-0001-ath11k-idr-optimization.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/999-336-0001-ath11k-idr-optimization.patch @@ -28,7 +28,7 @@ Signed-off-by: Tamizh Chelvam } --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -3385,18 +3385,16 @@ try_again: +@@ -3376,18 +3376,16 @@ try_again: ar = ab->pdevs[mac_id].ar; rx_ring = &ar->dp.rx_refill_buf_ring; spin_lock_bh(&rx_ring->idr_lock); @@ -50,7 +50,7 @@ Signed-off-by: Tamizh Chelvam dma_unmap_single(ab->dev, rxcb->paddr, msdu->len + skb_tailroom(msdu), DMA_FROM_DEVICE); -@@ -4667,17 +4665,14 @@ ath11k_dp_process_rx_err_buf(struct ath1 +@@ -4658,17 +4656,14 @@ ath11k_dp_process_rx_err_buf(struct ath1 u32 hal_rx_desc_sz = ar->ab->hw_params.hal_desc_sz; spin_lock_bh(&rx_ring->idr_lock); @@ -70,7 +70,7 @@ Signed-off-by: Tamizh Chelvam rxcb = ATH11K_SKB_RXCB(msdu); dma_unmap_single(ar->ab->dev, rxcb->paddr, msdu->len + skb_tailroom(msdu), -@@ -5083,18 +5078,16 @@ int ath11k_dp_rx_process_wbm_err(struct +@@ -5074,18 +5069,16 @@ int ath11k_dp_rx_process_wbm_err(struct rx_ring = &ar->dp.rx_refill_buf_ring; spin_lock_bh(&rx_ring->idr_lock); @@ -92,7 +92,7 @@ Signed-off-by: Tamizh Chelvam dma_unmap_single(ab->dev, rxcb->paddr, msdu->len + skb_tailroom(msdu), DMA_FROM_DEVICE); -@@ -5209,16 +5202,14 @@ int ath11k_dp_process_rxdma_err(struct a +@@ -5200,16 +5193,14 @@ int ath11k_dp_process_rxdma_err(struct a msdu_cookies[i]); spin_lock_bh(&rx_ring->idr_lock); @@ -111,7 +111,7 @@ Signed-off-by: Tamizh Chelvam rxcb = ATH11K_SKB_RXCB(skb); dma_unmap_single(ab->dev, rxcb->paddr, -@@ -6426,16 +6417,14 @@ ath11k_dp_rx_full_mon_mpdu_pop(struct at +@@ -6417,16 +6408,14 @@ ath11k_dp_rx_full_mon_mpdu_pop(struct at msdu_list.sw_cookie[i]); spin_lock_bh(&rx_ring->idr_lock); diff --git a/package/kernel/mac80211/patches/nss/ath11k/999-336-0002-ath11k-Use-idr_replace.patch b/package/kernel/mac80211/patches/nss/ath11k/999-336-0002-ath11k-Use-idr_replace.patch index 55d7ec8b63..00a89a66c7 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/999-336-0002-ath11k-Use-idr_replace.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/999-336-0002-ath11k-Use-idr_replace.patch @@ -40,7 +40,7 @@ Signed-off-by: Tamizh Chelvam struct ath11k_band_cap { --- a/drivers/net/wireless/ath/ath11k/dp.c +++ b/drivers/net/wireless/ath/ath11k/dp.c -@@ -966,7 +966,7 @@ int ath11k_dp_service_srng(struct ath11k +@@ -953,7 +953,7 @@ int ath11k_dp_service_srng(struct ath11k hal_params = ab->hw_params.hal_params; ath11k_dp_rxbufs_replenish(ab, id, rx_ring, 0, @@ -114,7 +114,7 @@ Signed-off-by: Tamizh Chelvam return 0; } -@@ -3347,11 +3366,14 @@ int ath11k_dp_process_rx(struct ath11k_b +@@ -3338,11 +3357,14 @@ int ath11k_dp_process_rx(struct ath11k_b struct ath11k *ar; struct hal_reo_dest_ring *desc; enum hal_reo_dest_ring_push_reason push_reason; @@ -130,7 +130,7 @@ Signed-off-by: Tamizh Chelvam srng = &ab->hal.srng_list[dp->reo_dst_ring[ring_id].ring_id]; -@@ -3384,8 +3406,15 @@ try_again: +@@ -3375,8 +3397,15 @@ try_again: ar = ab->pdevs[mac_id].ar; rx_ring = &ar->dp.rx_refill_buf_ring; @@ -147,7 +147,7 @@ Signed-off-by: Tamizh Chelvam spin_unlock_bh(&rx_ring->idr_lock); if (unlikely(!msdu)) { ath11k_warn(ab, "frame rx with invalid buf_id %d\n", -@@ -3463,9 +3492,12 @@ try_again: +@@ -3454,9 +3483,12 @@ try_again: rx_ring = &ar->dp.rx_refill_buf_ring; ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i], @@ -161,7 +161,7 @@ Signed-off-by: Tamizh Chelvam return total_msdu_reaped; } -@@ -4827,7 +4859,7 @@ exit: +@@ -4818,7 +4850,7 @@ exit: rx_ring = &ar->dp.rx_refill_buf_ring; ath11k_dp_rxbufs_replenish(ab, i, rx_ring, n_bufs_reaped[i], @@ -170,7 +170,7 @@ Signed-off-by: Tamizh Chelvam } return tot_n_bufs_reaped; -@@ -5043,14 +5075,17 @@ int ath11k_dp_rx_process_wbm_err(struct +@@ -5034,14 +5066,17 @@ int ath11k_dp_rx_process_wbm_err(struct struct sk_buff *msdu; struct sk_buff_head msdu_list[MAX_RADIOS]; struct ath11k_skb_rxcb *rxcb; @@ -189,7 +189,7 @@ Signed-off-by: Tamizh Chelvam srng = &ab->hal.srng_list[dp->rx_rel_ring.ring_id]; -@@ -5076,9 +5111,15 @@ int ath11k_dp_rx_process_wbm_err(struct +@@ -5067,9 +5102,15 @@ int ath11k_dp_rx_process_wbm_err(struct ar = ab->pdevs[mac_id].ar; rx_ring = &ar->dp.rx_refill_buf_ring; @@ -206,7 +206,7 @@ Signed-off-by: Tamizh Chelvam spin_unlock_bh(&rx_ring->idr_lock); if (!msdu) { ath11k_warn(ab, "frame rx with invalid buf_id %d pdev %d\n", -@@ -5123,7 +5164,7 @@ int ath11k_dp_rx_process_wbm_err(struct +@@ -5114,7 +5155,7 @@ int ath11k_dp_rx_process_wbm_err(struct rx_ring = &ar->dp.rx_refill_buf_ring; ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i], @@ -215,7 +215,7 @@ Signed-off-by: Tamizh Chelvam } rcu_read_lock(); -@@ -5145,6 +5186,8 @@ int ath11k_dp_rx_process_wbm_err(struct +@@ -5136,6 +5177,8 @@ int ath11k_dp_rx_process_wbm_err(struct } rcu_read_unlock(); done: @@ -224,7 +224,7 @@ Signed-off-by: Tamizh Chelvam return total_num_buffs_reaped; } -@@ -5230,7 +5273,7 @@ int ath11k_dp_process_rxdma_err(struct a +@@ -5221,7 +5264,7 @@ int ath11k_dp_process_rxdma_err(struct a if (num_buf_freed) ath11k_dp_rxbufs_replenish(ab, mac_id, rx_ring, num_buf_freed, @@ -233,7 +233,7 @@ Signed-off-by: Tamizh Chelvam return budget - quota; } -@@ -6176,12 +6219,12 @@ static void ath11k_dp_rx_mon_dest_proces +@@ -6167,12 +6210,12 @@ static void ath11k_dp_rx_mon_dest_proces ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id, &dp->rxdma_mon_buf_ring, rx_bufs_used, @@ -248,7 +248,7 @@ Signed-off-by: Tamizh Chelvam } } -@@ -6694,7 +6737,7 @@ next_entry: +@@ -6685,7 +6728,7 @@ next_entry: ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id, &dp->rxdma_mon_buf_ring, rx_bufs_used, diff --git a/package/kernel/mac80211/patches/nss/ath11k/999-374-ath11k-Check-skb_headroom-before-using-skb_push.patch b/package/kernel/mac80211/patches/nss/ath11k/999-374-ath11k-Check-skb_headroom-before-using-skb_push.patch index 988717c1db..6a6489a9bd 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/999-374-ath11k-Check-skb_headroom-before-using-skb_push.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/999-374-ath11k-Check-skb_headroom-before-using-skb_push.patch @@ -35,7 +35,7 @@ Signed-off-by: Tamizh Chelvam Raja --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -2454,16 +2454,27 @@ static void ath11k_get_dot11_hdr_from_rx +@@ -2445,16 +2445,27 @@ static void ath11k_get_dot11_hdr_from_rx size_t hdr_len, crypto_len; struct ieee80211_hdr *hdr; u16 fc, qos_ctl = 0; @@ -63,7 +63,7 @@ Signed-off-by: Tamizh Chelvam Raja skb_push(msdu, hdr_len); hdr = (struct ieee80211_hdr *)msdu->data; hdr->frame_control = fc; -@@ -2499,6 +2510,7 @@ static void ath11k_dp_rx_h_undecap_nwifi +@@ -2490,6 +2501,7 @@ static void ath11k_dp_rx_h_undecap_nwifi u8 da[ETH_ALEN]; u8 sa[ETH_ALEN]; u16 qos_ctl = 0; @@ -71,7 +71,7 @@ Signed-off-by: Tamizh Chelvam Raja u8 *qos, *crypto_hdr; bool add_qos_ctrl = false; -@@ -2543,26 +2555,46 @@ static void ath11k_dp_rx_h_undecap_nwifi +@@ -2534,26 +2546,46 @@ static void ath11k_dp_rx_h_undecap_nwifi } if (!(status->flag & RX_FLAG_IV_STRIPPED)) { @@ -123,7 +123,7 @@ Signed-off-by: Tamizh Chelvam Raja memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); /* original 802.11 header has a different DA and in -@@ -2671,6 +2703,7 @@ static void ath11k_dp_rx_h_undecap_eth(s +@@ -2662,6 +2694,7 @@ static void ath11k_dp_rx_h_undecap_eth(s u8 da[ETH_ALEN]; u8 sa[ETH_ALEN]; void *rfc1042; @@ -131,7 +131,7 @@ Signed-off-by: Tamizh Chelvam Raja struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); struct ath11k_dp_rfc1042_hdr rfc = {0xaa, 0xaa, 0x03, {0x00, 0x00, 0x00}}; -@@ -2680,6 +2713,11 @@ static void ath11k_dp_rx_h_undecap_eth(s +@@ -2671,6 +2704,11 @@ static void ath11k_dp_rx_h_undecap_eth(s ether_addr_copy(sa, eth->h_source); rfc.snap_type = eth->h_proto; skb_pull(msdu, sizeof(struct ethhdr)); @@ -143,7 +143,7 @@ Signed-off-by: Tamizh Chelvam Raja memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), &rfc, sizeof(struct ath11k_dp_rfc1042_hdr)); ath11k_get_dot11_hdr_from_rx_desc(ar, msdu, rxcb, status, enctype); -@@ -2697,6 +2735,11 @@ static void ath11k_dp_rx_h_undecap_eth(s +@@ -2688,6 +2726,11 @@ static void ath11k_dp_rx_h_undecap_eth(s skb_pull(msdu, sizeof(struct ethhdr)); /* push rfc1042/llc/snap */ @@ -155,7 +155,7 @@ Signed-off-by: Tamizh Chelvam Raja memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), rfc1042, sizeof(struct ath11k_dp_rfc1042_hdr)); -@@ -2705,12 +2748,22 @@ static void ath11k_dp_rx_h_undecap_eth(s +@@ -2696,12 +2739,22 @@ static void ath11k_dp_rx_h_undecap_eth(s hdr_len = ieee80211_hdrlen(hdr->frame_control); if (!(status->flag & RX_FLAG_IV_STRIPPED)) { @@ -182,7 +182,7 @@ Signed-off-by: Tamizh Chelvam Raja memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); exit: -@@ -2731,6 +2784,7 @@ static void ath11k_dp_rx_h_undecap_snap( +@@ -2722,6 +2775,7 @@ static void ath11k_dp_rx_h_undecap_snap( struct ieee80211_hdr *hdr; size_t hdr_len; u8 l3_pad_bytes; @@ -190,7 +190,7 @@ Signed-off-by: Tamizh Chelvam Raja struct hal_rx_desc *rx_desc; struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); -@@ -2755,12 +2809,22 @@ static void ath11k_dp_rx_h_undecap_snap( +@@ -2746,12 +2800,22 @@ static void ath11k_dp_rx_h_undecap_snap( hdr_len = ieee80211_hdrlen(hdr->frame_control); if (!(status->flag & RX_FLAG_IV_STRIPPED)) { @@ -217,7 +217,7 @@ Signed-off-by: Tamizh Chelvam Raja memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); } -@@ -2889,7 +2953,7 @@ static void ath11k_dp_rx_h_mpdu(struct a +@@ -2880,7 +2944,7 @@ static void ath11k_dp_rx_h_mpdu(struct a struct ieee80211_rx_status *rx_status, bool *fast_rx) { @@ -226,7 +226,7 @@ Signed-off-by: Tamizh Chelvam Raja enum hal_encrypt_type enctype; bool is_decrypted = false; struct ath11k_skb_rxcb *rxcb; -@@ -3122,10 +3186,16 @@ static void ath11k_dp_rx_deliver_msdu(st +@@ -3113,10 +3177,16 @@ static void ath11k_dp_rx_deliver_msdu(st u8 decap = DP_RX_DECAP_TYPE_RAW; bool is_mcbc = rxcb->is_mcbc; bool is_eapol = rxcb->is_eapol; @@ -243,7 +243,7 @@ Signed-off-by: Tamizh Chelvam Raja he = skb_push(msdu, sizeof(known)); memcpy(he, &known, sizeof(known)); status->flag |= RX_FLAG_RADIOTAP_HE; -@@ -3181,6 +3251,7 @@ static void ath11k_dp_rx_deliver_msdu(st +@@ -3172,6 +3242,7 @@ static void ath11k_dp_rx_deliver_msdu(st !(is_mcbc && rx_status->flag & RX_FLAG_DECRYPTED)) rx_status->flag |= RX_FLAG_8023; diff --git a/package/kernel/mac80211/patches/nss/ath11k/999-900-bss-transition-handling.patch b/package/kernel/mac80211/patches/nss/ath11k/999-900-bss-transition-handling.patch index a421bb2fac..4c7f886a0e 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/999-900-bss-transition-handling.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/999-900-bss-transition-handling.patch @@ -172,7 +172,7 @@ ath11k_dp_rxdma_ring_buf_setup(ar, rx_ring, HAL_RXDMA_BUF); if (ar->ab->hw_params.rxdma1_enable) { -@@ -1118,17 +1118,17 @@ static int ath11k_peer_rx_tid_reo_update +@@ -1120,17 +1120,17 @@ static int ath11k_peer_rx_tid_reo_update return 0; } @@ -194,16 +194,15 @@ goto unlock_exit; } -@@ -1136,7 +1136,7 @@ static void ath11k_dp_rx_tid_mem_free(st +@@ -1138,14 +1138,14 @@ static void ath11k_dp_rx_tid_mem_free(st if (!rx_tid->active) goto unlock_exit; -- dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size, -+ dma_unmap_single(ar->ab->dev, rx_tid->paddr, rx_tid->size, - DMA_BIDIRECTIONAL); - kfree(rx_tid->vaddr); - rx_tid->vaddr = NULL; -@@ -1144,7 +1144,7 @@ static void ath11k_dp_rx_tid_mem_free(st +- dma_free_noncoherent(ab->dev, rx_tid->unaligned_size, rx_tid->vaddr_unaligned, ++ dma_free_noncoherent(ar->ab->dev, rx_tid->unaligned_size, rx_tid->vaddr_unaligned, + rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL); + rx_tid->vaddr_unaligned = NULL; + rx_tid->active = false; unlock_exit: @@ -221,7 +220,7 @@ if (!peer) { ath11k_warn(ab, "failed to find the peer %pM to set up rx tid\n", peer_mac); -@@ -1261,7 +1261,7 @@ int ath11k_peer_rx_tid_setup(struct ath1 +@@ -1258,7 +1258,7 @@ int ath11k_peer_rx_tid_setup(struct ath1 if (ret) { ath11k_warn(ar->ab, "failed to setup rx reorder queue for peer %pM tid %d: %d\n", peer_mac, tid, ret); @@ -230,7 +229,7 @@ } return ret; -@@ -1304,7 +1304,7 @@ int ath11k_dp_rx_ampdu_stop(struct ath11 +@@ -1295,7 +1295,7 @@ int ath11k_dp_rx_ampdu_stop(struct ath11 spin_lock_bh(&ab->base_lock); @@ -239,7 +238,7 @@ if (!peer) { ath11k_warn(ab, "failed to find the peer to stop rx aggregation\n"); spin_unlock_bh(&ab->base_lock); -@@ -1381,7 +1381,7 @@ int ath11k_dp_peer_rx_pn_replay_config(s +@@ -1372,7 +1372,7 @@ int ath11k_dp_peer_rx_pn_replay_config(s spin_lock_bh(&ab->base_lock); @@ -248,7 +247,7 @@ if (!peer) { ath11k_warn(ab, "failed to find the peer to configure pn replay detection\n"); spin_unlock_bh(&ab->base_lock); -@@ -1426,7 +1426,7 @@ static inline int ath11k_get_ppdu_user_i +@@ -1417,7 +1417,7 @@ static inline int ath11k_get_ppdu_user_i return -EINVAL; } @@ -257,7 +256,7 @@ u16 tag, u16 len, const void *ptr, void *data) { -@@ -1558,10 +1558,9 @@ static int ath11k_htt_tlv_ppdu_stats_par +@@ -1549,10 +1549,9 @@ static int ath11k_htt_tlv_ppdu_stats_par return 0; } @@ -269,7 +268,7 @@ struct ieee80211_sta *sta; struct ath11k_sta *arsta; struct ath11k_peer *peer = NULL; -@@ -1574,7 +1573,7 @@ static void ath11k_dp_ppdu_stats_flush_t +@@ -1565,7 +1564,7 @@ static void ath11k_dp_ppdu_stats_flush_t rcu_read_lock(); spin_lock_bh(&ab->base_lock); @@ -278,7 +277,7 @@ if (!peer) goto exit; -@@ -1603,7 +1602,7 @@ exit: +@@ -1594,7 +1593,7 @@ exit: rcu_read_unlock(); } @@ -287,7 +286,7 @@ u16 tag, u16 len, const void *ptr, void *data) { -@@ -1614,7 +1613,7 @@ static int ath11k_htt_tlv_ppdu_soc_stats +@@ -1605,7 +1604,7 @@ static int ath11k_htt_tlv_ppdu_soc_stats len, tag); return -EINVAL; } @@ -296,7 +295,7 @@ break; default: break; -@@ -1710,7 +1709,7 @@ ath11k_update_per_peer_tx_stats(struct a +@@ -1701,7 +1700,7 @@ ath11k_update_per_peer_tx_stats(struct a rcu_read_lock(); spin_lock_bh(&ab->base_lock); @@ -305,7 +304,7 @@ if (!peer || !peer->sta) { spin_unlock_bh(&ab->base_lock); -@@ -1863,8 +1862,8 @@ void ath11k_copy_to_bar(struct ath11k_pe +@@ -1854,8 +1853,8 @@ void ath11k_copy_to_bar(struct ath11k_pe peer->delayba_flag = false; } @@ -316,7 +315,7 @@ const void *ptr, void *data), void *data) { -@@ -1880,7 +1879,7 @@ int ath11k_dp_htt_tlv_iter(struct ath11k +@@ -1871,7 +1870,7 @@ int ath11k_dp_htt_tlv_iter(struct ath11k } while (len > 0) { if (len < sizeof(*tlv)) { @@ -325,7 +324,7 @@ ptr - begin, len, sizeof(*tlv)); return -EINVAL; } -@@ -1891,12 +1890,12 @@ int ath11k_dp_htt_tlv_iter(struct ath11k +@@ -1882,12 +1881,12 @@ int ath11k_dp_htt_tlv_iter(struct ath11k len -= sizeof(*tlv); if (tlv_len > len) { @@ -340,7 +339,7 @@ if (ret == -ENOMEM) return ret; -@@ -1923,7 +1922,7 @@ ath11k_dp_rx_ppdu_stats_update_tx_comp_s +@@ -1914,7 +1913,7 @@ ath11k_dp_rx_ppdu_stats_update_tx_comp_s lockdep_assert_held(&ar->data_lock); @@ -349,7 +348,7 @@ return; ath11k_htt_update_ppdu_stats(ar, &ppdu_info->ppdu_stats); -@@ -1934,7 +1933,7 @@ ath11k_dp_rx_ppdu_stats_update_tx_comp_s +@@ -1925,7 +1924,7 @@ ath11k_dp_rx_ppdu_stats_update_tx_comp_s usr_stats = &ppdu_info->ppdu_stats.user_stats[i]; peer_id = usr_stats->peer_id; spin_lock_bh(&ab->base_lock); @@ -358,7 +357,7 @@ if (!peer) { spin_unlock_bh(&ab->base_lock); continue; -@@ -1988,7 +1987,7 @@ static int ath11k_htt_pull_ppdu_stats(st +@@ -1979,7 +1978,7 @@ static int ath11k_htt_pull_ppdu_stats(st ppdu_id = msg->ppdu_id; if (pdev_id == 0) { @@ -367,7 +366,7 @@ ath11k_htt_tlv_ppdu_soc_stats_parse, NULL); if (ret) -@@ -2014,7 +2013,7 @@ static int ath11k_htt_pull_ppdu_stats(st +@@ -2005,7 +2004,7 @@ static int ath11k_htt_pull_ppdu_stats(st } ppdu_info->ppdu_id = ppdu_id; @@ -376,7 +375,7 @@ ath11k_htt_tlv_ppdu_stats_parse, (void *)ppdu_info); if (ret) { -@@ -2030,7 +2029,7 @@ static int ath11k_htt_pull_ppdu_stats(st +@@ -2021,7 +2020,7 @@ static int ath11k_htt_pull_ppdu_stats(st for (i = 0; i < ppdu_info->ppdu_stats.common.num_users; i++) { peer_id = ppdu_info->ppdu_stats.user_stats[i].peer_id; spin_lock_bh(&ab->base_lock); @@ -385,7 +384,7 @@ if (!peer) { spin_unlock_bh(&ab->base_lock); continue; -@@ -2050,7 +2049,7 @@ static int ath11k_htt_pull_ppdu_stats(st +@@ -2041,7 +2040,7 @@ static int ath11k_htt_pull_ppdu_stats(st for (i = 0; i < ppdu_info->bar_num_users; i++) { peer_id = ppdu_info->ppdu_stats.user_stats[i].peer_id; spin_lock_bh(&ab->base_lock); @@ -394,7 +393,7 @@ if (!peer) { spin_unlock_bh(&ab->base_lock); continue; -@@ -2155,6 +2154,7 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s +@@ -2146,6 +2145,7 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s struct sk_buff *skb) { struct ath11k_dp *dp = &ab->dp; @@ -402,7 +401,7 @@ struct htt_resp_msg *resp = (struct htt_resp_msg *)skb->data; enum htt_t2h_msg_type type = FIELD_GET(HTT_T2H_MSG_TYPE, *(u32 *)resp); u16 peer_id; -@@ -2185,7 +2185,10 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s +@@ -2176,7 +2176,10 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s resp->peer_map_ev.info1); ath11k_dp_get_mac_addr(resp->peer_map_ev.mac_addr_l32, peer_mac_h16, mac_addr); @@ -414,7 +413,7 @@ break; case HTT_T2H_MSG_TYPE_PEER_MAP2: vdev_id = FIELD_GET(HTT_T2H_PEER_MAP_INFO_VDEV_ID, -@@ -2202,17 +2205,27 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s +@@ -2193,17 +2196,27 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s resp->peer_map_ev.info1); is_wds = FIELD_GET(HTT_T2H_PEER_MAP_INFO2_NEXT_HOP_M, resp->peer_map_ev.info2); @@ -444,7 +443,7 @@ peer_mac_h16 = FIELD_GET(HTT_T2H_PEER_UNMAP_INFO1_MAC_ADDR_H16, resp->peer_unmap_ev.info1); ath11k_dp_get_mac_addr(resp->peer_map_ev.mac_addr_l32, -@@ -2221,7 +2234,10 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s +@@ -2212,7 +2225,10 @@ void ath11k_dp_htt_htc_t2h_msg_handler(s resp->peer_unmap_ev.info1); free_wds_count = FIELD_GET(HTT_T2H_PEER_UNMAP_INFO3_WDS_FREE_COUNT, resp->peer_unmap_ev.info3); @@ -456,7 +455,7 @@ break; case HTT_T2H_MSG_TYPE_PPDU_STATS_IND: ath11k_htt_pull_ppdu_stats(ab, skb); -@@ -2876,25 +2892,25 @@ static void ath11k_dp_rx_h_undecap(struc +@@ -2867,25 +2883,25 @@ static void ath11k_dp_rx_h_undecap(struc } static struct ath11k_peer * @@ -488,7 +487,7 @@ return peer; } -@@ -2938,7 +2954,7 @@ static bool ath11k_dp_rx_check_fast_rx(s +@@ -2929,7 +2945,7 @@ static bool ath11k_dp_rx_check_fast_rx(s return false; /* check if the msdu needs to be bridged to our connected peer */ @@ -497,7 +496,7 @@ if (f_peer && f_peer != peer) return false; -@@ -2977,7 +2993,7 @@ static void ath11k_dp_rx_h_mpdu(struct a +@@ -2968,7 +2984,7 @@ static void ath11k_dp_rx_h_mpdu(struct a } spin_lock_bh(&ar->ab->base_lock); @@ -506,7 +505,7 @@ if (peer) { /* If the pkt is a valid IP packet and peer supports * fast rx, deliver directly to net, also note that -@@ -3205,7 +3221,7 @@ static void ath11k_dp_rx_deliver_msdu(st +@@ -3196,7 +3212,7 @@ static void ath11k_dp_rx_deliver_msdu(st decap = ath11k_dp_rx_h_msdu_start_decap_type(ar->ab, rxcb->rx_desc); spin_lock_bh(&ar->ab->base_lock); @@ -515,7 +514,7 @@ if (peer && peer->sta) pubsta = peer->sta; spin_unlock_bh(&ar->ab->base_lock); -@@ -3462,7 +3478,7 @@ try_again: +@@ -3453,7 +3469,7 @@ try_again: if (unlikely(push_reason == HAL_REO_DEST_RING_PUSH_REASON_ERR_DETECTED)) { ath11k_warn(ab,"Received invalid desc\n"); @@ -524,7 +523,7 @@ continue; } -@@ -3736,7 +3752,7 @@ static void ath11k_dp_rx_update_user_sta +@@ -3727,7 +3743,7 @@ static void ath11k_dp_rx_update_user_sta if (user_stats->ast_index == 0 || user_stats->ast_index == 0xFFFF) return; @@ -533,7 +532,7 @@ if (peer == NULL) { if (!ar->ab->nss.enabled) -@@ -4210,7 +4226,7 @@ int ath11k_peer_rx_frag_setup(struct ath +@@ -4201,7 +4217,7 @@ int ath11k_peer_rx_frag_setup(struct ath spin_lock_bh(&ab->base_lock); @@ -542,7 +541,7 @@ if (!peer) { ath11k_warn(ab, "failed to find the peer to set up fragment info\n"); spin_unlock_bh(&ab->base_lock); -@@ -4666,7 +4682,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru +@@ -4657,7 +4673,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru return -EINVAL; spin_lock_bh(&ab->base_lock); @@ -551,7 +550,7 @@ if (!peer) { ath11k_warn(ab, "failed to find the peer to de-fragment received fragment peer_id %d\n", peer_id); -@@ -4728,7 +4744,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru +@@ -4719,7 +4735,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru del_timer_sync(&rx_tid->frag_timer); spin_lock_bh(&ab->base_lock); @@ -560,7 +559,7 @@ if (!peer) goto err_frags_cleanup; -@@ -6392,7 +6408,7 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -6383,7 +6399,7 @@ int ath11k_dp_rx_process_mon_status(stru trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz); ppdu_info->peer_id = HAL_INVALID_PEERID; @@ -569,7 +568,7 @@ if (test_bit(ATH11K_FLAG_MONITOR_STARTED, &ar->monitor_flags) && pmon->mon_ppdu_status == DP_PPDU_STATUS_START && -@@ -6426,7 +6442,7 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -6417,7 +6433,7 @@ int ath11k_dp_rx_process_mon_status(stru } rcu_read_lock(); spin_lock_bh(&ab->base_lock); diff --git a/package/kernel/mac80211/patches/nss/ath11k/999-903-ath11k-use-ath11k_sta_to_arsta.patch b/package/kernel/mac80211/patches/nss/ath11k/999-903-ath11k-use-ath11k_sta_to_arsta.patch index 29e7737b39..3ad0df0a27 100644 --- a/package/kernel/mac80211/patches/nss/ath11k/999-903-ath11k-use-ath11k_sta_to_arsta.patch +++ b/package/kernel/mac80211/patches/nss/ath11k/999-903-ath11k-use-ath11k_sta_to_arsta.patch @@ -11,7 +11,7 @@ --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c -@@ -1584,7 +1584,7 @@ static void ath11k_dp_ppdu_stats_flush_t +@@ -1575,7 +1575,7 @@ static void ath11k_dp_ppdu_stats_flush_t goto exit; sta = peer->sta; @@ -20,7 +20,7 @@ memset(&status, 0, sizeof(status)); -@@ -1950,7 +1950,7 @@ ath11k_dp_rx_ppdu_stats_update_tx_comp_s +@@ -1941,7 +1941,7 @@ ath11k_dp_rx_ppdu_stats_update_tx_comp_s } sta = peer->sta; @@ -29,7 +29,7 @@ memset(&status, 0, sizeof(status)); -@@ -3009,8 +3009,7 @@ static void ath11k_dp_rx_h_mpdu(struct a +@@ -3000,8 +3000,7 @@ static void ath11k_dp_rx_h_mpdu(struct a msdu->protocol = eth_type_trans(msdu, msdu->dev); napi_gro_receive(rxcb->napi, msdu); if (peer->sta) @@ -39,7 +39,7 @@ return; } } -@@ -3761,7 +3760,7 @@ static void ath11k_dp_rx_update_user_sta +@@ -3752,7 +3751,7 @@ static void ath11k_dp_rx_update_user_sta return; } @@ -48,7 +48,7 @@ rx_stats = arsta->rx_stats; if (ar->ab->nss.enabled) -@@ -6454,7 +6453,7 @@ int ath11k_dp_rx_process_mon_status(stru +@@ -6445,7 +6444,7 @@ int ath11k_dp_rx_process_mon_status(stru if ((ppdu_info->fc_valid) && (ppdu_info->ast_index != HAL_AST_IDX_INVALID)) { if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_SU) {