fix mac80211

Signed-off-by: ZqinKing <zqinking23@gmail.com>
This commit is contained in:
ZqinKing 2025-04-02 08:36:24 +00:00
parent 962c717e2a
commit a0977ba4a9
29 changed files with 230 additions and 227 deletions

View File

@ -34,7 +34,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
.name = "qca2066 hw2.1", .name = "qca2066 hw2.1",
--- a/drivers/net/wireless/ath/ath11k/dp.c --- a/drivers/net/wireless/ath/ath11k/dp.c
+++ b/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); ath11k_dp_shadow_stop_timer(ab, &ab->dp.reo_cmd_timer);
} }
@ -101,7 +101,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
ath11k_dp_srng_cleanup(ab, &dp->wbm_desc_rel_ring); 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_cmd_ring);
ath11k_dp_srng_cleanup(ab, &dp->tcl_status_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; int i, ret;
u8 tcl_num, wbm_num; u8 tcl_num, wbm_num;
@ -112,7 +112,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
DP_WBM_RELEASE_RING_SIZE); DP_WBM_RELEASE_RING_SIZE);
--- a/drivers/net/wireless/ath/ath11k/dp.h --- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/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_PURGE_TIMEOUT_MS 100
#define DP_MON_SERVICE_BUDGET 128 #define DP_MON_SERVICE_BUDGET 128
@ -121,7 +121,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
struct dp_reo_cache_flush_elem { struct dp_reo_cache_flush_elem {
struct list_head list; struct list_head list;
struct dp_rx_tid data; struct dp_rx_tid data;
@@ -286,6 +288,10 @@ struct ath11k_dp { @@ -288,6 +290,10 @@ struct ath11k_dp {
spinlock_t reo_cmd_lock; spinlock_t reo_cmd_lock;
struct ath11k_hp_update_timer reo_cmd_timer; struct ath11k_hp_update_timer reo_cmd_timer;
struct ath11k_hp_update_timer tx_ring_timer[DP_TCL_NUM_RING_MAX]; struct ath11k_hp_update_timer tx_ring_timer[DP_TCL_NUM_RING_MAX];
@ -132,7 +132,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
}; };
/* HTT definitions */ /* 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, struct ath11k_hp_update_timer *update_timer,
u32 interval, u32 ring_id); u32 interval, u32 ring_id);
void ath11k_dp_stop_shadow_timers(struct ath11k_base *ab); void ath11k_dp_stop_shadow_timers(struct ath11k_base *ab);

View File

@ -43,8 +43,8 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
+compat-$(CPTCFG_KERNEL_5_15) += backport-5.15.o backport-genetlink.o +compat-$(CPTCFG_KERNEL_5_15) += backport-5.15.o backport-genetlink.o
+compat-$(CPTCFG_KERNEL_6_1) += backport-genetlink.o +compat-$(CPTCFG_KERNEL_6_1) += backport-genetlink.o
compat-$(CPTCFG_KERNEL_6_4) += backport-6.4.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 --- a/compat/backport-genetlink.c
+++ b/compat/backport-genetlink.c +++ b/compat/backport-genetlink.c
@@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@

View File

@ -269,7 +269,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
&fops_htt_peer_stats); &fops_htt_peer_stats);
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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; return total_msdu_reaped;
} }
@ -313,7 +313,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
u32 num_msdu; u32 num_msdu;
int i; 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; arsta->rssi_comb = ppdu_info->rssi_comb;
ewma_avg_rssi_add(&arsta->avg_rssi, ppdu_info->rssi_comb); ewma_avg_rssi_add(&arsta->avg_rssi, ppdu_info->rssi_comb);
@ -322,7 +322,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
num_msdu = ppdu_info->tcp_msdu_count + ppdu_info->tcp_ack_msdu_count + num_msdu = ppdu_info->tcp_msdu_count + ppdu_info->tcp_ack_msdu_count +
ppdu_info->udp_msdu_count + ppdu_info->other_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; ppdu_info->tid = IEEE80211_NUM_TIDS;
} }
@ -341,7 +341,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
if (ppdu_info->ldpc < HAL_RX_SU_MU_CODING_MAX) if (ppdu_info->ldpc < HAL_RX_SU_MU_CODING_MAX)
rx_stats->coding_count[ppdu_info->ldpc] += num_msdu; 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->dcm_count += ppdu_info->dcm;
rx_stats->ru_alloc_cnt[ppdu_info->ru_alloc] += num_msdu; rx_stats->ru_alloc_cnt[ppdu_info->ru_alloc] += num_msdu;
@ -350,7 +350,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
BUILD_BUG_ON(ARRAY_SIZE(arsta->chain_signal) > BUILD_BUG_ON(ARRAY_SIZE(arsta->chain_signal) >
ARRAY_SIZE(ppdu_info->rssi_chain_pri20)); 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; rx_stats->rx_duration += ppdu_info->rx_duration;
arsta->rx_duration = rx_stats->rx_duration; arsta->rx_duration = rx_stats->rx_duration;

View File

@ -317,7 +317,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
if (len > size) if (len > size)
--- a/drivers/net/wireless/ath/ath11k/dp.h --- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/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) | \ BIT(HTT_PPDU_STATS_TAG_TX_MGMTCTRL_PAYLOAD) | \
HTT_PPDU_STATS_TAG_DEFAULT) HTT_PPDU_STATS_TAG_DEFAULT)
@ -363,7 +363,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
/* HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG Message /* HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG Message
* *
* details: * 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_USER_POS_M GENMASK(3, 0)
#define HTT_PPDU_STATS_USER_RATE_INFO0_MU_GROUP_ID_M GENMASK(11, 4) #define HTT_PPDU_STATS_USER_RATE_INFO0_MU_GROUP_ID_M GENMASK(11, 4)
@ -383,7 +383,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
#define HTT_PPDU_STATS_USER_RATE_INFO1_RESP_TYPE_VALD_M BIT(0) #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) #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) FIELD_GET(HTT_PPDU_STATS_USER_RATE_FLAGS_GI_M, _val)
#define HTT_USR_RATE_DCM(_val) \ #define HTT_USR_RATE_DCM(_val) \
FIELD_GET(HTT_PPDU_STATS_USER_RATE_FLAGS_DCM_M, _val) FIELD_GET(HTT_PPDU_STATS_USER_RATE_FLAGS_DCM_M, _val)
@ -396,7 +396,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
#define HTT_PPDU_STATS_USER_RATE_RESP_FLAGS_LTF_SIZE_M GENMASK(1, 0) #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) #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; u32 success_bytes;
} __packed; } __packed;
@ -431,7 +431,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
#define HTT_PPDU_DESC_MAX_DEPTH 16 #define HTT_PPDU_DESC_MAX_DEPTH 16
struct htt_ppdu_stats { 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 { struct htt_ppdu_stats_info {
@ -442,7 +442,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
}; };
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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) void *data)
{ {
struct htt_ppdu_stats_info *ppdu_info; struct htt_ppdu_stats_info *ppdu_info;
@ -454,7 +454,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
ppdu_info = data; 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, memcpy((void *)&ppdu_info->ppdu_stats.common, ptr,
sizeof(struct htt_ppdu_stats_common)); sizeof(struct htt_ppdu_stats_common));
@ -481,7 +481,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
break; break;
case HTT_PPDU_STATS_TAG_USR_RATE: case HTT_PPDU_STATS_TAG_USR_RATE:
if (len < sizeof(struct htt_ppdu_stats_user_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); peer_id);
if (cur_user < 0) if (cur_user < 0)
return -EINVAL; return -EINVAL;
@ -489,7 +489,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
user_stats = &ppdu_info->ppdu_stats.user_stats[cur_user]; user_stats = &ppdu_info->ppdu_stats.user_stats[cur_user];
user_stats->peer_id = peer_id; user_stats->peer_id = peer_id;
user_stats->is_valid_peer_id = true; 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)); sizeof(struct htt_ppdu_stats_usr_cmpltn_ack_ba_status));
user_stats->tlv_flags |= BIT(tag); user_stats->tlv_flags |= BIT(tag);
break; break;
@ -554,7 +554,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
return 0; 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; struct htt_ppdu_stats_common *common = &ppdu_stats->common;
int ret; int ret;
u8 flags, mcs, nss, bw, sgi, dcm, rate_idx = 0; u8 flags, mcs, nss, bw, sgi, dcm, rate_idx = 0;
@ -565,7 +565,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
u32 tx_duration = 0; u32 tx_duration = 0;
u8 tid = HTT_PPDU_STATS_NON_QOS_TID; u8 tid = HTT_PPDU_STATS_NON_QOS_TID;
bool is_ampdu = false; 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); mcs = HTT_USR_RATE_MCS(user_rate->rate_flags);
sgi = HTT_USR_RATE_GI(user_rate->rate_flags); sgi = HTT_USR_RATE_GI(user_rate->rate_flags);
dcm = HTT_USR_RATE_DCM(user_rate->rate_flags); dcm = HTT_USR_RATE_DCM(user_rate->rate_flags);
@ -577,7 +577,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
/* Note: If host configured fixed rates and in some other special /* Note: If host configured fixed rates and in some other special
* cases, the broadcast/management frames are sent in different rates. * 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 = peer_stats->ba_fails =
HTT_USR_CMPLTN_LONG_RETRY(usr_stats->cmpltn_cmn.flags) + HTT_USR_CMPLTN_LONG_RETRY(usr_stats->cmpltn_cmn.flags) +
HTT_USR_CMPLTN_SHORT_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 <milehu@codeaurora.org>
if (ath11k_debugfs_is_extd_tx_stats_enabled(ar)) if (ath11k_debugfs_is_extd_tx_stats_enabled(ar))
ath11k_debugfs_sta_add_tx_stats(arsta, peer_stats, rate_idx); 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; return ppdu_info;
} }
@ -681,7 +681,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
u8 pdev_id; u8 pdev_id;
u32 ppdu_id, len; 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; goto out_unlock_data;
} }

View File

@ -5,7 +5,7 @@
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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; goto next_skb;
} }

View File

@ -15,7 +15,7 @@
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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 static void
ath11k_dp_rx_update_peer_rate_table_stats(struct ath11k_rx_peer_stats *rx_stats, ath11k_dp_rx_update_peer_rate_table_stats(struct ath11k_rx_peer_stats *rx_stats,
struct hal_rx_mon_ppdu_info *ppdu_info, struct hal_rx_mon_ppdu_info *ppdu_info,
@ -30,7 +30,7 @@
u32 bw_idx = ppdu_info->bw; u32 bw_idx = ppdu_info->bw;
u32 gi_idx = ppdu_info->gi; 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; rx_stats->pkt_stats.rx_rate[rate_idx] += num_msdu;
@ -46,7 +46,7 @@
struct hal_rx_mon_ppdu_info *ppdu_info) struct hal_rx_mon_ppdu_info *ppdu_info)
{ {
struct ath11k_rx_peer_stats *rx_stats = arsta->rx_stats; 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_ok += ppdu_info->num_mpdu_fcs_ok;
rx_stats->num_mpdu_fcs_err += ppdu_info->num_mpdu_fcs_err; rx_stats->num_mpdu_fcs_err += ppdu_info->num_mpdu_fcs_err;
rx_stats->dcm_count += ppdu_info->dcm; rx_stats->dcm_count += ppdu_info->dcm;
@ -54,7 +54,7 @@
BUILD_BUG_ON(ARRAY_SIZE(arsta->chain_signal) > BUILD_BUG_ON(ARRAY_SIZE(arsta->chain_signal) >
ARRAY_SIZE(ppdu_info->rssi_chain_pri20)); 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 && if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11N &&
ppdu_info->mcs <= HAL_RX_MAX_MCS_HT) { ppdu_info->mcs <= HAL_RX_MAX_MCS_HT) {
@ -69,7 +69,7 @@
} }
if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AC && 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; 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, int ath11k_dp_rx_process_mon_status(struct ath11k_base *ab, int mac_id,
struct napi_struct *napi, int budget) 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) && if ((ppdu_info->fc_valid) &&
(ppdu_info->ast_index != HAL_AST_IDX_INVALID)) { (ppdu_info->ast_index != HAL_AST_IDX_INVALID)) {

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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); 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, static void ath11k_dp_rx_h_undecap(struct ath11k *ar, struct sk_buff *msdu,
struct hal_rx_desc *rx_desc, struct hal_rx_desc *rx_desc,
enum hal_encrypt_type enctype, 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); enctype, status);
break; break;
case DP_RX_DECAP_TYPE_8023: case DP_RX_DECAP_TYPE_8023:

View File

@ -2816,7 +2816,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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); spin_unlock_bh(&ab->base_lock);
} }

View File

@ -227,7 +227,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
if (ret) { if (ret) {
ath11k_warn(ab, "failed to set default routing %d peer :%pM vdev_id :%d\n", 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; const u8 *grp_mask;
@ -246,7 +246,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
switch (type) { switch (type) {
case HAL_WBM2SW_RELEASE: case HAL_WBM2SW_RELEASE:
if (ring_num == DP_RX_RELEASE_RING_NUM) { 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 work_done = 0;
int i, j; int i, j;
int tot_work_done = 0; int tot_work_done = 0;
@ -268,7 +268,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
work_done = ath11k_dp_process_rx_err(ab, napi, budget); work_done = ath11k_dp_process_rx_err(ab, napi, budget);
budget -= work_done; budget -= work_done;
tot_work_done += 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; goto done;
} }
@ -277,7 +277,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
work_done = ath11k_dp_rx_process_wbm_err(ab, work_done = ath11k_dp_rx_process_wbm_err(ab,
napi, napi,
budget); 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; goto done;
} }
@ -286,7 +286,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
i = fls(ab->hw_params.ring_mask->rx[grp_id]) - 1; i = fls(ab->hw_params.ring_mask->rx[grp_id]) - 1;
work_done = ath11k_dp_process_rx(ab, i, napi, work_done = ath11k_dp_process_rx(ab, i, napi,
budget); 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]) if (ab->hw_params.ring_mask->reo_status[grp_id])
ath11k_dp_process_reo_status(ab); ath11k_dp_process_reo_status(ab);
@ -297,7 +297,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
--- a/drivers/net/wireless/ath/ath11k/dp.h --- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/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_AVG_MSDUS_PER_MPDU 4
#define DP_RX_HASH_ENABLE 1 /* Enable hash based Rx steering */ #define DP_RX_HASH_ENABLE 1 /* Enable hash based Rx steering */
@ -357,7 +357,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
if (ar->ab->hw_params.rxdma1_enable) { if (ar->ab->hw_params.rxdma1_enable) {
rx_ring = &dp->rxdma_mon_buf_ring; 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; return 0;
} }
@ -366,7 +366,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
enum hal_encrypt_type enctype) enum hal_encrypt_type enctype)
{ {
switch (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; return 0;
} }
@ -375,7 +375,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
enum hal_encrypt_type enctype) enum hal_encrypt_type enctype)
{ {
switch (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 <srirrama@codeaurora.org>
int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id, int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id,
struct napi_struct *napi, int budget) 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); peer = ath11k_peer_find_by_ast(ar->ab, user_stats->ast_index);
if (peer == NULL) { if (peer == NULL) {
@ -408,7 +408,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
user_stats->ast_index); user_stats->ast_index);
return; 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; arsta = (struct ath11k_sta *)peer->sta->drv_priv;
rx_stats = arsta->rx_stats; rx_stats = arsta->rx_stats;
@ -422,7 +422,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
if (!rx_stats) if (!rx_stats)
return; 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; u32 num_users, i;
@ -434,7 +434,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
num_users = ppdu_info->num_users; num_users = ppdu_info->num_users;
if (num_users > HAL_MAX_UL_MU_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 *skb;
struct sk_buff_head skb_list; struct sk_buff_head skb_list;
struct ath11k_peer *peer; struct ath11k_peer *peer;
@ -443,7 +443,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
int num_buffs_reaped = 0; int num_buffs_reaped = 0;
u32 rx_buf_sz; u32 rx_buf_sz;
u16 log_type; 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) { if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_SU) {
arsta = (struct ath11k_sta *)peer->sta->drv_priv; arsta = (struct ath11k_sta *)peer->sta->drv_priv;
ath11k_dp_rx_update_peer_su_stats(arsta, ppdu_info); ath11k_dp_rx_update_peer_su_stats(arsta, ppdu_info);

View File

@ -175,7 +175,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
u32 data_pos; u32 data_pos;
--- a/drivers/net/wireless/ath/ath11k/dp.h --- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/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_WBM_RELEASE_RING_SIZE 64
#define DP_TCL_DATA_RING_SIZE 512 #define DP_TCL_DATA_RING_SIZE 512
#define DP_TCL_DATA_RING_SIZE_WCN6750 2048 #define DP_TCL_DATA_RING_SIZE_WCN6750 2048
@ -186,7 +186,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
#define DP_TCL_CMD_RING_SIZE 32 #define DP_TCL_CMD_RING_SIZE 32
#define DP_TCL_STATUS_RING_SIZE 32 #define DP_TCL_STATUS_RING_SIZE 32
#define DP_REO_DST_RING_MAX 4 #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_BUF_RING_SIZE 4096
#define DP_RXDMA_REFILL_RING_SIZE 2048 #define DP_RXDMA_REFILL_RING_SIZE 2048
#define DP_RXDMA_ERR_DST_RING_SIZE 1024 #define DP_RXDMA_ERR_DST_RING_SIZE 1024

View File

@ -46,7 +46,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
}; };
--- a/drivers/net/wireless/ath/ath11k/dp.h --- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/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_INFO_PEER_ID HTT_T2H_PEER_MAP_INFO_PEER_ID
#define HTT_T2H_PEER_UNMAP_INFO1_MAC_ADDR_H16 \ #define HTT_T2H_PEER_UNMAP_INFO1_MAC_ADDR_H16 \
HTT_T2H_PEER_MAP_INFO1_MAC_ADDR_H16 HTT_T2H_PEER_MAP_INFO1_MAC_ADDR_H16
@ -67,7 +67,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
struct htt_resp_msg { struct htt_resp_msg {
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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 peer_mac_h16;
u16 ast_hash; u16 ast_hash;
u16 hw_peer_id; u16 hw_peer_id;
@ -76,7 +76,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
ath11k_dbg(ab, ATH11K_DBG_DP_HTT, "dp_htt rx msg type :0x%0x\n", type); 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); resp->peer_map_ev.info2);
hw_peer_id = FIELD_GET(HTT_T2H_PEER_MAP_INFO1_HW_PEER_ID, hw_peer_id = FIELD_GET(HTT_T2H_PEER_MAP_INFO1_HW_PEER_ID,
resp->peer_map_ev.info1); resp->peer_map_ev.info1);

