mirror of
https://github.com/VIKINGYFY/immortalwrt.git
synced 2025-12-16 17:15:26 +00:00
refresh patches
This commit is contained in:
parent
4fa78c53db
commit
2ae723895e
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath10k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/pci.c
|
||||
@@ -1976,6 +1976,7 @@ static int ath10k_pci_hif_start(struct a
|
||||
@@ -1977,6 +1977,7 @@ static int ath10k_pci_hif_start(struct a
|
||||
|
||||
ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot hif start\n");
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
/* Sleep 20 ms before HIF interrupts are disabled.
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||
@@ -3715,6 +3715,10 @@ struct ath10k *ath10k_core_create(size_t
|
||||
@@ -3755,6 +3755,10 @@ struct ath10k *ath10k_core_create(size_t
|
||||
if (!ar->napi_dev)
|
||||
goto err_free_tx_complete;
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -46,6 +46,8 @@
|
||||
@@ -47,6 +47,8 @@
|
||||
|
||||
#define ATH11K_INVALID_HW_MAC_ID 0xFF
|
||||
#define ATH11K_CONNECTION_LOSS_HZ (3 * HZ)
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
|
||||
#define ATH11K_QCN6122_USERPD_2 1
|
||||
#define ATH11K_QCN6122_USERPD_3 2
|
||||
@@ -432,6 +434,17 @@ struct ath11k_vif_iter {
|
||||
@@ -433,6 +435,17 @@ struct ath11k_vif_iter {
|
||||
struct ath11k_vif *arvif;
|
||||
};
|
||||
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
struct ath11k_rx_peer_stats {
|
||||
u64 num_msdu;
|
||||
u64 num_mpdu_fcs_ok;
|
||||
@@ -443,10 +456,6 @@ struct ath11k_rx_peer_stats {
|
||||
@@ -444,10 +457,6 @@ struct ath11k_rx_peer_stats {
|
||||
u64 non_ampdu_msdu_count;
|
||||
u64 stbc_count;
|
||||
u64 beamformed_count;
|
||||
@ -58,7 +58,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
u64 coding_count[HAL_RX_SU_MU_CODING_MAX];
|
||||
u64 tid_count[IEEE80211_NUM_TIDS + 1];
|
||||
u64 pream_cnt[HAL_RX_PREAMBLE_MAX];
|
||||
@@ -454,6 +463,8 @@ struct ath11k_rx_peer_stats {
|
||||
@@ -455,6 +464,8 @@ struct ath11k_rx_peer_stats {
|
||||
u64 rx_duration;
|
||||
u64 dcm_count;
|
||||
u64 ru_alloc_cnt[HAL_RX_RU_ALLOC_TYPE_MAX];
|
||||
@ -69,7 +69,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
#define ATH11K_HE_MCS_NUM 12
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
@@ -11,6 +11,7 @@
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "peer.h"
|
||||
#include "debug.h"
|
||||
#include "dp_tx.h"
|
||||
@ -77,7 +77,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
#include "debugfs_htt_stats.h"
|
||||
|
||||
void ath11k_debugfs_sta_add_tx_stats(struct ath11k_sta *arsta,
|
||||
@@ -248,8 +249,14 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
@@ -249,8 +250,14 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
struct ath11k *ar = arsta->arvif->ar;
|
||||
struct ath11k_rx_peer_stats *rx_stats = arsta->rx_stats;
|
||||
int len = 0, i, retval = 0;
|
||||
@ -93,7 +93,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
|
||||
if (!rx_stats)
|
||||
return -ENOENT;
|
||||
@@ -280,14 +287,6 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
@@ -281,14 +288,6 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
rx_stats->num_mpdu_fcs_ok);
|
||||
len += scnprintf(buf + len, size - len, "Num of MPDUs with FCS error: %llu\n",
|
||||
rx_stats->num_mpdu_fcs_err);
|
||||
@ -108,7 +108,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
len += scnprintf(buf + len, size - len, "BCC %llu LDPC %llu\n",
|
||||
rx_stats->coding_count[0], rx_stats->coding_count[1]);
|
||||
len += scnprintf(buf + len, size - len,
|
||||
@@ -302,14 +301,96 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
@@ -303,14 +302,96 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
len += scnprintf(buf + len, size - len, "TID(0-15) Legacy TID(16):");
|
||||
for (i = 0; i <= IEEE80211_NUM_TIDS; i++)
|
||||
len += scnprintf(buf + len, size - len, "%llu ", rx_stats->tid_count[i]);
|
||||
@ -212,7 +212,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
len += scnprintf(buf + len, size - len,
|
||||
"\nDCM: %llu\nRU: 26 %llu 52: %llu 106: %llu 242: %llu 484: %llu 996: %llu\n",
|
||||
rx_stats->dcm_count, rx_stats->ru_alloc_cnt[0],
|
||||
@@ -848,6 +929,40 @@ static const struct file_operations fops
|
||||
@@ -849,6 +930,40 @@ static const struct file_operations fops
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
@ -253,7 +253,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
void ath11k_debugfs_sta_op_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta, struct dentry *dir)
|
||||
{
|
||||
@@ -856,9 +971,12 @@ void ath11k_debugfs_sta_op_add(struct ie
|
||||
@@ -857,9 +972,12 @@ void ath11k_debugfs_sta_op_add(struct ie
|
||||
if (ath11k_debugfs_is_extd_tx_stats_enabled(ar))
|
||||
debugfs_create_file("tx_stats", 0400, dir, sta,
|
||||
&fops_tx_stats);
|
||||
@ -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
|
||||
@@ -2757,10 +2757,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;
|
||||
|
||||
@@ -2770,6 +2803,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;
|
||||
|
||||
@@ -2786,18 +2821,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;
|
||||
|
||||
@@ -2834,6 +2857,52 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
@@ -2830,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;
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -32,6 +32,7 @@
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "dbring.h"
|
||||
#include "spectral.h"
|
||||
#include "wow.h"
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
#include "fw.h"
|
||||
#include "coredump.h"
|
||||
|
||||
@@ -525,6 +526,8 @@ struct ath11k_htt_data_stats {
|
||||
@@ -526,6 +527,8 @@ struct ath11k_htt_data_stats {
|
||||
u64 bw[ATH11K_COUNTER_TYPE_MAX][ATH11K_BW_NUM];
|
||||
u64 nss[ATH11K_COUNTER_TYPE_MAX][ATH11K_NSS_NUM];
|
||||
u64 gi[ATH11K_COUNTER_TYPE_MAX][ATH11K_GI_NUM];
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
};
|
||||
|
||||
struct ath11k_htt_tx_stats {
|
||||
@@ -532,6 +535,9 @@ struct ath11k_htt_tx_stats {
|
||||
@@ -533,6 +536,9 @@ struct ath11k_htt_tx_stats {
|
||||
u64 tx_duration;
|
||||
u64 ba_fails;
|
||||
u64 ack_fails;
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
};
|
||||
|
||||
struct ath11k_per_ppdu_tx_stats {
|
||||
@@ -650,11 +656,16 @@ struct ath11k_per_peer_tx_stats {
|
||||
@@ -651,11 +657,16 @@ struct ath11k_per_peer_tx_stats {
|
||||
u32 succ_bytes;
|
||||
u32 retry_bytes;
|
||||
u32 failed_bytes;
|
||||
@ -62,7 +62,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
@@ -14,13 +14,39 @@
|
||||
@@ -15,13 +15,39 @@
|
||||
#include "dp_rx.h"
|
||||
#include "debugfs_htt_stats.h"
|
||||
|
||||
@ -103,7 +103,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
|
||||
if (!arsta->tx_stats)
|
||||
return;
|
||||
@@ -65,6 +91,43 @@ void ath11k_debugfs_sta_add_tx_stats(str
|
||||
@@ -66,6 +92,43 @@ void ath11k_debugfs_sta_add_tx_stats(str
|
||||
STATS_OP_FMT(RETRY).legacy[1][mcs] += peer_stats->retry_pkts;
|
||||
}
|
||||
|
||||
@ -147,7 +147,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
if (peer_stats->is_ampdu) {
|
||||
tx_stats->ba_fails += peer_stats->ba_fails;
|
||||
|
||||
@@ -125,6 +188,17 @@ void ath11k_debugfs_sta_add_tx_stats(str
|
||||
@@ -126,6 +189,17 @@ void ath11k_debugfs_sta_add_tx_stats(str
|
||||
STATS_OP_FMT(RETRY).gi[1][gi] += peer_stats->retry_pkts;
|
||||
|
||||
tx_stats->tx_duration += peer_stats->duration;
|
||||
@ -165,7 +165,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
}
|
||||
|
||||
void ath11k_debugfs_sta_update_txcompl(struct ath11k *ar,
|
||||
@@ -141,12 +215,13 @@ static ssize_t ath11k_dbg_sta_dump_tx_st
|
||||
@@ -142,12 +216,13 @@ static ssize_t ath11k_dbg_sta_dump_tx_st
|
||||
struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
|
||||
struct ath11k *ar = arsta->arvif->ar;
|
||||
struct ath11k_htt_data_stats *stats;
|
||||
@ -181,7 +181,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
|
||||
if (!arsta->tx_stats)
|
||||
return -ENOENT;
|
||||
@@ -164,45 +239,46 @@ static ssize_t ath11k_dbg_sta_dump_tx_st
|
||||
@@ -165,45 +240,46 @@ static ssize_t ath11k_dbg_sta_dump_tx_st
|
||||
len += scnprintf(buf + len, size - len, "%s_%s\n",
|
||||
str_name[k],
|
||||
str[j]);
|
||||
@ -237,7 +237,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
stats->gi[j][0], stats->gi[j][1],
|
||||
stats->gi[j][2], stats->gi[j][3]);
|
||||
len += scnprintf(buf + len, size - len,
|
||||
@@ -211,10 +287,68 @@ static ssize_t ath11k_dbg_sta_dump_tx_st
|
||||
@@ -212,10 +288,68 @@ static ssize_t ath11k_dbg_sta_dump_tx_st
|
||||
for (i = 0; i < ATH11K_LEGACY_NUM; i++)
|
||||
len += scnprintf(buf + len, size - len, "%llu ",
|
||||
stats->legacy[j][i]);
|
||||
@ -307,7 +307,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
len += scnprintf(buf + len, size - len,
|
||||
"\nTX duration\n %llu usecs\n",
|
||||
arsta->tx_stats->tx_duration);
|
||||
@@ -222,6 +356,7 @@ static ssize_t ath11k_dbg_sta_dump_tx_st
|
||||
@@ -223,6 +357,7 @@ static ssize_t ath11k_dbg_sta_dump_tx_st
|
||||
"BA fails\n %llu\n", arsta->tx_stats->ba_fails);
|
||||
len += scnprintf(buf + len, size - len,
|
||||
"ack fails\n %llu\n", arsta->tx_stats->ack_fails);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -28,10 +28,10 @@ module_param_named(crypto_mode, ath11k_c
|
||||
@@ -30,10 +30,10 @@ module_param_named(crypto_mode, ath11k_c
|
||||
MODULE_PARM_DESC(crypto_mode, "crypto mode: 0-hardware, 1-software");
|
||||
|
||||
/* frame mode values are mapped as per enum ath11k_hw_txrx_mode */
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
@@ -526,13 +526,6 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
@@ -527,13 +527,6 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
rx_stats->byte_stats.rx_rate[i],
|
||||
(i + 1) % (he_rates_avail ? 12 : 8) ? "\t" : "\n");
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -5513,8 +5513,11 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
goto next_skb;
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
@@ -525,6 +525,12 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
@@ -526,6 +526,12 @@ static ssize_t ath11k_dbg_sta_dump_rx_st
|
||||
len += scnprintf(buf + len, size - len, "%10llu%s",
|
||||
rx_stats->byte_stats.rx_rate[i],
|
||||
(i + 1) % (he_rates_avail ? 12 : 8) ? "\t" : "\n");
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -2896,11 +2896,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;
|
||||
|
||||
@@ -2922,10 +2923,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;
|
||||
@@ -2983,7 +2987,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));
|
||||
@@ -3001,10 +3004,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 &&
|
||||
@@ -3037,7 +3040,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
|
||||
@@ -5439,6 +5555,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
|
||||
@@ -5515,8 +5680,13 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
|
||||
if ((ppdu_info->fc_valid) &&
|
||||
(ppdu_info->ast_index != HAL_AST_IDX_INVALID)) {
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/firmware.h>
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
+#include "fw.h"
|
||||
#include "qmi.h"
|
||||
#include "htc.h"
|
||||
#include "wmi.h"
|
||||
@@ -33,7 +34,6 @@
|
||||
@@ -34,7 +35,6 @@
|
||||
#include "spectral.h"
|
||||
#include "wow.h"
|
||||
#include "rx_desc.h"
|
||||
@ -16,7 +16,7 @@
|
||||
#include "coredump.h"
|
||||
|
||||
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
|
||||
@@ -363,6 +363,16 @@ struct ath11k_reg_tpc_power_info {
|
||||
@@ -364,6 +364,16 @@ struct ath11k_reg_tpc_power_info {
|
||||
struct ath11k_chan_power_info chan_power_info[ATH11K_NUM_PWR_LEVELS];
|
||||
};
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
struct ath11k_vif {
|
||||
u32 vdev_id;
|
||||
enum wmi_vdev_type vdev_type;
|
||||
@@ -421,7 +431,7 @@ struct ath11k_vif {
|
||||
@@ -422,7 +432,7 @@ struct ath11k_vif {
|
||||
bool reinstall_group_keys;
|
||||
|
||||
struct ath11k_reg_tpc_power_info reg_tpc_info;
|
||||
@ -44,7 +44,7 @@
|
||||
* FIXME: Driver should not copy struct ieee80211_chanctx_conf,
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
@@ -1467,6 +1467,87 @@ static const struct file_operations fops
|
||||
@@ -1469,6 +1469,87 @@ static const struct file_operations fops
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
@ -132,7 +132,7 @@
|
||||
int ath11k_debugfs_register(struct ath11k *ar)
|
||||
{
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
@@ -1499,6 +1580,9 @@ int ath11k_debugfs_register(struct ath11
|
||||
@@ -1501,6 +1582,9 @@ int ath11k_debugfs_register(struct ath11
|
||||
debugfs_create_file("fw_dbglog_config", 0600,
|
||||
ar->debug.debugfs_pdev, ar,
|
||||
&fops_fw_dbglog);
|
||||
@ -227,7 +227,7 @@
|
||||
int num_mgmt;
|
||||
|
||||
spin_lock_bh(&ar->txmgmt_idr_lock);
|
||||
@@ -5971,6 +5977,31 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
@@ -5974,6 +5980,31 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
info->status.ack_signal = tx_compl_param->ack_rssi;
|
||||
}
|
||||
|
||||
@ -259,7 +259,7 @@
|
||||
ieee80211_tx_status_irqsafe(ar->hw, msdu);
|
||||
|
||||
num_mgmt = atomic_dec_if_positive(&ar->num_pending_mgmt_tx);
|
||||
@@ -7550,6 +7581,11 @@ static void ath11k_mgmt_rx_event(struct
|
||||
@@ -7553,6 +7584,11 @@ static void ath11k_mgmt_rx_event(struct
|
||||
struct ieee80211_hdr *hdr;
|
||||
u16 fc;
|
||||
struct ieee80211_supported_band *sband;
|
||||
@ -271,7 +271,7 @@
|
||||
|
||||
if (ath11k_pull_mgmt_rx_params_tlv(ab, skb, &rx_ev) != 0) {
|
||||
ath11k_warn(ab, "failed to extract mgmt rx event");
|
||||
@@ -7615,7 +7651,34 @@ static void ath11k_mgmt_rx_event(struct
|
||||
@@ -7618,7 +7654,34 @@ static void ath11k_mgmt_rx_event(struct
|
||||
|
||||
hdr = (struct ieee80211_hdr *)skb->data;
|
||||
fc = le16_to_cpu(hdr->frame_control);
|
||||
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -2755,5 +2755,17 @@ err_sc_free:
|
||||
@@ -2800,5 +2800,17 @@ err_sc_free:
|
||||
}
|
||||
EXPORT_SYMBOL(ath11k_core_alloc);
|
||||
|
||||
@ -54,7 +54,7 @@ Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
@@ -17,6 +17,8 @@
|
||||
@@ -19,6 +19,8 @@
|
||||
#include "peer.h"
|
||||
#include "hif.h"
|
||||
|
||||
@ -63,7 +63,7 @@ Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
|
||||
static const char *htt_bp_umac_ring[HTT_SW_UMAC_RING_IDX_MAX] = {
|
||||
"REO2SW1_RING",
|
||||
"REO2SW2_RING",
|
||||
@@ -870,8 +872,6 @@ int ath11k_debugfs_pdev_create(struct at
|
||||
@@ -872,8 +874,6 @@ int ath11k_debugfs_pdev_create(struct at
|
||||
|
||||
void ath11k_debugfs_pdev_destroy(struct ath11k_base *ab)
|
||||
{
|
||||
@ -72,7 +72,7 @@ Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
|
||||
}
|
||||
|
||||
int ath11k_debugfs_soc_create(struct ath11k_base *ab)
|
||||
@@ -924,6 +924,24 @@ void ath11k_debugfs_soc_destroy(struct a
|
||||
@@ -926,6 +926,24 @@ void ath11k_debugfs_soc_destroy(struct a
|
||||
}
|
||||
EXPORT_SYMBOL(ath11k_debugfs_soc_destroy);
|
||||
|
||||
@ -97,9 +97,9 @@ Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
|
||||
void ath11k_debugfs_fw_stats_init(struct ath11k *ar)
|
||||
{
|
||||
struct dentry *fwstats_dir = debugfs_create_dir("fw_stats",
|
||||
@@ -1554,6 +1572,9 @@ int ath11k_debugfs_register(struct ath11
|
||||
@@ -1556,6 +1574,9 @@ int ath11k_debugfs_register(struct ath11
|
||||
char pdev_name[10];
|
||||
char buf[100] = {0};
|
||||
char buf[100] = {};
|
||||
|
||||
+ if (!(IS_ERR_OR_NULL(ar->debug.debugfs_pdev)))
|
||||
+ return 0;
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
|
||||
snprintf(pdev_name, sizeof(pdev_name), "%s%u", "mac", ar->pdev_idx);
|
||||
|
||||
ar->debug.debugfs_pdev = debugfs_create_dir(pdev_name, ab->debugfs_soc);
|
||||
@@ -1631,6 +1652,9 @@ void ath11k_debugfs_unregister(struct at
|
||||
@@ -1633,6 +1654,9 @@ void ath11k_debugfs_unregister(struct at
|
||||
kfree(dbr_debug);
|
||||
ar->debug.dbr_debug[i] = NULL;
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -10431,6 +10431,8 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10435,6 +10435,8 @@ static int __ath11k_mac_register(struct
|
||||
wiphy_ext_feature_set(ar->hw->wiphy,
|
||||
NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT);
|
||||
|
||||
|
||||
@ -3017,7 +3017,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
/* TODO: Do we need to enable ANI? */
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -908,6 +908,8 @@ struct ath11k_soc_dp_tx_err_stats {
|
||||
@@ -909,6 +909,8 @@ struct ath11k_soc_dp_tx_err_stats {
|
||||
* idr unavailable etc.
|
||||
*/
|
||||
atomic_t misc_fail;
|
||||
@ -3026,7 +3026,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
};
|
||||
|
||||
struct ath11k_soc_dp_stats {
|
||||
@@ -958,6 +960,7 @@ struct ath11k_base {
|
||||
@@ -959,6 +961,7 @@ struct ath11k_base {
|
||||
struct ath11k_htc htc;
|
||||
|
||||
struct ath11k_dp dp;
|
||||
|
||||
@ -81,7 +81,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
return 0;
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -18,6 +18,12 @@
|
||||
@@ -20,6 +20,12 @@
|
||||
#include "wow.h"
|
||||
#include "fw.h"
|
||||
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
unsigned int ath11k_debug_mask;
|
||||
EXPORT_SYMBOL(ath11k_debug_mask);
|
||||
module_param_named(debug_mask, ath11k_debug_mask, uint, 0644);
|
||||
@@ -1988,10 +1994,16 @@ static int ath11k_core_pdev_create(struc
|
||||
@@ -2032,10 +2038,16 @@ static int ath11k_core_pdev_create(struc
|
||||
goto err_pdev_debug;
|
||||
}
|
||||
|
||||
@ -112,7 +112,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
}
|
||||
|
||||
ret = ath11k_thermal_register(ab);
|
||||
@@ -2013,6 +2025,8 @@ err_thermal_unregister:
|
||||
@@ -2057,6 +2069,8 @@ err_thermal_unregister:
|
||||
ath11k_thermal_unregister(ab);
|
||||
err_mac_unregister:
|
||||
ath11k_mac_unregister(ab);
|
||||
@ -121,7 +121,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
err_dp_pdev_free:
|
||||
ath11k_dp_pdev_free(ab);
|
||||
err_pdev_debug:
|
||||
@@ -2061,6 +2075,10 @@ static void ath11k_core_pdev_destroy(str
|
||||
@@ -2105,6 +2119,10 @@ static void ath11k_core_pdev_destroy(str
|
||||
ath11k_spectral_deinit(ab);
|
||||
ath11k_thermal_unregister(ab);
|
||||
ath11k_mac_unregister(ab);
|
||||
@ -132,7 +132,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ath11k_core_pdev_suspend_target(ab);
|
||||
ath11k_hif_irq_disable(ab);
|
||||
ath11k_dp_pdev_free(ab);
|
||||
@@ -2268,6 +2286,10 @@ static int ath11k_core_reconfigure_on_cr
|
||||
@@ -2312,6 +2330,10 @@ static int ath11k_core_reconfigure_on_cr
|
||||
int ret;
|
||||
|
||||
mutex_lock(&ab->core_lock);
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ath11k_thermal_unregister(ab);
|
||||
ath11k_dp_pdev_free(ab);
|
||||
ath11k_spectral_deinit(ab);
|
||||
@@ -2606,6 +2628,10 @@ int ath11k_core_pre_init(struct ath11k_b
|
||||
@@ -2646,6 +2668,10 @@ int ath11k_core_pre_init(struct ath11k_b
|
||||
ath11k_err(ab, "failed to pre init firmware: %d", ret);
|
||||
return ret;
|
||||
}
|
||||
@ -156,15 +156,15 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -18,7 +18,6 @@
|
||||
#include <linux/firmware.h>
|
||||
@@ -19,7 +19,6 @@
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
-#include "fw.h"
|
||||
#include "qmi.h"
|
||||
#include "htc.h"
|
||||
#include "wmi.h"
|
||||
@@ -35,6 +34,8 @@
|
||||
@@ -36,6 +35,8 @@
|
||||
#include "wow.h"
|
||||
#include "rx_desc.h"
|
||||
#include "coredump.h"
|
||||
@ -173,7 +173,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
|
||||
|
||||
@@ -432,6 +433,9 @@ struct ath11k_vif {
|
||||
@@ -433,6 +434,9 @@ struct ath11k_vif {
|
||||
|
||||
struct ath11k_reg_tpc_power_info reg_tpc_info;
|
||||
struct ath11k_mgmt_frame_stats mgmt_stats;
|
||||
@ -183,7 +183,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
/* Must be last - ends in a flexible-array member.
|
||||
*
|
||||
* FIXME: Driver should not copy struct ieee80211_chanctx_conf,
|
||||
@@ -591,6 +595,9 @@ struct ath11k_sta {
|
||||
@@ -592,6 +596,9 @@ struct ath11k_sta {
|
||||
#endif
|
||||
|
||||
bool use_4addr_set;
|
||||
@ -193,7 +193,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
u16 tcl_metadata;
|
||||
|
||||
/* Protected with ar->data_lock */
|
||||
@@ -687,6 +694,9 @@ struct ath11k {
|
||||
@@ -688,6 +695,9 @@ struct ath11k {
|
||||
struct ath11k_pdev *pdev;
|
||||
struct ieee80211_hw *hw;
|
||||
struct ath11k_pdev_wmi *wmi;
|
||||
@ -203,7 +203,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
struct ath11k_pdev_dp dp;
|
||||
u8 mac_addr[ETH_ALEN];
|
||||
struct ath11k_he ar_he;
|
||||
@@ -964,6 +974,7 @@ struct ath11k_base {
|
||||
@@ -965,6 +975,7 @@ struct ath11k_base {
|
||||
|
||||
void __iomem *mem;
|
||||
void __iomem *mem_ce;
|
||||
@ -213,7 +213,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
struct {
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp.c
|
||||
@@ -47,12 +47,17 @@ int ath11k_dp_peer_setup(struct ath11k *
|
||||
@@ -49,12 +49,17 @@ int ath11k_dp_peer_setup(struct ath11k *
|
||||
struct ath11k_peer *peer;
|
||||
u32 reo_dest;
|
||||
int ret = 0, tid;
|
||||
@ -232,7 +232,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",
|
||||
@@ -133,6 +138,18 @@ static int ath11k_dp_srng_calculate_msi_
|
||||
@@ -135,6 +140,18 @@ static int ath11k_dp_srng_calculate_msi_
|
||||
{
|
||||
const u8 *grp_mask;
|
||||
|
||||
@ -251,7 +251,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
switch (type) {
|
||||
case HAL_WBM2SW_RELEASE:
|
||||
if (ring_num == DP_RX_RELEASE_RING_NUM) {
|
||||
@@ -835,14 +852,16 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
@@ -837,14 +854,16 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
int work_done = 0;
|
||||
int i, j;
|
||||
int tot_work_done = 0;
|
||||
@ -273,7 +273,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;
|
||||
@@ -850,7 +869,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
@@ -852,7 +871,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
goto done;
|
||||
}
|
||||
|
||||
@ -282,7 +282,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
work_done = ath11k_dp_rx_process_wbm_err(ab,
|
||||
napi,
|
||||
budget);
|
||||
@@ -861,7 +880,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
@@ -863,7 +882,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
goto done;
|
||||
}
|
||||
|
||||
@ -291,7 +291,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);
|
||||
@@ -895,7 +914,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
@@ -897,7 +916,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
if (ab->hw_params.ring_mask->reo_status[grp_id])
|
||||
ath11k_dp_process_reo_status(ab);
|
||||
|
||||
@ -403,7 +403,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)
|
||||
{
|
||||
@@ -3120,7 +3139,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) {
|
||||
@ -413,7 +413,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
user_stats->ast_index);
|
||||
return;
|
||||
}
|
||||
@@ -3128,6 +3148,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;
|
||||
|
||||
@ -427,7 +427,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
if (!rx_stats)
|
||||
return;
|
||||
|
||||
@@ -3204,8 +3231,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;
|
||||
|
||||
@ -439,7 +439,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
|
||||
@@ -5672,7 +5701,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
struct sk_buff *skb;
|
||||
struct sk_buff_head skb_list;
|
||||
struct ath11k_peer *peer;
|
||||
@ -448,7 +448,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
|
||||
@@ -5743,6 +5772,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);
|
||||
@ -704,7 +704,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ath11k_mac_vdev_delete(ar, arvif);
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
list_del(&arvif->list);
|
||||
@@ -7539,6 +7637,10 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||
@@ -7541,6 +7639,10 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||
arvif->vdev_id, ret);
|
||||
continue;
|
||||
}
|
||||
@ -715,7 +715,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
}
|
||||
|
||||
/* Restart the internal monitor vdev on new channel */
|
||||
@@ -9260,6 +9362,8 @@ static void ath11k_mac_op_sta_statistics
|
||||
@@ -9264,6 +9366,8 @@ static void ath11k_mac_op_sta_statistics
|
||||
sinfo->signal_avg += ATH11K_DEFAULT_NOISE_FLOOR;
|
||||
|
||||
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG);
|
||||
@ -724,7 +724,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
@@ -9935,6 +10039,7 @@ static const struct ieee80211_ops ath11k
|
||||
@@ -9939,6 +10043,7 @@ static const struct ieee80211_ops ath11k
|
||||
.update_vif_offload = ath11k_mac_op_update_vif_offload,
|
||||
.config = ath11k_mac_op_config,
|
||||
.bss_info_changed = ath11k_mac_op_bss_info_changed,
|
||||
@ -732,7 +732,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
.configure_filter = ath11k_mac_op_configure_filter,
|
||||
.hw_scan = ath11k_mac_op_hw_scan,
|
||||
.cancel_hw_scan = ath11k_mac_op_cancel_hw_scan,
|
||||
@@ -10381,7 +10486,8 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10385,7 +10490,8 @@ static int __ath11k_mac_register(struct
|
||||
ieee80211_hw_set(ar->hw, TX_AMPDU_SETUP_IN_HW);
|
||||
ieee80211_hw_set(ar->hw, SUPPORTS_REORDERING_BUFFER);
|
||||
ieee80211_hw_set(ar->hw, SUPPORTS_AMSDU_IN_AMPDU);
|
||||
@ -742,7 +742,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
}
|
||||
|
||||
ar->hw->wiphy->features |= NL80211_FEATURE_STATIC_SMPS;
|
||||
@@ -10496,6 +10602,9 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10500,6 +10606,9 @@ static int __ath11k_mac_register(struct
|
||||
ab->hw_params.bios_sar_capa)
|
||||
ar->hw->wiphy->sar_capa = ab->hw_params.bios_sar_capa;
|
||||
|
||||
@ -833,7 +833,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
return 0;
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
@@ -11,11 +11,10 @@
|
||||
@@ -13,11 +13,10 @@
|
||||
#include "core.h"
|
||||
#include "debug.h"
|
||||
#include "wmi.h"
|
||||
@ -846,7 +846,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
struct dentry *debugfs_ath11k;
|
||||
|
||||
@@ -544,6 +543,7 @@ static ssize_t ath11k_write_extd_rx_stat
|
||||
@@ -546,6 +545,7 @@ static ssize_t ath11k_write_extd_rx_stat
|
||||
HTT_RX_FP_DATA_FILTER_FLASG3;
|
||||
} else {
|
||||
tlv_filter = ath11k_mac_mon_status_filter_default;
|
||||
@ -854,7 +854,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
}
|
||||
|
||||
ar->debug.rx_filter = tlv_filter.rx_filter;
|
||||
@@ -1566,6 +1566,76 @@ static const struct file_operations fops
|
||||
@@ -1568,6 +1568,76 @@ static const struct file_operations fops
|
||||
.open = simple_open
|
||||
};
|
||||
|
||||
@ -931,7 +931,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
int ath11k_debugfs_register(struct ath11k *ar)
|
||||
{
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
@@ -1632,6 +1702,11 @@ int ath11k_debugfs_register(struct ath11
|
||||
@@ -1634,6 +1704,11 @@ int ath11k_debugfs_register(struct ath11
|
||||
&fops_reset_ps_duration);
|
||||
}
|
||||
|
||||
@ -945,7 +945,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -12,7 +12,7 @@
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "peer.h"
|
||||
#include "mac.h"
|
||||
|
||||
@ -1170,7 +1170,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ath11k_hif_write32(ab, reo_base + HAL_REO1_DEST_RING_CTRL_IX_3,
|
||||
--- a/drivers/net/wireless/ath/ath11k/pcic.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pcic.c
|
||||
@@ -609,6 +609,12 @@ static int ath11k_pcic_ext_irq_config(st
|
||||
@@ -611,6 +611,12 @@ static int ath11k_pcic_ext_irq_config(st
|
||||
netif_napi_add(irq_grp->napi_ndev, &irq_grp->napi,
|
||||
ath11k_pcic_ext_grp_napi_poll);
|
||||
|
||||
@ -1185,7 +1185,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ab->hw_params.ring_mask->rx_err[i] ||
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -159,6 +159,7 @@ WCN36XX_DEBUGFS=
|
||||
@@ -160,6 +160,7 @@ WCN36XX_DEBUGFS=
|
||||
ATH11K=
|
||||
ATH11K_AHB=
|
||||
ATH11K_PCI=
|
||||
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
[WMI_TAG_11D_NEW_COUNTRY_EVENT] = {
|
||||
.min_len = sizeof(struct wmi_11d_new_cc_ev) },
|
||||
[WMI_TAG_PER_CHAIN_RSSI_STATS] = {
|
||||
@@ -8847,6 +8849,74 @@ out:
|
||||
@@ -8850,6 +8852,74 @@ out:
|
||||
kfree(tb);
|
||||
}
|
||||
|
||||
@ -115,7 +115,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb)
|
||||
{
|
||||
struct wmi_cmd_hdr *cmd_hdr;
|
||||
@@ -8965,6 +9035,9 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
@@ -8968,6 +9038,9 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
case WMI_11D_NEW_COUNTRY_EVENTID:
|
||||
ath11k_reg_11d_new_cc_event(ab, skb);
|
||||
break;
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -127,6 +127,7 @@ struct ath11k_skb_cb {
|
||||
@@ -128,6 +128,7 @@ struct ath11k_skb_cb {
|
||||
u32 cipher;
|
||||
struct ath11k *ar;
|
||||
struct ieee80211_vif *vif;
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||
struct ath11k_skb_rxcb {
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -79,6 +79,43 @@ enum hal_encrypt_type ath11k_dp_tx_get_e
|
||||
@@ -80,6 +80,43 @@ enum hal_encrypt_type ath11k_dp_tx_get_e
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||
int ath11k_dp_tx(struct ath11k *ar, struct ath11k_vif *arvif,
|
||||
struct ath11k_sta *arsta, struct sk_buff *skb)
|
||||
{
|
||||
@@ -96,7 +133,8 @@ int ath11k_dp_tx(struct ath11k *ar, stru
|
||||
@@ -97,7 +134,8 @@ int ath11k_dp_tx(struct ath11k *ar, stru
|
||||
int ret;
|
||||
u32 ring_selector = 0;
|
||||
u8 ring_map = 0;
|
||||
@ -85,7 +85,7 @@ Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||
|
||||
if (unlikely(test_bit(ATH11K_FLAG_CRASH_FLUSH, &ar->ab->dev_flags)))
|
||||
return -ESHUTDOWN;
|
||||
@@ -189,7 +227,10 @@ tcl_ring_sel:
|
||||
@@ -190,7 +228,10 @@ tcl_ring_sel:
|
||||
|
||||
switch (ti.encap_type) {
|
||||
case HAL_TCL_ENCAP_TYPE_NATIVE_WIFI:
|
||||
@ -97,7 +97,7 @@ Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||
break;
|
||||
case HAL_TCL_ENCAP_TYPE_RAW:
|
||||
if (!test_bit(ATH11K_FLAG_RAW_MODE, &ab->dev_flags)) {
|
||||
@@ -208,6 +249,33 @@ tcl_ring_sel:
|
||||
@@ -209,6 +250,33 @@ tcl_ring_sel:
|
||||
goto fail_remove_idr;
|
||||
}
|
||||
|
||||
@ -131,7 +131,7 @@ Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||
ti.paddr = dma_map_single(ab->dev, skb->data, skb->len, DMA_TO_DEVICE);
|
||||
if (unlikely(dma_mapping_error(ab->dev, ti.paddr))) {
|
||||
atomic_inc(&ab->soc_stats.tx_err.misc_fail);
|
||||
@@ -216,7 +284,8 @@ tcl_ring_sel:
|
||||
@@ -217,7 +285,8 @@ tcl_ring_sel:
|
||||
goto fail_remove_idr;
|
||||
}
|
||||
|
||||
@ -141,7 +141,7 @@ Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||
skb_cb->paddr = ti.paddr;
|
||||
skb_cb->vif = arvif->vif;
|
||||
skb_cb->ar = ar;
|
||||
@@ -272,6 +341,8 @@ fail_unmap_dma:
|
||||
@@ -273,6 +342,8 @@ fail_unmap_dma:
|
||||
dma_unmap_single(ab->dev, ti.paddr, ti.data_len, DMA_TO_DEVICE);
|
||||
|
||||
fail_remove_idr:
|
||||
@ -150,7 +150,7 @@ Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||
spin_lock_bh(&tx_ring->tx_idr_lock);
|
||||
idr_remove(&tx_ring->txbuf_idr,
|
||||
FIELD_GET(DP_TX_DESC_ID_MSDU_ID, ti.desc_id));
|
||||
@@ -348,6 +419,9 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
@@ -349,6 +420,9 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
return;
|
||||
}
|
||||
|
||||
@ -369,7 +369,7 @@ Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||
int ath11k_dp_tx(struct ath11k *ar, struct ath11k_vif *arvif,
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -10619,6 +10619,9 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10623,6 +10623,9 @@ static int __ath11k_mac_register(struct
|
||||
*/
|
||||
ar->hw->wiphy->interface_modes &= ~BIT(NL80211_IFTYPE_MONITOR);
|
||||
|
||||
|
||||
@ -125,7 +125,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
ATH11K_QMI_FILE_TYPE_BDF_GOLDEN,
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -160,6 +160,8 @@ ATH11K=
|
||||
@@ -161,6 +161,8 @@ ATH11K=
|
||||
ATH11K_AHB=
|
||||
ATH11K_PCI=
|
||||
ATH11K_NSS_SUPPORT=
|
||||
@ -136,7 +136,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
ATH11K_TRACING=
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -951,6 +951,11 @@ enum ath11k_pm_policy {
|
||||
@@ -952,6 +952,11 @@ enum ath11k_pm_policy {
|
||||
ATH11K_PM_WOW,
|
||||
};
|
||||
|
||||
@ -148,7 +148,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
/* Master structure to hold the hw data which may be used in core module */
|
||||
struct ath11k_base {
|
||||
enum ath11k_hw_rev hw_rev;
|
||||
@@ -1114,6 +1119,8 @@ struct ath11k_base {
|
||||
@@ -1115,6 +1120,8 @@ struct ath11k_base {
|
||||
|
||||
struct completion restart_completed;
|
||||
|
||||
@ -185,7 +185,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
#define DP_RX_RELEASE_RING_NUM 3
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -334,6 +334,7 @@ tcl_ring_sel:
|
||||
@@ -335,6 +335,7 @@ tcl_ring_sel:
|
||||
skb->data, skb->len);
|
||||
|
||||
atomic_inc(&ar->dp.num_tx_pending);
|
||||
@ -193,7 +193,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -380,6 +381,7 @@ static void ath11k_dp_tx_free_txbuf(stru
|
||||
@@ -381,6 +382,7 @@ static void ath11k_dp_tx_free_txbuf(stru
|
||||
ar = ab->pdevs[mac_id].ar;
|
||||
if (atomic_dec_and_test(&ar->dp.num_tx_pending))
|
||||
wake_up(&ar->dp.tx_empty_waitq);
|
||||
@ -201,7 +201,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -411,6 +413,7 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
@@ -412,6 +414,7 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
|
||||
if (atomic_dec_and_test(&ar->dp.num_tx_pending))
|
||||
wake_up(&ar->dp.tx_empty_waitq);
|
||||
@ -209,7 +209,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
|
||||
@@ -833,6 +836,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -834,6 +837,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
wake_up(&ar->dp.tx_empty_waitq);
|
||||
|
||||
ath11k_dp_tx_complete_msdu(ar, msdu, &ts);
|
||||
@ -219,7 +219,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -43,6 +43,8 @@ bool ath11k_ftm_mode;
|
||||
@@ -45,6 +45,8 @@ bool ath11k_ftm_mode;
|
||||
module_param_named(ftm_mode, ath11k_ftm_mode, bool, 0444);
|
||||
MODULE_PARM_DESC(ftm_mode, "Boots up in factory test mode");
|
||||
|
||||
@ -228,7 +228,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
static struct ath11k_hw_params ath11k_hw_params[] = {
|
||||
{
|
||||
.hw_rev = ATH11K_HW_IPQ8074,
|
||||
@@ -96,7 +98,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -98,7 +100,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = true,
|
||||
.coldboot_cal_ftm = true,
|
||||
.cbcal_restart_fw = true,
|
||||
@ -237,7 +237,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 16 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = false,
|
||||
@@ -128,6 +130,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -130,6 +132,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.tcl_ring_retry = true,
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
.smp2p_wow_exit = false,
|
||||
@ -245,7 +245,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.support_dual_stations = false,
|
||||
.pdev_suspend = false,
|
||||
},
|
||||
@@ -180,7 +183,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -182,7 +185,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = false,
|
||||
.coldboot_cal_ftm = false,
|
||||
.cbcal_restart_fw = true,
|
||||
@ -254,7 +254,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 16 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = false,
|
||||
@@ -213,6 +216,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -215,6 +218,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
.smp2p_wow_exit = false,
|
||||
.support_fw_mac_sequence = false,
|
||||
@ -262,7 +262,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.support_dual_stations = false,
|
||||
.pdev_suspend = false,
|
||||
},
|
||||
@@ -267,7 +271,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -269,7 +273,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = false,
|
||||
.coldboot_cal_ftm = false,
|
||||
.cbcal_restart_fw = false,
|
||||
@ -271,7 +271,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 2 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = true,
|
||||
@@ -387,6 +391,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -389,6 +393,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
.smp2p_wow_exit = false,
|
||||
.support_fw_mac_sequence = false,
|
||||
@ -279,7 +279,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.support_dual_stations = false,
|
||||
.pdev_suspend = false,
|
||||
},
|
||||
@@ -529,7 +534,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -531,7 +536,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = false,
|
||||
.coldboot_cal_ftm = false,
|
||||
.cbcal_restart_fw = false,
|
||||
@ -288,7 +288,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 2 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = true,
|
||||
@@ -615,7 +620,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -617,7 +622,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = true,
|
||||
.coldboot_cal_ftm = true,
|
||||
.cbcal_restart_fw = false,
|
||||
@ -297,7 +297,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 3,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = false,
|
||||
@@ -696,7 +701,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -698,7 +703,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.supports_monitor = false,
|
||||
.supports_sta_ps = false,
|
||||
.supports_shadow_regs = false,
|
||||
@ -306,7 +306,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 16 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_regdb = false,
|
||||
@@ -731,6 +736,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -733,6 +738,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
.smp2p_wow_exit = false,
|
||||
.support_fw_mac_sequence = false,
|
||||
@ -314,7 +314,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.support_dual_stations = false,
|
||||
.pdev_suspend = false,
|
||||
.reo_status_poll = true,
|
||||
@@ -873,7 +879,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -875,7 +881,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = false,
|
||||
.coldboot_cal_ftm = false,
|
||||
.cbcal_restart_fw = false,
|
||||
@ -323,7 +323,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 2 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = true,
|
||||
@@ -909,6 +915,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -911,6 +917,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
.smp2p_wow_exit = false,
|
||||
.support_fw_mac_sequence = true,
|
||||
@ -331,7 +331,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.support_dual_stations = true,
|
||||
.pdev_suspend = false,
|
||||
},
|
||||
@@ -2657,6 +2664,21 @@ static int ath11k_core_pm_notify(struct
|
||||
@@ -2697,6 +2704,21 @@ static int ath11k_core_pm_notify(struct
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -697,6 +697,7 @@ struct ath11k {
|
||||
@@ -698,6 +698,7 @@ struct ath11k {
|
||||
struct ath11k_pdev_wmi *wmi;
|
||||
#ifdef CPTCFG_ATH11K_NSS_SUPPORT
|
||||
struct ath11k_nss nss;
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
#endif
|
||||
struct ath11k_pdev_dp dp;
|
||||
u8 mac_addr[ETH_ALEN];
|
||||
@@ -1133,6 +1134,9 @@ struct ath11k_base {
|
||||
@@ -1134,6 +1135,9 @@ struct ath11k_base {
|
||||
enum ath11k_pm_policy actual_pm_policy;
|
||||
struct notifier_block pm_nb;
|
||||
|
||||
@ -111,7 +111,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
break;
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -499,7 +499,7 @@ ath11k_dp_tx_process_htt_tx_complete(str
|
||||
@@ -500,7 +500,7 @@ ath11k_dp_tx_process_htt_tx_complete(str
|
||||
break;
|
||||
case HAL_WBM_REL_HTT_TX_COMP_STATUS_MEC_NOTIFY:
|
||||
/* This event is to be handled only when the driver decides to
|
||||
@ -837,7 +837,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
int ath11k_wmi_send_pdev_set_regdomain(struct ath11k *ar,
|
||||
struct pdev_set_regdomain_params *param)
|
||||
{
|
||||
@@ -6484,6 +6531,36 @@ static int ath11k_pull_peer_assoc_conf_e
|
||||
@@ -6487,6 +6534,36 @@ static int ath11k_pull_peer_assoc_conf_e
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -874,7 +874,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
static void ath11k_wmi_pull_pdev_stats_base(const struct wmi_pdev_stats_base *src,
|
||||
struct ath11k_fw_stats_pdev *dst)
|
||||
{
|
||||
@@ -7308,6 +7385,7 @@ static int ath11k_wmi_tlv_rdy_parse(stru
|
||||
@@ -7311,6 +7388,7 @@ static int ath11k_wmi_tlv_rdy_parse(stru
|
||||
|
||||
ether_addr_copy(ab->mac_addr,
|
||||
fixed_param.ready_event_min.mac_addr.addr);
|
||||
@ -882,7 +882,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
ab->pktlog_defs_checksum = fixed_param.pktlog_defs_checksum;
|
||||
break;
|
||||
case WMI_TAG_ARRAY_FIXED_STRUCT:
|
||||
@@ -8917,6 +8995,22 @@ exit:
|
||||
@@ -8920,6 +8998,22 @@ exit:
|
||||
kfree(tb);
|
||||
}
|
||||
|
||||
@ -905,7 +905,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb)
|
||||
{
|
||||
struct wmi_cmd_hdr *cmd_hdr;
|
||||
@@ -9050,6 +9144,9 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
@@ -9053,6 +9147,9 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
case WMI_P2P_NOA_EVENTID:
|
||||
ath11k_wmi_p2p_noa_event(ab, skb);
|
||||
break;
|
||||
|
||||
@ -158,7 +158,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
{
|
||||
struct sk_buff *msdu;
|
||||
struct ieee80211_tx_info *info;
|
||||
@@ -6065,6 +6114,11 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
@@ -6068,6 +6117,11 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
info->status.ack_signal = tx_compl_param->ack_rssi;
|
||||
}
|
||||
|
||||
@ -170,7 +170,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
hdr = (struct ieee80211_hdr *)msdu->data;
|
||||
frm_type = FIELD_GET(IEEE80211_FCTL_STYPE, hdr->frame_control);
|
||||
|
||||
@@ -6083,10 +6137,13 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
@@ -6086,10 +6140,13 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
arvif = ath11k_vif_to_arvif(vif);
|
||||
mgmt_stats = &arvif->mgmt_stats;
|
||||
|
||||
@ -188,7 +188,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
|
||||
skip_mgmt_stats:
|
||||
@@ -6108,12 +6165,13 @@ skip_mgmt_stats:
|
||||
@@ -6111,12 +6168,13 @@ skip_mgmt_stats:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -206,7 +206,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
int ret;
|
||||
|
||||
tb = ath11k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC);
|
||||
@@ -6123,7 +6181,7 @@ static int ath11k_pull_mgmt_tx_compl_par
|
||||
@@ -6126,7 +6184,7 @@ static int ath11k_pull_mgmt_tx_compl_par
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -215,12 +215,12 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
if (!ev) {
|
||||
ath11k_warn(ab, "failed to fetch mgmt tx compl ev");
|
||||
kfree(tb);
|
||||
@@ -7841,10 +7899,11 @@ exit:
|
||||
@@ -7844,10 +7902,11 @@ exit:
|
||||
|
||||
static void ath11k_mgmt_tx_compl_event(struct ath11k_base *ab, struct sk_buff *skb)
|
||||
{
|
||||
- struct wmi_mgmt_tx_compl_event tx_compl_param = {0};
|
||||
+ struct wmi_tx_compl_event tx_compl_param = {0};
|
||||
- struct wmi_mgmt_tx_compl_event tx_compl_param = {};
|
||||
+ struct wmi_tx_compl_event tx_compl_param = {};
|
||||
struct ath11k *ar;
|
||||
|
||||
- if (ath11k_pull_mgmt_tx_compl_param_tlv(ab, skb, &tx_compl_param) != 0) {
|
||||
@ -229,7 +229,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
ath11k_warn(ab, "failed to extract mgmt tx compl event");
|
||||
return;
|
||||
}
|
||||
@@ -7857,7 +7916,7 @@ static void ath11k_mgmt_tx_compl_event(s
|
||||
@@ -7860,7 +7919,7 @@ static void ath11k_mgmt_tx_compl_event(s
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@ -238,7 +238,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
|
||||
ath11k_dbg(ab, ATH11K_DBG_MGMT,
|
||||
"event mgmt tx compl ev pdev_id %d, desc_id %d, status %d ack_rssi %d",
|
||||
@@ -7868,6 +7927,36 @@ exit:
|
||||
@@ -7871,6 +7930,36 @@ exit:
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
@ -275,7 +275,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
static struct ath11k *ath11k_get_ar_on_scan_state(struct ath11k_base *ab,
|
||||
u32 vdev_id,
|
||||
enum ath11k_scan_state state)
|
||||
@@ -9147,6 +9236,10 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
@@ -9150,6 +9239,10 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
case WMI_WDS_PEER_EVENTID:
|
||||
ath11k_wmi_wds_peer_event(ab, skb);
|
||||
break;
|
||||
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -437,6 +437,7 @@ struct ath11k_vif {
|
||||
@@ -438,6 +438,7 @@ struct ath11k_vif {
|
||||
#ifdef CPTCFG_ATH11K_NSS_SUPPORT
|
||||
struct arvif_nss nss;
|
||||
#endif
|
||||
@ -328,7 +328,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
}
|
||||
|
||||
@@ -7301,16 +7478,17 @@ static int ath11k_mac_op_ampdu_action(st
|
||||
@@ -7303,16 +7480,17 @@ static int ath11k_mac_op_ampdu_action(st
|
||||
struct ieee80211_ampdu_params *params)
|
||||
{
|
||||
struct ath11k *ar = hw->priv;
|
||||
@ -348,7 +348,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
break;
|
||||
case IEEE80211_AMPDU_TX_START:
|
||||
case IEEE80211_AMPDU_TX_STOP_CONT:
|
||||
@@ -9326,6 +9504,7 @@ static void ath11k_mac_op_sta_statistics
|
||||
@@ -9330,6 +9508,7 @@ static void ath11k_mac_op_sta_statistics
|
||||
{
|
||||
struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
|
||||
struct ath11k *ar = arsta->arvif->ar;
|
||||
@ -356,7 +356,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
s8 signal;
|
||||
bool db2dbm = test_bit(WMI_TLV_SERVICE_HW_DB2DBM_CONVERSION_SUPPORT,
|
||||
ar->ab->wmi_ab.svc_map);
|
||||
@@ -9387,7 +9566,8 @@ static void ath11k_mac_op_sta_statistics
|
||||
@@ -9391,7 +9570,8 @@ static void ath11k_mac_op_sta_statistics
|
||||
|
||||
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG);
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -107,6 +107,11 @@ enum ath11k_crypt_mode {
|
||||
@@ -108,6 +108,11 @@ enum ath11k_crypt_mode {
|
||||
ATH11K_CRYPT_MODE_SW,
|
||||
};
|
||||
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
static inline enum wme_ac ath11k_tid_to_ac(u32 tid)
|
||||
{
|
||||
return (((tid == 0) || (tid == 3)) ? WME_AC_BE :
|
||||
@@ -375,6 +380,20 @@ struct ath11k_mgmt_frame_stats {
|
||||
@@ -376,6 +381,20 @@ struct ath11k_mgmt_frame_stats {
|
||||
u32 tx_compl_fail[ATH11K_STATS_MGMT_FRM_TYPE_MAX];
|
||||
};
|
||||
|
||||
@ -69,7 +69,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
struct ath11k_vif {
|
||||
u32 vdev_id;
|
||||
enum wmi_vdev_type vdev_type;
|
||||
@@ -438,6 +457,11 @@ struct ath11k_vif {
|
||||
@@ -439,6 +458,11 @@ struct ath11k_vif {
|
||||
struct arvif_nss nss;
|
||||
#endif
|
||||
struct list_head ap_vlan_arvifs;
|
||||
@ -427,7 +427,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
ath11k_peer_cleanup(ar, arvif->vdev_id);
|
||||
|
||||
idr_for_each(&ar->txmgmt_idr,
|
||||
@@ -10095,6 +10287,33 @@ static int ath11k_mac_station_remove(str
|
||||
@@ -10099,6 +10291,33 @@ static int ath11k_mac_station_remove(str
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -461,7 +461,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
static int ath11k_mac_op_sta_state(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta,
|
||||
@@ -10184,6 +10403,34 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10188,6 +10407,34 @@ static int ath11k_mac_op_sta_state(struc
|
||||
if (ret)
|
||||
ath11k_warn(ar->ab, "Unable to authorize peer %pM vdev %d: %d\n",
|
||||
sta->addr, arvif->vdev_id, ret);
|
||||
@ -496,7 +496,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
}
|
||||
|
||||
if (!ret &&
|
||||
@@ -10806,8 +11053,11 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10810,8 +11057,11 @@ static int __ath11k_mac_register(struct
|
||||
ab->hw_params.bios_sar_capa)
|
||||
ar->hw->wiphy->sar_capa = ab->hw_params.bios_sar_capa;
|
||||
|
||||
|
||||
@ -24,15 +24,15 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -769,6 +769,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -770,6 +770,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
struct sk_buff *msdu;
|
||||
struct hal_tx_status ts = { 0 };
|
||||
struct hal_tx_status ts = {};
|
||||
struct dp_tx_ring *tx_ring = &dp->tx_ring[ring_id];
|
||||
+ int valid_entries;
|
||||
u32 *desc;
|
||||
u32 msdu_id;
|
||||
u8 mac_id;
|
||||
@@ -777,9 +778,18 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -778,9 +779,18 @@ void ath11k_dp_tx_completion_handler(str
|
||||
|
||||
ath11k_hal_srng_access_begin(ab, status_ring);
|
||||
|
||||
@ -54,7 +54,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
tx_ring->tx_status_head =
|
||||
--- a/drivers/net/wireless/ath/ath11k/hal.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/hal.c
|
||||
@@ -668,7 +668,8 @@ u32 *ath11k_hal_srng_dst_get_next_entry(
|
||||
@@ -670,7 +670,8 @@ u32 *ath11k_hal_srng_dst_get_next_entry(
|
||||
|
||||
desc = srng->ring_base_vaddr + srng->u.dst_ring.tp;
|
||||
|
||||
@ -64,7 +64,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
/* wrap around to start of ring*/
|
||||
if (srng->u.dst_ring.tp == srng->ring_size)
|
||||
@@ -681,8 +682,63 @@ u32 *ath11k_hal_srng_dst_get_next_entry(
|
||||
@@ -683,8 +684,63 @@ u32 *ath11k_hal_srng_dst_get_next_entry(
|
||||
return desc;
|
||||
}
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -151,6 +151,7 @@ struct ath11k_skb_rxcb {
|
||||
@@ -152,6 +152,7 @@ struct ath11k_skb_rxcb {
|
||||
u8 tid;
|
||||
u16 peer_id;
|
||||
u16 seq_no;
|
||||
@ -29,7 +29,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
};
|
||||
|
||||
enum ath11k_hw_rev {
|
||||
@@ -1162,6 +1163,7 @@ struct ath11k_base {
|
||||
@@ -1163,6 +1164,7 @@ struct ath11k_base {
|
||||
u32 max_ast_index;
|
||||
u32 num_ast_entries;
|
||||
|
||||
@ -39,7 +39,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
};
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
@@ -852,6 +852,79 @@ static const struct file_operations fops
|
||||
@@ -854,6 +854,79 @@ static const struct file_operations fops
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
@ -119,7 +119,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
int ath11k_debugfs_pdev_create(struct ath11k_base *ab)
|
||||
{
|
||||
if (test_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags))
|
||||
@@ -901,6 +974,8 @@ int ath11k_debugfs_soc_create(struct ath
|
||||
@@ -903,6 +976,8 @@ int ath11k_debugfs_soc_create(struct ath
|
||||
ret = PTR_ERR(ab->debugfs_soc);
|
||||
goto out;
|
||||
}
|
||||
@ -297,7 +297,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
+ struct ath11k_skb_rxcb *rxcb;
|
||||
struct sk_buff *msdu;
|
||||
struct ath11k *ar;
|
||||
struct ieee80211_rx_status rx_status = {0};
|
||||
struct ieee80211_rx_status rx_status = {};
|
||||
int ret;
|
||||
+ bool fast_rx;
|
||||
|
||||
@ -343,7 +343,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
rx_status.flag |= RX_FLAG_SKIP_MONITOR | RX_FLAG_DUP_VALIDATED;
|
||||
|
||||
@@ -4384,6 +4483,7 @@ static int ath11k_dp_rx_h_null_q_desc(st
|
||||
@@ -4380,6 +4479,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;
|
||||
@@ -4433,7 +4533,8 @@ static int ath11k_dp_rx_h_null_q_desc(st
|
||||
@@ -4429,7 +4529,8 @@ static int ath11k_dp_rx_h_null_q_desc(st
|
||||
}
|
||||
ath11k_dp_rx_h_ppdu(ar, desc, status);
|
||||
|
||||
@ -449,7 +449,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
bool (*rx_desc_get_mpdu_fc_valid)(struct hal_rx_desc *desc);
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -10457,6 +10457,14 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10461,6 +10461,14 @@ static int ath11k_mac_op_sta_state(struc
|
||||
}
|
||||
} else if (old_state == IEEE80211_STA_AUTHORIZED &&
|
||||
new_state == IEEE80211_STA_ASSOC) {
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -123,6 +123,7 @@ static inline enum wme_ac ath11k_tid_to_
|
||||
@@ -124,6 +124,7 @@ static inline enum wme_ac ath11k_tid_to_
|
||||
enum ath11k_skb_flags {
|
||||
ATH11K_SKB_HW_80211_ENCAP = BIT(0),
|
||||
ATH11K_SKB_CIPHER_SET = BIT(1),
|
||||
@ -34,7 +34,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
};
|
||||
|
||||
struct ath11k_skb_cb {
|
||||
@@ -942,10 +943,13 @@ struct ath11k_dp_ring_bp_stats {
|
||||
@@ -943,10 +944,13 @@ struct ath11k_dp_ring_bp_stats {
|
||||
struct ath11k_soc_dp_tx_err_stats {
|
||||
/* TCL Ring Descriptor unavailable */
|
||||
u32 desc_na[DP_TCL_NUM_RING_MAX];
|
||||
@ -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
|
||||
@@ -359,7 +359,7 @@ void ath11k_dp_stop_shadow_timers(struct
|
||||
@@ -361,7 +361,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);
|
||||
@@ -428,7 +428,7 @@ static void ath11k_dp_srng_common_cleanu
|
||||
@@ -430,7 +430,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);
|
||||
}
|
||||
@@ -464,6 +464,11 @@ static int ath11k_dp_srng_common_setup(s
|
||||
@@ -466,6 +466,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) {
|
||||
@@ -471,7 +476,7 @@ static int ath11k_dp_srng_common_setup(s
|
||||
@@ -473,7 +478,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;
|
||||
|
||||
@@ -494,7 +499,7 @@ static int ath11k_dp_srng_common_setup(s
|
||||
@@ -496,7 +501,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,
|
||||
@@ -1108,7 +1113,7 @@ void ath11k_dp_free(struct ath11k_base *
|
||||
@@ -1110,7 +1115,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);
|
||||
@@ -1159,7 +1164,7 @@ int ath11k_dp_alloc(struct ath11k_base *
|
||||
@@ -1161,7 +1166,7 @@ int ath11k_dp_alloc(struct ath11k_base *
|
||||
|
||||
size = sizeof(struct hal_wbm_release_ring) * DP_TX_COMP_RING_SIZE;
|
||||
|
||||
@ -118,7 +118,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
dp->tx_ring[i].tcl_data_ring_id = i;
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -134,28 +134,34 @@ int ath11k_dp_tx(struct ath11k *ar, stru
|
||||
@@ -135,28 +135,34 @@ int ath11k_dp_tx(struct ath11k *ar, stru
|
||||
u32 ring_selector = 0;
|
||||
u8 ring_map = 0;
|
||||
bool tcl_ring_retry, is_diff_encap = false;
|
||||
@ -163,7 +163,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
spin_lock_bh(&tx_ring->tx_idr_lock);
|
||||
ret = idr_alloc(&tx_ring->txbuf_idr, skb, 0,
|
||||
@@ -163,9 +169,9 @@ tcl_ring_sel:
|
||||
@@ -164,9 +170,9 @@ tcl_ring_sel:
|
||||
spin_unlock_bh(&tx_ring->tx_idr_lock);
|
||||
|
||||
if (unlikely(ret < 0)) {
|
||||
@ -175,7 +175,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
return -ENOSPC;
|
||||
}
|
||||
|
||||
@@ -276,6 +282,11 @@ tcl_ring_sel:
|
||||
@@ -277,6 +283,11 @@ tcl_ring_sel:
|
||||
ti.encrypt_type = HAL_ENCRYPT_TYPE_OPEN;
|
||||
}
|
||||
|
||||
@ -187,7 +187,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
ti.paddr = dma_map_single(ab->dev, skb->data, skb->len, DMA_TO_DEVICE);
|
||||
if (unlikely(dma_mapping_error(ab->dev, ti.paddr))) {
|
||||
atomic_inc(&ab->soc_stats.tx_err.misc_fail);
|
||||
@@ -284,13 +295,13 @@ tcl_ring_sel:
|
||||
@@ -285,13 +296,13 @@ tcl_ring_sel:
|
||||
goto fail_remove_idr;
|
||||
}
|
||||
|
||||
@ -206,7 +206,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
tcl_ring = &ab->hal.srng_list[hal_ring_id];
|
||||
|
||||
spin_lock_bh(&tcl_ring->lock);
|
||||
@@ -303,7 +314,7 @@ tcl_ring_sel:
|
||||
@@ -304,7 +315,7 @@ tcl_ring_sel:
|
||||
* desc because the desc is directly enqueued onto hw queue.
|
||||
*/
|
||||
ath11k_hal_srng_access_end(ab, tcl_ring);
|
||||
@ -215,7 +215,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
spin_unlock_bh(&tcl_ring->lock);
|
||||
ret = -ENOMEM;
|
||||
|
||||
@@ -312,8 +323,8 @@ tcl_ring_sel:
|
||||
@@ -313,8 +324,8 @@ tcl_ring_sel:
|
||||
* checking this ring earlier for each pkt tx.
|
||||
* Restart ring selection if some rings are not checked yet.
|
||||
*/
|
||||
@ -226,7 +226,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
tcl_ring_retry = true;
|
||||
ring_selector++;
|
||||
}
|
||||
@@ -324,17 +335,17 @@ tcl_ring_sel:
|
||||
@@ -325,17 +336,17 @@ tcl_ring_sel:
|
||||
ath11k_hal_tx_cmd_desc_setup(ab, hal_tcl_desc +
|
||||
sizeof(struct hal_tlv_hdr), &ti);
|
||||
|
||||
@ -247,7 +247,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -381,7 +392,6 @@ static void ath11k_dp_tx_free_txbuf(stru
|
||||
@@ -382,7 +393,6 @@ static void ath11k_dp_tx_free_txbuf(stru
|
||||
ar = ab->pdevs[mac_id].ar;
|
||||
if (atomic_dec_and_test(&ar->dp.num_tx_pending))
|
||||
wake_up(&ar->dp.tx_empty_waitq);
|
||||
@ -255,7 +255,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -413,12 +423,25 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
@@ -414,12 +424,25 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
|
||||
if (atomic_dec_and_test(&ar->dp.num_tx_pending))
|
||||
wake_up(&ar->dp.tx_empty_waitq);
|
||||
@ -284,7 +284,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -646,6 +669,20 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -647,6 +670,20 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
|
||||
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
|
||||
@ -305,7 +305,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
if (unlikely(!rcu_access_pointer(ab->pdevs_active[ar->pdev_idx]))) {
|
||||
ieee80211_free_txskb(ar->hw, msdu);
|
||||
return;
|
||||
@@ -704,7 +741,7 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -705,7 +742,7 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
peer = ath11k_peer_find_by_id(ab, ts->peer_id);
|
||||
@ -314,7 +314,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
ath11k_dbg(ab, ATH11K_DBG_DATA,
|
||||
"dp_tx: failed to find the peer with peer_id %d\n",
|
||||
ts->peer_id);
|
||||
@@ -760,19 +797,36 @@ static inline void ath11k_dp_tx_status_p
|
||||
@@ -761,19 +798,36 @@ static inline void ath11k_dp_tx_status_p
|
||||
ts->rate_stats = 0;
|
||||
}
|
||||
|
||||
@ -342,19 +342,20 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
+ int hal_ring_id = dp->tx_ring[ring_id].tcl_comp_ring.ring_id, count = 0, i = 0;
|
||||
struct hal_srng *status_ring = &ab->hal.srng_list[hal_ring_id];
|
||||
struct sk_buff *msdu;
|
||||
struct hal_tx_status ts = { 0 };
|
||||
struct hal_tx_status ts = {};
|
||||
struct dp_tx_ring *tx_ring = &dp->tx_ring[ring_id];
|
||||
int valid_entries;
|
||||
- u32 *desc;
|
||||
- u32 msdu_id;
|
||||
- u8 mac_id;
|
||||
+ struct hal_wbm_release_ring *desc;
|
||||
+ u32 msdu_id, desc_id;
|
||||
u8 mac_id;
|
||||
+ u8 mac_id;
|
||||
+ struct hal_wbm_release_ring *tx_status;
|
||||
|
||||
spin_lock_bh(&status_ring->lock);
|
||||
|
||||
@@ -787,33 +841,28 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -788,33 +842,28 @@ void ath11k_dp_tx_completion_handler(str
|
||||
|
||||
ath11k_hal_srng_dst_invalidate_entry(ab, status_ring, valid_entries);
|
||||
|
||||
@ -403,7 +404,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
ath11k_dp_tx_status_parse(ab, tx_status, &ts);
|
||||
|
||||
desc_id = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE,
|
||||
@@ -846,7 +895,6 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -847,7 +896,6 @@ void ath11k_dp_tx_completion_handler(str
|
||||
wake_up(&ar->dp.tx_empty_waitq);
|
||||
|
||||
ath11k_dp_tx_complete_msdu(ar, msdu, &ts);
|
||||
@ -448,7 +449,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
ath11k_mac_vif_unref, vif);
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
@@ -711,10 +711,22 @@ static ssize_t ath11k_debugfs_dump_soc_d
|
||||
@@ -713,10 +713,22 @@ static ssize_t ath11k_debugfs_dump_soc_d
|
||||
len += scnprintf(buf + len, size - len, "ring%d: %u\n",
|
||||
i, soc_stats->tx_err.desc_na[i]);
|
||||
|
||||
@ -473,7 +474,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
if (len > size)
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -106,7 +106,8 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -108,7 +108,8 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.supports_regdb = false,
|
||||
.fix_l1ss = true,
|
||||
.credit_flow = false,
|
||||
@ -483,7 +484,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
.hal_params = &ath11k_hw_hal_params_ipq8074,
|
||||
.supports_dynamic_smps_6ghz = false,
|
||||
.alloc_cacheable_memory = true,
|
||||
@@ -191,7 +192,8 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -193,7 +194,8 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.supports_regdb = false,
|
||||
.fix_l1ss = true,
|
||||
.credit_flow = false,
|
||||
@ -493,7 +494,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
.hal_params = &ath11k_hw_hal_params_ipq8074,
|
||||
.supports_dynamic_smps_6ghz = false,
|
||||
.alloc_cacheable_memory = true,
|
||||
@@ -366,7 +368,8 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -368,7 +370,8 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.supports_regdb = false,
|
||||
.fix_l1ss = true,
|
||||
.credit_flow = false,
|
||||
@ -503,7 +504,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
.hal_params = &ath11k_hw_hal_params_ipq8074,
|
||||
.supports_dynamic_smps_6ghz = true,
|
||||
.alloc_cacheable_memory = true,
|
||||
@@ -2640,6 +2643,9 @@ int ath11k_core_pre_init(struct ath11k_b
|
||||
@@ -2680,6 +2683,9 @@ int ath11k_core_pre_init(struct ath11k_b
|
||||
if (nss_offload)
|
||||
ab->nss.stats_enabled = 1;
|
||||
|
||||
|
||||
@ -1257,7 +1257,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
}
|
||||
|
||||
@@ -10497,6 +10509,28 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10501,6 +10513,28 @@ static int ath11k_mac_op_sta_state(struc
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1286,7 +1286,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
|
||||
static const struct ieee80211_ops ath11k_ops = {
|
||||
.tx = ath11k_mac_op_tx,
|
||||
.wake_tx_queue = ieee80211_handle_wake_tx_queue,
|
||||
@@ -10556,6 +10590,9 @@ static const struct ieee80211_ops ath11k
|
||||
@@ -10560,6 +10594,9 @@ static const struct ieee80211_ops ath11k
|
||||
.set_sar_specs = ath11k_mac_op_set_bios_sar_specs,
|
||||
.remain_on_channel = ath11k_mac_op_remain_on_channel,
|
||||
.cancel_remain_on_channel = ath11k_mac_op_cancel_remain_on_channel,
|
||||
@ -1296,7 +1296,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
|
||||
};
|
||||
|
||||
static void ath11k_mac_update_ch_list(struct ath11k *ar,
|
||||
@@ -11075,6 +11112,8 @@ static int __ath11k_mac_register(struct
|
||||
@@ -11079,6 +11116,8 @@ static int __ath11k_mac_register(struct
|
||||
ieee80211_hw_set(ar->hw, SUPPORTS_NSS_OFFLOAD);
|
||||
wiphy_ext_feature_set(ar->hw->wiphy,
|
||||
NL80211_EXT_FEATURE_VLAN_OFFLOAD);
|
||||
@ -3337,7 +3337,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
|
||||
ATH11K_DBG_WMI = 0x00000002,
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -167,6 +167,7 @@ ATH11K_DEBUGFS=
|
||||
@@ -168,6 +168,7 @@ ATH11K_DEBUGFS=
|
||||
ATH11K_TRACING=
|
||||
ATH11K_SPECTRAL=
|
||||
ATH11K_THERMAL=
|
||||
|
||||
@ -87,8 +87,8 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
+ spin_unlock_bh(&ar->data_lock);
|
||||
|
||||
info = IEEE80211_SKB_CB(msdu);
|
||||
if ((!(info->flags & IEEE80211_TX_CTL_NO_ACK)) &&
|
||||
@@ -6124,34 +6147,6 @@ static int wmi_process_tx_comp(struct at
|
||||
memset(&info->status, 0, sizeof(info->status));
|
||||
@@ -6127,34 +6150,6 @@ static int wmi_process_tx_comp(struct at
|
||||
*/
|
||||
info->status.rates[0].idx = -1;
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
@@ -1332,6 +1332,7 @@ static void ath11k_ahb_remove_prepare(st
|
||||
@@ -1321,6 +1321,7 @@ static void ath11k_ahb_remove_prepare(st
|
||||
set_bit(ATH11K_FLAG_UNREGISTERING, &ab->dev_flags);
|
||||
cancel_work_sync(&ab->restart_work);
|
||||
cancel_work_sync(&ab->qmi.event_work);
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
static void ath11k_ahb_free_resources(struct ath11k_base *ab)
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -2777,6 +2777,7 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
@@ -2822,6 +2822,7 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
|
||||
mutex_init(&ab->core_lock);
|
||||
mutex_init(&ab->tbl_mtx_lock);
|
||||
@ -64,7 +64,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
spin_lock_init(&ab->base_lock);
|
||||
mutex_init(&ab->vdev_id_11d_lock);
|
||||
init_completion(&ab->reset_complete);
|
||||
@@ -2791,6 +2792,8 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
@@ -2836,6 +2837,8 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
INIT_WORK(&ab->update_11d_work, ath11k_update_11d);
|
||||
INIT_WORK(&ab->reset_work, ath11k_core_reset);
|
||||
INIT_WORK(&ab->dump_work, ath11k_coredump_upload);
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
init_completion(&ab->wow.wakeup_completed);
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -35,6 +35,7 @@
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "rx_desc.h"
|
||||
#include "coredump.h"
|
||||
#include "nss.h"
|
||||
@ -83,7 +83,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
#include "fw.h"
|
||||
|
||||
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
|
||||
@@ -1166,6 +1167,9 @@ struct ath11k_base {
|
||||
@@ -1167,6 +1168,9 @@ struct ath11k_base {
|
||||
|
||||
u32 max_ast_index;
|
||||
u32 num_ast_entries;
|
||||
|
||||
@ -13,7 +13,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -405,6 +405,7 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
@@ -406,6 +406,7 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
struct ath11k_skb_cb *skb_cb;
|
||||
struct ath11k *ar;
|
||||
struct ath11k_peer *peer;
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
|
||||
spin_lock(&tx_ring->tx_idr_lock);
|
||||
msdu = idr_remove(&tx_ring->txbuf_idr, ts->msdu_id);
|
||||
@@ -647,9 +648,41 @@ err_out:
|
||||
@@ -648,9 +649,41 @@ err_out:
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
}
|
||||
|
||||
@ -62,9 +62,9 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
+ struct hal_wbm_release_ring *tx_status,
|
||||
+ enum hal_wbm_rel_src_module buf_rel_source)
|
||||
{
|
||||
struct ieee80211_tx_status status = { 0 };
|
||||
struct ieee80211_rate_status status_rate = { 0 };
|
||||
@@ -659,8 +692,11 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
struct ieee80211_tx_status status = {};
|
||||
struct ieee80211_rate_status status_rate = {};
|
||||
@@ -660,8 +693,11 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
struct ath11k_peer *peer;
|
||||
struct ath11k_sta *arsta;
|
||||
struct rate_info rate;
|
||||
@ -77,7 +77,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
/* Must not happen */
|
||||
return;
|
||||
}
|
||||
@@ -669,11 +705,14 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -670,11 +706,14 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
|
||||
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
}
|
||||
if (skb_has_frag_list(msdu)) {
|
||||
kfree_skb_list(skb_shinfo(msdu)->frag_list);
|
||||
@@ -683,6 +722,8 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -684,6 +723,8 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
return;
|
||||
}
|
||||
|
||||
@ -103,7 +103,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
if (unlikely(!rcu_access_pointer(ab->pdevs_active[ar->pdev_idx]))) {
|
||||
ieee80211_free_txskb(ar->hw, msdu);
|
||||
return;
|
||||
@@ -699,10 +740,10 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -700,10 +741,10 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
/* skip tx rate update from ieee80211_status*/
|
||||
info->status.rates[0].idx = -1;
|
||||
|
||||
@ -116,7 +116,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
|
||||
if (!test_bit(WMI_TLV_SERVICE_HW_DB2DBM_CONVERSION_SUPPORT,
|
||||
ab->wmi_ab.svc_map))
|
||||
@@ -711,40 +752,40 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -712,40 +753,40 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
info->status.flags |= IEEE80211_TX_STATUS_ACK_SIGNAL_VALID;
|
||||
}
|
||||
|
||||
@ -167,7 +167,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
ieee80211_free_txskb(ar->hw, msdu);
|
||||
return;
|
||||
@@ -766,37 +807,6 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -767,37 +808,6 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
ieee80211_tx_status_ext(ar->hw, &status);
|
||||
}
|
||||
|
||||
@ -205,18 +205,18 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
static inline bool ath11k_dp_tx_completion_valid(struct hal_wbm_release_ring *desc)
|
||||
{
|
||||
struct htt_tx_wbm_completion *status_desc;
|
||||
@@ -820,9 +830,9 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -821,9 +831,9 @@ void ath11k_dp_tx_completion_handler(str
|
||||
int hal_ring_id = dp->tx_ring[ring_id].tcl_comp_ring.ring_id, count = 0, i = 0;
|
||||
struct hal_srng *status_ring = &ab->hal.srng_list[hal_ring_id];
|
||||
struct sk_buff *msdu;
|
||||
- struct hal_tx_status ts = { 0 };
|
||||
- struct hal_tx_status ts = {};
|
||||
struct dp_tx_ring *tx_ring = &dp->tx_ring[ring_id];
|
||||
int valid_entries;
|
||||
+ enum hal_wbm_rel_src_module buf_rel_source;
|
||||
struct hal_wbm_release_ring *desc;
|
||||
u32 msdu_id, desc_id;
|
||||
u8 mac_id;
|
||||
@@ -863,14 +873,16 @@ void ath11k_dp_tx_completion_handler(str
|
||||
u8 mac_id;
|
||||
@@ -864,14 +874,16 @@ void ath11k_dp_tx_completion_handler(str
|
||||
|
||||
while (count--) {
|
||||
tx_status = &tx_ring->tx_status[i++];
|
||||
@ -235,7 +235,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
ath11k_dp_tx_process_htt_tx_complete(ab,
|
||||
(void *)tx_status,
|
||||
mac_id, msdu_id,
|
||||
@@ -894,7 +906,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -895,7 +907,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
if (atomic_dec_and_test(&ar->dp.num_tx_pending))
|
||||
wake_up(&ar->dp.tx_empty_waitq);
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -431,6 +431,8 @@ static void ath11k_dp_srng_common_cleanu
|
||||
@@ -433,6 +433,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);
|
||||
@@ -443,7 +445,7 @@ static int ath11k_dp_srng_common_setup(s
|
||||
@@ -445,7 +447,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);
|
||||
@@ -504,6 +506,18 @@ static int ath11k_dp_srng_common_setup(s
|
||||
@@ -506,6 +508,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,
|
||||
@@ -1088,9 +1102,8 @@ void ath11k_dp_vdev_tx_attach(struct ath
|
||||
@@ -1090,9 +1104,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,
|
||||
@@ -1104,21 +1117,28 @@ static int ath11k_dp_tx_pending_cleanup(
|
||||
@@ -1106,21 +1119,28 @@ static int ath11k_dp_tx_pending_cleanup(
|
||||
void ath11k_dp_free(struct ath11k_base *ab)
|
||||
{
|
||||
struct ath11k_dp *dp = &ab->dp;
|
||||
@ -144,7 +144,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
#define DP_TCL_STATUS_RING_SIZE 32
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -135,6 +135,7 @@ int ath11k_dp_tx(struct ath11k *ar, stru
|
||||
@@ -136,6 +136,7 @@ int ath11k_dp_tx(struct ath11k *ar, stru
|
||||
u8 ring_map = 0;
|
||||
bool tcl_ring_retry, is_diff_encap = false;
|
||||
u8 align_pad, htt_meta_size = 0, max_tx_ring, tcl_ring_id, ring_id;
|
||||
@ -152,7 +152,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
|
||||
if (unlikely(!(info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP) &&
|
||||
!ieee80211_is_data(hdr->frame_control)))
|
||||
@@ -164,24 +165,28 @@ tcl_ring_sel:
|
||||
@@ -165,24 +166,28 @@ tcl_ring_sel:
|
||||
tx_ring = &dp->tx_ring[tcl_ring_id];
|
||||
|
||||
spin_lock_bh(&tx_ring->tx_idr_lock);
|
||||
@ -187,7 +187,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
FIELD_PREP(DP_TX_DESC_ID_POOL_ID, pool_id);
|
||||
ti.encap_type = ath11k_dp_tx_get_encap_type(arvif, skb);
|
||||
|
||||
@@ -355,10 +360,9 @@ fail_unmap_dma:
|
||||
@@ -356,10 +361,9 @@ fail_unmap_dma:
|
||||
fail_remove_idr:
|
||||
if (ti.pkt_offset)
|
||||
skb_pull(skb, ti.pkt_offset);
|
||||
@ -201,7 +201,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
|
||||
if (tcl_ring_retry)
|
||||
goto tcl_ring_sel;
|
||||
@@ -367,16 +371,19 @@ fail_remove_idr:
|
||||
@@ -368,16 +372,19 @@ fail_remove_idr:
|
||||
}
|
||||
|
||||
static void ath11k_dp_tx_free_txbuf(struct ath11k_base *ab, u8 mac_id,
|
||||
@ -226,7 +226,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
|
||||
if (unlikely(!msdu)) {
|
||||
ath11k_warn(ab, "tx completion for unknown msdu_id %d\n",
|
||||
@@ -405,11 +412,15 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
@@ -406,11 +413,15 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
struct ath11k_skb_cb *skb_cb;
|
||||
struct ath11k *ar;
|
||||
struct ath11k_peer *peer;
|
||||
@ -245,7 +245,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
|
||||
if (unlikely(!msdu)) {
|
||||
ath11k_warn(ab, "htt tx completion for unknown msdu_id %d\n",
|
||||
@@ -872,6 +883,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -873,6 +884,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
}
|
||||
|
||||
while (count--) {
|
||||
@ -253,7 +253,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
tx_status = &tx_ring->tx_status[i++];
|
||||
|
||||
desc_id = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE,
|
||||
@@ -890,17 +902,19 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -891,17 +903,19 @@ void ath11k_dp_tx_completion_handler(str
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -44,19 +44,6 @@ static void ath11k_dp_tx_encap_nwifi(str
|
||||
@@ -45,19 +45,6 @@ static void ath11k_dp_tx_encap_nwifi(str
|
||||
hdr->frame_control &= ~__cpu_to_le16(IEEE80211_STYPE_QOS_DATA);
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
enum hal_encrypt_type ath11k_dp_tx_get_encrypt_type(u32 cipher)
|
||||
{
|
||||
switch (cipher) {
|
||||
@@ -232,10 +219,6 @@ tcl_ring_sel:
|
||||
@@ -233,10 +220,6 @@ tcl_ring_sel:
|
||||
if (ieee80211_vif_is_mesh(arvif->vif))
|
||||
ti.enable_mesh = true;
|
||||
|
||||
@ -58,7 +58,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
tcl_cmd.info3 = FIELD_PREP(HAL_TCL_DATA_CMD_INFO3_DSCP_TID_TABLE_IDX,
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -10998,6 +10998,8 @@ static int __ath11k_mac_register(struct
|
||||
@@ -11002,6 +11002,8 @@ static int __ath11k_mac_register(struct
|
||||
ieee80211_hw_set(ar->hw, USES_RSS);
|
||||
}
|
||||
|
||||
|
||||
@ -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,8 +6021,20 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6016,8 +6016,20 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Anilkumar Kolli <quic_akolli@quicinc.com>
|
||||
dev_kfree_skb_any(skb);
|
||||
continue;
|
||||
}
|
||||
@@ -6350,6 +6362,13 @@ static int ath11k_dp_full_mon_process_rx
|
||||
@@ -6345,6 +6357,13 @@ static int ath11k_dp_full_mon_process_rx
|
||||
|
||||
spin_lock_bh(&pmon->mon_lock);
|
||||
|
||||
@ -53,7 +53,7 @@ Signed-off-by: Anilkumar Kolli <quic_akolli@quicinc.com>
|
||||
sw_mon_entries = &pmon->sw_mon_entries;
|
||||
rx_mon_stats = &pmon->rx_mon_stats;
|
||||
|
||||
@@ -6392,7 +6411,6 @@ static int ath11k_dp_full_mon_process_rx
|
||||
@@ -6387,7 +6406,6 @@ static int ath11k_dp_full_mon_process_rx
|
||||
}
|
||||
|
||||
rx_mon_stats->dest_ppdu_done++;
|
||||
@ -61,7 +61,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;
|
||||
@@ -6424,16 +6442,10 @@ reap_status_ring:
|
||||
@@ -6419,16 +6437,10 @@ reap_status_ring:
|
||||
int ath11k_dp_rx_process_mon_rings(struct ath11k_base *ab, int mac_id,
|
||||
struct napi_struct *napi, int budget)
|
||||
{
|
||||
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -2319,6 +2319,11 @@ static int ath11k_core_reconfigure_on_cr
|
||||
@@ -2359,6 +2359,11 @@ static int ath11k_core_reconfigure_on_cr
|
||||
|
||||
clear_bit(ATH11K_FLAG_CRASH_FLUSH, &ab->dev_flags);
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Hari Chandrakanthan <quic_haric@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dbring.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dbring.c
|
||||
@@ -81,6 +81,8 @@ static int ath11k_dbring_bufs_replenish(
|
||||
@@ -82,6 +82,8 @@ static int ath11k_dbring_bufs_replenish(
|
||||
|
||||
buff->paddr = paddr;
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -10409,6 +10403,17 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10413,6 +10407,17 @@ static int ath11k_mac_op_sta_state(struc
|
||||
arsta->bw = ath11k_mac_ieee80211_sta_bw_to_wmi(ar, sta);
|
||||
arsta->bw_prev = arsta->bw;
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
|
||||
@ -41,7 +41,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -961,6 +961,9 @@ struct ath11k_soc_dp_stats {
|
||||
@@ -962,6 +962,9 @@ struct ath11k_soc_dp_stats {
|
||||
u32 rxdma_error[HAL_REO_ENTR_RING_RXDMA_ECODE_MAX];
|
||||
u32 reo_error[HAL_REO_DEST_RING_ERROR_CODE_MAX];
|
||||
u32 hal_reo_error[DP_REO_DST_RING_MAX];
|
||||
@ -53,7 +53,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
};
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
@@ -727,6 +727,18 @@ static ssize_t ath11k_debugfs_dump_soc_d
|
||||
@@ -729,6 +729,18 @@ static ssize_t ath11k_debugfs_dump_soc_d
|
||||
"\nNSS Transmit Failures: %d\n",
|
||||
atomic_read(&soc_stats->tx_err.nss_tx_fail));
|
||||
|
||||
@ -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
|
||||
@@ -1158,8 +1158,10 @@ int ath11k_dp_alloc(struct ath11k_base *
|
||||
@@ -1160,8 +1160,10 @@ int ath11k_dp_alloc(struct ath11k_base *
|
||||
|
||||
INIT_LIST_HEAD(&dp->reo_cmd_list);
|
||||
INIT_LIST_HEAD(&dp->reo_cmd_cache_flush_list);
|
||||
@ -194,7 +194,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
+static int ath11k_dp_reo_cache_flush(struct ath11k_base *ab,
|
||||
struct dp_rx_tid *rx_tid)
|
||||
{
|
||||
struct ath11k_hal_reo_cmd cmd = {0};
|
||||
struct ath11k_hal_reo_cmd cmd = {};
|
||||
unsigned long tot_desc_sz, desc_sz;
|
||||
int ret;
|
||||
|
||||
@ -318,7 +318,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
void ath11k_peer_rx_tid_delete(struct ath11k *ar,
|
||||
struct ath11k_peer *peer, u8 tid)
|
||||
{
|
||||
- struct ath11k_hal_reo_cmd cmd = {0};
|
||||
- struct ath11k_hal_reo_cmd cmd = {};
|
||||
struct dp_rx_tid *rx_tid = &peer->rx_tid[tid];
|
||||
- int ret;
|
||||
+ struct dp_reo_update_rx_queue_elem *elem, *tmp;
|
||||
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Rajat Soni <quic_rajson@quicinc.com>
|
||||
case ATH11K_STATE_WEDGED:
|
||||
--- a/drivers/net/wireless/ath/ath11k/qmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
|
||||
@@ -2075,6 +2075,8 @@ static int ath11k_qmi_assign_target_mem_
|
||||
@@ -2068,6 +2068,8 @@ static int ath11k_qmi_assign_target_mem_
|
||||
if (!ab->qmi.target_mem[idx].iaddr)
|
||||
return -EIO;
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Hari Chandrakanthan <quic_haric@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -8839,6 +8839,8 @@ static int ath11k_mac_flush_tx_complete(
|
||||
@@ -8843,6 +8843,8 @@ static int ath11k_mac_flush_tx_complete(
|
||||
ret = -ETIMEDOUT;
|
||||
}
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -10989,6 +10989,7 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10993,6 +10993,7 @@ static int __ath11k_mac_register(struct
|
||||
ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
|
||||
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
|
||||
ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
|
||||
|
||||
@ -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
|
||||
@@ -6081,7 +6081,9 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6076,7 +6076,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))) {
|
||||
@@ -6099,7 +6101,6 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6094,7 +6096,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);
|
||||
|
||||
@@ -6130,6 +6131,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6125,6 +6126,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);
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -221,7 +221,8 @@ tcl_ring_sel:
|
||||
@@ -222,7 +222,8 @@ tcl_ring_sel:
|
||||
|
||||
switch (ti.encap_type) {
|
||||
case HAL_TCL_ENCAP_TYPE_NATIVE_WIFI:
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
ath11k-$(CPTCFG_ATH11K_THERMAL) += thermal.o
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
@@ -1754,7 +1754,9 @@ int ath11k_debugfs_register(struct ath11
|
||||
@@ -1756,7 +1756,9 @@ int ath11k_debugfs_register(struct ath11
|
||||
snprintf(buf, 100, "../../ath11k/%pd2", ar->debug.debugfs_pdev);
|
||||
debugfs_create_symlink("ath11k", ar->hw->wiphy->debugfsdir, buf);
|
||||
|
||||
@ -52,7 +52,7 @@
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
@@ -12,7 +12,9 @@
|
||||
@@ -13,7 +13,9 @@
|
||||
#include "debug.h"
|
||||
#include "dp_tx.h"
|
||||
#include "dp_rx.h"
|
||||
@ -62,7 +62,7 @@
|
||||
|
||||
static inline u32 ath11k_he_tones_in_ru_to_nl80211_he_ru_alloc(u16 ru_tones)
|
||||
{
|
||||
@@ -552,6 +554,7 @@ static const struct file_operations fops
|
||||
@@ -553,6 +555,7 @@ static const struct file_operations fops
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
static int
|
||||
ath11k_dbg_sta_open_htt_peer_stats(struct inode *inode, struct file *file)
|
||||
{
|
||||
@@ -623,6 +626,7 @@ static const struct file_operations fops
|
||||
@@ -624,6 +627,7 @@ static const struct file_operations fops
|
||||
.owner = THIS_MODULE,
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
@ -78,7 +78,7 @@
|
||||
|
||||
static ssize_t ath11k_dbg_sta_write_peer_pktlog(struct file *file,
|
||||
const char __user *buf,
|
||||
@@ -907,6 +911,7 @@ static const struct file_operations fops
|
||||
@@ -908,6 +912,7 @@ static const struct file_operations fops
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
@ -86,7 +86,7 @@
|
||||
static ssize_t
|
||||
ath11k_write_htt_peer_stats_reset(struct file *file,
|
||||
const char __user *user_buf,
|
||||
@@ -966,6 +971,7 @@ static const struct file_operations fops
|
||||
@@ -967,6 +972,7 @@ static const struct file_operations fops
|
||||
.owner = THIS_MODULE,
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
@ -94,7 +94,7 @@
|
||||
|
||||
static ssize_t ath11k_dbg_sta_read_peer_ps_state(struct file *file,
|
||||
char __user *user_buf,
|
||||
@@ -1112,8 +1118,10 @@ void ath11k_debugfs_sta_op_add(struct ie
|
||||
@@ -1113,8 +1119,10 @@ void ath11k_debugfs_sta_op_add(struct ie
|
||||
&fops_reset_rx_stats);
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@
|
||||
|
||||
debugfs_create_file("peer_pktlog", 0644, dir, sta,
|
||||
&fops_peer_pktlog);
|
||||
@@ -1123,10 +1131,12 @@ void ath11k_debugfs_sta_op_add(struct ie
|
||||
@@ -1124,10 +1132,12 @@ void ath11k_debugfs_sta_op_add(struct ie
|
||||
debugfs_create_file("addba_resp", 0200, dir, sta, &fops_addba_resp);
|
||||
debugfs_create_file("delba", 0200, dir, sta, &fops_delba);
|
||||
|
||||
@ -143,7 +143,7 @@
|
||||
ath11k_htt_pktlog(ab, skb);
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -7,7 +7,9 @@
|
||||
@@ -8,7 +8,9 @@
|
||||
#include "core.h"
|
||||
#include "dp_tx.h"
|
||||
#include "debug.h"
|
||||
@ -153,7 +153,7 @@
|
||||
#include "hw.h"
|
||||
#include "peer.h"
|
||||
#include "mac.h"
|
||||
@@ -547,7 +549,9 @@ static void ath11k_dp_tx_cache_peer_stat
|
||||
@@ -548,7 +550,9 @@ static void ath11k_dp_tx_cache_peer_stat
|
||||
void ath11k_dp_tx_update_txcompl(struct ath11k *ar, struct hal_tx_status *ts)
|
||||
{
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
@ -163,7 +163,7 @@
|
||||
enum hal_tx_rate_stats_pkt_type pkt_type;
|
||||
enum hal_tx_rate_stats_sgi sgi;
|
||||
enum hal_tx_rate_stats_bw bw;
|
||||
@@ -636,8 +640,10 @@ void ath11k_dp_tx_update_txcompl(struct
|
||||
@@ -637,8 +641,10 @@ void ath11k_dp_tx_update_txcompl(struct
|
||||
ath11k_mac_he_ru_tones_to_nl80211_he_ru_alloc(ru_tones);
|
||||
}
|
||||
|
||||
@ -176,7 +176,7 @@
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -10588,7 +10588,7 @@ static const struct ieee80211_ops ath11k
|
||||
@@ -10592,7 +10592,7 @@ static const struct ieee80211_ops ath11k
|
||||
.set_wakeup = ath11k_wow_op_set_wakeup,
|
||||
#endif
|
||||
|
||||
@ -187,7 +187,7 @@
|
||||
#endif
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -164,6 +164,8 @@ ATH11K_MEM_PROFILE_256M=
|
||||
@@ -165,6 +165,8 @@ ATH11K_MEM_PROFILE_256M=
|
||||
ATH11K_MEM_PROFILE_512M=
|
||||
ATH11K_DEBUG=
|
||||
ATH11K_DEBUGFS=
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Aishwarya R <quic_aisr@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -347,8 +347,10 @@ fail_remove_idr:
|
||||
@@ -348,8 +348,10 @@ fail_remove_idr:
|
||||
if (ti.pkt_offset)
|
||||
skb_pull(skb, ti.pkt_offset);
|
||||
|
||||
@ -28,7 +28,7 @@ Signed-off-by: Aishwarya R <quic_aisr@quicinc.com>
|
||||
|
||||
if (tcl_ring_retry)
|
||||
goto tcl_ring_sel;
|
||||
@@ -364,12 +366,14 @@ static void ath11k_dp_tx_free_txbuf(stru
|
||||
@@ -365,12 +367,14 @@ static void ath11k_dp_tx_free_txbuf(stru
|
||||
struct sk_buff *msdu = NULL;
|
||||
struct ath11k_skb_cb *skb_cb;
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Aishwarya R <quic_aisr@quicinc.com>
|
||||
|
||||
if (unlikely(!msdu)) {
|
||||
ath11k_warn(ab, "tx completion for unknown msdu_id %d\n",
|
||||
@@ -401,12 +405,14 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
@@ -402,12 +406,14 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
u32 msdu_id = ts->msdu_id;
|
||||
u8 flags;
|
||||
|
||||
@ -58,7 +58,7 @@ Signed-off-by: Aishwarya R <quic_aisr@quicinc.com>
|
||||
|
||||
if (unlikely(!msdu)) {
|
||||
ath11k_warn(ab, "htt tx completion for unknown msdu_id %d\n",
|
||||
@@ -892,12 +898,14 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -893,12 +899,14 @@ void ath11k_dp_tx_completion_handler(str
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -384,9 +384,13 @@ static void ath11k_dp_tx_free_txbuf(stru
|
||||
@@ -385,9 +385,13 @@ static void ath11k_dp_tx_free_txbuf(stru
|
||||
skb_cb = ATH11K_SKB_CB(msdu);
|
||||
|
||||
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -449,7 +449,7 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
@@ -450,7 +450,7 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
return;
|
||||
}
|
||||
if (unlikely(!skb_cb->vif)) {
|
||||
|
||||
@ -12,7 +12,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||
@@ -547,6 +547,7 @@ static ssize_t ath11k_write_extd_rx_stat
|
||||
@@ -549,6 +549,7 @@ static ssize_t ath11k_write_extd_rx_stat
|
||||
}
|
||||
|
||||
ar->debug.rx_filter = tlv_filter.rx_filter;
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
for (i = 0; i < ab->hw_params.num_rxdma_per_pdev; i++) {
|
||||
ring_id = ar->dp.rx_mon_status_refill_ring[i].refill_buf_ring.ring_id;
|
||||
@@ -1107,6 +1108,7 @@ static ssize_t ath11k_write_pktlog_filte
|
||||
@@ -1109,6 +1110,7 @@ static ssize_t ath11k_write_pktlog_filte
|
||||
}
|
||||
|
||||
/* Clear rx filter set for monitor mode and rx status */
|
||||
@ -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;
|
||||
@@ -4058,6 +4180,7 @@ static int ath11k_dp_rx_h_verify_tkip_mi
|
||||
@@ -4054,6 +4176,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;
|
||||
|
||||
@@ -4338,8 +4461,8 @@ static void ath11k_dp_rx_h_sort_frags(st
|
||||
@@ -4334,8 +4457,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;
|
||||
|
||||
@@ -4569,8 +4692,9 @@ ath11k_dp_process_rx_err_buf(struct ath1
|
||||
@@ -4565,8 +4688,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);
|
||||
@@ -5196,6 +5320,47 @@ void ath11k_dp_rx_pdev_free(struct ath11
|
||||
@@ -5192,6 +5316,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;
|
||||
@@ -5289,6 +5454,12 @@ config_refill_ring:
|
||||
@@ -5285,6 +5450,12 @@ config_refill_ring:
|
||||
}
|
||||
}
|
||||
|
||||
@ -501,7 +501,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -1281,6 +1281,8 @@ int ath11k_dp_tx_htt_rx_filter_setup(str
|
||||
@@ -1282,6 +1282,8 @@ int ath11k_dp_tx_htt_rx_filter_setup(str
|
||||
!!(params.flags & HAL_SRNG_FLAGS_MSI_SWAP));
|
||||
cmd->info0 |= FIELD_PREP(HTT_RX_RING_SELECTION_CFG_CMD_INFO0_PS,
|
||||
!!(params.flags & HAL_SRNG_FLAGS_DATA_TLV_SWAP));
|
||||
@ -510,7 +510,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
cmd->info1 = FIELD_PREP(HTT_RX_RING_SELECTION_CFG_CMD_INFO1_BUF_SIZE,
|
||||
rx_buf_size);
|
||||
@@ -1290,6 +1292,26 @@ int ath11k_dp_tx_htt_rx_filter_setup(str
|
||||
@@ -1291,6 +1293,26 @@ int ath11k_dp_tx_htt_rx_filter_setup(str
|
||||
cmd->pkt_type_en_flags3 = tlv_filter->pkt_filter_flags3;
|
||||
cmd->rx_filter_tlv = tlv_filter->rx_filter;
|
||||
|
||||
@ -537,7 +537,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
ret = ath11k_htc_send(&ab->htc, ab->dp.eid, skb);
|
||||
if (ret)
|
||||
goto err_free;
|
||||
@@ -1368,6 +1390,7 @@ int ath11k_dp_tx_htt_monitor_mode_ring_c
|
||||
@@ -1369,6 +1391,7 @@ int ath11k_dp_tx_htt_monitor_mode_ring_c
|
||||
}
|
||||
|
||||
ring_id = dp->rxdma_mon_buf_ring.refill_buf_ring.ring_id;
|
||||
|
||||
@ -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);
|
||||
@@ -4655,17 +4653,14 @@ ath11k_dp_process_rx_err_buf(struct ath1
|
||||
@@ -4651,17 +4649,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),
|
||||
@@ -5072,18 +5067,16 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5068,18 +5063,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);
|
||||
@@ -5198,16 +5191,14 @@ int ath11k_dp_process_rxdma_err(struct a
|
||||
@@ -5194,16 +5187,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,
|
||||
@@ -6419,16 +6410,14 @@ ath11k_dp_rx_full_mon_mpdu_pop(struct at
|
||||
@@ -6414,16 +6405,14 @@ ath11k_dp_rx_full_mon_mpdu_pop(struct at
|
||||
msdu_list.sw_cookie[i]);
|
||||
|
||||
spin_lock_bh(&rx_ring->idr_lock);
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -718,6 +718,11 @@ struct ath11k_per_peer_tx_stats {
|
||||
@@ -719,6 +719,11 @@ struct ath11k_per_peer_tx_stats {
|
||||
#define ATH11K_FLUSH_TIMEOUT (5 * HZ)
|
||||
#define ATH11K_VDEV_DELETE_TIMEOUT_HZ (5 * HZ)
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
struct ath11k {
|
||||
struct ath11k_base *ab;
|
||||
struct ath11k_pdev *pdev;
|
||||
@@ -870,6 +875,7 @@ struct ath11k {
|
||||
@@ -871,6 +876,7 @@ struct ath11k {
|
||||
bool ps_state_enable;
|
||||
bool ps_timekeeper_enable;
|
||||
s8 max_allowed_tx_power;
|
||||
@ -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
|
||||
@@ -953,7 +953,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
@@ -955,7 +955,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
|
||||
hal_params = ab->hw_params.hal_params;
|
||||
ath11k_dp_rxbufs_replenish(ab, id, rx_ring, 0,
|
||||
@ -121,12 +121,13 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
struct hal_reo_dest_ring *desc;
|
||||
enum hal_reo_dest_ring_push_reason push_reason;
|
||||
+ u32 *rx_buf_id[MAX_RADIOS];
|
||||
u32 cookie, info0, rx_msdu_info0, rx_mpdu_info0;
|
||||
u32 cookie;
|
||||
int i;
|
||||
|
||||
- for (i = 0; i < MAX_RADIOS; i++)
|
||||
- __skb_queue_head_init(&msdu_list[i]);
|
||||
+ for (i = 0; i < MAX_RADIOS; i++) {
|
||||
__skb_queue_head_init(&msdu_list[i]);
|
||||
+ __skb_queue_head_init(&msdu_list[i]);
|
||||
+ rx_buf_id[i] = kzalloc(sizeof(u32) * DP_RX_MAX_IDR_BUF, GFP_ATOMIC);
|
||||
+ }
|
||||
|
||||
@ -149,7 +150,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",
|
||||
@@ -3450,9 +3479,12 @@ try_again:
|
||||
@@ -3446,9 +3475,12 @@ try_again:
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
|
||||
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i],
|
||||
@ -163,7 +164,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
return total_msdu_reaped;
|
||||
}
|
||||
|
||||
@@ -4816,7 +4848,7 @@ exit:
|
||||
@@ -4812,7 +4844,7 @@ exit:
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
|
||||
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, n_bufs_reaped[i],
|
||||
@ -172,26 +173,27 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
}
|
||||
|
||||
return tot_n_bufs_reaped;
|
||||
@@ -5032,14 +5064,17 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5028,14 +5060,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;
|
||||
+ u32 *wbm_err_buf_id[MAX_RADIOS];
|
||||
u32 *rx_desc;
|
||||
int buf_id, mac_id;
|
||||
int num_buffs_reaped[MAX_RADIOS] = {0};
|
||||
int num_buffs_reaped[MAX_RADIOS] = {};
|
||||
int total_num_buffs_reaped = 0;
|
||||
int ret, i;
|
||||
|
||||
- for (i = 0; i < ab->num_radios; i++)
|
||||
- __skb_queue_head_init(&msdu_list[i]);
|
||||
+ for (i = 0; i < ab->num_radios; i++) {
|
||||
__skb_queue_head_init(&msdu_list[i]);
|
||||
+ __skb_queue_head_init(&msdu_list[i]);
|
||||
+ wbm_err_buf_id[i] = kzalloc(sizeof(u32) * DP_RX_MAX_IDR_BUF, GFP_ATOMIC);
|
||||
+ }
|
||||
|
||||
srng = &ab->hal.srng_list[dp->rx_rel_ring.ring_id];
|
||||
|
||||
@@ -5065,9 +5100,15 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5061,9 +5096,15 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
|
||||
ar = ab->pdevs[mac_id].ar;
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
@ -208,7 +210,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",
|
||||
@@ -5112,7 +5153,7 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5108,7 +5149,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],
|
||||
@ -217,7 +219,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
@@ -5134,6 +5175,8 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5130,6 +5171,8 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
}
|
||||
rcu_read_unlock();
|
||||
done:
|
||||
@ -226,7 +228,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
return total_num_buffs_reaped;
|
||||
}
|
||||
|
||||
@@ -5219,7 +5262,7 @@ int ath11k_dp_process_rxdma_err(struct a
|
||||
@@ -5215,7 +5258,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,
|
||||
@ -235,7 +237,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
|
||||
return budget - quota;
|
||||
}
|
||||
@@ -6168,12 +6211,12 @@ static void ath11k_dp_rx_mon_dest_proces
|
||||
@@ -6163,12 +6206,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,
|
||||
@ -250,7 +252,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6691,7 +6734,7 @@ next_entry:
|
||||
@@ -6686,7 +6729,7 @@ next_entry:
|
||||
ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id,
|
||||
&dp->rxdma_mon_buf_ring,
|
||||
rx_bufs_used,
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/pcic.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pcic.c
|
||||
@@ -496,6 +496,7 @@ void ath11k_pcic_ext_irq_enable(struct a
|
||||
@@ -498,6 +498,7 @@ void ath11k_pcic_ext_irq_enable(struct a
|
||||
struct ath11k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i];
|
||||
|
||||
if (!irq_grp->napi_enabled) {
|
||||
@ -45,7 +45,7 @@
|
||||
napi_enable(&irq_grp->napi);
|
||||
irq_grp->napi_enabled = true;
|
||||
}
|
||||
@@ -583,6 +584,7 @@ static int ath11k_pcic_ext_irq_config(st
|
||||
@@ -585,6 +586,7 @@ static int ath11k_pcic_ext_irq_config(st
|
||||
u32 user_base_data = 0, base_vector = 0;
|
||||
struct ath11k_ext_irq_grp *irq_grp;
|
||||
unsigned long irq_flags;
|
||||
@ -53,7 +53,7 @@
|
||||
|
||||
ret = ath11k_pcic_get_user_msi_assignment(ab, "DP", &num_vectors,
|
||||
&user_base_data,
|
||||
@@ -606,6 +608,9 @@ static int ath11k_pcic_ext_irq_config(st
|
||||
@@ -608,6 +610,9 @@ static int ath11k_pcic_ext_irq_config(st
|
||||
goto fail_allocate;
|
||||
}
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
netif_napi_add(irq_grp->napi_ndev, &irq_grp->napi,
|
||||
ath11k_pcic_ext_grp_napi_poll);
|
||||
|
||||
@@ -660,6 +665,8 @@ static int ath11k_pcic_ext_irq_config(st
|
||||
@@ -662,6 +667,8 @@ static int ath11k_pcic_ext_irq_config(st
|
||||
ath11k_pcic_ext_grp_disable(irq_grp);
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/debugfs_sta.c
|
||||
@@ -1074,7 +1074,7 @@ static ssize_t ath11k_dbg_sta_reset_rx_s
|
||||
@@ -1075,7 +1075,7 @@ static ssize_t ath11k_dbg_sta_reset_rx_s
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct ieee80211_sta *sta = file->private_data;
|
||||
@ -39,7 +39,7 @@
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -3732,7 +3731,7 @@ static void ath11k_dp_rx_update_user_sta
|
||||
@@ -3728,7 +3727,7 @@ static void ath11k_dp_rx_update_user_sta
|
||||
return;
|
||||
}
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
rx_stats = arsta->rx_stats;
|
||||
|
||||
if (ar->ab->nss.enabled)
|
||||
@@ -6431,7 +6430,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6426,7 +6425,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) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -309,6 +309,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -311,6 +311,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
.smp2p_wow_exit = false,
|
||||
.support_fw_mac_sequence = true,
|
||||
@ -8,7 +8,7 @@
|
||||
.support_dual_stations = true,
|
||||
.pdev_suspend = false,
|
||||
},
|
||||
@@ -485,6 +486,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -487,6 +488,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
.smp2p_wow_exit = false,
|
||||
.support_fw_mac_sequence = true,
|
||||
@ -16,7 +16,7 @@
|
||||
.support_dual_stations = true,
|
||||
.pdev_suspend = false,
|
||||
},
|
||||
@@ -656,6 +658,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -658,6 +660,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE_WCN6750,
|
||||
.smp2p_wow_exit = true,
|
||||
.support_fw_mac_sequence = true,
|
||||
@ -24,7 +24,7 @@
|
||||
.support_dual_stations = false,
|
||||
.pdev_suspend = true,
|
||||
},
|
||||
@@ -984,6 +987,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -986,6 +989,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.support_off_channel_tx = false,
|
||||
.tcl_ring_retry = true,
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -44,6 +44,7 @@ module_param_named(ftm_mode, ath11k_ftm_
|
||||
@@ -46,6 +46,7 @@ module_param_named(ftm_mode, ath11k_ftm_
|
||||
MODULE_PARM_DESC(ftm_mode, "Boots up in factory test mode");
|
||||
|
||||
static const struct ath11k_num_vdevs_peers ath11k_vdevs_peers[];
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
static struct ath11k_hw_params ath11k_hw_params[] = {
|
||||
{
|
||||
@@ -742,7 +743,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -744,7 +745,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
.smp2p_wow_exit = false,
|
||||
.support_fw_mac_sequence = false,
|
||||
@ -17,7 +17,7 @@
|
||||
.support_dual_stations = false,
|
||||
.pdev_suspend = false,
|
||||
.reo_status_poll = true,
|
||||
@@ -987,8 +988,23 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -989,8 +990,23 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.support_off_channel_tx = false,
|
||||
.tcl_ring_retry = true,
|
||||
.tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -2837,13 +2837,13 @@ err_sc_free:
|
||||
@@ -2882,13 +2882,13 @@ err_sc_free:
|
||||
}
|
||||
EXPORT_SYMBOL(ath11k_core_alloc);
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
struct htt_ppdu_user_stats* usr_stats)
|
||||
{
|
||||
usr_stats->rate.reserved0 = peer->ppdu_stats_delayba.reserved0;
|
||||
@@ -6290,7 +6290,7 @@ static void ath11k_dp_rx_mon_dest_proces
|
||||
@@ -6285,7 +6285,7 @@ static void ath11k_dp_rx_mon_dest_proces
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4711,8 +4711,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4721,8 +4721,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
if (!key)
|
||||
key = rcu_dereference(sdata->default_unicast_key);
|
||||
|
||||
|
||||
@ -48,23 +48,23 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
/*
|
||||
* The maximum number of IPv4 addresses listed for ARP filtering. If the number
|
||||
* of addresses for an interface increase beyond this value, hardware ARP
|
||||
@@ -758,6 +772,7 @@ struct ieee80211_parsed_tpe {
|
||||
* be updated to 1, even if bss_param_ch_cnt didn't change. This allows
|
||||
* the link to know that it heard the latest value from its own beacon
|
||||
@@ -760,6 +774,7 @@ struct ieee80211_parsed_tpe {
|
||||
* (as opposed to hearing its value from another link's beacon).
|
||||
* @s1g_long_beacon_period: number of beacon intervals between each long
|
||||
* beacon transmission.
|
||||
+ * @nss_ap_isolate: Used for notifying the NSS host about AP isolate feature
|
||||
*/
|
||||
struct ieee80211_bss_conf {
|
||||
struct ieee80211_vif *vif;
|
||||
@@ -857,6 +872,7 @@ struct ieee80211_bss_conf {
|
||||
@@ -856,6 +871,7 @@ struct ieee80211_bss_conf {
|
||||
bool eht_mu_beamformer;
|
||||
bool eht_80mhz_full_bw_ul_mumimo;
|
||||
bool eht_disable_mcs15;
|
||||
+ bool nss_ap_isolate;
|
||||
|
||||
u8 bss_param_ch_cnt;
|
||||
u8 bss_param_ch_cnt_link_id;
|
||||
+ bool nss_ap_isolate;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2151,6 +2167,16 @@ static inline bool lockdep_vif_wiphy_mut
|
||||
@@ -2155,6 +2171,16 @@ static inline bool lockdep_vif_wiphy_mut
|
||||
lockdep_vif_wiphy_mutex_held(vif))
|
||||
|
||||
/**
|
||||
@ -81,7 +81,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
* enum ieee80211_key_flags - key flags
|
||||
*
|
||||
* These flags are used for communication about keys between the driver
|
||||
@@ -2863,6 +2889,8 @@ struct ieee80211_txq {
|
||||
@@ -2867,6 +2893,8 @@ struct ieee80211_txq {
|
||||
* HW flag so drivers can opt in according to their own control, e.g. in
|
||||
* testing.
|
||||
*
|
||||
@ -90,15 +90,15 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
|
||||
*/
|
||||
enum ieee80211_hw_flags {
|
||||
@@ -2924,6 +2952,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ,
|
||||
@@ -2927,6 +2955,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_DISALLOW_PUNCTURING,
|
||||
IEEE80211_HW_HANDLES_QUIET_CSA,
|
||||
IEEE80211_HW_STRICT,
|
||||
+ IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
|
||||
|
||||
/* keep last, obviously */
|
||||
NUM_IEEE80211_HW_FLAGS
|
||||
@@ -3952,6 +3981,10 @@ struct ieee80211_prep_tx_info {
|
||||
@@ -3959,6 +3988,10 @@ struct ieee80211_prep_tx_info {
|
||||
* non-MLO connections.
|
||||
* The callback can sleep.
|
||||
*
|
||||
@ -109,7 +109,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
* @prepare_multicast: Prepare for multicast filter configuration.
|
||||
* This callback is optional, and its return value is passed
|
||||
* to configure_filter(). This callback must be atomic.
|
||||
@@ -4521,6 +4554,9 @@ struct ieee80211_ops {
|
||||
@@ -4541,6 +4574,9 @@ struct ieee80211_ops {
|
||||
struct ieee80211_bss_conf *info,
|
||||
u64 changed);
|
||||
|
||||
@ -121,8 +121,8 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
--- a/net/mac80211/debugfs.c
|
||||
+++ b/net/mac80211/debugfs.c
|
||||
@@ -510,6 +510,7 @@ static const char *hw_flag_names[] = {
|
||||
FLAG(DISALLOW_PUNCTURING_5GHZ),
|
||||
@@ -507,6 +507,7 @@ static const char *hw_flag_names[] = {
|
||||
FLAG(DISALLOW_PUNCTURING),
|
||||
FLAG(HANDLES_QUIET_CSA),
|
||||
FLAG(STRICT),
|
||||
+ FLAG(SUPPORTS_NSS_OFFLOAD),
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
* the suspend->resume cycle. Since we can't check each caller
|
||||
--- a/net/mac80211/main.c
|
||||
+++ b/net/mac80211/main.c
|
||||
@@ -416,6 +416,17 @@ void ieee80211_link_info_change_notify(s
|
||||
@@ -428,6 +428,17 @@ void ieee80211_link_info_change_notify(s
|
||||
drv_link_info_changed(local, sdata, link->conf, link->link_id, changed);
|
||||
}
|
||||
|
||||
@ -174,7 +174,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
u64 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata)
|
||||
{
|
||||
sdata->vif.bss_conf.use_cts_prot = false;
|
||||
@@ -859,12 +870,6 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
@@ -884,12 +895,6 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
NL80211_FEATURE_FULL_AP_CLIENT_STATE;
|
||||
wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_FILS_STA);
|
||||
wiphy_ext_feature_set(wiphy,
|
||||
@ -187,7 +187,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
NL80211_EXT_FEATURE_SCAN_FREQ_KHZ);
|
||||
wiphy_ext_feature_set(wiphy,
|
||||
NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE);
|
||||
@@ -1189,6 +1194,18 @@ int ieee80211_register_hw(struct ieee802
|
||||
@@ -1188,6 +1193,18 @@ int ieee80211_register_hw(struct ieee802
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -208,19 +208,19 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
return -EINVAL;
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -2441,6 +2441,9 @@ sta_get_last_rx_stats(struct sta_info *s
|
||||
struct ieee80211_sta_rx_stats *stats = &sta->deflink.rx_stats;
|
||||
int cpu;
|
||||
@@ -2499,6 +2499,9 @@ sta_get_last_rx_stats(struct sta_info *s
|
||||
|
||||
stats = &link_sta_info->rx_stats;
|
||||
|
||||
+ if (ieee80211_hw_check(&sta->local->hw, SUPPORTS_NSS_OFFLOAD))
|
||||
+ return stats;
|
||||
+
|
||||
if (!sta->deflink.pcpu_rx_stats)
|
||||
if (!link_sta_info->pcpu_rx_stats)
|
||||
return stats;
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1023,11 +1023,23 @@ ieee80211_tx_h_stats(struct ieee80211_tx
|
||||
@@ -1029,11 +1029,23 @@ ieee80211_tx_h_stats(struct ieee80211_tx
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
int ac = -1;
|
||||
@ -244,7 +244,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ac = skb_get_queue_mapping(skb);
|
||||
tx->sta->deflink.tx_stats.bytes[ac] += skb->len;
|
||||
}
|
||||
@@ -2867,7 +2879,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2875,7 +2887,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
|
||||
if (unlikely(!multicast &&
|
||||
(sk_requests_wifi_status(skb->sk) ||
|
||||
@ -255,7 +255,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
info_id = ieee80211_store_ack_skb(local, skb, &info_flags,
|
||||
cookie);
|
||||
|
||||
@@ -4661,7 +4675,8 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4671,7 +4685,8 @@ static void ieee80211_8023_xmit(struct i
|
||||
memcpy(IEEE80211_SKB_CB(seg), info, sizeof(*info));
|
||||
}
|
||||
|
||||
@ -265,7 +265,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
info->status_data = ieee80211_store_ack_skb(local, skb,
|
||||
&info->flags, NULL);
|
||||
if (info->status_data)
|
||||
@@ -4669,8 +4684,10 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4679,8 +4694,10 @@ static void ieee80211_8023_xmit(struct i
|
||||
}
|
||||
|
||||
dev_sw_netstats_tx_add(dev, skbs, len);
|
||||
@ -280,7 +280,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
--- a/net/wireless/util.c
|
||||
+++ b/net/wireless/util.c
|
||||
@@ -2676,6 +2676,9 @@ bool cfg80211_does_bw_fit_range(const st
|
||||
@@ -2685,6 +2685,9 @@ EXPORT_SYMBOL(cfg80211_link_sinfo_alloc_
|
||||
|
||||
int cfg80211_sinfo_alloc_tid_stats(struct station_info *sinfo, gfp_t gfp)
|
||||
{
|
||||
@ -292,7 +292,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
gfp);
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2757,7 +2757,7 @@ static int ieee80211_change_bss(struct w
|
||||
@@ -2960,7 +2960,7 @@ static int ieee80211_change_bss(struct w
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
struct ieee80211_link_data *link;
|
||||
struct ieee80211_supported_band *sband;
|
||||
@ -301,7 +301,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
link = ieee80211_link_or_deflink(sdata, params->link_id, true);
|
||||
if (IS_ERR(link))
|
||||
@@ -2807,6 +2807,8 @@ static int ieee80211_change_bss(struct w
|
||||
@@ -3010,6 +3010,8 @@ static int ieee80211_change_bss(struct w
|
||||
sdata->flags |= IEEE80211_SDATA_DONT_BRIDGE_PACKETS;
|
||||
else
|
||||
sdata->flags &= ~IEEE80211_SDATA_DONT_BRIDGE_PACKETS;
|
||||
@ -310,7 +310,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ieee80211_check_fast_rx_iface(sdata);
|
||||
}
|
||||
|
||||
@@ -2835,6 +2837,8 @@ static int ieee80211_change_bss(struct w
|
||||
@@ -3038,6 +3040,8 @@ static int ieee80211_change_bss(struct w
|
||||
|
||||
ieee80211_link_info_change_notify(sdata, link, changed);
|
||||
|
||||
@ -321,7 +321,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
--- a/net/mac80211/driver-ops.h
|
||||
+++ b/net/mac80211/driver-ops.h
|
||||
@@ -180,6 +180,23 @@ void drv_link_info_changed(struct ieee80
|
||||
@@ -182,6 +182,23 @@ void drv_link_info_changed(struct ieee80
|
||||
struct ieee80211_bss_conf *info,
|
||||
int link_id, u64 changed);
|
||||
|
||||
@ -347,7 +347,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
{
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1900,6 +1900,8 @@ void ieee80211_vif_cfg_change_notify(str
|
||||
@@ -1934,6 +1934,8 @@ void ieee80211_vif_cfg_change_notify(str
|
||||
void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata,
|
||||
struct ieee80211_link_data *link,
|
||||
u64 changed);
|
||||
@ -358,8 +358,8 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
--- a/net/mac80211/trace.h
|
||||
+++ b/net/mac80211/trace.h
|
||||
@@ -427,6 +427,38 @@ TRACE_EVENT(drv_config,
|
||||
LOCAL_PR_ARG, __entry->changed, CHANDEF_PR_ARG
|
||||
@@ -430,6 +430,38 @@ TRACE_EVENT(drv_config,
|
||||
LOCAL_PR_ARG, __entry->radio_idx, __entry->changed, CHANDEF_PR_ARG
|
||||
)
|
||||
);
|
||||
+TRACE_EVENT(drv_nss_bss_info_changed,
|
||||
@ -399,7 +399,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
TP_PROTO(struct ieee80211_local *local,
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -1020,7 +1020,8 @@ static bool ieee80211_set_sdata_offload_
|
||||
@@ -1033,7 +1033,8 @@ static bool ieee80211_set_sdata_offload_
|
||||
local->hw.wiphy->frag_threshold != (u32)-1)
|
||||
flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED;
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -6269,7 +6269,13 @@ int ieee80211_tx_control_port(struct wip
|
||||
@@ -6442,7 +6442,13 @@ int ieee80211_tx_control_port(struct wip
|
||||
|
||||
start_xmit:
|
||||
local_bh_disable();
|
||||
|
||||
@ -31,9 +31,9 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -9837,4 +9837,15 @@ ssize_t wiphy_locked_debugfs_write(struc
|
||||
void *data);
|
||||
#endif
|
||||
@@ -10332,4 +10332,15 @@ cfg80211_s1g_get_primary_sibling(struct
|
||||
return ieee80211_get_channel_khz(wiphy, sibling_1mhz_khz);
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * cfg80211_update_muedca_params_event - Notify the updated MU-EDCA parameters
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
#endif /* __NET_CFG80211_H */
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -7647,6 +7647,20 @@ u32 ieee80211_calc_rx_airtime(struct iee
|
||||
@@ -7666,6 +7666,20 @@ u32 ieee80211_calc_rx_airtime(struct iee
|
||||
int len);
|
||||
|
||||
/**
|
||||
@ -72,9 +72,9 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
* This function calculates the estimated airtime usage of a frame based on the
|
||||
--- a/include/uapi/linux/nl80211.h
|
||||
+++ b/include/uapi/linux/nl80211.h
|
||||
@@ -1336,6 +1336,10 @@
|
||||
* control EPCS configuration. Used to notify userland on the current state
|
||||
* of EPCS.
|
||||
@@ -1361,6 +1361,10 @@
|
||||
* user space that the NAN new cluster has been joined. The cluster ID is
|
||||
* indicated by %NL80211_ATTR_MAC.
|
||||
*
|
||||
+ * @NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS: Updated MU-EDCA parameters from driver.
|
||||
+ * This event is used to update dynamic MU-EDCA parameters in Beacon frame,
|
||||
@ -83,26 +83,26 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -1596,6 +1600,7 @@ enum nl80211_commands {
|
||||
NL80211_CMD_ASSOC_MLO_RECONF,
|
||||
NL80211_CMD_EPCS_CFG,
|
||||
@@ -1624,6 +1628,7 @@ enum nl80211_commands {
|
||||
NL80211_CMD_NAN_NEXT_DW_NOTIFICATION,
|
||||
NL80211_CMD_NAN_CLUSTER_JOINED,
|
||||
|
||||
+ NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS,
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
@@ -2899,6 +2904,8 @@ enum nl80211_commands {
|
||||
* APs Support". Drivers may set additional flags that they support
|
||||
* in the kernel or device.
|
||||
@@ -2973,6 +2978,8 @@ enum nl80211_commands {
|
||||
* primary channel is 2 MHz wide, and the control channel designates
|
||||
* the 1 MHz primary subchannel within that 2 MHz primary.
|
||||
*
|
||||
+ * @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the
|
||||
+ * %NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command.
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -3456,6 +3463,8 @@ enum nl80211_attrs {
|
||||
@@ -3541,6 +3548,8 @@ enum nl80211_attrs {
|
||||
|
||||
NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS,
|
||||
NL80211_ATTR_S1G_PRIMARY_2MHZ,
|
||||
|
||||
+ NL80211_ATTR_HE_MUEDCA_PARAMS,
|
||||
+
|
||||
@ -111,7 +111,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -10864,3 +10864,15 @@ void ieee80211_process_epcs_teardown(str
|
||||
@@ -11048,3 +11048,15 @@ void ieee80211_process_epcs_teardown(str
|
||||
ieee80211_epcs_teardown(sdata);
|
||||
ieee80211_epcs_changed(sdata, false);
|
||||
}
|
||||
@ -129,7 +129,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
+EXPORT_SYMBOL(ieee80211_update_muedca_params);
|
||||
--- a/net/mac80211/trace.h
|
||||
+++ b/net/mac80211/trace.h
|
||||
@@ -3249,6 +3249,26 @@ TRACE_EVENT(stop_queue,
|
||||
@@ -3320,6 +3320,26 @@ TRACE_EVENT(stop_queue,
|
||||
)
|
||||
);
|
||||
|
||||
@ -158,7 +158,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
struct ieee80211_sub_if_data *sdata,
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -846,6 +846,7 @@ static const struct nla_policy nl80211_p
|
||||
@@ -915,6 +915,7 @@ static const struct nla_policy nl80211_p
|
||||
[NL80211_ATTR_HW_TIMESTAMP_ENABLED] = { .type = NLA_FLAG },
|
||||
[NL80211_ATTR_EMA_RNR_ELEMS] = { .type = NLA_NESTED },
|
||||
[NL80211_ATTR_MLO_LINK_DISABLED] = { .type = NLA_FLAG },
|
||||
@ -166,9 +166,9 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
[NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA] = { .type = NLA_FLAG },
|
||||
[NL80211_ATTR_MLO_TTLM_DLINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8),
|
||||
[NL80211_ATTR_MLO_TTLM_ULINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8),
|
||||
@@ -20611,6 +20612,42 @@ void cfg80211_epcs_changed(struct net_de
|
||||
@@ -21888,6 +21889,42 @@ void cfg80211_nan_cluster_joined(struct
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_epcs_changed);
|
||||
EXPORT_SYMBOL(cfg80211_nan_cluster_joined);
|
||||
|
||||
+void cfg80211_update_muedca_params_event(struct wiphy *wiphy,
|
||||
+ struct ieee80211_mu_edca_param_set
|
||||
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
/* misc utils */
|
||||
|
||||
static __le16 ieee80211_duration(struct ieee80211_tx_data *tx,
|
||||
@@ -4287,6 +4290,8 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4297,6 +4300,8 @@ void __ieee80211_subif_start_xmit(struct
|
||||
struct sta_info *sta;
|
||||
struct sk_buff *next;
|
||||
int len = skb->len;
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
|
||||
if (unlikely(!ieee80211_sdata_running(sdata) || skb->len < ETH_HLEN)) {
|
||||
kfree_skb(skb);
|
||||
@@ -4308,6 +4313,19 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4318,6 +4323,19 @@ void __ieee80211_subif_start_xmit(struct
|
||||
if (IS_ERR(sta))
|
||||
sta = NULL;
|
||||
|
||||
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
|
||||
extern const struct cfg80211_ops mac80211_config_ops;
|
||||
|
||||
@@ -1201,6 +1204,9 @@ struct ieee80211_sub_if_data {
|
||||
@@ -1221,6 +1224,9 @@ struct ieee80211_sub_if_data {
|
||||
struct dentry *default_beacon_key;
|
||||
} debugfs;
|
||||
#endif
|
||||
@ -48,8 +48,8 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
+ struct nss_virt_if_handle *nssctx;
|
||||
+#endif
|
||||
|
||||
u32 tx_handlers_drop;
|
||||
/* must be last, dynamically sized area in this! */
|
||||
struct ieee80211_vif vif;
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -27,6 +27,12 @@
|
||||
@ -65,7 +65,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
/**
|
||||
* DOC: Interface list locking
|
||||
*
|
||||
@@ -801,6 +807,13 @@ static int ieee80211_stop(struct net_dev
|
||||
@@ -814,6 +820,13 @@ static int ieee80211_stop(struct net_dev
|
||||
dev_close(vlan->dev);
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
guard(wiphy)(sdata->local->hw.wiphy);
|
||||
|
||||
wiphy_work_cancel(sdata->local->hw.wiphy, &sdata->activate_links_work);
|
||||
@@ -1264,6 +1277,34 @@ void ieee80211_del_virtual_monitor(struc
|
||||
@@ -1277,6 +1290,34 @@ void ieee80211_del_virtual_monitor(struc
|
||||
kfree(sdata);
|
||||
}
|
||||
|
||||
@ -114,7 +114,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
/*
|
||||
* NOTE: Be very careful when changing this function, it must NOT return
|
||||
* an error on interface type changes that have been pre-checked, so most
|
||||
@@ -1498,6 +1539,21 @@ int ieee80211_do_open(struct wireless_de
|
||||
@@ -1501,6 +1542,21 @@ int ieee80211_do_open(struct wireless_de
|
||||
|
||||
ieee80211_recalc_ps(local);
|
||||
|
||||
@ -138,7 +138,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
return 0;
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -2613,6 +2613,60 @@ static bool ieee80211_frame_allowed(stru
|
||||
@@ -2623,6 +2623,60 @@ static bool ieee80211_frame_allowed(stru
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -199,7 +199,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
static void ieee80211_deliver_skb_to_local_stack(struct sk_buff *skb,
|
||||
struct ieee80211_rx_data *rx)
|
||||
{
|
||||
@@ -2652,11 +2706,15 @@ static void ieee80211_deliver_skb_to_loc
|
||||
@@ -2662,11 +2716,15 @@ static void ieee80211_deliver_skb_to_loc
|
||||
!ether_addr_equal(ehdr->h_dest, sdata->vif.addr)))
|
||||
ether_addr_copy(ehdr->h_dest, sdata->vif.addr);
|
||||
|
||||
@ -217,7 +217,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4520,6 +4520,35 @@ static void ieee80211_mlo_multicast_tx(s
|
||||
@@ -4530,6 +4530,35 @@ static void ieee80211_mlo_multicast_tx(s
|
||||
kfree_skb(skb);
|
||||
}
|
||||
|
||||
@ -253,7 +253,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
/**
|
||||
* ieee80211_subif_start_xmit - netif start_xmit function for 802.3 vifs
|
||||
* @skb: packet to be sent
|
||||
@@ -4535,6 +4564,10 @@ netdev_tx_t ieee80211_subif_start_xmit(s
|
||||
@@ -4545,6 +4574,10 @@ netdev_tx_t ieee80211_subif_start_xmit(s
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
const struct ethhdr *eth = (void *)skb->data;
|
||||
|
||||
@ -264,7 +264,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
if (likely(!is_multicast_ether_addr(eth->h_dest)))
|
||||
goto normal;
|
||||
|
||||
@@ -4725,6 +4758,9 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4735,6 +4768,9 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
struct ieee80211_key *key;
|
||||
struct sta_info *sta;
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -5332,6 +5332,17 @@ void ieee80211_sta_pspoll(struct ieee802
|
||||
@@ -5361,6 +5361,17 @@ void ieee80211_sta_pspoll(struct ieee802
|
||||
*/
|
||||
void ieee80211_sta_uapsd_trigger(struct ieee80211_sta *sta, u8 tid);
|
||||
|
||||
@ -41,7 +41,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
* This is enough for the radiotap header.
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2270,7 +2270,13 @@ static int ieee80211_change_station(stru
|
||||
@@ -2473,7 +2473,13 @@ static int ieee80211_change_station(stru
|
||||
|
||||
rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
|
||||
__ieee80211_check_fast_rx_iface(vlansdata);
|
||||
@ -74,7 +74,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
trace_drv_add_interface(local, sdata);
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -695,6 +695,9 @@ static void ieee80211_do_stop(struct iee
|
||||
@@ -708,6 +708,9 @@ static void ieee80211_do_stop(struct iee
|
||||
|
||||
switch (sdata->vif.type) {
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
@ -84,7 +84,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
break;
|
||||
case NL80211_IFTYPE_MONITOR:
|
||||
if (local->virt_monitors == 0)
|
||||
@@ -1011,6 +1014,7 @@ static bool ieee80211_iftype_supports_hd
|
||||
@@ -1024,6 +1027,7 @@ static bool ieee80211_iftype_supports_hd
|
||||
switch (iftype) {
|
||||
/* P2P GO and client are mapped to AP/STATION types */
|
||||
case NL80211_IFTYPE_AP:
|
||||
@ -92,7 +92,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
case NL80211_IFTYPE_STATION:
|
||||
return true;
|
||||
default:
|
||||
@@ -1065,7 +1069,8 @@ static void ieee80211_set_vif_encap_ops(
|
||||
@@ -1078,7 +1082,8 @@ static void ieee80211_set_vif_encap_ops(
|
||||
struct ieee80211_sub_if_data *bss = sdata;
|
||||
bool enabled;
|
||||
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (!sdata->bss)
|
||||
return;
|
||||
|
||||
@@ -1404,7 +1409,6 @@ int ieee80211_do_open(struct wireless_de
|
||||
@@ -1417,7 +1422,6 @@ int ieee80211_do_open(struct wireless_de
|
||||
(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE);
|
||||
switch (sdata->vif.type) {
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
@ -110,7 +110,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (sdata->bss->active) {
|
||||
struct ieee80211_link_data *link;
|
||||
|
||||
@@ -1413,6 +1417,14 @@ int ieee80211_do_open(struct wireless_de
|
||||
@@ -1426,6 +1430,14 @@ int ieee80211_do_open(struct wireless_de
|
||||
}
|
||||
|
||||
netif_carrier_on(dev);
|
||||
@ -127,13 +127,13 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
netif_carrier_off(dev);
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -1690,6 +1690,12 @@ void ieee80211_sta_uapsd_trigger(struct
|
||||
@@ -1700,6 +1700,12 @@ void ieee80211_sta_uapsd_trigger(struct
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_sta_uapsd_trigger);
|
||||
|
||||
+void ieee80211_rx_nss_notify_4addr(struct net_device *dev, u8 *sta_addr)
|
||||
+{
|
||||
+ cfg80211_rx_unexpected_4addr_frame(dev, sta_addr, GFP_ATOMIC);
|
||||
+ cfg80211_rx_unexpected_4addr_frame(dev, sta_addr, 0, GFP_ATOMIC);
|
||||
+}
|
||||
+EXPORT_SYMBOL(ieee80211_rx_nss_notify_4addr);
|
||||
+
|
||||
@ -142,7 +142,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
{
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4314,8 +4314,11 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4324,8 +4324,11 @@ void __ieee80211_subif_start_xmit(struct
|
||||
sta = NULL;
|
||||
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (ap_sdata->vif.offload_flags & IEEE80211_OFFLOAD_ENCAP_ENABLED &&
|
||||
!is_multicast_ether_addr(skb->data)) {
|
||||
if (sta)
|
||||
@@ -4709,7 +4712,8 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4719,7 +4722,8 @@ static void ieee80211_8023_xmit(struct i
|
||||
|
||||
info->hw_queue = sdata->vif.hw_queue[queue];
|
||||
|
||||
@ -178,7 +178,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
conf = rcu_dereference_protected(link->conf->chanctx_conf,
|
||||
lockdep_is_held(&local->hw.wiphy->mtx));
|
||||
if (conf) {
|
||||
@@ -1889,7 +1892,8 @@ int ieee80211_reconfig(struct ieee80211_
|
||||
@@ -1898,7 +1901,8 @@ int ieee80211_reconfig(struct ieee80211_
|
||||
if (sdata->vif.type == NL80211_IFTYPE_MONITOR &&
|
||||
!ieee80211_hw_check(&local->hw, NO_VIRTUAL_MONITOR))
|
||||
continue;
|
||||
@ -188,7 +188,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
ieee80211_sdata_running(sdata)) {
|
||||
res = drv_add_interface(local, sdata);
|
||||
if (WARN_ON(res))
|
||||
@@ -1906,7 +1910,8 @@ int ieee80211_reconfig(struct ieee80211_
|
||||
@@ -1915,7 +1919,8 @@ int ieee80211_reconfig(struct ieee80211_
|
||||
if (sdata->vif.type == NL80211_IFTYPE_MONITOR &&
|
||||
!ieee80211_hw_check(&local->hw, NO_VIRTUAL_MONITOR))
|
||||
continue;
|
||||
@ -200,7 +200,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
}
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -6223,7 +6223,8 @@ static bool ieee80211_assoc_success(stru
|
||||
@@ -6323,7 +6323,8 @@ static bool ieee80211_assoc_success(stru
|
||||
* If we're using 4-addr mode, let the AP know that we're
|
||||
* doing so, so that it can create the STA VLAN on its side
|
||||
*/
|
||||
@ -212,7 +212,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
/*
|
||||
--- a/net/mac80211/driver-ops.h
|
||||
+++ b/net/mac80211/driver-ops.h
|
||||
@@ -619,7 +619,9 @@ static inline void drv_sta_rate_tbl_upda
|
||||
@@ -623,7 +623,9 @@ static inline void drv_sta_rate_tbl_upda
|
||||
struct ieee80211_sub_if_data *sdata,
|
||||
struct ieee80211_sta *sta)
|
||||
{
|
||||
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -2251,6 +2251,8 @@ enum ieee80211_key_flags {
|
||||
@@ -2255,6 +2255,8 @@ enum ieee80211_key_flags {
|
||||
* @tx_pn: PN used for TX keys, may be used by the driver as well if it
|
||||
* needs to do software PN assignment by itself (e.g. due to TSO)
|
||||
* @flags: key flags, see &enum ieee80211_key_flags.
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
* @keyidx: the key index (0-7)
|
||||
* @keylen: key material length
|
||||
* @key: key material. For ALG_TKIP the key is encoded as a 256-bit (32 byte)
|
||||
@@ -2270,6 +2272,7 @@ struct ieee80211_key_conf {
|
||||
@@ -2274,6 +2276,7 @@ struct ieee80211_key_conf {
|
||||
u8 hw_key_idx;
|
||||
s8 keyidx;
|
||||
u16 flags;
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
u8 key[];
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -574,6 +574,7 @@ static int ieee80211_add_key(struct wiph
|
||||
@@ -679,6 +679,7 @@ static int ieee80211_add_key(struct wiph
|
||||
break;
|
||||
case NL80211_IFTYPE_AP:
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
@ -68,7 +68,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
--- a/net/mac80211/driver-ops.h
|
||||
+++ b/net/mac80211/driver-ops.h
|
||||
@@ -474,7 +474,9 @@ static inline int drv_sta_add(struct iee
|
||||
@@ -478,7 +478,9 @@ static inline int drv_sta_add(struct iee
|
||||
might_sleep();
|
||||
lockdep_assert_wiphy(local->hw.wiphy);
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
/*
|
||||
* The driver doesn't know anything about VLAN interfaces.
|
||||
* Hence, don't send GTKs for VLAN interfaces to the driver.
|
||||
@@ -606,6 +607,8 @@ ieee80211_key_alloc(u32 cipher, int idx,
|
||||
@@ -612,6 +613,8 @@ ieee80211_key_alloc(u32 cipher, int idx,
|
||||
*/
|
||||
key->conf.flags = 0;
|
||||
key->flags = 0;
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
key->conf.cipher = cipher;
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4668,16 +4668,25 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4678,16 +4678,25 @@ static void ieee80211_8023_xmit(struct i
|
||||
struct ieee80211_key *key, struct sk_buff *skb)
|
||||
{
|
||||
struct ieee80211_tx_info *info;
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -216,6 +216,7 @@ enum ieee80211_rx_flags {
|
||||
@@ -224,6 +224,7 @@ enum ieee80211_rx_flags {
|
||||
};
|
||||
|
||||
struct ieee80211_rx_data {
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
struct ieee80211_local *local;
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4697,19 +4697,21 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4707,19 +4707,21 @@ static void ieee80211_8023_xmit(struct i
|
||||
|
||||
ieee80211_aggr_check(sdata, sta, skb);
|
||||
|
||||
@ -64,7 +64,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
}
|
||||
|
||||
skb = ieee80211_tx_skb_fixup(skb, ieee80211_sdata_netdev_features(sdata));
|
||||
@@ -4768,7 +4770,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4778,7 +4780,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
struct ethhdr *ehdr = (struct ethhdr *)skb->data;
|
||||
@ -73,7 +73,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
struct sta_info *sta;
|
||||
|
||||
#ifdef CPTCFG_MAC80211_NSS_SUPPORT
|
||||
@@ -4786,9 +4788,13 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4796,9 +4798,13 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
goto skip_offload;
|
||||
|
||||
key = rcu_dereference(sta->ptk[sta->ptk_idx]);
|
||||
@@ -4799,6 +4805,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4809,6 +4815,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
goto skip_offload;
|
||||
|
||||
sk_pacing_shift_update(skb->sk, sdata->local->hw.tx_sk_pacing_shift);
|
||||
@ -98,7 +98,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
ieee80211_8023_xmit(sdata, dev, sta, key, skb);
|
||||
goto out;
|
||||
|
||||
@@ -6336,13 +6343,7 @@ int ieee80211_tx_control_port(struct wip
|
||||
@@ -6509,13 +6516,7 @@ int ieee80211_tx_control_port(struct wip
|
||||
|
||||
start_xmit:
|
||||
local_bh_disable();
|
||||
|
||||
@ -66,7 +66,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -866,6 +875,11 @@ struct ieee80211_bss_conf {
|
||||
@@ -868,6 +877,11 @@ struct ieee80211_bss_conf {
|
||||
bool he_full_ul_mumimo;
|
||||
bool eht_su_beamformer;
|
||||
bool eht_su_beamformee;
|
||||
@ -78,7 +78,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
bool eht_mu_beamformer;
|
||||
bool eht_80mhz_full_bw_ul_mumimo;
|
||||
bool eht_disable_mcs15;
|
||||
@@ -1365,6 +1379,8 @@ struct ieee80211_rate_status {
|
||||
@@ -1369,6 +1383,8 @@ struct ieee80211_rate_status {
|
||||
* @ack_hwtstamp: Hardware timestamp of the received ack in nanoseconds
|
||||
* Only needed for Timing measurement and Fine timing measurement action
|
||||
* frames. Only reported by devices that have timestamping enabled.
|
||||
@ -87,7 +87,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
*/
|
||||
struct ieee80211_tx_status {
|
||||
struct ieee80211_sta *sta;
|
||||
@@ -1375,6 +1391,8 @@ struct ieee80211_tx_status {
|
||||
@@ -1379,6 +1395,8 @@ struct ieee80211_tx_status {
|
||||
u8 n_rates;
|
||||
|
||||
struct list_head *free_list;
|
||||
@ -96,7 +96,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1879,6 +1897,7 @@ struct ieee80211_channel_switch {
|
||||
@@ -1883,6 +1901,7 @@ struct ieee80211_channel_switch {
|
||||
* operation on this interface and request a channel context without
|
||||
* the AP definition. Use this e.g. because the device is able to
|
||||
* handle OFDMA (downlink and trigger for uplink) on a per-AP basis.
|
||||
@ -104,7 +104,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
* @IEEE80211_VIF_REMOVE_AP_AFTER_DISASSOC: indicates that the AP sta should
|
||||
* be removed only after setting the vif as unassociated, and not the
|
||||
* opposite. Only relevant for STA vifs.
|
||||
@@ -1891,6 +1910,7 @@ enum ieee80211_vif_flags {
|
||||
@@ -1895,6 +1914,7 @@ enum ieee80211_vif_flags {
|
||||
IEEE80211_VIF_EML_ACTIVE = BIT(4),
|
||||
IEEE80211_VIF_IGNORE_OFDMA_WIDER_BW = BIT(5),
|
||||
IEEE80211_VIF_REMOVE_AP_AFTER_DISASSOC = BIT(6),
|
||||
@ -112,7 +112,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
};
|
||||
|
||||
|
||||
@@ -2956,6 +2976,7 @@ enum ieee80211_hw_flags {
|
||||
@@ -2959,6 +2979,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_HANDLES_QUIET_CSA,
|
||||
IEEE80211_HW_STRICT,
|
||||
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
|
||||
@ -120,7 +120,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
|
||||
/* keep last, obviously */
|
||||
NUM_IEEE80211_HW_FLAGS
|
||||
@@ -4477,6 +4498,8 @@ struct ieee80211_prep_tx_info {
|
||||
@@ -4495,6 +4516,8 @@ struct ieee80211_prep_tx_info {
|
||||
* @set_sar_specs: Update the SAR (TX power) settings.
|
||||
* @sta_set_decap_offload: Called to notify the driver when a station is allowed
|
||||
* to use rx decapsulation offload
|
||||
@ -129,7 +129,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
* @add_twt_setup: Update hw with TWT agreement parameters received from the peer.
|
||||
* This callback allows the hw to check if requested parameters
|
||||
* are supported and if there is enough room for a new agreement.
|
||||
@@ -4878,6 +4901,12 @@ struct ieee80211_ops {
|
||||
@@ -4907,6 +4930,12 @@ struct ieee80211_ops {
|
||||
void (*sta_set_decap_offload)(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta, bool enabled);
|
||||
@ -142,7 +142,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
void (*add_twt_setup)(struct ieee80211_hw *hw,
|
||||
struct ieee80211_sta *sta,
|
||||
struct ieee80211_twt_setup *twt);
|
||||
@@ -7883,4 +7912,100 @@ int ieee80211_emulate_switch_vif_chanctx
|
||||
@@ -7902,6 +7931,102 @@ int ieee80211_emulate_switch_vif_chanctx
|
||||
int n_vifs,
|
||||
enum ieee80211_chanctx_switch_mode mode);
|
||||
|
||||
@ -242,10 +242,12 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#endif /* MAC80211_H */
|
||||
/**
|
||||
* ieee80211_vif_nan_started - Return whether a NAN vif is started
|
||||
* @vif: the vif
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2600,6 +2600,7 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2803,6 +2803,7 @@ static int ieee80211_update_mesh_config(
|
||||
struct mesh_config *conf;
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
struct ieee80211_if_mesh *ifmsh;
|
||||
@ -253,7 +255,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
|
||||
sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
ifmsh = &sdata->u.mesh;
|
||||
@@ -2616,8 +2617,11 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2819,8 +2820,11 @@ static int ieee80211_update_mesh_config(
|
||||
conf->dot11MeshMaxPeerLinks = nconf->dot11MeshMaxPeerLinks;
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_MAX_RETRIES, mask))
|
||||
conf->dot11MeshMaxRetries = nconf->dot11MeshMaxRetries;
|
||||
@ -266,7 +268,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_ELEMENT_TTL, mask))
|
||||
conf->element_ttl = nconf->element_ttl;
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_AUTO_OPEN_PLINKS, mask)) {
|
||||
@@ -2631,8 +2635,12 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2834,8 +2838,12 @@ static int ieee80211_update_mesh_config(
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES, mask))
|
||||
conf->dot11MeshHWMPmaxPREQretries =
|
||||
nconf->dot11MeshHWMPmaxPREQretries;
|
||||
@ -280,7 +282,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT, mask))
|
||||
conf->min_discovery_timeout = nconf->min_discovery_timeout;
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT, mask))
|
||||
@@ -2667,8 +2675,12 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2870,8 +2878,12 @@ static int ieee80211_update_mesh_config(
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_RANN_INTERVAL, mask))
|
||||
conf->dot11MeshHWMPRannInterval =
|
||||
nconf->dot11MeshHWMPRannInterval;
|
||||
@ -294,7 +296,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_RSSI_THRESHOLD, mask)) {
|
||||
/* our RSSI threshold implementation is supported only for
|
||||
* devices that report signal in dBm.
|
||||
@@ -2710,6 +2722,7 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2913,6 +2925,7 @@ static int ieee80211_update_mesh_config(
|
||||
conf->dot11MeshConnectedToAuthServer =
|
||||
nconf->dot11MeshConnectedToAuthServer;
|
||||
ieee80211_mbss_info_change_notify(sdata, BSS_CHANGED_BEACON);
|
||||
@ -330,7 +332,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
sdata, fmt, ##__VA_ARGS__)
|
||||
--- a/net/mac80211/debugfs.c
|
||||
+++ b/net/mac80211/debugfs.c
|
||||
@@ -511,6 +511,7 @@ static const char *hw_flag_names[] = {
|
||||
@@ -508,6 +508,7 @@ static const char *hw_flag_names[] = {
|
||||
FLAG(HANDLES_QUIET_CSA),
|
||||
FLAG(STRICT),
|
||||
FLAG(SUPPORTS_NSS_OFFLOAD),
|
||||
@ -340,7 +342,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/driver-ops.c
|
||||
+++ b/net/mac80211/driver-ops.c
|
||||
@@ -629,3 +629,23 @@ int drv_change_sta_links(struct ieee8021
|
||||
@@ -632,3 +632,23 @@ int drv_change_sta_links(struct ieee8021
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1160,7 +1162,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
void mesh_pathtbl_unregister(struct ieee80211_sub_if_data *sdata)
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -2620,7 +2620,7 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2628,7 +2628,7 @@ static struct sk_buff *ieee80211_build_h
|
||||
bool multicast;
|
||||
u16 info_id = 0;
|
||||
struct ieee80211_chanctx_conf *chanctx_conf = NULL;
|
||||
@ -1169,7 +1171,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
int ret;
|
||||
u8 link_id = u32_get_bits(ctrl_flags, IEEE80211_TX_CTRL_MLO_LINK);
|
||||
|
||||
@@ -2632,6 +2632,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2640,6 +2640,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
info_flags |= IEEE80211_TX_CTL_REQ_TX_STATUS;
|
||||
#endif
|
||||
|
||||
@ -1179,7 +1181,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
/* convert Ethernet header to proper 802.11 header (based on
|
||||
* operation mode) */
|
||||
ethertype = (skb->data[12] << 8) | skb->data[13];
|
||||
@@ -2702,6 +2705,13 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2710,6 +2713,13 @@ static struct sk_buff *ieee80211_build_h
|
||||
break;
|
||||
#ifdef CPTCFG_MAC80211_MESH
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
@ -1193,7 +1195,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
if (!is_multicast_ether_addr(skb->data)) {
|
||||
struct sta_info *next_hop;
|
||||
bool mpp_lookup = true;
|
||||
@@ -2964,6 +2974,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2972,6 +2982,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
|
||||
skb_reset_mac_header(skb);
|
||||
|
||||
@ -1203,7 +1205,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
memset(info, 0, sizeof(*info));
|
||||
|
||||
@@ -4291,6 +4304,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4301,6 +4314,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
struct sk_buff *next;
|
||||
int len = skb->len;
|
||||
struct ieee80211_key *key = NULL;
|
||||
@ -1211,7 +1213,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
struct ieee80211_sub_if_data *ap_sdata;
|
||||
|
||||
if (unlikely(!ieee80211_sdata_running(sdata) || skb->len < ETH_HLEN)) {
|
||||
@@ -4365,9 +4379,15 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4375,9 +4389,15 @@ void __ieee80211_subif_start_xmit(struct
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1232,7 +1234,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
out_free:
|
||||
--- a/net/mac80211/driver-ops.h
|
||||
+++ b/net/mac80211/driver-ops.h
|
||||
@@ -1766,4 +1766,11 @@ drv_prep_add_interface(struct ieee80211_
|
||||
@@ -1793,4 +1793,11 @@ drv_prep_add_interface(struct ieee80211_
|
||||
trace_drv_return_void(local);
|
||||
}
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -2914,6 +2914,8 @@ struct ieee80211_txq {
|
||||
@@ -2918,6 +2918,8 @@ struct ieee80211_txq {
|
||||
*
|
||||
* @IEEE80211_HW_SUPPORTS_NSS_OFFLOAD: Hardware/driver supports NSS offload
|
||||
*
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
|
||||
*/
|
||||
enum ieee80211_hw_flags {
|
||||
@@ -2977,6 +2979,7 @@ enum ieee80211_hw_flags {
|
||||
@@ -2980,6 +2982,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_STRICT,
|
||||
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
|
||||
IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,
|
||||
@ -35,7 +35,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
NUM_IEEE80211_HW_FLAGS
|
||||
--- a/net/mac80211/debugfs.c
|
||||
+++ b/net/mac80211/debugfs.c
|
||||
@@ -512,6 +512,7 @@ static const char *hw_flag_names[] = {
|
||||
@@ -509,6 +509,7 @@ static const char *hw_flag_names[] = {
|
||||
FLAG(STRICT),
|
||||
FLAG(SUPPORTS_NSS_OFFLOAD),
|
||||
FLAG(SUPPORTS_MESH_NSS_OFFLOAD),
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4785,6 +4785,67 @@ out_free:
|
||||
@@ -4795,6 +4795,67 @@ out_free:
|
||||
kfree_skb(skb);
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
|
||||
netdev_tx_t ieee80211_subif_start_xmit_8023(struct sk_buff *skb,
|
||||
struct net_device *dev)
|
||||
{
|
||||
@@ -4824,6 +4885,11 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4834,6 +4895,11 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
if (key && (!(key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)))
|
||||
goto skip_offload;
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1806,6 +1806,8 @@ static void sta_apply_mesh_params(struct
|
||||
@@ -1998,6 +1998,8 @@ static void sta_apply_mesh_params(struct
|
||||
/* init at low value */
|
||||
ewma_mesh_tx_rate_avg_add(&sta->mesh->tx_rate_avg, 10);
|
||||
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
|
||||
break;
|
||||
case NL80211_PLINK_LISTEN:
|
||||
case NL80211_PLINK_BLOCKED:
|
||||
@@ -1820,6 +1822,7 @@ static void sta_apply_mesh_params(struct
|
||||
@@ -2012,6 +2014,7 @@ static void sta_apply_mesh_params(struct
|
||||
ieee80211_mps_sta_status_update(sta);
|
||||
changed |= ieee80211_mps_set_sta_local_pm(sta,
|
||||
NL80211_MESH_POWER_UNKNOWN);
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
|
||||
if (action) {
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -4675,10 +4675,15 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4670,10 +4670,15 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
|
||||
break;
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
@ -112,7 +112,7 @@ Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
|
||||
break;
|
||||
default:
|
||||
goto clear;
|
||||
@@ -4719,7 +4724,7 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4714,7 +4719,7 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
__release(check_fast_rx);
|
||||
|
||||
if (assign)
|
||||
@ -121,7 +121,7 @@ Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
|
||||
|
||||
offload_flags = get_bss_sdata(sdata)->vif.offload_flags;
|
||||
offload = offload_flags & IEEE80211_OFFLOAD_DECAP_ENABLED;
|
||||
@@ -4901,6 +4906,10 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4896,6 +4901,10 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
u8 sa[ETH_ALEN];
|
||||
} addrs __aligned(2);
|
||||
struct ieee80211_sta_rx_stats *stats;
|
||||
@ -132,7 +132,7 @@ Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
|
||||
|
||||
/* for parallel-rx, we need to have DUP_VALIDATED, otherwise we write
|
||||
* to a common data structure; drivers can implement that per queue
|
||||
@@ -4950,6 +4959,37 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4945,6 +4954,37 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
snap_offs += IEEE80211_CCMP_HDR_LEN;
|
||||
}
|
||||
|
||||
@ -170,7 +170,7 @@ Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
|
||||
if (!ieee80211_vif_is_mesh(&rx->sdata->vif) &&
|
||||
!(status->rx_flags & IEEE80211_RX_AMSDU)) {
|
||||
if (!pskb_may_pull(skb, snap_offs + sizeof(*payload)))
|
||||
@@ -4987,9 +5027,33 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4982,9 +5022,33 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4717,7 +4717,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4727,7 +4727,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
|
||||
ieee80211_aggr_check(sdata, sta, skb);
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK;
|
||||
tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]);
|
||||
if (tid_tx) {
|
||||
@@ -4770,7 +4770,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4780,7 +4780,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
}
|
||||
|
||||
dev_sw_netstats_tx_add(dev, skbs, len);
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Sean Khan <datapronix@protonmail.com>
|
||||
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -4935,13 +4935,10 @@ static int nl80211_new_key(struct sk_buf
|
||||
@@ -5147,13 +5147,10 @@ static int nl80211_new_key(struct sk_buf
|
||||
err = nl80211_validate_key_link_id(info, wdev, link_id,
|
||||
key.type == NL80211_KEYTYPE_PAIRWISE);
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -1049,7 +1049,8 @@ static bool ieee80211_set_sdata_offload_
|
||||
@@ -1062,7 +1062,8 @@ static bool ieee80211_set_sdata_offload_
|
||||
flags |= IEEE80211_OFFLOAD_DECAP_ENABLED;
|
||||
|
||||
if (local->virt_monitors &&
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -1561,39 +1561,38 @@ ieee80211_tx_info_clear_status(struct ie
|
||||
@@ -1565,39 +1565,38 @@ ieee80211_tx_info_clear_status(struct ie
|
||||
* hardware or driver)
|
||||
*/
|
||||
enum mac80211_rx_flags {
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -2132,6 +2132,11 @@ netdev_tx_t ieee80211_subif_start_xmit(s
|
||||
@@ -2167,6 +2167,11 @@ netdev_tx_t ieee80211_subif_start_xmit(s
|
||||
struct net_device *dev);
|
||||
netdev_tx_t ieee80211_subif_start_xmit_8023(struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
@ -44,7 +44,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
/* misc utils */
|
||||
|
||||
static __le16 ieee80211_duration(struct ieee80211_tx_data *tx,
|
||||
@@ -4337,7 +4338,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4347,7 +4348,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
!is_multicast_ether_addr(skb->data)) {
|
||||
if (sta)
|
||||
key = rcu_dereference(sta->ptk[sta->ptk_idx]);
|
||||
@ -53,7 +53,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
rcu_read_unlock();
|
||||
return;
|
||||
}
|
||||
@@ -4383,7 +4384,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4393,7 +4394,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
if (info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP) {
|
||||
if (sta)
|
||||
key = rcu_dereference(sta->ptk[sta->ptk_idx]);
|
||||
@ -62,7 +62,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
} else {
|
||||
dev_sw_netstats_tx_add(dev, 1, skb->len);
|
||||
ieee80211_xmit(sdata, sta, skb);
|
||||
@@ -4685,7 +4686,8 @@ static bool ieee80211_tx_8023(struct iee
|
||||
@@ -4695,7 +4696,8 @@ static bool ieee80211_tx_8023(struct iee
|
||||
|
||||
static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
||||
struct net_device *dev, struct sta_info *sta,
|
||||
@ -72,7 +72,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
{
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ethhdr *ehdr = (struct ethhdr *)skb->data;
|
||||
@@ -4741,6 +4743,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4751,6 +4753,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
memset(info, 0, sizeof(*info));
|
||||
|
||||
@ -80,7 +80,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
info->hw_queue = sdata->vif.hw_queue[queue];
|
||||
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
|
||||
@@ -4761,10 +4764,11 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4771,10 +4774,11 @@ static void ieee80211_8023_xmit(struct i
|
||||
memcpy(IEEE80211_SKB_CB(seg), info, sizeof(*info));
|
||||
}
|
||||
|
||||
@ -95,7 +95,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
if (info->status_data)
|
||||
info->status_data_idr = 1;
|
||||
}
|
||||
@@ -4787,7 +4791,8 @@ out_free:
|
||||
@@ -4797,7 +4801,8 @@ out_free:
|
||||
|
||||
void ieee80211_8023_xmit_ap(struct ieee80211_sub_if_data *sdata,
|
||||
struct net_device *dev, struct sta_info *sta,
|
||||
@ -105,7 +105,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
{
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
@@ -4796,6 +4801,9 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
@@ -4806,6 +4811,9 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
unsigned long flags;
|
||||
int q;
|
||||
u16 q_map;
|
||||
@ -115,7 +115,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
/*
|
||||
* If the skb is shared we need to obtain our own copy.
|
||||
@@ -4807,11 +4815,12 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
@@ -4817,11 +4825,12 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
memset(info, 0, sizeof(*info));
|
||||
@ -131,7 +131,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
info->flags |= IEEE80211_TX_CTL_HW_80211_ENCAP;
|
||||
info->control.vif = &sdata->vif;
|
||||
@@ -4845,14 +4854,23 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
@@ -4855,14 +4864,23 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
drv_tx(local, &control, skb);
|
||||
|
||||
}
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
#ifdef CPTCFG_MAC80211_NSS_SUPPORT
|
||||
ieee80211_xmit_nss_fixup(skb, dev);
|
||||
@@ -4868,14 +4886,15 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4878,14 +4896,15 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
kfree_skb(skb);
|
||||
goto out;
|
||||
}
|
||||
@ -174,7 +174,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
goto skip_offload;
|
||||
|
||||
key = rcu_dereference(sta->ptk[sta->ptk_idx]);
|
||||
@@ -4886,13 +4905,13 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4896,13 +4915,13 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
goto skip_offload;
|
||||
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP) {
|
||||
@ -190,7 +190,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
goto out;
|
||||
|
||||
skip_offload:
|
||||
@@ -6429,7 +6448,10 @@ int ieee80211_tx_control_port(struct wip
|
||||
@@ -6602,7 +6621,10 @@ int ieee80211_tx_control_port(struct wip
|
||||
|
||||
start_xmit:
|
||||
local_bh_disable();
|
||||
|
||||
@ -72,7 +72,7 @@ Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2427,7 +2427,7 @@ static void mpath_set_pinfo(struct mesh_
|
||||
@@ -2630,7 +2630,7 @@ static void mpath_set_pinfo(struct mesh_
|
||||
if (mpath->flags & MESH_PATH_RESOLVED)
|
||||
pinfo->flags |= NL80211_MPATH_FLAG_RESOLVED;
|
||||
pinfo->hop_count = mpath->hop_count;
|
||||
|
||||
@ -16,22 +16,22 @@ Signed-off-by: Maharaja Kennadyrajan <quic_mkenna@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -2436,7 +2436,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
@@ -2485,7 +2485,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
}
|
||||
|
||||
static struct ieee80211_sta_rx_stats *
|
||||
-sta_get_last_rx_stats(struct sta_info *sta)
|
||||
+sta_get_last_rx_stats(struct sta_info *sta, bool is_rx_bitrate)
|
||||
-sta_get_last_rx_stats(struct sta_info *sta, int link_id)
|
||||
+sta_get_last_rx_stats(struct sta_info *sta, int link_id, bool is_rx_bitrate)
|
||||
{
|
||||
struct ieee80211_sta_rx_stats *stats = &sta->deflink.rx_stats;
|
||||
int cpu;
|
||||
@@ -2449,8 +2449,13 @@ sta_get_last_rx_stats(struct sta_info *s
|
||||
struct ieee80211_sta_rx_stats *stats;
|
||||
struct link_sta_info *link_sta_info;
|
||||
@@ -2507,8 +2507,13 @@ sta_get_last_rx_stats(struct sta_info *s
|
||||
|
||||
for_each_possible_cpu(cpu) {
|
||||
struct ieee80211_sta_rx_stats *cpustats;
|
||||
+ u16 rate;
|
||||
|
||||
cpustats = per_cpu_ptr(sta->deflink.pcpu_rx_stats, cpu);
|
||||
cpustats = per_cpu_ptr(link_sta_info->pcpu_rx_stats, cpu);
|
||||
+ rate = READ_ONCE(cpustats->last_rate);
|
||||
+
|
||||
+ if(!cpustats->last_rx || (is_rx_bitrate && (rate == STA_STATS_RATE_INVALID)))
|
||||
@ -39,30 +39,39 @@ Signed-off-by: Maharaja Kennadyrajan <quic_mkenna@quicinc.com>
|
||||
|
||||
if (time_after(cpustats->last_rx, stats->last_rx))
|
||||
stats = cpustats;
|
||||
@@ -2527,7 +2532,7 @@ static void sta_stats_decode_rate(struct
|
||||
|
||||
static int sta_set_rate_info_rx(struct sta_info *sta, struct rate_info *rinfo)
|
||||
@@ -2586,7 +2591,7 @@ static void sta_stats_decode_rate(struct
|
||||
static int sta_set_rate_info_rx(struct sta_info *sta, struct rate_info *rinfo,
|
||||
int link_id)
|
||||
{
|
||||
- u32 rate = READ_ONCE(sta_get_last_rx_stats(sta)->last_rate);
|
||||
+ u32 rate = READ_ONCE(sta_get_last_rx_stats(sta, true)->last_rate);
|
||||
- u32 rate = READ_ONCE(sta_get_last_rx_stats(sta, link_id)->last_rate);
|
||||
+ u32 rate = READ_ONCE(sta_get_last_rx_stats(sta, link_id, true)->last_rate);
|
||||
|
||||
if (rate == STA_STATS_RATE_INVALID)
|
||||
return -EINVAL;
|
||||
@@ -2683,7 +2688,7 @@ void sta_set_sinfo(struct sta_info *sta,
|
||||
@@ -2755,7 +2760,7 @@ static void sta_set_link_sinfo(struct st
|
||||
struct link_sta_info *link_sta_info;
|
||||
u32 thr = 0;
|
||||
|
||||
- last_rxstats = sta_get_last_rx_stats(sta, link_id);
|
||||
+ last_rxstats = sta_get_last_rx_stats(sta, link_id, false);
|
||||
|
||||
link_sta_info = wiphy_dereference(sta->local->hw.wiphy,
|
||||
sta->link[link_id]);
|
||||
@@ -3012,7 +3017,7 @@ void sta_set_sinfo(struct sta_info *sta,
|
||||
int i, ac, cpu;
|
||||
struct ieee80211_sta_rx_stats *last_rxstats;
|
||||
|
||||
- last_rxstats = sta_get_last_rx_stats(sta);
|
||||
+ last_rxstats = sta_get_last_rx_stats(sta, false);
|
||||
- last_rxstats = sta_get_last_rx_stats(sta, -1);
|
||||
+ last_rxstats = sta_get_last_rx_stats(sta, -1, false);
|
||||
|
||||
sinfo->generation = sdata->local->sta_generation;
|
||||
|
||||
@@ -2942,7 +2947,7 @@ u32 sta_get_expected_throughput(struct s
|
||||
@@ -3300,7 +3305,7 @@ unsigned long ieee80211_sta_last_active(
|
||||
struct ieee80211_sta_rx_stats *stats;
|
||||
struct link_sta_info *link_sta_info;
|
||||
|
||||
unsigned long ieee80211_sta_last_active(struct sta_info *sta)
|
||||
{
|
||||
- struct ieee80211_sta_rx_stats *stats = sta_get_last_rx_stats(sta);
|
||||
+ struct ieee80211_sta_rx_stats *stats = sta_get_last_rx_stats(sta, false);
|
||||
- stats = sta_get_last_rx_stats(sta, link_id);
|
||||
+ stats = sta_get_last_rx_stats(sta, link_id, false);
|
||||
|
||||
if (!sta->deflink.status_stats.last_ack ||
|
||||
time_after(stats->last_rx, sta->deflink.status_stats.last_ack))
|
||||
if (link_id < 0)
|
||||
link_sta_info = &sta->deflink;
|
||||
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
||||
struct net_device *dev, struct sta_info *sta,
|
||||
struct ieee80211_key *key, struct sk_buff *skb,
|
||||
@@ -3647,7 +3649,7 @@ ieee80211_sdata_netdev_features(struct i
|
||||
@@ -3655,7 +3657,7 @@ ieee80211_sdata_netdev_features(struct i
|
||||
}
|
||||
|
||||
static struct sk_buff *
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
{
|
||||
if (skb_is_gso(skb)) {
|
||||
struct sk_buff *segs;
|
||||
@@ -3665,7 +3667,7 @@ ieee80211_tx_skb_fixup(struct sk_buff *s
|
||||
@@ -3673,7 +3675,7 @@ ieee80211_tx_skb_fixup(struct sk_buff *s
|
||||
if (skb_needs_linearize(skb, features) && __skb_linearize(skb))
|
||||
goto free;
|
||||
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
int ofs = skb_checksum_start_offset(skb);
|
||||
|
||||
if (skb->encapsulation)
|
||||
@@ -3811,7 +3813,7 @@ static bool ieee80211_xmit_fast(struct i
|
||||
@@ -3821,7 +3823,7 @@ static bool ieee80211_xmit_fast(struct i
|
||||
memcpy(ð, skb->data, ETH_HLEN - 2);
|
||||
|
||||
/* after this point (skb is modified) we cannot return false */
|
||||
@ -58,7 +58,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
if (!skb)
|
||||
return true;
|
||||
|
||||
@@ -4361,7 +4363,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4371,7 +4373,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
* things so we cannot really handle checksum or GSO offload.
|
||||
* fix it up in software before we handle anything else.
|
||||
*/
|
||||
@ -67,7 +67,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
if (!skb) {
|
||||
len = 0;
|
||||
goto out;
|
||||
@@ -4736,7 +4738,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4746,7 +4748,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -2321,6 +2321,11 @@ int ieee80211_if_add(struct ieee80211_lo
|
||||
@@ -2353,6 +2353,11 @@ int ieee80211_if_add(struct ieee80211_lo
|
||||
|
||||
ndev->features |= local->hw.netdev_features;
|
||||
ndev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
|
||||
@ -101,7 +101,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
static int mesh_allocated;
|
||||
static struct kmem_cache *rm_cache;
|
||||
|
||||
@@ -780,7 +782,7 @@ bool ieee80211_mesh_xmit_fast(struct iee
|
||||
@@ -783,7 +785,7 @@ bool ieee80211_mesh_xmit_fast(struct iee
|
||||
if (sk_requests_wifi_status(skb->sk))
|
||||
return false;
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -2915,6 +2915,9 @@ struct ieee80211_txq {
|
||||
@@ -2919,6 +2919,9 @@ struct ieee80211_txq {
|
||||
*
|
||||
* @IEEE80211_HW_SUPPORTS_TID_CLASS_OFFLOAD: Hardware suports tid calssification offload.
|
||||
*
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
|
||||
*/
|
||||
enum ieee80211_hw_flags {
|
||||
@@ -2979,6 +2982,7 @@ enum ieee80211_hw_flags {
|
||||
@@ -2982,6 +2985,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
|
||||
IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,
|
||||
IEEE80211_HW_SUPPORTS_TID_CLASS_OFFLOAD,
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
NUM_IEEE80211_HW_FLAGS
|
||||
--- a/net/mac80211/debugfs.c
|
||||
+++ b/net/mac80211/debugfs.c
|
||||
@@ -513,6 +513,7 @@ static const char *hw_flag_names[] = {
|
||||
@@ -510,6 +510,7 @@ static const char *hw_flag_names[] = {
|
||||
FLAG(SUPPORTS_NSS_OFFLOAD),
|
||||
FLAG(SUPPORTS_MESH_NSS_OFFLOAD),
|
||||
FLAG(SUPPORTS_TID_CLASS_OFFLOAD),
|
||||
@ -53,7 +53,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1592,6 +1592,9 @@ int ieee80211_txq_setup_flows(struct iee
|
||||
@@ -1599,6 +1599,9 @@ int ieee80211_txq_setup_flows(struct iee
|
||||
bool supp_vht = false;
|
||||
enum nl80211_band band;
|
||||
|
||||
@ -63,7 +63,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
ret = fq_init(fq, 4096);
|
||||
if (ret)
|
||||
return ret;
|
||||
@@ -1639,6 +1642,9 @@ void ieee80211_txq_teardown_flows(struct
|
||||
@@ -1646,6 +1649,9 @@ void ieee80211_txq_teardown_flows(struct
|
||||
{
|
||||
struct fq *fq = &local->fq;
|
||||
|
||||
@ -73,7 +73,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
kvfree(local->cvars);
|
||||
local->cvars = NULL;
|
||||
|
||||
@@ -1655,7 +1661,8 @@ static bool ieee80211_queue_skb(struct i
|
||||
@@ -1662,7 +1668,8 @@ static bool ieee80211_queue_skb(struct i
|
||||
struct ieee80211_vif *vif;
|
||||
struct txq_info *txqi;
|
||||
|
||||
@ -83,7 +83,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
return false;
|
||||
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
|
||||
@@ -4346,7 +4353,8 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4356,7 +4363,8 @@ void __ieee80211_subif_start_xmit(struct
|
||||
}
|
||||
}
|
||||
|
||||
@ -93,7 +93,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
ieee80211_aggr_check(sdata, sta, skb);
|
||||
|
||||
if (sta) {
|
||||
@@ -4702,8 +4710,10 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4712,8 +4720,10 @@ static void ieee80211_8023_xmit(struct i
|
||||
bool multicast;
|
||||
u8 tid;
|
||||
|
||||
@ -106,7 +106,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
|
||||
multicast = is_multicast_ether_addr(ra);
|
||||
|
||||
@@ -6435,9 +6445,12 @@ int ieee80211_tx_control_port(struct wip
|
||||
@@ -6608,9 +6618,12 @@ int ieee80211_tx_control_port(struct wip
|
||||
}
|
||||
|
||||
if (!IS_ERR(sta)) {
|
||||
@ -123,7 +123,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
* for MLO STA, the SA should be the AP MLD address, but
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -4726,6 +4726,9 @@ static int ieee80211_get_txq_stats(struc
|
||||
@@ -5000,6 +5000,9 @@ static int ieee80211_get_txq_stats(struc
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
int ret = 0;
|
||||
|
||||
@ -131,11 +131,11 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
+ return 1;
|
||||
+
|
||||
spin_lock_bh(&local->fq.lock);
|
||||
rcu_read_lock();
|
||||
|
||||
if (wdev) {
|
||||
--- a/net/mac80211/main.c
|
||||
+++ b/net/mac80211/main.c
|
||||
@@ -1008,7 +1008,10 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
@@ -1033,7 +1033,10 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
atomic_set(&local->agg_queue_stop[i], 0);
|
||||
}
|
||||
tasklet_setup(&local->tx_pending_tasklet, ieee80211_tx_pending);
|
||||
@ -149,7 +149,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
skb_queue_head_init(&local->skb_queue);
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -1588,6 +1588,9 @@ static void sta_ps_start(struct sta_info
|
||||
@@ -1598,6 +1598,9 @@ static void sta_ps_start(struct sta_info
|
||||
|
||||
ieee80211_clear_fast_xmit(sta);
|
||||
|
||||
@ -185,7 +185,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -435,7 +437,9 @@ void sta_info_free(struct ieee80211_loca
|
||||
@@ -483,7 +485,9 @@ void sta_info_free(struct ieee80211_loca
|
||||
|
||||
sta_dbg(sta->sdata, "Destroyed STA %pM\n", sta->sta.addr);
|
||||
|
||||
@ -196,7 +196,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
kfree(rcu_dereference_raw(sta->sta.rates));
|
||||
#ifdef CPTCFG_MAC80211_MESH
|
||||
kfree(sta->mesh);
|
||||
@@ -554,8 +558,6 @@ __sta_info_alloc(struct ieee80211_sub_if
|
||||
@@ -602,8 +606,6 @@ __sta_info_alloc(struct ieee80211_sub_if
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct ieee80211_hw *hw = &local->hw;
|
||||
struct sta_info *sta;
|
||||
@ -205,7 +205,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
int i;
|
||||
|
||||
sta = kzalloc(sizeof(*sta) + hw->sta_data_size, gfp);
|
||||
@@ -628,18 +630,22 @@ __sta_info_alloc(struct ieee80211_sub_if
|
||||
@@ -676,18 +678,22 @@ __sta_info_alloc(struct ieee80211_sub_if
|
||||
|
||||
sta->last_connected = ktime_get_seconds();
|
||||
|
||||
@ -237,7 +237,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
}
|
||||
|
||||
if (sta_prepare_rate_control(local, sta, gfp))
|
||||
@@ -707,7 +713,8 @@ __sta_info_alloc(struct ieee80211_sub_if
|
||||
@@ -756,7 +762,8 @@ __sta_info_alloc(struct ieee80211_sub_if
|
||||
return sta;
|
||||
|
||||
free_txq:
|
||||
@ -247,7 +247,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
free:
|
||||
sta_info_free_link(&sta->deflink);
|
||||
#ifdef CPTCFG_MAC80211_MESH
|
||||
@@ -1017,6 +1024,9 @@ static unsigned long ieee80211_tids_for_
|
||||
@@ -1066,6 +1073,9 @@ static unsigned long ieee80211_tids_for_
|
||||
|
||||
static void __sta_info_recalc_tim(struct sta_info *sta, bool ignore_pending)
|
||||
{
|
||||
@ -257,7 +257,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
struct ieee80211_local *local = sta->local;
|
||||
struct ps_data *ps;
|
||||
bool indicate_tim = false;
|
||||
@@ -1744,11 +1754,13 @@ void ieee80211_sta_ps_deliver_wakeup(str
|
||||
@@ -1793,11 +1803,13 @@ void ieee80211_sta_ps_deliver_wakeup(str
|
||||
if (!ieee80211_hw_check(&local->hw, AP_LINK_PS))
|
||||
drv_sta_notify(local, sdata, STA_NOTIFY_AWAKE, &sta->sta);
|
||||
|
||||
@ -275,7 +275,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
}
|
||||
|
||||
skb_queue_head_init(&pending);
|
||||
@@ -2163,6 +2175,9 @@ ieee80211_sta_ps_deliver_response(struct
|
||||
@@ -2212,6 +2224,9 @@ ieee80211_sta_ps_deliver_response(struct
|
||||
* TIM recalculation.
|
||||
*/
|
||||
|
||||
@ -285,18 +285,18 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
for (tid = 0; tid < ARRAY_SIZE(sta->sta.txq); tid++) {
|
||||
if (!sta->sta.txq[tid] ||
|
||||
!(driver_release_tids & BIT(tid)) ||
|
||||
@@ -2597,7 +2612,7 @@ static void sta_set_tidstats(struct sta_
|
||||
tidstats->tx_msdu_failed = sta->deflink.status_stats.msdu_failed[tid];
|
||||
@@ -2666,7 +2681,7 @@ static void sta_set_tidstats(struct sta_
|
||||
link_sta_info->status_stats.msdu_failed[tid];
|
||||
}
|
||||
|
||||
- if (tid < IEEE80211_NUM_TIDS) {
|
||||
+ if (!ieee80211_hw_check(&local->hw, HAS_TX_QUEUE) && tid < IEEE80211_NUM_TIDS) {
|
||||
- if (link_id < 0 && tid < IEEE80211_NUM_TIDS) {
|
||||
+ if (link_id < 0 && !ieee80211_hw_check(&local->hw, HAS_TX_QUEUE) && tid < IEEE80211_NUM_TIDS) {
|
||||
spin_lock_bh(&local->fq.lock);
|
||||
rcu_read_lock();
|
||||
|
||||
tidstats->filled |= BIT(NL80211_TID_STATS_TXQ_STATS);
|
||||
--- a/net/mac80211/debugfs_sta.c
|
||||
+++ b/net/mac80211/debugfs_sta.c
|
||||
@@ -156,6 +156,9 @@ static ssize_t sta_aqm_read(struct file
|
||||
@@ -155,6 +155,9 @@ static ssize_t sta_aqm_read(struct file
|
||||
bufsz + buf - p,
|
||||
"tid ac backlog-bytes backlog-packets new-flows drops marks overlimit collisions tx-bytes tx-packets flags\n");
|
||||
|
||||
@ -306,17 +306,17 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
for (i = 0; i < ARRAY_SIZE(sta->sta.txq); i++) {
|
||||
if (!sta->sta.txq[i])
|
||||
continue;
|
||||
@@ -180,6 +183,7 @@ static ssize_t sta_aqm_read(struct file
|
||||
@@ -179,6 +182,7 @@ static ssize_t sta_aqm_read(struct file
|
||||
test_bit(IEEE80211_TXQ_DIRTY, &txqi->flags) ? " DIRTY" : "");
|
||||
}
|
||||
|
||||
+skip_txq_info:
|
||||
rcu_read_unlock();
|
||||
spin_unlock_bh(&local->fq.lock);
|
||||
|
||||
rv = simple_read_from_buffer(userbuf, count, ppos, buf, p - buf);
|
||||
--- a/net/mac80211/mesh.c
|
||||
+++ b/net/mac80211/mesh.c
|
||||
@@ -815,7 +815,8 @@ bool ieee80211_mesh_xmit_fast(struct iee
|
||||
@@ -818,7 +818,8 @@ bool ieee80211_mesh_xmit_fast(struct iee
|
||||
if (!skb)
|
||||
return true;
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -4678,16 +4678,14 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4673,16 +4673,14 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
|
||||
break;
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
default:
|
||||
goto clear;
|
||||
}
|
||||
@@ -4909,10 +4907,7 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4904,10 +4902,7 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
u8 sa[ETH_ALEN];
|
||||
} addrs __aligned(2);
|
||||
struct ieee80211_sta_rx_stats *stats;
|
||||
@ -41,7 +41,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
/* for parallel-rx, we need to have DUP_VALIDATED, otherwise we write
|
||||
* to a common data structure; drivers can implement that per queue
|
||||
@@ -4962,37 +4957,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4957,37 +4952,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
snap_offs += IEEE80211_CCMP_HDR_LEN;
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
if (!ieee80211_vif_is_mesh(&rx->sdata->vif) &&
|
||||
!(status->rx_flags & IEEE80211_RX_AMSDU)) {
|
||||
if (!pskb_may_pull(skb, snap_offs + sizeof(*payload)))
|
||||
@@ -5030,30 +4994,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -5025,30 +4989,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Balamurugan Ramar <quic_bramar@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -8291,7 +8291,7 @@ void ieee80211_sta_work(struct ieee80211
|
||||
@@ -8428,7 +8428,7 @@ void ieee80211_sta_work(struct ieee80211
|
||||
*/
|
||||
if (status_acked) {
|
||||
ifmgd->assoc_data->timeout =
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -2440,10 +2440,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
@@ -2489,10 +2489,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
atomic_sub(tx_airtime, &local->aql_total_pending_airtime);
|
||||
tx_pending = atomic_sub_return(tx_airtime,
|
||||
&local->aql_ac_pending_airtime[ac]);
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -1417,7 +1417,8 @@ int ieee80211_do_open(struct wireless_de
|
||||
@@ -1430,7 +1430,8 @@ int ieee80211_do_open(struct wireless_de
|
||||
ieee80211_link_vlan_copy_chanctx(link);
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
|
||||
|
||||
if (ieee80211_hw_check(&local->hw, SUPPORTS_NSS_OFFLOAD)) {
|
||||
ieee80211_set_sdata_offload_flags(sdata);
|
||||
@@ -1428,7 +1429,8 @@ int ieee80211_do_open(struct wireless_de
|
||||
@@ -1441,7 +1442,8 @@ int ieee80211_do_open(struct wireless_de
|
||||
|
||||
ieee80211_set_vif_encap_ops(sdata);
|
||||
} else {
|
||||
@ -40,17 +40,17 @@ Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
|
||||
}
|
||||
break;
|
||||
case NL80211_IFTYPE_MONITOR:
|
||||
@@ -1459,7 +1461,8 @@ int ieee80211_do_open(struct wireless_de
|
||||
@@ -1472,7 +1474,8 @@ int ieee80211_do_open(struct wireless_de
|
||||
ieee80211_recalc_offload(local);
|
||||
ieee80211_recalc_idle(local);
|
||||
|
||||
- netif_carrier_on(dev);
|
||||
+ if (dev)
|
||||
+ netif_carrier_on(dev);
|
||||
list_add_tail_rcu(&sdata->u.mntr.list, &local->mon_list);
|
||||
break;
|
||||
default:
|
||||
if (coming_up) {
|
||||
@@ -1503,7 +1506,8 @@ int ieee80211_do_open(struct wireless_de
|
||||
@@ -1517,7 +1520,8 @@ int ieee80211_do_open(struct wireless_de
|
||||
case NL80211_IFTYPE_AP:
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
case NL80211_IFTYPE_OCB:
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -1287,7 +1287,7 @@ void ieee80211_del_virtual_monitor(struc
|
||||
@@ -1300,7 +1300,7 @@ void ieee80211_del_virtual_monitor(struc
|
||||
/* This callback is registered for nss redirect to receive packet exceptioned from nss in Rx path.
|
||||
* When packet does not match any of the ecm rules is redirected back here.
|
||||
*/
|
||||
@ -11,7 +11,7 @@
|
||||
struct sk_buff *skb;
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4555,7 +4555,7 @@ static void ieee80211_mlo_multicast_tx(s
|
||||
@@ -4565,7 +4565,7 @@ static void ieee80211_mlo_multicast_tx(s
|
||||
}
|
||||
|
||||
#ifdef CPTCFG_MAC80211_NSS_SUPPORT
|
||||
@ -20,7 +20,7 @@
|
||||
struct net_device *dev)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
@@ -4801,7 +4801,7 @@ out_free:
|
||||
@@ -4811,7 +4811,7 @@ out_free:
|
||||
kfree_skb(skb);
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
u32 info_flags, u32 ctrl_flags, u64 *cookie)
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2575,8 +2575,8 @@ static int copy_mesh_setup(struct ieee80
|
||||
@@ -2778,8 +2778,8 @@ static int copy_mesh_setup(struct ieee80
|
||||
ifmsh->security |= IEEE80211_MESH_SEC_SECURED;
|
||||
|
||||
/* mcast rate setting in Mesh Node */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user