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