View File

@ -381,7 +381,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
WMI_STA_PS_PARAM_TX_WAKE_THRESHOLD = 1, WMI_STA_PS_PARAM_TX_WAKE_THRESHOLD = 1,
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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; return ret;
} }
@ -397,7 +397,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
int ret; int ret;
ret = ath11k_peer_rx_tid_setup(ar, params->sta->addr, vdev_id, 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; return ret;
} }

View File

@ -143,7 +143,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
/* Returns number of Rx buffers replenished */ /* Returns number of Rx buffers replenished */
int ath11k_dp_rxbufs_replenish(struct ath11k_base *ab, int mac_id, int ath11k_dp_rxbufs_replenish(struct ath11k_base *ab, int mac_id,
struct dp_rxdma_ring *rx_ring, 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); len -= sizeof(*tlv);
if (tlv_len > len) { if (tlv_len > len) {
@ -152,7 +152,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
tlv_tag, ptr - begin, len, tlv_len); tlv_tag, ptr - begin, len, tlv_len);
return -EINVAL; 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; return peer;
} }
@ -214,7 +214,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
{ {
bool fill_crypto_hdr; bool fill_crypto_hdr;
enum hal_encrypt_type enctype; 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; struct rx_attention *rx_attention;
u32 err_bitmap; u32 err_bitmap;
@ -229,7 +229,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
rxcb->is_mcbc = fill_crypto_hdr; rxcb->is_mcbc = fill_crypto_hdr;
if (rxcb->is_mcbc) { 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); spin_lock_bh(&ar->ab->base_lock);
peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu); peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu);
if (peer) { if (peer) {
@ -256,7 +256,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
if (rxcb->is_mcbc) if (rxcb->is_mcbc)
enctype = peer->sec_type_grp; enctype = peer->sec_type_grp;
else 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); spin_unlock_bh(&ar->ab->base_lock);
@ -265,7 +265,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
rx_attention = ath11k_dp_rx_get_attention(ar->ab, rx_desc); rx_attention = ath11k_dp_rx_get_attention(ar->ab, rx_desc);
err_bitmap = ath11k_dp_rx_h_attn_mpdu_err(rx_attention); err_bitmap = ath11k_dp_rx_h_attn_mpdu_err(rx_attention);
if (enctype != HAL_ENCRYPT_TYPE_OPEN && !err_bitmap) 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, static int ath11k_dp_rx_process_msdu(struct ath11k *ar,
struct sk_buff *msdu, struct sk_buff *msdu,
struct sk_buff_head *msdu_list, struct sk_buff_head *msdu_list,
@ -275,7 +275,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
{ {
struct ath11k_base *ab = ar->ab; struct ath11k_base *ab = ar->ab;
struct hal_rx_desc *rx_desc, *lrx_desc; 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 <ppranees@codeaurora.org>
rx_status->flag |= RX_FLAG_SKIP_MONITOR | RX_FLAG_DUP_VALIDATED; 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, struct sk_buff_head *msdu_list,
int mac_id) int mac_id)
{ {
@ -303,7 +303,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
if (skb_queue_empty(msdu_list)) if (skb_queue_empty(msdu_list))
return; 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))) { while ((msdu = __skb_dequeue(msdu_list))) {
@ -317,7 +317,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
if (unlikely(ret)) { if (unlikely(ret)) {
ath11k_dbg(ab, ATH11K_DBG_DATA, ath11k_dbg(ab, ATH11K_DBG_DATA,
"Unable to process msdu %d", ret); "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; continue;
} }
@ -329,7 +329,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
} }
} }
@@ -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 ieee80211_rx_status rx_status = {0};
struct ath11k_skb_rxcb *rxcb; struct ath11k_skb_rxcb *rxcb;
@ -343,7 +343,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
rx_status.flag |= RX_FLAG_SKIP_MONITOR | RX_FLAG_DUP_VALIDATED; 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 ieee80211_rx_status *status,
struct sk_buff_head *msdu_list) struct sk_buff_head *msdu_list)
{ {
@ -351,7 +351,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
u16 msdu_len; u16 msdu_len;
struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data; struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data;
struct rx_attention *rx_attention; 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); ath11k_dp_rx_h_ppdu(ar, desc, status);

View File

@ -50,7 +50,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
}; };
--- a/drivers/net/wireless/ath/ath11k/dp.c --- a/drivers/net/wireless/ath/ath11k/dp.c
+++ b/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) if (!ab->hw_params.supports_shadow_regs)
return; return;
@ -59,7 +59,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
ath11k_dp_shadow_stop_timer(ab, &ab->dp.tx_ring_timer[i]); ath11k_dp_shadow_stop_timer(ab, &ab->dp.tx_ring_timer[i]);
ath11k_dp_shadow_stop_timer(ab, &ab->dp.reo_cmd_timer); 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->wbm_desc_rel_ring);
ath11k_dp_srng_cleanup(ab, &dp->tcl_cmd_ring); ath11k_dp_srng_cleanup(ab, &dp->tcl_cmd_ring);
ath11k_dp_srng_cleanup(ab, &dp->tcl_status_ring); ath11k_dp_srng_cleanup(ab, &dp->tcl_status_ring);
@ -68,7 +68,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
ath11k_dp_srng_cleanup(ab, &dp->tx_ring[i].tcl_data_ring); ath11k_dp_srng_cleanup(ab, &dp->tx_ring[i].tcl_data_ring);
ath11k_dp_srng_cleanup(ab, &dp->tx_ring[i].tcl_comp_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; goto err;
} }
@ -80,7 +80,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
ret = ath11k_dp_srng_setup(ab, &dp->tcl_status_ring, HAL_TCL_STATUS, ret = ath11k_dp_srng_setup(ab, &dp->tcl_status_ring, HAL_TCL_STATUS,
0, 0, DP_TCL_STATUS_RING_SIZE); 0, 0, DP_TCL_STATUS_RING_SIZE);
if (ret) { 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; goto err;
} }
@ -89,7 +89,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
tcl_num = ab->hw_params.hal_params->tcl2wbm_rbm_map[i].tcl_ring_num; 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; 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]; srng = &ab->hal.srng_list[dp->tx_ring[i].tcl_data_ring.ring_id];
@ -98,7 +98,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
ath11k_dp_shadow_init_timer(ab, &dp->tx_ring_timer[i], ath11k_dp_shadow_init_timer(ab, &dp->tx_ring_timer[i],
ATH11K_SHADOW_DP_TIMER_INTERVAL, 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); ath11k_dp_reo_cmd_list_cleanup(ab);
@ -107,7 +107,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
spin_lock_bh(&dp->tx_ring[i].tx_idr_lock); spin_lock_bh(&dp->tx_ring[i].tx_idr_lock);
idr_for_each(&dp->tx_ring[i].txbuf_idr, idr_for_each(&dp->tx_ring[i].txbuf_idr,
ath11k_dp_tx_pending_cleanup, ab); 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; size = sizeof(struct hal_wbm_release_ring) * DP_TX_COMP_RING_SIZE;

View File

@ -1014,7 +1014,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
+#endif +#endif
--- a/drivers/net/wireless/ath/ath11k/dp.h --- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/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; u32 host_opaque_cookie;
} __packed; } __packed;
@ -1046,7 +1046,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
#define HTT_PPDU_STATS_MAX_USERS 37 #define HTT_PPDU_STATS_MAX_USERS 37
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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; return 0;
} }
@ -1118,7 +1118,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
static void static void
ath11k_update_per_peer_tx_stats(struct ath11k *ar, ath11k_update_per_peer_tx_stats(struct ath11k *ar,
struct htt_ppdu_stats *ppdu_stats, u8 user) 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))) if (!(usr_stats->tlv_flags & BIT(HTT_PPDU_STATS_TAG_USR_RATE)))
return; return;
@ -1128,7 +1128,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
if (usr_stats->tlv_flags & BIT(HTT_PPDU_STATS_TAG_USR_COMPLTN_COMMON)) if (usr_stats->tlv_flags & BIT(HTT_PPDU_STATS_TAG_USR_COMPLTN_COMMON))
is_ampdu = is_ampdu =
HTT_USR_CMPLTN_IS_AMPDU(usr_stats->cmpltn_cmn.flags); 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); ath11k_debugfs_sta_add_tx_stats(arsta, peer_stats, rate_idx);
} }
@ -1137,7 +1137,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
spin_unlock_bh(&ab->base_lock); spin_unlock_bh(&ab->base_lock);
rcu_read_unlock(); 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; return 0;
} }
@ -1207,7 +1207,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
static int ath11k_htt_pull_ppdu_stats(struct ath11k_base *ab, static int ath11k_htt_pull_ppdu_stats(struct ath11k_base *ab,
struct sk_buff *skb) 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); pdev_id = FIELD_GET(HTT_T2H_PPDU_STATS_INFO_PDEV_ID, msg->info);
ppdu_id = msg->ppdu_id; ppdu_id = msg->ppdu_id;
@ -1223,7 +1223,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
rcu_read_lock(); rcu_read_lock();
ar = ath11k_mac_get_ar_by_pdev_id(ab, pdev_id); ar = ath11k_mac_get_ar_by_pdev_id(ab, pdev_id);
if (!ar) { 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
} }
} }

View File

@ -18,7 +18,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
--- a/drivers/net/wireless/ath/ath11k/dp.c --- a/drivers/net/wireless/ath/ath11k/dp.c
+++ b/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++) { 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_data_ring);
ath11k_dp_srng_cleanup(ab, &dp->tx_ring[i].tcl_comp_ring); ath11k_dp_srng_cleanup(ab, &dp->tx_ring[i].tcl_comp_ring);
@ -27,7 +27,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
} }
ath11k_dp_srng_cleanup(ab, &dp->reo_reinject_ring); ath11k_dp_srng_cleanup(ab, &dp->reo_reinject_ring);
ath11k_dp_srng_cleanup(ab, &dp->rx_rel_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 ath11k_dp *dp = &ab->dp;
struct hal_srng *srng; struct hal_srng *srng;
@ -36,7 +36,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
u8 tcl_num, wbm_num; u8 tcl_num, wbm_num;
ath11k_dp_init_reo_status_timer(ab); 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_dp_shadow_init_timer(ab, &dp->tx_ring_timer[i],
ATH11K_SHADOW_DP_TIMER_INTERVAL, ATH11K_SHADOW_DP_TIMER_INTERVAL,
dp->tx_ring[i].tcl_data_ring.ring_id); dp->tx_ring[i].tcl_data_ring.ring_id);
@ -55,7 +55,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
} }
ret = ath11k_dp_srng_setup(ab, &dp->reo_reinject_ring, HAL_REO_REINJECT, 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); ath11k_dp_update_vdev_search(arvif);
} }
@ -66,7 +66,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
struct sk_buff *msdu = skb; struct sk_buff *msdu = skb;
dma_unmap_single(ab->dev, ATH11K_SKB_CB(msdu)->paddr, msdu->len, 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) void ath11k_dp_free(struct ath11k_base *ab)
{ {
struct ath11k_dp *dp = &ab->dp; struct ath11k_dp *dp = &ab->dp;
@ -111,7 +111,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
#define MAX_RXDMA_PER_PDEV 2 #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) #define ATH11K_TX_COMPL_NEXT(x) (((x) + 1) % DP_TX_COMP_RING_SIZE)
@ -125,7 +125,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
struct dp_tx_ring { struct dp_tx_ring {
u8 tcl_data_ring_id; u8 tcl_data_ring_id;
struct dp_srng tcl_data_ring; 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; struct hal_wbm_release_ring *tx_status;
int tx_status_head; int tx_status_head;
int tx_status_tail; int tx_status_tail;
@ -134,7 +134,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
}; };
enum dp_mon_status_buf_state { 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 512
#define DP_TCL_DATA_RING_SIZE_WCN6750 2048 #define DP_TCL_DATA_RING_SIZE_WCN6750 2048
#define DP_TX_COMP_RING_SIZE ATH11K_DP_TX_COMP_RING_SIZE #define DP_TX_COMP_RING_SIZE ATH11K_DP_TX_COMP_RING_SIZE

View File

@ -16,7 +16,7 @@ Signed-off-by: Anilkumar Kolli <quic_akolli@quicinc.com>
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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 <quic_akolli@quicinc.com>
rcu_read_lock(); rcu_read_lock();
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
peer = ath11k_peer_find_by_id(ab, ppdu_info->peer_id); 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); spin_lock_bh(&pmon->mon_lock);
@ -57,7 +57,7 @@ Signed-off-by: Anilkumar Kolli <quic_akolli@quicinc.com>
sw_mon_entries = &pmon->sw_mon_entries; sw_mon_entries = &pmon->sw_mon_entries;
rx_mon_stats = &pmon->rx_mon_stats; 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++; rx_mon_stats->dest_ppdu_done++;
@ -65,7 +65,7 @@ Signed-off-by: Anilkumar Kolli <quic_akolli@quicinc.com>
pmon->buf_state = DP_MON_STATUS_LAG; pmon->buf_state = DP_MON_STATUS_LAG;
pmon->mon_status_paddr = sw_mon_entries->mon_status_paddr; pmon->mon_status_paddr = sw_mon_entries->mon_status_paddr;
pmon->hold_mon_dst_ring = true; 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, int ath11k_dp_rx_process_mon_rings(struct ath11k_base *ab, int mac_id,
struct napi_struct *napi, int budget) struct napi_struct *napi, int budget)
{ {

View File

@ -57,7 +57,7 @@ Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
spin_unlock_bh(&rx_ring->idr_lock); spin_unlock_bh(&rx_ring->idr_lock);
if (buf_id <= 0) if (buf_id <= 0)
goto fail_dma_unmap; goto fail_dma_unmap;
@@ -3141,6 +3141,16 @@ try_again: @@ -3132,6 +3132,16 @@ try_again:
while (likely(desc = while (likely(desc =
(struct hal_reo_dest_ring *)ath11k_hal_srng_dst_get_next_entry(ab, (struct hal_reo_dest_ring *)ath11k_hal_srng_dst_get_next_entry(ab,
srng))) { srng))) {
@ -74,7 +74,7 @@ Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
cookie = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE, cookie = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE,
desc->buf_addr_info.info1); desc->buf_addr_info.info1);
buf_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_BUF_ID, 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]++; num_buffs_reaped[mac_id]++;

View File

@ -14,7 +14,7 @@ Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
--- a/drivers/net/wireless/ath/ath11k/dp.h --- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/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_ACK_BA_INFO_TID_NUM GENMASK(31, 25)
#define HTT_PPDU_STATS_NON_QOS_TID 16 #define HTT_PPDU_STATS_NON_QOS_TID 16
@ -24,7 +24,7 @@ Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
u32 ppdu_id; u32 ppdu_id;
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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; struct htt_ppdu_user_stats *user_stats = NULL;
int cur_user; int cur_user;
u16 peer_id; u16 peer_id;
@ -33,7 +33,7 @@ Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
ppdu_info = data; 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; return -EINVAL;
} }
@ -42,7 +42,7 @@ Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
peer_id = peer_id =
((struct htt_ppdu_stats_usr_cmpltn_ack_ba_status *)ptr)->sw_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, 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; user_stats->is_valid_peer_id = true;
memcpy((void *)&user_stats->ack_ba, ptr, memcpy((void *)&user_stats->ack_ba, ptr,
sizeof(struct htt_ppdu_stats_usr_cmpltn_ack_ba_status)); sizeof(struct htt_ppdu_stats_usr_cmpltn_ack_ba_status));

View File

@ -74,7 +74,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
if (len > size) if (len > size)
--- a/drivers/net/wireless/ath/ath11k/dp.c --- a/drivers/net/wireless/ath/ath11k/dp.c
+++ b/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_list);
INIT_LIST_HEAD(&dp->reo_cmd_cache_flush_list); INIT_LIST_HEAD(&dp->reo_cmd_cache_flush_list);
@ -87,15 +87,15 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
--- a/drivers/net/wireless/ath/ath11k/dp.h --- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h
@@ -24,6 +24,7 @@ struct dp_rx_tid { @@ -23,6 +23,7 @@ struct dp_rx_tid {
u32 *vaddr; u8 tid;
dma_addr_t paddr; dma_addr_t paddr;
u32 size; u32 size;
+ u32 pending_desc_size; + u32 pending_desc_size;
u32 ba_win_sz; u32 ba_win_sz;
bool active; 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; unsigned long ts;
}; };
@ -110,7 +110,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
struct dp_reo_cmd { struct dp_reo_cmd {
struct list_head list; struct list_head list;
struct dp_rx_tid data; struct dp_rx_tid data;
@@ -297,6 +306,12 @@ struct ath11k_dp { @@ -299,6 +308,12 @@ struct ath11k_dp {
* - reo_cmd_cache_flush_count * - reo_cmd_cache_flush_count
*/ */
spinlock_t reo_cmd_lock; spinlock_t reo_cmd_lock;
@ -173,11 +173,11 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
+ list) { + list) {
+ list_del(&cmd_queue->list); + list_del(&cmd_queue->list);
+ rx_tid = &cmd_queue->data; + rx_tid = &cmd_queue->data;
+ if (rx_tid->vaddr) { + if (rx_tid->vaddr_unaligned) {
+ dma_unmap_single(ab->dev, rx_tid->paddr, + dma_unmap_single(ab->dev, rx_tid->paddr,
+ rx_tid->size, DMA_BIDIRECTIONAL); + rx_tid->size, DMA_BIDIRECTIONAL);
+ kfree(rx_tid->vaddr); + kfree(rx_tid->vaddr_unaligned);
+ rx_tid->vaddr = NULL; + rx_tid->vaddr_unaligned = NULL;
+ } + }
+ kfree(cmd_queue); + kfree(cmd_queue);
+ } + }
@ -235,10 +235,10 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
- if (ret) { - if (ret) {
- ath11k_err(ab, "failed to send HAL_REO_CMD_FLUSH_CACHE cmd, tid %d (%d)\n", - ath11k_err(ab, "failed to send HAL_REO_CMD_FLUSH_CACHE cmd, tid %d (%d)\n",
- rx_tid->tid, ret); - rx_tid->tid, ret);
- dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size, - dma_free_noncoherent(ab->dev, rx_tid->unaligned_size,
- DMA_BIDIRECTIONAL); - rx_tid->vaddr_unaligned,
- kfree(rx_tid->vaddr); - rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL);
- rx_tid->vaddr = NULL; - rx_tid->vaddr_unaligned = NULL;
- } - }
+ +
+exit: +exit:
@ -275,7 +275,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
+ update_rx_tid->active = true; + update_rx_tid->active = true;
+ break; + break;
+ } + }
+ update_rx_tid->vaddr = NULL; + update_rx_tid->vaddr_unaligned = NULL;
+ update_rx_tid->paddr = 0; + update_rx_tid->paddr = 0;
+ update_rx_tid->size = 0; + update_rx_tid->size = 0;
+ update_rx_tid->pending_desc_size = 0; + update_rx_tid->pending_desc_size = 0;
@ -314,7 +314,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
} }
} }
spin_unlock_bh(&dp->reo_cmd_lock); 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, void ath11k_peer_rx_tid_delete(struct ath11k *ar,
struct ath11k_peer *peer, u8 tid) struct ath11k_peer *peer, u8 tid)
{ {
@ -353,9 +353,9 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
- if (ret != -ESHUTDOWN) - if (ret != -ESHUTDOWN)
- ath11k_err(ar->ab, "failed to send HAL_REO_CMD_UPDATE_RX_QUEUE cmd, tid %d (%d)\n", - ath11k_err(ar->ab, "failed to send HAL_REO_CMD_UPDATE_RX_QUEUE cmd, tid %d (%d)\n",
- tid, ret); - tid, ret);
- dma_unmap_single(ar->ab->dev, rx_tid->paddr, rx_tid->size, - dma_free_noncoherent(ar->ab->dev, rx_tid->unaligned_size,
- DMA_BIDIRECTIONAL); - rx_tid->vaddr_unaligned,
- kfree(rx_tid->vaddr); - rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL);
+ list_for_each_entry_safe(elem, tmp, &dp->reo_cmd_update_rx_queue_list, + list_for_each_entry_safe(elem, tmp, &dp->reo_cmd_update_rx_queue_list,
+ list) { + list) {
+ rx_tid = &elem->data; + rx_tid = &elem->data;
@ -366,9 +366,11 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
+ elem->reo_cmd_update_rx_queue_resend_flag = true; + elem->reo_cmd_update_rx_queue_resend_flag = true;
+ break; + break;
+ } + }
rx_tid->vaddr = NULL; rx_tid->vaddr_unaligned = NULL;
+ rx_tid->paddr = 0; + rx_tid->paddr = 0;
+ rx_tid->paddr_unaligned = 0;
+ rx_tid->size = 0; + rx_tid->size = 0;
+ rx_tid->unaligned_size = 0;
+ rx_tid->pending_desc_size = 0; + rx_tid->pending_desc_size = 0;
+ +
+ list_del(&elem->list); + list_del(&elem->list);
@ -377,7 +379,9 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
+ spin_unlock_bh(&dp->reo_cmd_update_queue_lock); + spin_unlock_bh(&dp->reo_cmd_update_queue_lock);
- rx_tid->paddr = 0; - rx_tid->paddr = 0;
- rx_tid->paddr_unaligned = 0;
- rx_tid->size = 0; - rx_tid->size = 0;
- rx_tid->unaligned_size = 0;
+ return; + return;
} }

View File

@ -48,7 +48,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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) if (!num_buffs_reaped)
goto exit; goto exit;
@ -59,7 +59,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
ppdu_info->peer_id = HAL_INVALID_PEERID; ppdu_info->peer_id = HAL_INVALID_PEERID;
while ((skb = __skb_dequeue(&skb_list))) { 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) if (log_type != ATH11K_PKTLOG_TYPE_INVALID)
trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz); trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz);
@ -67,7 +67,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
ppdu_info->peer_id = HAL_INVALID_PEERID; ppdu_info->peer_id = HAL_INVALID_PEERID;
hal_status = ath11k_hal_rx_parse_mon_status(ab, ppdu_info, skb); 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 || if ((ppdu_info->peer_id == HAL_INVALID_PEERID ||
hal_status != HAL_RX_MON_STATUS_PPDU_DONE)) { hal_status != HAL_RX_MON_STATUS_PPDU_DONE)) {
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);

View File

@ -120,7 +120,7 @@
&fops_peer_ps_state); &fops_peer_ps_state);
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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->mu_pos = mu_pos;
peer_stats->ru_tones = arsta->txrate.he_ru_alloc; peer_stats->ru_tones = arsta->txrate.he_ru_alloc;
@ -131,7 +131,7 @@
} }
usr_stats->rate_stats_updated = true; 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); ath11k_htt_pull_ppdu_stats(ab, skb);
break; break;
case HTT_T2H_MSG_TYPE_EXT_STATS_CONF: case HTT_T2H_MSG_TYPE_EXT_STATS_CONF:

View File

@ -18,7 +18,7 @@ Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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; struct hal_rx_desc *ldesc;
int space_extra, rem_len, buf_len; int space_extra, rem_len, buf_len;
u32 hal_rx_desc_sz = ar->ab->hw_params.hal_desc_sz; u32 hal_rx_desc_sz = ar->ab->hw_params.hal_desc_sz;
@ -26,7 +26,7 @@ Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
/* As the msdu is spread across multiple rx buffers, /* As the msdu is spread across multiple rx buffers,
* find the offset to the start of msdu for computing * 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; rem_len = msdu_len - buf_first_len;
while ((skb = __skb_dequeue(msdu_list)) != NULL && rem_len > 0) { while ((skb = __skb_dequeue(msdu_list)) != NULL && rem_len > 0) {
rxcb = ATH11K_SKB_RXCB(skb); rxcb = ATH11K_SKB_RXCB(skb);
@ -36,7 +36,7 @@ Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
buf_len = DP_RX_BUFFER_SIZE - hal_rx_desc_sz; buf_len = DP_RX_BUFFER_SIZE - hal_rx_desc_sz;
else else
buf_len = rem_len; 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); dev_kfree_skb_any(skb);
rem_len -= buf_len; rem_len -= buf_len;

View File

@ -30,7 +30,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
ret = ath11k_dp_tx_htt_rx_filter_setup(ar->ab, ring_id, ar->dp.mac_id, ret = ath11k_dp_tx_htt_rx_filter_setup(ar->ab, ring_id, ar->dp.mac_id,
--- a/drivers/net/wireless/ath/ath11k/dp.h --- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/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_CMD_RING_SIZE 256
#define DP_REO_STATUS_RING_SIZE 2048 #define DP_REO_STATUS_RING_SIZE 2048
#define DP_RXDMA_BUF_RING_SIZE 4096 #define DP_RXDMA_BUF_RING_SIZE 4096
@ -40,7 +40,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
#define DP_RXDMA_ERR_DST_RING_SIZE 1024 #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_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 #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| * |31 26|25|24|23 16|15 8|7 0|
* |-----------------+----------------+----------------+---------------| * |-----------------+----------------+----------------+---------------|
@ -49,7 +49,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
* |-------------------------------------------------------------------| * |-------------------------------------------------------------------|
* | rsvd2 | ring_buffer_size | * | 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 | * | tlv_filter_in_flags |
* |-------------------------------------------------------------------| * |-------------------------------------------------------------------|
@ -64,7 +64,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
* Where: * Where:
* PS = pkt_swap * PS = pkt_swap
* SS = status_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 * More details can be got from enum htt_srng_ring_id
* b'24 - status_swap: 1 is to swap status TLV * b'24 - status_swap: 1 is to swap status TLV
* b'25 - pkt_swap: 1 is to swap packet TLV * b'25 - pkt_swap: 1 is to swap packet TLV
@ -76,7 +76,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
* dword1 - b'0:16 - ring_buffer_size: size of buffers referenced by rx ring, * dword1 - b'0:16 - ring_buffer_size: size of buffers referenced by rx ring,
* in byte units. * in byte units.
* Valid only for HW_TO_SW_RING and SW_TO_HW_RING * 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: * dword6 - b'0:31 - tlv_filter_in_flags:
* Filter in Attention/MPDU/PPDU/Header/User tlvs * Filter in Attention/MPDU/PPDU/Header/User tlvs
* Refer to CFG_TLV_FILTER_IN_FLAG defs * Refer to CFG_TLV_FILTER_IN_FLAG defs
@ -119,7 +119,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
*/ */
#define HTT_RX_RING_SELECTION_CFG_CMD_INFO0_MSG_TYPE GENMASK(7, 0) #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_RING_ID GENMASK(23, 16)
#define HTT_RX_RING_SELECTION_CFG_CMD_INFO0_SS BIT(24) #define HTT_RX_RING_SELECTION_CFG_CMD_INFO0_SS BIT(24)
#define HTT_RX_RING_SELECTION_CFG_CMD_INFO0_PS BIT(25) #define HTT_RX_RING_SELECTION_CFG_CMD_INFO0_PS BIT(25)
@ -136,7 +136,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
enum htt_rx_filter_tlv_flags { enum htt_rx_filter_tlv_flags {
HTT_RX_FILTER_TLV_FLAGS_MPDU_START = BIT(0), 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_PER_MSDU_HEADER | \
HTT_RX_FILTER_TLV_FLAGS_ATTENTION) HTT_RX_FILTER_TLV_FLAGS_ATTENTION)
@ -151,7 +151,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
struct htt_rx_ring_selection_cfg_cmd { struct htt_rx_ring_selection_cfg_cmd {
u32 info0; u32 info0;
u32 info1; 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_flags2;
u32 pkt_type_en_flags3; u32 pkt_type_en_flags3;
u32 rx_filter_tlv; u32 rx_filter_tlv;
@ -162,7 +162,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
} __packed; } __packed;
struct htt_rx_ring_tlv_filter { 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_flags1; /* MGMT */
u32 pkt_filter_flags2; /* CTRL */ u32 pkt_filter_flags2; /* CTRL */
u32 pkt_filter_flags3; /* DATA */ u32 pkt_filter_flags3; /* DATA */
@ -228,7 +228,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
static void ath11k_dp_service_mon_ring(struct timer_list *t) static void ath11k_dp_service_mon_ring(struct timer_list *t)
{ {
struct ath11k_base *ab = from_timer(ab, t, mon_reap_timer); 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; return 0;
} }
@ -278,7 +278,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
static void ath11k_dp_rx_h_undecap_nwifi(struct ath11k *ar, static void ath11k_dp_rx_h_undecap_nwifi(struct ath11k *ar,
struct sk_buff *msdu, struct sk_buff *msdu,
u8 *first_hdr, 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 da[ETH_ALEN];
u8 sa[ETH_ALEN]; u8 sa[ETH_ALEN];
u16 qos_ctl = 0; u16 qos_ctl = 0;
@ -288,7 +288,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
/* copy SA & DA and pull decapped header */ /* copy SA & DA and pull decapped header */
hdr = (struct ieee80211_hdr *)msdu->data; 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)); ether_addr_copy(sa, ieee80211_get_SA(hdr));
skb_pull(msdu, ieee80211_hdrlen(hdr->frame_control)); skb_pull(msdu, ieee80211_hdrlen(hdr->frame_control));
@ -297,7 +297,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
/* original 802.11 header is valid for the first msdu /* original 802.11 header is valid for the first msdu
* hence we can reuse the same header * 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 */ /* copy decap header before overwriting for reuse below */
memcpy(decap_hdr, (uint8_t *)hdr, hdr_len); memcpy(decap_hdr, (uint8_t *)hdr, hdr_len);
@ -326,7 +326,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
memcpy(skb_push(msdu, memcpy(skb_push(msdu,
IEEE80211_QOS_CTL_LEN), &qos_ctl, IEEE80211_QOS_CTL_LEN), &qos_ctl,
IEEE80211_QOS_CTL_LEN); 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 da[ETH_ALEN];
u8 sa[ETH_ALEN]; u8 sa[ETH_ALEN];
void *rfc1042; void *rfc1042;
@ -347,7 +347,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
rfc1042 = ath11k_dp_rx_h_find_rfc1042(ar, msdu, enctype); rfc1042 = ath11k_dp_rx_h_find_rfc1042(ar, msdu, enctype);
if (WARN_ON_ONCE(!rfc1042)) 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); memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
@ -355,7 +355,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
/* original 802.11 header has a different DA and in /* original 802.11 header has a different DA and in
* case of 4addr it may also have different SA * 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; size_t hdr_len;
u8 l3_pad_bytes; u8 l3_pad_bytes;
struct hal_rx_desc *rx_desc; struct hal_rx_desc *rx_desc;
@ -363,7 +363,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
/* Delivered decapped frame: /* Delivered decapped frame:
* [amsdu header] <-- replaced with 802.11 hdr * [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_put(msdu, l3_pad_bytes);
skb_pull(msdu, sizeof(struct ath11k_dp_amsdu_subframe_hdr) + 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 <rgnanase@codeaurora.org>
hdr = (struct ieee80211_hdr *)first_hdr; hdr = (struct ieee80211_hdr *)first_hdr;
hdr_len = ieee80211_hdrlen(hdr->frame_control); 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; goto free_out;
} }
@ -396,7 +396,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
rxcb = ATH11K_SKB_RXCB(msdu); rxcb = ATH11K_SKB_RXCB(msdu);
rxcb->rx_desc = rx_desc; rxcb->rx_desc = rx_desc;
msdu_len = ath11k_dp_rx_h_msdu_start_msdu_len(ab, 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); hdr_status = ath11k_dp_rx_h_80211_hdr(ab, rx_desc);
ret = -EINVAL; ret = -EINVAL;
ath11k_warn(ab, "invalid msdu len %u\n", msdu_len); ath11k_warn(ab, "invalid msdu len %u\n", msdu_len);
@ -408,7 +408,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
ath11k_dbg_dump(ab, ATH11K_DBG_DATA, NULL, "", rx_desc, ath11k_dbg_dump(ab, ATH11K_DBG_DATA, NULL, "", rx_desc,
sizeof(struct hal_rx_desc)); sizeof(struct hal_rx_desc));
goto free_out; 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 = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz);
hdr_len = ieee80211_hdrlen(hdr->frame_control); hdr_len = ieee80211_hdrlen(hdr->frame_control);
@ -416,7 +416,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
head_len = hdr_len + hal_rx_desc_sz + IEEE80211_TKIP_IV_LEN; head_len = hdr_len + hal_rx_desc_sz + IEEE80211_TKIP_IV_LEN;
tail_len = IEEE80211_CCMP_MIC_LEN + IEEE80211_TKIP_ICV_LEN + FCS_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) static u64 ath11k_dp_rx_h_get_pn(struct ath11k *ar, struct sk_buff *skb)
{ {
@ -426,7 +426,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
u8 *ehdr; u8 *ehdr;
u32 hal_rx_desc_sz = ar->ab->hw_params.hal_desc_sz; 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) { if ((msdu_len + hal_rx_desc_sz) > DP_RX_BUFFER_SIZE) {
hdr_status = ath11k_dp_rx_h_80211_hdr(ar->ab, rx_desc); hdr_status = ath11k_dp_rx_h_80211_hdr(ar->ab, rx_desc);
ath11k_warn(ar->ab, "invalid msdu leng %u", msdu_len); ath11k_warn(ar->ab, "invalid msdu leng %u", msdu_len);
@ -438,7 +438,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
ath11k_dbg_dump(ar->ab, ATH11K_DBG_DATA, NULL, "", rx_desc, ath11k_dbg_dump(ar->ab, ATH11K_DBG_DATA, NULL, "", rx_desc,
sizeof(struct hal_rx_desc)); sizeof(struct hal_rx_desc));
dev_kfree_skb_any(msdu); 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); ath11k_dp_rxdma_pdev_buf_free(ar);
} }
@ -486,7 +486,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
int ath11k_dp_rx_pdev_alloc(struct ath11k_base *ab, int mac_id) int ath11k_dp_rx_pdev_alloc(struct ath11k_base *ab, int mac_id)
{ {
struct ath11k *ar = ab->pdevs[mac_id].ar; struct ath11k *ar = ab->pdevs[mac_id].ar;
@@ -5300,6 +5465,12 @@ config_refill_ring: @@ -5291,6 +5456,12 @@ config_refill_ring:
} }
} }

View File

@ -28,7 +28,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
} }
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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; ar = ab->pdevs[mac_id].ar;
rx_ring = &ar->dp.rx_refill_buf_ring; rx_ring = &ar->dp.rx_refill_buf_ring;
spin_lock_bh(&rx_ring->idr_lock); spin_lock_bh(&rx_ring->idr_lock);
@ -50,7 +50,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
dma_unmap_single(ab->dev, rxcb->paddr, dma_unmap_single(ab->dev, rxcb->paddr,
msdu->len + skb_tailroom(msdu), msdu->len + skb_tailroom(msdu),
DMA_FROM_DEVICE); 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; u32 hal_rx_desc_sz = ar->ab->hw_params.hal_desc_sz;
spin_lock_bh(&rx_ring->idr_lock); spin_lock_bh(&rx_ring->idr_lock);
@ -70,7 +70,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
rxcb = ATH11K_SKB_RXCB(msdu); rxcb = ATH11K_SKB_RXCB(msdu);
dma_unmap_single(ar->ab->dev, rxcb->paddr, dma_unmap_single(ar->ab->dev, rxcb->paddr,
msdu->len + skb_tailroom(msdu), 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; rx_ring = &ar->dp.rx_refill_buf_ring;
spin_lock_bh(&rx_ring->idr_lock); spin_lock_bh(&rx_ring->idr_lock);
@ -92,7 +92,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
dma_unmap_single(ab->dev, rxcb->paddr, dma_unmap_single(ab->dev, rxcb->paddr,
msdu->len + skb_tailroom(msdu), msdu->len + skb_tailroom(msdu),
DMA_FROM_DEVICE); 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]); msdu_cookies[i]);
spin_lock_bh(&rx_ring->idr_lock); spin_lock_bh(&rx_ring->idr_lock);
@ -111,7 +111,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
rxcb = ATH11K_SKB_RXCB(skb); rxcb = ATH11K_SKB_RXCB(skb);
dma_unmap_single(ab->dev, rxcb->paddr, 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]); msdu_list.sw_cookie[i]);
spin_lock_bh(&rx_ring->idr_lock); spin_lock_bh(&rx_ring->idr_lock);

View File

@ -40,7 +40,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
struct ath11k_band_cap { struct ath11k_band_cap {
--- a/drivers/net/wireless/ath/ath11k/dp.c --- a/drivers/net/wireless/ath/ath11k/dp.c
+++ b/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; hal_params = ab->hw_params.hal_params;
ath11k_dp_rxbufs_replenish(ab, id, rx_ring, 0, ath11k_dp_rxbufs_replenish(ab, id, rx_ring, 0,
@ -114,7 +114,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
return 0; 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 ath11k *ar;
struct hal_reo_dest_ring *desc; struct hal_reo_dest_ring *desc;
enum hal_reo_dest_ring_push_reason push_reason; enum hal_reo_dest_ring_push_reason push_reason;
@ -130,7 +130,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
srng = &ab->hal.srng_list[dp->reo_dst_ring[ring_id].ring_id]; 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; ar = ab->pdevs[mac_id].ar;
rx_ring = &ar->dp.rx_refill_buf_ring; rx_ring = &ar->dp.rx_refill_buf_ring;
@ -147,7 +147,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
spin_unlock_bh(&rx_ring->idr_lock); spin_unlock_bh(&rx_ring->idr_lock);
if (unlikely(!msdu)) { if (unlikely(!msdu)) {
ath11k_warn(ab, "frame rx with invalid buf_id %d\n", 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; rx_ring = &ar->dp.rx_refill_buf_ring;
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i], ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i],
@ -161,7 +161,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
return total_msdu_reaped; return total_msdu_reaped;
} }
@@ -4827,7 +4859,7 @@ exit: @@ -4818,7 +4850,7 @@ exit:
rx_ring = &ar->dp.rx_refill_buf_ring; rx_ring = &ar->dp.rx_refill_buf_ring;
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, n_bufs_reaped[i], ath11k_dp_rxbufs_replenish(ab, i, rx_ring, n_bufs_reaped[i],
@ -170,7 +170,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
} }
return tot_n_bufs_reaped; 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 *msdu;
struct sk_buff_head msdu_list[MAX_RADIOS]; struct sk_buff_head msdu_list[MAX_RADIOS];
struct ath11k_skb_rxcb *rxcb; struct ath11k_skb_rxcb *rxcb;
@ -189,7 +189,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
srng = &ab->hal.srng_list[dp->rx_rel_ring.ring_id]; 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; ar = ab->pdevs[mac_id].ar;
rx_ring = &ar->dp.rx_refill_buf_ring; rx_ring = &ar->dp.rx_refill_buf_ring;
@ -206,7 +206,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
spin_unlock_bh(&rx_ring->idr_lock); spin_unlock_bh(&rx_ring->idr_lock);
if (!msdu) { if (!msdu) {
ath11k_warn(ab, "frame rx with invalid buf_id %d pdev %d\n", 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; rx_ring = &ar->dp.rx_refill_buf_ring;
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i], ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i],
@ -215,7 +215,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
} }
rcu_read_lock(); 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(); rcu_read_unlock();
done: done:
@ -224,7 +224,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
return total_num_buffs_reaped; 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) if (num_buf_freed)
ath11k_dp_rxbufs_replenish(ab, mac_id, rx_ring, num_buf_freed, ath11k_dp_rxbufs_replenish(ab, mac_id, rx_ring, num_buf_freed,
@ -233,7 +233,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
return budget - quota; 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, ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id,
&dp->rxdma_mon_buf_ring, &dp->rxdma_mon_buf_ring,
rx_bufs_used, rx_bufs_used,
@ -248,7 +248,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
} }
} }
@@ -6694,7 +6737,7 @@ next_entry: @@ -6685,7 +6728,7 @@ next_entry:
ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id, ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id,
&dp->rxdma_mon_buf_ring, &dp->rxdma_mon_buf_ring,
rx_bufs_used, rx_bufs_used,

View File

@ -35,7 +35,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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; size_t hdr_len, crypto_len;
struct ieee80211_hdr *hdr; struct ieee80211_hdr *hdr;
u16 fc, qos_ctl = 0; u16 fc, qos_ctl = 0;
@ -63,7 +63,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
skb_push(msdu, hdr_len); skb_push(msdu, hdr_len);
hdr = (struct ieee80211_hdr *)msdu->data; hdr = (struct ieee80211_hdr *)msdu->data;
hdr->frame_control = fc; 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 da[ETH_ALEN];
u8 sa[ETH_ALEN]; u8 sa[ETH_ALEN];
u16 qos_ctl = 0; u16 qos_ctl = 0;
@ -71,7 +71,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
u8 *qos, *crypto_hdr; u8 *qos, *crypto_hdr;
bool add_qos_ctrl = false; 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)) { if (!(status->flag & RX_FLAG_IV_STRIPPED)) {
@ -123,7 +123,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
/* original 802.11 header has a different DA and in /* 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 da[ETH_ALEN];
u8 sa[ETH_ALEN]; u8 sa[ETH_ALEN];
void *rfc1042; void *rfc1042;
@ -131,7 +131,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu);
struct ath11k_dp_rfc1042_hdr rfc = {0xaa, 0xaa, 0x03, {0x00, 0x00, 0x00}}; 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); ether_addr_copy(sa, eth->h_source);
rfc.snap_type = eth->h_proto; rfc.snap_type = eth->h_proto;
skb_pull(msdu, sizeof(struct ethhdr)); skb_pull(msdu, sizeof(struct ethhdr));
@ -143,7 +143,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), &rfc, memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), &rfc,
sizeof(struct ath11k_dp_rfc1042_hdr)); sizeof(struct ath11k_dp_rfc1042_hdr));
ath11k_get_dot11_hdr_from_rx_desc(ar, msdu, rxcb, status, enctype); 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)); skb_pull(msdu, sizeof(struct ethhdr));
/* push rfc1042/llc/snap */ /* push rfc1042/llc/snap */
@ -155,7 +155,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), rfc1042, memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), rfc1042,
sizeof(struct ath11k_dp_rfc1042_hdr)); 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); hdr_len = ieee80211_hdrlen(hdr->frame_control);
if (!(status->flag & RX_FLAG_IV_STRIPPED)) { if (!(status->flag & RX_FLAG_IV_STRIPPED)) {
@ -182,7 +182,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
exit: 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; struct ieee80211_hdr *hdr;
size_t hdr_len; size_t hdr_len;
u8 l3_pad_bytes; u8 l3_pad_bytes;
@ -190,7 +190,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
struct hal_rx_desc *rx_desc; struct hal_rx_desc *rx_desc;
struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu); 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); hdr_len = ieee80211_hdrlen(hdr->frame_control);
if (!(status->flag & RX_FLAG_IV_STRIPPED)) { if (!(status->flag & RX_FLAG_IV_STRIPPED)) {
@ -217,7 +217,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len); 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, struct ieee80211_rx_status *rx_status,
bool *fast_rx) bool *fast_rx)
{ {
@ -226,7 +226,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
enum hal_encrypt_type enctype; enum hal_encrypt_type enctype;
bool is_decrypted = false; bool is_decrypted = false;
struct ath11k_skb_rxcb *rxcb; 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; u8 decap = DP_RX_DECAP_TYPE_RAW;
bool is_mcbc = rxcb->is_mcbc; bool is_mcbc = rxcb->is_mcbc;
bool is_eapol = rxcb->is_eapol; bool is_eapol = rxcb->is_eapol;
@ -243,7 +243,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
he = skb_push(msdu, sizeof(known)); he = skb_push(msdu, sizeof(known));
memcpy(he, &known, sizeof(known)); memcpy(he, &known, sizeof(known));
status->flag |= RX_FLAG_RADIOTAP_HE; 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)) !(is_mcbc && rx_status->flag & RX_FLAG_DECRYPTED))
rx_status->flag |= RX_FLAG_8023; rx_status->flag |= RX_FLAG_8023;

View File

@ -172,7 +172,7 @@
ath11k_dp_rxdma_ring_buf_setup(ar, rx_ring, HAL_RXDMA_BUF); ath11k_dp_rxdma_ring_buf_setup(ar, rx_ring, HAL_RXDMA_BUF);
if (ar->ab->hw_params.rxdma1_enable) { 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; return 0;
} }
@ -194,16 +194,15 @@
goto unlock_exit; 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) if (!rx_tid->active)
goto unlock_exit; goto unlock_exit;
- dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size, - dma_free_noncoherent(ab->dev, rx_tid->unaligned_size, rx_tid->vaddr_unaligned,
+ dma_unmap_single(ar->ab->dev, rx_tid->paddr, rx_tid->size, + dma_free_noncoherent(ar->ab->dev, rx_tid->unaligned_size, rx_tid->vaddr_unaligned,
DMA_BIDIRECTIONAL); rx_tid->paddr_unaligned, DMA_BIDIRECTIONAL);
kfree(rx_tid->vaddr); rx_tid->vaddr_unaligned = NULL;
rx_tid->vaddr = NULL;
@@ -1144,7 +1144,7 @@ static void ath11k_dp_rx_tid_mem_free(st
rx_tid->active = false; rx_tid->active = false;
unlock_exit: unlock_exit:
@ -221,7 +220,7 @@
if (!peer) { if (!peer) {
ath11k_warn(ab, "failed to find the peer %pM to set up rx tid\n", ath11k_warn(ab, "failed to find the peer %pM to set up rx tid\n",
peer_mac); 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) { if (ret) {
ath11k_warn(ar->ab, "failed to setup rx reorder queue for peer %pM tid %d: %d\n", ath11k_warn(ar->ab, "failed to setup rx reorder queue for peer %pM tid %d: %d\n",
peer_mac, tid, ret); peer_mac, tid, ret);
@ -230,7 +229,7 @@
} }
return ret; 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); spin_lock_bh(&ab->base_lock);
@ -239,7 +238,7 @@
if (!peer) { if (!peer) {
ath11k_warn(ab, "failed to find the peer to stop rx aggregation\n"); ath11k_warn(ab, "failed to find the peer to stop rx aggregation\n");
spin_unlock_bh(&ab->base_lock); 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); spin_lock_bh(&ab->base_lock);
@ -248,7 +247,7 @@
if (!peer) { if (!peer) {
ath11k_warn(ab, "failed to find the peer to configure pn replay detection\n"); ath11k_warn(ab, "failed to find the peer to configure pn replay detection\n");
spin_unlock_bh(&ab->base_lock); 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; return -EINVAL;
} }
@ -257,7 +256,7 @@
u16 tag, u16 len, const void *ptr, u16 tag, u16 len, const void *ptr,
void *data) 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; return 0;
} }
@ -269,7 +268,7 @@
struct ieee80211_sta *sta; struct ieee80211_sta *sta;
struct ath11k_sta *arsta; struct ath11k_sta *arsta;
struct ath11k_peer *peer = NULL; 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(); rcu_read_lock();
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@ -278,7 +277,7 @@
if (!peer) if (!peer)
goto exit; goto exit;
@@ -1603,7 +1602,7 @@ exit: @@ -1594,7 +1593,7 @@ exit:
rcu_read_unlock(); rcu_read_unlock();
} }
@ -287,7 +286,7 @@
u16 tag, u16 len, const void *ptr, u16 tag, u16 len, const void *ptr,
void *data) 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); len, tag);
return -EINVAL; return -EINVAL;
} }
@ -296,7 +295,7 @@
break; break;
default: default:
break; 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(); rcu_read_lock();
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@ -305,7 +304,7 @@
if (!peer || !peer->sta) { if (!peer || !peer->sta) {
spin_unlock_bh(&ab->base_lock); 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; peer->delayba_flag = false;
} }
@ -316,7 +315,7 @@
const void *ptr, void *data), const void *ptr, void *data),
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) { while (len > 0) {
if (len < sizeof(*tlv)) { if (len < sizeof(*tlv)) {
@ -325,7 +324,7 @@
ptr - begin, len, sizeof(*tlv)); ptr - begin, len, sizeof(*tlv));
return -EINVAL; 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); len -= sizeof(*tlv);
if (tlv_len > len) { if (tlv_len > len) {
@ -340,7 +339,7 @@
if (ret == -ENOMEM) if (ret == -ENOMEM)
return ret; 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); lockdep_assert_held(&ar->data_lock);
@ -349,7 +348,7 @@
return; return;
ath11k_htt_update_ppdu_stats(ar, &ppdu_info->ppdu_stats); 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]; usr_stats = &ppdu_info->ppdu_stats.user_stats[i];
peer_id = usr_stats->peer_id; peer_id = usr_stats->peer_id;
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@ -358,7 +357,7 @@
if (!peer) { if (!peer) {
spin_unlock_bh(&ab->base_lock); spin_unlock_bh(&ab->base_lock);
continue; 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; ppdu_id = msg->ppdu_id;
if (pdev_id == 0) { if (pdev_id == 0) {
@ -367,7 +366,7 @@
ath11k_htt_tlv_ppdu_soc_stats_parse, ath11k_htt_tlv_ppdu_soc_stats_parse,
NULL); NULL);
if (ret) 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; ppdu_info->ppdu_id = ppdu_id;
@ -376,7 +375,7 @@
ath11k_htt_tlv_ppdu_stats_parse, ath11k_htt_tlv_ppdu_stats_parse,
(void *)ppdu_info); (void *)ppdu_info);
if (ret) { 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++) { for (i = 0; i < ppdu_info->ppdu_stats.common.num_users; i++) {
peer_id = ppdu_info->ppdu_stats.user_stats[i].peer_id; peer_id = ppdu_info->ppdu_stats.user_stats[i].peer_id;
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@ -385,7 +384,7 @@
if (!peer) { if (!peer) {
spin_unlock_bh(&ab->base_lock); spin_unlock_bh(&ab->base_lock);
continue; 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++) { for (i = 0; i < ppdu_info->bar_num_users; i++) {
peer_id = ppdu_info->ppdu_stats.user_stats[i].peer_id; peer_id = ppdu_info->ppdu_stats.user_stats[i].peer_id;
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@ -394,7 +393,7 @@
if (!peer) { if (!peer) {
spin_unlock_bh(&ab->base_lock); spin_unlock_bh(&ab->base_lock);
continue; 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 sk_buff *skb)
{ {
struct ath11k_dp *dp = &ab->dp; struct ath11k_dp *dp = &ab->dp;
@ -402,7 +401,7 @@
struct htt_resp_msg *resp = (struct htt_resp_msg *)skb->data; 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); enum htt_t2h_msg_type type = FIELD_GET(HTT_T2H_MSG_TYPE, *(u32 *)resp);
u16 peer_id; 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); resp->peer_map_ev.info1);
ath11k_dp_get_mac_addr(resp->peer_map_ev.mac_addr_l32, ath11k_dp_get_mac_addr(resp->peer_map_ev.mac_addr_l32,
peer_mac_h16, mac_addr); peer_mac_h16, mac_addr);
@ -414,7 +413,7 @@
break; break;
case HTT_T2H_MSG_TYPE_PEER_MAP2: case HTT_T2H_MSG_TYPE_PEER_MAP2:
vdev_id = FIELD_GET(HTT_T2H_PEER_MAP_INFO_VDEV_ID, 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); resp->peer_map_ev.info1);
is_wds = FIELD_GET(HTT_T2H_PEER_MAP_INFO2_NEXT_HOP_M, is_wds = FIELD_GET(HTT_T2H_PEER_MAP_INFO2_NEXT_HOP_M,
resp->peer_map_ev.info2); resp->peer_map_ev.info2);
@ -444,7 +443,7 @@
peer_mac_h16 = FIELD_GET(HTT_T2H_PEER_UNMAP_INFO1_MAC_ADDR_H16, peer_mac_h16 = FIELD_GET(HTT_T2H_PEER_UNMAP_INFO1_MAC_ADDR_H16,
resp->peer_unmap_ev.info1); resp->peer_unmap_ev.info1);
ath11k_dp_get_mac_addr(resp->peer_map_ev.mac_addr_l32, 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); resp->peer_unmap_ev.info1);
free_wds_count = FIELD_GET(HTT_T2H_PEER_UNMAP_INFO3_WDS_FREE_COUNT, free_wds_count = FIELD_GET(HTT_T2H_PEER_UNMAP_INFO3_WDS_FREE_COUNT,
resp->peer_unmap_ev.info3); resp->peer_unmap_ev.info3);
@ -456,7 +455,7 @@
break; break;
case HTT_T2H_MSG_TYPE_PPDU_STATS_IND: case HTT_T2H_MSG_TYPE_PPDU_STATS_IND:
ath11k_htt_pull_ppdu_stats(ab, skb); 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 * static struct ath11k_peer *
@ -488,7 +487,7 @@
return peer; 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; return false;
/* check if the msdu needs to be bridged to our connected peer */ /* check if the msdu needs to be bridged to our connected peer */
@ -497,7 +496,7 @@
if (f_peer && f_peer != peer) if (f_peer && f_peer != peer)
return false; 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); spin_lock_bh(&ar->ab->base_lock);
@ -506,7 +505,7 @@
if (peer) { if (peer) {
/* If the pkt is a valid IP packet and peer supports /* If the pkt is a valid IP packet and peer supports
* fast rx, deliver directly to net, also note that * 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); decap = ath11k_dp_rx_h_msdu_start_decap_type(ar->ab, rxcb->rx_desc);
spin_lock_bh(&ar->ab->base_lock); spin_lock_bh(&ar->ab->base_lock);
@ -515,7 +514,7 @@
if (peer && peer->sta) if (peer && peer->sta)
pubsta = peer->sta; pubsta = peer->sta;
spin_unlock_bh(&ar->ab->base_lock); spin_unlock_bh(&ar->ab->base_lock);
@@ -3462,7 +3478,7 @@ try_again: @@ -3453,7 +3469,7 @@ try_again:
if (unlikely(push_reason == if (unlikely(push_reason ==
HAL_REO_DEST_RING_PUSH_REASON_ERR_DETECTED)) { HAL_REO_DEST_RING_PUSH_REASON_ERR_DETECTED)) {
ath11k_warn(ab,"Received invalid desc\n"); ath11k_warn(ab,"Received invalid desc\n");
@ -524,7 +523,7 @@
continue; 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) if (user_stats->ast_index == 0 || user_stats->ast_index == 0xFFFF)
return; return;
@ -533,7 +532,7 @@
if (peer == NULL) { if (peer == NULL) {
if (!ar->ab->nss.enabled) 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); spin_lock_bh(&ab->base_lock);
@ -542,7 +541,7 @@
if (!peer) { if (!peer) {
ath11k_warn(ab, "failed to find the peer to set up fragment info\n"); ath11k_warn(ab, "failed to find the peer to set up fragment info\n");
spin_unlock_bh(&ab->base_lock); 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; return -EINVAL;
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@ -551,7 +550,7 @@
if (!peer) { if (!peer) {
ath11k_warn(ab, "failed to find the peer to de-fragment received fragment peer_id %d\n", ath11k_warn(ab, "failed to find the peer to de-fragment received fragment peer_id %d\n",
peer_id); 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); del_timer_sync(&rx_tid->frag_timer);
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@ -560,7 +559,7 @@
if (!peer) if (!peer)
goto err_frags_cleanup; 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); trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz);
ppdu_info->peer_id = HAL_INVALID_PEERID; ppdu_info->peer_id = HAL_INVALID_PEERID;
@ -569,7 +568,7 @@
if (test_bit(ATH11K_FLAG_MONITOR_STARTED, &ar->monitor_flags) && if (test_bit(ATH11K_FLAG_MONITOR_STARTED, &ar->monitor_flags) &&
pmon->mon_ppdu_status == DP_PPDU_STATUS_START && 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(); rcu_read_lock();
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);

View File

@ -11,7 +11,7 @@
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/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; goto exit;
sta = peer->sta; sta = peer->sta;
@ -20,7 +20,7 @@
memset(&status, 0, sizeof(status)); 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; sta = peer->sta;
@ -29,7 +29,7 @@
memset(&status, 0, sizeof(status)); 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); msdu->protocol = eth_type_trans(msdu, msdu->dev);
napi_gro_receive(rxcb->napi, msdu); napi_gro_receive(rxcb->napi, msdu);
if (peer->sta) if (peer->sta)
@ -39,7 +39,7 @@
return; 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; return;
} }
@ -48,7 +48,7 @@
rx_stats = arsta->rx_stats; rx_stats = arsta->rx_stats;
if (ar->ab->nss.enabled) 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) && if ((ppdu_info->fc_valid) &&
(ppdu_info->ast_index != HAL_AST_IDX_INVALID)) { (ppdu_info->ast_index != HAL_AST_IDX_INVALID)) {
if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_SU) { if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_SU) {