mirror of
https://github.com/breeze303/openwrt-ipq.git
synced 2025-12-16 20:31:05 +00:00
ath11k_nss: Refresh patches for backports 6.11
Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
parent
1b95ec24a6
commit
7bfaa1c251
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -4186,22 +4186,28 @@ static int ath11k_clear_peer_keys(struct
|
||||
@@ -4275,22 +4275,28 @@ static int ath11k_clear_peer_keys(struct
|
||||
int ret;
|
||||
int i;
|
||||
u32 flags = 0;
|
||||
@ -35,7 +35,7 @@
|
||||
DISABLE_KEY, addr, flags);
|
||||
if (ret < 0 && first_errno == 0)
|
||||
first_errno = ret;
|
||||
@@ -4209,10 +4215,6 @@ static int ath11k_clear_peer_keys(struct
|
||||
@@ -4298,10 +4304,6 @@ static int ath11k_clear_peer_keys(struct
|
||||
if (ret < 0)
|
||||
ath11k_warn(ab, "failed to remove peer key %d: %d\n",
|
||||
i, ret);
|
||||
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
|
||||
/* SMBIOS type containing Board Data File Name Extension */
|
||||
#define ATH11K_SMBIOS_BDF_EXT_TYPE 0xF8
|
||||
@@ -415,6 +417,17 @@ struct ath11k_vif_iter {
|
||||
@@ -418,6 +420,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;
|
||||
@@ -426,10 +439,6 @@ struct ath11k_rx_peer_stats {
|
||||
@@ -429,10 +442,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];
|
||||
@@ -437,6 +446,8 @@ struct ath11k_rx_peer_stats {
|
||||
@@ -440,6 +449,8 @@ struct ath11k_rx_peer_stats {
|
||||
u64 rx_duration;
|
||||
u64 dcm_count;
|
||||
u64 ru_alloc_cnt[HAL_RX_RU_ALLOC_TYPE_MAX];
|
||||
@ -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
|
||||
@@ -2763,10 +2763,43 @@ exit:
|
||||
@@ -2762,10 +2762,43 @@ exit:
|
||||
return total_msdu_reaped;
|
||||
}
|
||||
|
||||
@ -313,7 +313,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
u32 num_msdu;
|
||||
int i;
|
||||
|
||||
@@ -2776,6 +2809,8 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
@@ -2775,6 +2808,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;
|
||||
|
||||
@@ -2792,18 +2827,6 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
@@ -2791,18 +2826,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;
|
||||
|
||||
@@ -2832,8 +2855,6 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
@@ -2831,8 +2854,6 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
rx_stats->dcm_count += ppdu_info->dcm;
|
||||
rx_stats->ru_alloc_cnt[ppdu_info->ru_alloc] += num_msdu;
|
||||
|
||||
@ -350,7 +350,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
BUILD_BUG_ON(ARRAY_SIZE(arsta->chain_signal) >
|
||||
ARRAY_SIZE(ppdu_info->rssi_chain_pri20));
|
||||
|
||||
@@ -2842,6 +2863,52 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
@@ -2841,6 +2862,52 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
|
||||
rx_stats->rx_duration += ppdu_info->rx_duration;
|
||||
arsta->rx_duration = rx_stats->rx_duration;
|
||||
@ -405,7 +405,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
||||
static struct sk_buff *ath11k_dp_rx_alloc_mon_status_buf(struct ath11k_base *ab,
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
@@ -41,6 +41,25 @@ struct ath11k_dp_rfc1042_hdr {
|
||||
@@ -42,6 +42,25 @@ struct ath11k_dp_rfc1042_hdr {
|
||||
__be16 snap_type;
|
||||
} __packed;
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
#include "fw.h"
|
||||
|
||||
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
|
||||
@@ -508,6 +509,8 @@ struct ath11k_htt_data_stats {
|
||||
@@ -511,6 +512,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 {
|
||||
@@ -515,6 +518,9 @@ struct ath11k_htt_tx_stats {
|
||||
@@ -518,6 +521,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 {
|
||||
@@ -631,11 +637,16 @@ struct ath11k_per_peer_tx_stats {
|
||||
@@ -634,11 +640,16 @@ struct ath11k_per_peer_tx_stats {
|
||||
u32 succ_bytes;
|
||||
u32 retry_bytes;
|
||||
u32 failed_bytes;
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -5452,8 +5452,11 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -5515,8 +5515,11 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
goto next_skb;
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -2902,11 +2902,12 @@ exit:
|
||||
@@ -2901,11 +2901,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;
|
||||
|
||||
@@ -2928,10 +2929,13 @@ ath11k_dp_rx_update_peer_rate_table_stat
|
||||
@@ -2927,10 +2928,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;
|
||||
@@ -2989,7 +2993,6 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
@@ -2988,7 +2992,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));
|
||||
@@ -3007,10 +3010,10 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
@@ -3006,10 +3009,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 &&
|
||||
@@ -3043,7 +3046,120 @@ static void ath11k_dp_rx_update_peer_sta
|
||||
@@ -3042,7 +3045,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 @@
|
||||
|
||||
}
|
||||
|
||||
@@ -5381,6 +5497,55 @@ static void ath11k_dp_rx_mon_dest_proces
|
||||
@@ -5444,6 +5560,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)
|
||||
{
|
||||
@@ -5454,8 +5619,13 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -5517,8 +5682,13 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
|
||||
if ((ppdu_info->fc_valid) &&
|
||||
(ppdu_info->ast_index != HAL_AST_IDX_INVALID)) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -2306,6 +2306,42 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
@@ -2305,6 +2305,42 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
ether_addr_copy(ieee80211_get_SA(hdr), sa);
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
static void ath11k_dp_rx_h_undecap(struct ath11k *ar, struct sk_buff *msdu,
|
||||
struct hal_rx_desc *rx_desc,
|
||||
enum hal_encrypt_type enctype,
|
||||
@@ -2347,7 +2383,8 @@ static void ath11k_dp_rx_h_undecap(struc
|
||||
@@ -2346,7 +2382,8 @@ static void ath11k_dp_rx_h_undecap(struc
|
||||
enctype, status);
|
||||
break;
|
||||
case DP_RX_DECAP_TYPE_8023:
|
||||
|
||||
@ -16,8 +16,8 @@
|
||||
|
||||
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
|
||||
|
||||
@@ -355,6 +355,16 @@ struct ath11k_reg_tpc_power_info {
|
||||
struct ath11k_chan_power_info chan_power_info[IEEE80211_MAX_NUM_PWR_LEVEL];
|
||||
@@ -358,6 +358,16 @@ struct ath11k_reg_tpc_power_info {
|
||||
struct ath11k_chan_power_info chan_power_info[ATH11K_NUM_PWR_LEVELS];
|
||||
};
|
||||
|
||||
+#define ATH11K_STATS_MGMT_FRM_TYPE_MAX 16
|
||||
@ -33,7 +33,7 @@
|
||||
struct ath11k_vif {
|
||||
u32 vdev_id;
|
||||
enum wmi_vdev_type vdev_type;
|
||||
@@ -411,6 +421,7 @@ struct ath11k_vif {
|
||||
@@ -414,6 +424,7 @@ struct ath11k_vif {
|
||||
struct ath11k_rekey_data rekey_data;
|
||||
|
||||
struct ath11k_reg_tpc_power_info reg_tpc_info;
|
||||
@ -143,7 +143,7 @@
|
||||
debugfs_create_file("dfs_simulate_radar", 0200,
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -5934,9 +5934,9 @@ static int ath11k_mac_mgmt_tx(struct ath
|
||||
@@ -6031,9 +6031,9 @@ static int ath11k_mac_mgmt_tx(struct ath
|
||||
*/
|
||||
if (is_prb_rsp &&
|
||||
atomic_read(&ar->num_pending_mgmt_tx) > ATH11K_PRB_RSP_DROP_THRESHOLD) {
|
||||
@ -155,7 +155,7 @@
|
||||
}
|
||||
|
||||
if (skb_queue_len_lockless(q) >= ATH11K_TX_MGMT_NUM_PENDING_MAX) {
|
||||
@@ -5962,9 +5962,11 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
@@ -6059,9 +6059,11 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||
struct ieee80211_key_conf *key = info->control.hw_key;
|
||||
@ -167,7 +167,7 @@
|
||||
int ret;
|
||||
|
||||
memset(skb_cb, 0, sizeof(*skb_cb));
|
||||
@@ -5978,12 +5980,21 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
@@ -6075,12 +6077,21 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
if (info_flags & IEEE80211_TX_CTL_HW_80211_ENCAP) {
|
||||
skb_cb->flags |= ATH11K_SKB_HW_80211_ENCAP;
|
||||
} else if (ieee80211_is_mgmt(hdr->frame_control)) {
|
||||
@ -213,7 +213,7 @@
|
||||
int peer_id;
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -5896,6 +5896,12 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
@@ -5941,6 +5941,12 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
struct sk_buff *msdu;
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ath11k_skb_cb *skb_cb;
|
||||
@ -226,7 +226,7 @@
|
||||
int num_mgmt;
|
||||
|
||||
spin_lock_bh(&ar->txmgmt_idr_lock);
|
||||
@@ -5923,6 +5929,31 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
@@ -5968,6 +5974,31 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
info->status.ack_signal = tx_compl_param->ack_rssi;
|
||||
}
|
||||
|
||||
@ -258,7 +258,7 @@
|
||||
ieee80211_tx_status_irqsafe(ar->hw, msdu);
|
||||
|
||||
num_mgmt = atomic_dec_if_positive(&ar->num_pending_mgmt_tx);
|
||||
@@ -7500,6 +7531,11 @@ static void ath11k_mgmt_rx_event(struct
|
||||
@@ -7545,6 +7576,11 @@ static void ath11k_mgmt_rx_event(struct
|
||||
struct ieee80211_hdr *hdr;
|
||||
u16 fc;
|
||||
struct ieee80211_supported_band *sband;
|
||||
@ -270,7 +270,7 @@
|
||||
|
||||
if (ath11k_pull_mgmt_rx_params_tlv(ab, skb, &rx_ev) != 0) {
|
||||
ath11k_warn(ab, "failed to extract mgmt rx event");
|
||||
@@ -7565,7 +7601,34 @@ static void ath11k_mgmt_rx_event(struct
|
||||
@@ -7610,7 +7646,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
|
||||
@@ -2294,5 +2294,17 @@ err_sc_free:
|
||||
@@ -2303,5 +2303,17 @@ err_sc_free:
|
||||
}
|
||||
EXPORT_SYMBOL(ath11k_core_alloc);
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -10159,6 +10159,8 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10199,6 +10199,8 @@ static int __ath11k_mac_register(struct
|
||||
wiphy_ext_feature_set(ar->hw->wiphy,
|
||||
NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT);
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
ar->hw->offchannel_tx_hw_queue = ATH11K_HW_MAX_QUEUES - 1;
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -4128,6 +4128,7 @@ ath11k_wmi_copy_resource_config(struct w
|
||||
@@ -4173,6 +4173,7 @@ ath11k_wmi_copy_resource_config(struct w
|
||||
wmi_cfg->max_bssid_rx_filters = tg_cfg->max_bssid_rx_filters;
|
||||
wmi_cfg->use_pdev_id = tg_cfg->use_pdev_id;
|
||||
wmi_cfg->flag1 = tg_cfg->flag1;
|
||||
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
depends on m
|
||||
--- a/drivers/net/wireless/ath/ath11k/Makefile
|
||||
+++ b/drivers/net/wireless/ath/ath11k/Makefile
|
||||
@@ -26,6 +26,7 @@ ath11k-$(CPTCFG_ATH11K_TRACING) += trace
|
||||
@@ -27,6 +27,7 @@ ath11k-$(CPTCFG_ATH11K_TRACING) += trace
|
||||
ath11k-$(CPTCFG_ATH11K_THERMAL) += thermal.o
|
||||
ath11k-$(CPTCFG_ATH11K_SPECTRAL) += spectral.o
|
||||
ath11k-$(CONFIG_PM) += wow.o
|
||||
@ -2848,7 +2848,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
enum hal_pn_type pn_type)
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -1164,6 +1164,44 @@ int ath11k_wmi_send_pdev_set_regdomain(s
|
||||
@@ -1169,6 +1169,44 @@ int ath11k_wmi_send_pdev_set_regdomain(s
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2895,7 +2895,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
{
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
@@ -2894,6 +2894,27 @@ struct pdev_set_regdomain_params {
|
||||
@@ -2890,6 +2890,27 @@ struct pdev_set_regdomain_params {
|
||||
u32 pdev_id;
|
||||
};
|
||||
|
||||
@ -2923,7 +2923,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
struct rx_reorder_queue_remove_params {
|
||||
u8 *peer_macaddr;
|
||||
u16 vdev_id;
|
||||
@@ -3142,6 +3163,16 @@ struct wmi_pdev_set_regdomain_cmd {
|
||||
@@ -3138,6 +3159,16 @@ struct wmi_pdev_set_regdomain_cmd {
|
||||
u32 dfs_domain;
|
||||
} __packed;
|
||||
|
||||
@ -2940,7 +2940,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
struct wmi_peer_set_param_cmd {
|
||||
u32 tlv_header;
|
||||
u32 vdev_id;
|
||||
@@ -6384,6 +6415,8 @@ int ath11k_wmi_send_peer_create_cmd(stru
|
||||
@@ -6390,6 +6421,8 @@ int ath11k_wmi_send_peer_create_cmd(stru
|
||||
int ath11k_wmi_vdev_set_param_cmd(struct ath11k *ar, u32 vdev_id,
|
||||
u32 param_id, u32 param_value);
|
||||
|
||||
@ -2951,7 +2951,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
int ath11k_wmi_force_fw_hang_cmd(struct ath11k *ar, u32 type, u32 delay_time_ms);
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
@@ -20,6 +20,34 @@
|
||||
@@ -21,6 +21,34 @@
|
||||
#define DP_RX_MPDU_ERR_MPDU_LEN BIT(6)
|
||||
#define DP_RX_MPDU_ERR_UNENCRYPTED_FRAME BIT(7)
|
||||
|
||||
@ -2986,7 +2986,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
enum dp_rx_decap_type {
|
||||
DP_RX_DECAP_TYPE_RAW,
|
||||
DP_RX_DECAP_TYPE_NATIVE_WIFI,
|
||||
@@ -75,6 +103,9 @@ void ath11k_peer_rx_tid_delete(struct at
|
||||
@@ -76,6 +104,9 @@ void ath11k_peer_rx_tid_delete(struct at
|
||||
int ath11k_peer_rx_tid_setup(struct ath11k *ar, const u8 *peer_mac, int vdev_id,
|
||||
u8 tid, u32 ba_win_sz, u16 ssn,
|
||||
enum hal_pn_type pn_type);
|
||||
@ -2998,7 +2998,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
int ath11k_dp_pdev_reo_setup(struct ath11k_base *ab);
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -6153,6 +6153,16 @@ static int ath11k_mac_op_start(struct ie
|
||||
@@ -6250,6 +6250,16 @@ static int ath11k_mac_op_start(struct ie
|
||||
goto err;
|
||||
}
|
||||
|
||||
@ -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
|
||||
@@ -887,6 +887,8 @@ struct ath11k_soc_dp_tx_err_stats {
|
||||
@@ -890,6 +890,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 {
|
||||
@@ -973,6 +975,7 @@ struct ath11k_base {
|
||||
@@ -976,6 +978,7 @@ struct ath11k_base {
|
||||
struct list_head peers;
|
||||
wait_queue_head_t peer_mapping_wq;
|
||||
u8 mac_addr[ETH_ALEN];
|
||||
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
@@ -526,6 +526,12 @@ static int ath11k_ahb_config_ext_irq(str
|
||||
@@ -527,6 +527,12 @@ static int ath11k_ahb_config_ext_irq(str
|
||||
int i, j;
|
||||
int irq;
|
||||
int ret;
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
for (i = 0; i < ATH11K_EXT_IRQ_GRP_NUM_MAX; i++) {
|
||||
struct ath11k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i];
|
||||
@@ -538,20 +544,20 @@ static int ath11k_ahb_config_ext_irq(str
|
||||
@@ -543,20 +549,20 @@ static int ath11k_ahb_config_ext_irq(str
|
||||
ath11k_ahb_ext_grp_napi_poll);
|
||||
|
||||
for (j = 0; j < ATH11K_EXT_IRQ_NUM_MAX; j++) {
|
||||
@ -62,7 +62,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
irq_grp->irqs[num_irq++] = wbm2host_rx_release;
|
||||
|
||||
if (ab->hw_params.ring_mask->reo_status[i] & BIT(j))
|
||||
@@ -564,7 +570,7 @@ static int ath11k_ahb_config_ext_irq(str
|
||||
@@ -569,7 +575,7 @@ static int ath11k_ahb_config_ext_irq(str
|
||||
ath11k_hw_get_mac_from_pdev_id(hw, j);
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
irq_grp->irqs[num_irq++] =
|
||||
host2rxdma_host_buf_ring_mac1 -
|
||||
ath11k_hw_get_mac_from_pdev_id(hw, j);
|
||||
@@ -905,6 +911,7 @@ static int ath11k_ahb_setup_resources(st
|
||||
@@ -910,6 +916,7 @@ static int ath11k_ahb_setup_resources(st
|
||||
}
|
||||
|
||||
ab->mem = mem;
|
||||
@ -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);
|
||||
@@ -1624,10 +1630,16 @@ static int ath11k_core_pdev_create(struc
|
||||
@@ -1636,10 +1642,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);
|
||||
@@ -1649,6 +1661,8 @@ err_thermal_unregister:
|
||||
@@ -1661,6 +1673,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:
|
||||
@@ -1662,6 +1676,10 @@ static void ath11k_core_pdev_destroy(str
|
||||
@@ -1674,6 +1688,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_hif_irq_disable(ab);
|
||||
ath11k_dp_pdev_free(ab);
|
||||
ath11k_debugfs_pdev_destroy(ab);
|
||||
@@ -1868,6 +1886,10 @@ static int ath11k_core_reconfigure_on_cr
|
||||
@@ -1880,6 +1898,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);
|
||||
@@ -2199,6 +2221,10 @@ int ath11k_core_pre_init(struct ath11k_b
|
||||
@@ -2208,6 +2230,10 @@ int ath11k_core_pre_init(struct ath11k_b
|
||||
ath11k_err(ab, "failed to pre init firmware: %d", ret);
|
||||
return ret;
|
||||
}
|
||||
@ -164,7 +164,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
|
||||
|
||||
@@ -422,6 +423,9 @@ struct ath11k_vif {
|
||||
@@ -425,6 +426,9 @@ struct ath11k_vif {
|
||||
|
||||
struct ath11k_reg_tpc_power_info reg_tpc_info;
|
||||
struct ath11k_mgmt_frame_stats mgmt_stats;
|
||||
@ -174,7 +174,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
};
|
||||
|
||||
struct ath11k_vif_iter {
|
||||
@@ -575,6 +579,9 @@ struct ath11k_sta {
|
||||
@@ -578,6 +582,9 @@ struct ath11k_sta {
|
||||
#endif
|
||||
|
||||
bool use_4addr_set;
|
||||
@ -184,7 +184,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
u16 tcl_metadata;
|
||||
|
||||
/* Protected with ar->data_lock */
|
||||
@@ -669,6 +676,9 @@ struct ath11k {
|
||||
@@ -672,6 +679,9 @@ struct ath11k {
|
||||
struct ath11k_pdev *pdev;
|
||||
struct ieee80211_hw *hw;
|
||||
struct ath11k_pdev_wmi *wmi;
|
||||
@ -194,7 +194,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
struct ath11k_pdev_dp dp;
|
||||
u8 mac_addr[ETH_ALEN];
|
||||
struct ath11k_he ar_he;
|
||||
@@ -930,9 +940,11 @@ struct ath11k_base {
|
||||
@@ -933,9 +943,11 @@ struct ath11k_base {
|
||||
struct ath11k_htc htc;
|
||||
|
||||
struct ath11k_dp dp;
|
||||
@ -366,7 +366,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
enum hal_encrypt_type enctype)
|
||||
{
|
||||
switch (enctype) {
|
||||
@@ -2091,7 +2094,7 @@ static int ath11k_dp_rx_crypto_param_len
|
||||
@@ -2090,7 +2093,7 @@ static int ath11k_dp_rx_crypto_param_len
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -375,7 +375,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
enum hal_encrypt_type enctype)
|
||||
{
|
||||
switch (enctype) {
|
||||
@@ -2827,6 +2830,22 @@ static void ath11k_dp_rx_process_receive
|
||||
@@ -2826,6 +2829,22 @@ static void ath11k_dp_rx_process_receive
|
||||
}
|
||||
}
|
||||
|
||||
@ -398,7 +398,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id,
|
||||
struct napi_struct *napi, int budget)
|
||||
{
|
||||
@@ -3126,7 +3145,8 @@ static void ath11k_dp_rx_update_user_sta
|
||||
@@ -3125,7 +3144,8 @@ static void ath11k_dp_rx_update_user_sta
|
||||
peer = ath11k_peer_find_by_ast(ar->ab, user_stats->ast_index);
|
||||
|
||||
if (peer == NULL) {
|
||||
@ -408,7 +408,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
user_stats->ast_index);
|
||||
return;
|
||||
}
|
||||
@@ -3134,6 +3154,13 @@ static void ath11k_dp_rx_update_user_sta
|
||||
@@ -3133,6 +3153,13 @@ static void ath11k_dp_rx_update_user_sta
|
||||
arsta = (struct ath11k_sta *)peer->sta->drv_priv;
|
||||
rx_stats = arsta->rx_stats;
|
||||
|
||||
@ -422,7 +422,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
if (!rx_stats)
|
||||
return;
|
||||
|
||||
@@ -3210,8 +3237,10 @@ static void ath11k_dp_rx_update_peer_mu_
|
||||
@@ -3209,8 +3236,10 @@ static void ath11k_dp_rx_update_peer_mu_
|
||||
{
|
||||
u32 num_users, i;
|
||||
|
||||
@ -434,7 +434,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
num_users = ppdu_info->num_users;
|
||||
if (num_users > HAL_MAX_UL_MU_USERS)
|
||||
@@ -5614,7 +5643,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -5677,7 +5706,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
struct sk_buff *skb;
|
||||
struct sk_buff_head skb_list;
|
||||
struct ath11k_peer *peer;
|
||||
@ -443,7 +443,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
int num_buffs_reaped = 0;
|
||||
u32 rx_buf_sz;
|
||||
u16 log_type;
|
||||
@@ -5682,6 +5711,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -5745,6 +5774,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);
|
||||
@ -506,7 +506,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
#define CHAN2G(_channel, _freq, _flags) { \
|
||||
.band = NL80211_BAND_2GHZ, \
|
||||
@@ -1593,6 +1594,11 @@ static void ath11k_control_beaconing(str
|
||||
@@ -1680,6 +1681,11 @@ static void ath11k_control_beaconing(str
|
||||
lockdep_assert_held(&arvif->ar->conf_mutex);
|
||||
|
||||
if (!info->enable_beacon) {
|
||||
@ -518,7 +518,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ret = ath11k_wmi_vdev_down(ar, arvif->vdev_id);
|
||||
if (ret)
|
||||
ath11k_warn(ar->ab, "failed to down vdev_id %i: %d\n",
|
||||
@@ -1632,6 +1638,12 @@ static void ath11k_control_beaconing(str
|
||||
@@ -1719,6 +1725,12 @@ static void ath11k_control_beaconing(str
|
||||
|
||||
arvif->is_up = true;
|
||||
|
||||
@ -531,7 +531,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "vdev %d up\n", arvif->vdev_id);
|
||||
}
|
||||
|
||||
@@ -3070,6 +3082,12 @@ static void ath11k_bss_assoc(struct ieee
|
||||
@@ -3157,6 +3169,12 @@ static void ath11k_bss_assoc(struct ieee
|
||||
"vdev %d up (associated) bssid %pM aid %d\n",
|
||||
arvif->vdev_id, bss_conf->bssid, vif->cfg.aid);
|
||||
|
||||
@ -544,7 +544,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
|
||||
peer = ath11k_peer_find(ar->ab, arvif->vdev_id, arvif->bssid);
|
||||
@@ -3112,6 +3130,10 @@ static void ath11k_bss_disassoc(struct i
|
||||
@@ -3199,6 +3217,10 @@ static void ath11k_bss_disassoc(struct i
|
||||
|
||||
lockdep_assert_held(&ar->conf_mutex);
|
||||
|
||||
@ -555,7 +555,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "vdev %i disassoc bssid %pM\n",
|
||||
arvif->vdev_id, arvif->bssid);
|
||||
|
||||
@@ -3404,6 +3426,28 @@ static bool ath11k_mac_supports_station_
|
||||
@@ -3491,6 +3513,28 @@ static bool ath11k_mac_supports_station_
|
||||
chandef->chan->band == NL80211_BAND_6GHZ;
|
||||
}
|
||||
|
||||
@ -584,7 +584,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *info,
|
||||
@@ -4303,6 +4347,26 @@ static int ath11k_mac_op_set_key(struct
|
||||
@@ -4392,6 +4436,26 @@ static int ath11k_mac_op_set_key(struct
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
peer = ath11k_peer_find(ab, arvif->vdev_id, peer_addr);
|
||||
@ -611,7 +611,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
if (peer && cmd == SET_KEY) {
|
||||
peer->keys[key->keyidx] = key;
|
||||
if (key->flags & IEEE80211_KEY_FLAG_PAIRWISE) {
|
||||
@@ -4341,9 +4405,8 @@ static int ath11k_mac_op_set_key(struct
|
||||
@@ -4430,9 +4494,8 @@ static int ath11k_mac_op_set_key(struct
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -622,7 +622,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
exit:
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
return ret;
|
||||
@@ -6002,10 +6065,14 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
@@ -6099,10 +6162,14 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
if (control->sta)
|
||||
arsta = ath11k_sta_to_arsta(control->sta);
|
||||
|
||||
@ -638,7 +638,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6027,6 +6094,8 @@ static int ath11k_mac_config_mon_status_
|
||||
@@ -6124,6 +6191,8 @@ static int ath11k_mac_config_mon_status_
|
||||
|
||||
if (enable) {
|
||||
tlv_filter = ath11k_mac_mon_status_filter_default;
|
||||
@ -647,7 +647,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
if (ath11k_debugfs_rx_filter(ar))
|
||||
tlv_filter.rx_filter = ath11k_debugfs_rx_filter(ar);
|
||||
}
|
||||
@@ -6325,7 +6394,7 @@ static int ath11k_mac_setup_vdev_create_
|
||||
@@ -6422,7 +6491,7 @@ static int ath11k_mac_setup_vdev_create_
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -656,7 +656,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct ath11k *ar = hw->priv;
|
||||
@@ -6371,6 +6440,8 @@ static void ath11k_mac_op_update_vif_off
|
||||
@@ -6468,6 +6537,8 @@ static void ath11k_mac_op_update_vif_off
|
||||
arvif->vdev_id, ret);
|
||||
vif->offload_flags &= ~IEEE80211_OFFLOAD_DECAP_ENABLED;
|
||||
}
|
||||
@ -665,7 +665,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
}
|
||||
|
||||
static bool ath11k_mac_vif_ap_active_any(struct ath11k_base *ab)
|
||||
@@ -6501,6 +6572,8 @@ static int ath11k_mac_vdev_delete(struct
|
||||
@@ -6598,6 +6669,8 @@ static int ath11k_mac_vdev_delete(struct
|
||||
|
||||
reinit_completion(&ar->vdev_delete_done);
|
||||
|
||||
@ -674,7 +674,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ret = ath11k_wmi_vdev_delete(ar, arvif->vdev_id);
|
||||
if (ret) {
|
||||
ath11k_warn(ar->ab, "failed to delete WMI vdev %d: %d\n",
|
||||
@@ -6634,7 +6707,34 @@ static int ath11k_mac_op_add_interface(s
|
||||
@@ -6740,7 +6813,34 @@ static int ath11k_mac_op_add_interface(s
|
||||
list_add(&arvif->list, &ar->arvifs);
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
|
||||
@ -710,7 +710,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
nss = get_num_chains(ar->cfg_tx_chainmask) ? : 1;
|
||||
ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
|
||||
@@ -6764,6 +6864,7 @@ err_peer_del:
|
||||
@@ -6870,6 +6970,7 @@ err_peer_del:
|
||||
}
|
||||
|
||||
err_vdev_del:
|
||||
@ -718,7 +718,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);
|
||||
@@ -7281,6 +7382,10 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||
@@ -7387,6 +7488,10 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||
arvif->vdev_id, ret);
|
||||
continue;
|
||||
}
|
||||
@ -746,7 +746,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,
|
||||
@@ -10109,7 +10217,8 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10149,7 +10257,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);
|
||||
@ -756,7 +756,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
}
|
||||
|
||||
ar->hw->wiphy->features |= NL80211_FEATURE_STATIC_SMPS;
|
||||
@@ -10224,6 +10333,9 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10264,6 +10373,9 @@ static int __ath11k_mac_register(struct
|
||||
ab->hw_params.bios_sar_capa)
|
||||
ar->hw->wiphy->sar_capa = ab->hw_params.bios_sar_capa;
|
||||
|
||||
@ -1199,7 +1199,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ab->hw_params.ring_mask->rx_err[i] ||
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -163,6 +163,7 @@ WCN36XX_DEBUGFS=
|
||||
@@ -165,6 +165,7 @@ WCN36XX_DEBUGFS=
|
||||
ATH11K=
|
||||
ATH11K_AHB=
|
||||
ATH11K_PCI=
|
||||
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -148,6 +148,8 @@ static const struct wmi_tlv_policy wmi_t
|
||||
@@ -149,6 +149,8 @@ static const struct wmi_tlv_policy wmi_t
|
||||
.min_len = sizeof(struct wmi_vdev_delete_resp_event) },
|
||||
[WMI_TAG_OBSS_COLOR_COLLISION_EVT] = {
|
||||
.min_len = sizeof(struct wmi_obss_color_collision_event) },
|
||||
@ -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] = {
|
||||
@@ -8708,6 +8710,74 @@ exit:
|
||||
@@ -8805,6 +8807,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;
|
||||
@@ -8826,6 +8896,9 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
@@ -8923,6 +8993,9 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
case WMI_11D_NEW_COUNTRY_EVENTID:
|
||||
ath11k_reg_11d_new_cc_event(ab, skb);
|
||||
break;
|
||||
@ -127,7 +127,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
break;
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
@@ -776,6 +776,7 @@ enum wmi_tlv_event_id {
|
||||
@@ -772,6 +772,7 @@ enum wmi_tlv_event_id {
|
||||
WMI_READ_DATA_FROM_FLASH_EVENTID,
|
||||
WMI_REPORT_RX_AGGR_FAILURE_EVENTID,
|
||||
WMI_PKGID_EVENTID,
|
||||
@ -135,7 +135,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
WMI_GPIO_INPUT_EVENTID = WMI_TLV_CMD(WMI_GRP_GPIO),
|
||||
WMI_UPLOADH_EVENTID,
|
||||
WMI_CAPTUREH_EVENTID,
|
||||
@@ -1888,6 +1889,7 @@ enum wmi_tlv_tag {
|
||||
@@ -1884,6 +1885,7 @@ enum wmi_tlv_tag {
|
||||
WMI_TAG_NDP_EVENT,
|
||||
WMI_TAG_PDEV_PEER_PKTLOG_FILTER_CMD = 0x301,
|
||||
WMI_TAG_PDEV_PEER_PKTLOG_FILTER_INFO,
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
WMI_TAG_FILS_DISCOVERY_TMPL_CMD = 0x344,
|
||||
WMI_TAG_PDEV_SRG_BSS_COLOR_BITMAP_CMD = 0x37b,
|
||||
WMI_TAG_PDEV_SRG_PARTIAL_BSSID_BITMAP_CMD,
|
||||
@@ -4890,6 +4892,16 @@ struct wmi_pdev_temperature_event {
|
||||
@@ -4896,6 +4898,16 @@ struct wmi_pdev_temperature_event {
|
||||
u32 pdev_id;
|
||||
} __packed;
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -10350,6 +10350,9 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10390,6 +10390,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
|
||||
@@ -164,6 +164,8 @@ ATH11K=
|
||||
@@ -166,6 +166,8 @@ ATH11K=
|
||||
ATH11K_AHB=
|
||||
ATH11K_PCI=
|
||||
ATH11K_NSS_SUPPORT=
|
||||
@ -152,7 +152,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
|
||||
|
||||
@@ -925,6 +925,11 @@ struct ath11k_msi_config {
|
||||
@@ -928,6 +928,11 @@ struct ath11k_msi_config {
|
||||
u16 hw_rev;
|
||||
};
|
||||
|
||||
@ -164,7 +164,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;
|
||||
@@ -1082,6 +1087,8 @@ struct ath11k_base {
|
||||
@@ -1085,6 +1090,8 @@ struct ath11k_base {
|
||||
DECLARE_BITMAP(fw_features, ATH11K_FW_FEATURE_COUNT);
|
||||
} fw;
|
||||
|
||||
@ -225,7 +225,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
|
||||
@@ -825,6 +828,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -833,6 +836,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
wake_up(&ar->dp.tx_empty_waitq);
|
||||
|
||||
ath11k_dp_tx_complete_msdu(ar, msdu, &ts);
|
||||
@ -261,7 +261,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 16 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = false,
|
||||
@@ -262,7 +265,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -265,7 +268,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = false,
|
||||
.coldboot_cal_ftm = false,
|
||||
.cbcal_restart_fw = false,
|
||||
@ -270,7 +270,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 2 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = true,
|
||||
@@ -431,7 +434,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -437,7 +440,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = false,
|
||||
.coldboot_cal_ftm = false,
|
||||
.cbcal_restart_fw = false,
|
||||
@ -279,7 +279,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 2 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = true,
|
||||
@@ -467,6 +470,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -473,6 +476,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,
|
||||
@ -287,7 +287,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.support_dual_stations = true,
|
||||
},
|
||||
{
|
||||
@@ -515,7 +519,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -524,7 +528,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = false,
|
||||
.coldboot_cal_ftm = false,
|
||||
.cbcal_restart_fw = false,
|
||||
@ -296,7 +296,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 2 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = true,
|
||||
@@ -551,6 +555,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -560,6 +564,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,
|
||||
@ -304,7 +304,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.support_dual_stations = true,
|
||||
},
|
||||
{
|
||||
@@ -600,7 +605,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -609,7 +614,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.coldboot_cal_mm = true,
|
||||
.coldboot_cal_ftm = true,
|
||||
.cbcal_restart_fw = false,
|
||||
@ -313,7 +313,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 3,
|
||||
.num_peers = 512,
|
||||
.supports_suspend = false,
|
||||
@@ -680,7 +685,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -689,7 +694,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.supports_monitor = false,
|
||||
.supports_sta_ps = false,
|
||||
.supports_shadow_regs = false,
|
||||
@ -322,7 +322,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.num_vdevs = 16 + 1,
|
||||
.num_peers = 512,
|
||||
.supports_regdb = false,
|
||||
@@ -715,6 +720,7 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -724,6 +729,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,
|
||||
@ -330,7 +330,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
.support_dual_stations = false,
|
||||
},
|
||||
{
|
||||
@@ -805,6 +811,21 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -817,6 +823,21 @@ static struct ath11k_hw_params ath11k_hw
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -679,6 +679,7 @@ struct ath11k {
|
||||
@@ -682,6 +682,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];
|
||||
@@ -1097,6 +1098,9 @@ struct ath11k_base {
|
||||
@@ -1100,6 +1101,9 @@ struct ath11k_base {
|
||||
} testmode;
|
||||
#endif
|
||||
|
||||
@ -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
|
||||
@@ -495,7 +495,7 @@ ath11k_dp_tx_process_htt_tx_complete(str
|
||||
@@ -499,7 +499,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)
|
||||
{
|
||||
@@ -6436,6 +6483,36 @@ static int ath11k_pull_peer_assoc_conf_e
|
||||
@@ -6481,6 +6528,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)
|
||||
{
|
||||
@@ -7260,6 +7337,7 @@ static int ath11k_wmi_tlv_rdy_parse(stru
|
||||
@@ -7305,6 +7382,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:
|
||||
@@ -8778,6 +8856,22 @@ exit:
|
||||
@@ -8875,6 +8953,22 @@ exit:
|
||||
kfree(tb);
|
||||
}
|
||||
|
||||
@ -917,7 +917,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
break;
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
@@ -3032,6 +3032,21 @@ struct wmi_peer_delete_cmd {
|
||||
@@ -3028,6 +3028,21 @@ struct wmi_peer_delete_cmd {
|
||||
struct wmi_mac_addr peer_macaddr;
|
||||
} __packed;
|
||||
|
||||
@ -939,7 +939,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
struct wmi_peer_reorder_queue_setup_cmd {
|
||||
u32 tlv_header;
|
||||
u32 vdev_id;
|
||||
@@ -4635,6 +4650,21 @@ struct wmi_probe_resp_tx_status_event {
|
||||
@@ -4641,6 +4656,21 @@ struct wmi_probe_resp_tx_status_event {
|
||||
u32 tx_status;
|
||||
} __packed;
|
||||
|
||||
@ -961,7 +961,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
/*
|
||||
* PDEV statistics
|
||||
*/
|
||||
@@ -6434,6 +6464,9 @@ int ath11k_wmi_set_sta_ps_param(struct a
|
||||
@@ -6440,6 +6470,9 @@ int ath11k_wmi_set_sta_ps_param(struct a
|
||||
int ath11k_wmi_force_fw_hang_cmd(struct ath11k *ar, u32 type, u32 delay_time_ms);
|
||||
int ath11k_wmi_send_peer_delete_cmd(struct ath11k *ar,
|
||||
const u8 *peer_addr, u8 vdev_id);
|
||||
|
||||
@ -22,7 +22,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -5915,6 +5915,16 @@ static int ath11k_mac_mgmt_tx_wmi(struct
|
||||
@@ -6012,6 +6012,16 @@ static int ath11k_mac_mgmt_tx_wmi(struct
|
||||
|
||||
ATH11K_SKB_CB(skb)->paddr = paddr;
|
||||
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
ret = ath11k_wmi_mgmt_send(ar, arvif->vdev_id, buf_id, skb);
|
||||
if (ret) {
|
||||
ath11k_warn(ar->ab, "failed to send mgmt frame: %d\n", ret);
|
||||
@@ -5982,8 +5992,8 @@ static void ath11k_mgmt_over_wmi_tx_work
|
||||
@@ -6079,8 +6089,8 @@ static void ath11k_mgmt_over_wmi_tx_work
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
{
|
||||
struct sk_buff_head *q = &ar->wmi_mgmt_tx_queue;
|
||||
|
||||
@@ -6045,7 +6055,7 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
@@ -6142,7 +6152,7 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
} else if (ieee80211_is_mgmt(hdr->frame_control)) {
|
||||
frm_type = FIELD_GET(IEEE80211_FCTL_STYPE, hdr->frame_control);
|
||||
is_prb_rsp = ieee80211_is_probe_resp(hdr->frame_control);
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
if (ret) {
|
||||
if (ret != -EBUSY)
|
||||
ath11k_warn(ar->ab, "failed to queue management frame %d\n",
|
||||
@@ -6060,6 +6070,20 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
@@ -6157,6 +6167,20 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
}
|
||||
return;
|
||||
@ -82,7 +82,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
if (control->sta)
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -117,7 +117,7 @@ static const struct wmi_tlv_policy wmi_t
|
||||
@@ -118,7 +118,7 @@ static const struct wmi_tlv_policy wmi_t
|
||||
[WMI_TAG_MGMT_RX_HDR]
|
||||
= { .min_len = sizeof(struct wmi_mgmt_rx_hdr) },
|
||||
[WMI_TAG_MGMT_TX_COMPL_EVENT]
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
[WMI_TAG_SCAN_EVENT]
|
||||
= { .min_len = sizeof(struct wmi_scan_event) },
|
||||
[WMI_TAG_PEER_STA_KICKOUT_EVENT]
|
||||
@@ -701,6 +701,55 @@ int ath11k_wmi_mgmt_send(struct ath11k *
|
||||
@@ -706,6 +706,55 @@ int ath11k_wmi_mgmt_send(struct ath11k *
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -147,7 +147,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
int ath11k_wmi_vdev_create(struct ath11k *ar, u8 *macaddr,
|
||||
struct vdev_create_params *param)
|
||||
{
|
||||
@@ -5978,8 +6027,8 @@ static int ath11k_pull_mgmt_rx_params_tl
|
||||
@@ -6023,8 +6072,8 @@ static int ath11k_pull_mgmt_rx_params_tl
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -158,7 +158,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
{
|
||||
struct sk_buff *msdu;
|
||||
struct ieee80211_tx_info *info;
|
||||
@@ -6017,6 +6066,11 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
@@ -6062,6 +6111,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);
|
||||
|
||||
@@ -6035,10 +6089,13 @@ static int wmi_process_mgmt_tx_comp(stru
|
||||
@@ -6080,10 +6134,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:
|
||||
@@ -6060,12 +6117,13 @@ skip_mgmt_stats:
|
||||
@@ -6105,12 +6162,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);
|
||||
@@ -6075,7 +6133,7 @@ static int ath11k_pull_mgmt_tx_compl_par
|
||||
@@ -6120,7 +6178,7 @@ static int ath11k_pull_mgmt_tx_compl_par
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -215,7 +215,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
if (!ev) {
|
||||
ath11k_warn(ab, "failed to fetch mgmt tx compl ev");
|
||||
kfree(tb);
|
||||
@@ -7791,10 +7849,11 @@ exit:
|
||||
@@ -7836,10 +7894,11 @@ exit:
|
||||
|
||||
static void ath11k_mgmt_tx_compl_event(struct ath11k_base *ab, struct sk_buff *skb)
|
||||
{
|
||||
@ -229,7 +229,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
ath11k_warn(ab, "failed to extract mgmt tx compl event");
|
||||
return;
|
||||
}
|
||||
@@ -7807,7 +7866,7 @@ static void ath11k_mgmt_tx_compl_event(s
|
||||
@@ -7852,7 +7911,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",
|
||||
@@ -7818,6 +7877,36 @@ exit:
|
||||
@@ -7863,6 +7922,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)
|
||||
@@ -9005,6 +9094,10 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
@@ -9105,6 +9194,10 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
case WMI_WDS_PEER_EVENTID:
|
||||
ath11k_wmi_wds_peer_event(ab, skb);
|
||||
break;
|
||||
@ -288,7 +288,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
break;
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
@@ -380,6 +380,7 @@ enum wmi_tlv_cmd_id {
|
||||
@@ -376,6 +376,7 @@ enum wmi_tlv_cmd_id {
|
||||
WMI_BSS_COLOR_CHANGE_ENABLE_CMDID,
|
||||
WMI_VDEV_BCN_OFFLOAD_QUIET_CONFIG_CMDID,
|
||||
WMI_FILS_DISCOVERY_TMPL_CMDID,
|
||||
@ -296,7 +296,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
WMI_ADDBA_CLEAR_RESP_CMDID = WMI_TLV_CMD(WMI_GRP_BA_NEG),
|
||||
WMI_ADDBA_SEND_CMDID,
|
||||
WMI_ADDBA_STATUS_CMDID,
|
||||
@@ -710,6 +711,8 @@ enum wmi_tlv_event_id {
|
||||
@@ -706,6 +707,8 @@ enum wmi_tlv_event_id {
|
||||
WMI_TBTTOFFSET_EXT_UPDATE_EVENTID,
|
||||
WMI_OFFCHAN_DATA_TX_COMPLETION_EVENTID,
|
||||
WMI_HOST_FILS_DISCOVERY_EVENTID,
|
||||
@ -305,7 +305,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
WMI_TX_DELBA_COMPLETE_EVENTID = WMI_TLV_CMD(WMI_GRP_BA_NEG),
|
||||
WMI_TX_ADDBA_COMPLETE_EVENTID,
|
||||
WMI_BA_RSP_SSN_EVENTID,
|
||||
@@ -1899,6 +1902,9 @@ enum wmi_tlv_tag {
|
||||
@@ -1895,6 +1898,9 @@ enum wmi_tlv_tag {
|
||||
WMI_TAG_PDEV_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMD,
|
||||
WMI_TAG_REGULATORY_RULE_EXT_STRUCT = 0x3A9,
|
||||
WMI_TAG_REG_CHAN_LIST_CC_EXT_EVENT,
|
||||
@ -315,7 +315,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
WMI_TAG_VDEV_SET_TPC_POWER_CMD = 0x3B5,
|
||||
WMI_TAG_VDEV_CH_POWER_INFO,
|
||||
WMI_TAG_PDEV_SET_BIOS_SAR_TABLE_CMD = 0x3D8,
|
||||
@@ -2130,7 +2136,17 @@ enum wmi_tlv_service {
|
||||
@@ -2126,7 +2132,17 @@ enum wmi_tlv_service {
|
||||
WMI_TLV_SERVICE_PEER_POWER_SAVE_DURATION_SUPPORT = 246,
|
||||
WMI_TLV_SERVICE_SRG_SRP_SPATIAL_REUSE_SUPPORT = 249,
|
||||
WMI_TLV_SERVICE_MBSS_PARAM_IN_VDEV_START_SUPPORT = 253,
|
||||
@ -333,7 +333,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
|
||||
/* The second 128 bits */
|
||||
WMI_MAX_EXT_SERVICE = 256,
|
||||
@@ -3877,6 +3893,7 @@ struct wmi_scan_prob_req_oui_cmd {
|
||||
@@ -3883,6 +3899,7 @@ struct wmi_scan_prob_req_oui_cmd {
|
||||
} __packed;
|
||||
|
||||
#define WMI_MGMT_SEND_DOWNLD_LEN 64
|
||||
@ -341,7 +341,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
|
||||
#define WMI_TX_PARAMS_DWORD0_POWER GENMASK(7, 0)
|
||||
#define WMI_TX_PARAMS_DWORD0_MCS_MASK GENMASK(19, 8)
|
||||
@@ -3887,9 +3904,10 @@ struct wmi_scan_prob_req_oui_cmd {
|
||||
@@ -3893,9 +3910,10 @@ struct wmi_scan_prob_req_oui_cmd {
|
||||
#define WMI_TX_PARAMS_DWORD1_BW_MASK GENMASK(14, 8)
|
||||
#define WMI_TX_PARAMS_DWORD1_PREAMBLE_TYPE GENMASK(19, 15)
|
||||
#define WMI_TX_PARAMS_DWORD1_FRAME_TYPE BIT(20)
|
||||
@ -354,7 +354,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
u32 tlv_header;
|
||||
u32 tx_params_dword0;
|
||||
u32 tx_params_dword1;
|
||||
@@ -4981,7 +4999,7 @@ struct wmi_rssi_ctl_ext {
|
||||
@@ -4987,7 +5005,7 @@ struct wmi_rssi_ctl_ext {
|
||||
u32 rssi_ctl_ext[MAX_ANTENNA_EIGHT - ATH_MAX_ANTENNA];
|
||||
};
|
||||
|
||||
@ -363,7 +363,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
u32 desc_id;
|
||||
u32 status;
|
||||
u32 pdev_id;
|
||||
@@ -5813,6 +5831,17 @@ struct wmi_debug_log_config_cmd_fixed_pa
|
||||
@@ -5819,6 +5837,17 @@ struct wmi_debug_log_config_cmd_fixed_pa
|
||||
u32 value;
|
||||
} __packed;
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -427,6 +427,7 @@ struct ath11k_vif {
|
||||
@@ -430,6 +430,7 @@ struct ath11k_vif {
|
||||
#ifdef CPTCFG_ATH11K_NSS_SUPPORT
|
||||
struct arvif_nss nss;
|
||||
#endif
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
struct ath11k_vif_iter {
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -4755,6 +4755,11 @@ static void ath11k_sta_rc_update_wk(stru
|
||||
@@ -4844,6 +4844,11 @@ static void ath11k_sta_rc_update_wk(stru
|
||||
arvif = arsta->arvif;
|
||||
ar = arvif->ar;
|
||||
|
||||
@ -55,7 +55,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (WARN_ON(ath11k_mac_vif_chan(arvif->vif, &def)))
|
||||
return;
|
||||
|
||||
@@ -4924,17 +4929,28 @@ err_rc_bw_changed:
|
||||
@@ -5013,17 +5018,28 @@ err_rc_bw_changed:
|
||||
static void ath11k_sta_set_4addr_wk(struct work_struct *wk)
|
||||
{
|
||||
struct ath11k *ar;
|
||||
@ -86,7 +86,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
"setting USE_4ADDR for peer %pM\n", sta->addr);
|
||||
|
||||
ret = ath11k_wmi_set_peer_param(ar, sta->addr,
|
||||
@@ -4942,8 +4958,93 @@ static void ath11k_sta_set_4addr_wk(stru
|
||||
@@ -5031,8 +5047,93 @@ static void ath11k_sta_set_4addr_wk(stru
|
||||
WMI_PEER_USE_4ADDR, 1);
|
||||
|
||||
if (ret)
|
||||
@ -181,7 +181,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
}
|
||||
|
||||
static int ath11k_mac_inc_num_stations(struct ath11k_vif *arvif,
|
||||
@@ -5045,9 +5146,32 @@ static void ath11k_mac_op_sta_set_4addr(
|
||||
@@ -5134,9 +5235,32 @@ static void ath11k_mac_op_sta_set_4addr(
|
||||
struct ieee80211_sta *sta, bool enabled)
|
||||
{
|
||||
struct ath11k *ar = hw->priv;
|
||||
@ -214,7 +214,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
ieee80211_queue_work(ar->hw, &arsta->set_4addr_wk);
|
||||
arsta->use_4addr_set = true;
|
||||
}
|
||||
@@ -6427,6 +6551,9 @@ static int ath11k_mac_op_update_vif_offl
|
||||
@@ -6524,6 +6648,9 @@ static int ath11k_mac_op_update_vif_offl
|
||||
u32 param_id, param_value;
|
||||
int ret;
|
||||
|
||||
@ -224,7 +224,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
param_id = WMI_VDEV_PARAM_TX_ENCAP_TYPE;
|
||||
if (ath11k_frame_mode != ATH11K_HW_TXRX_ETHERNET ||
|
||||
(vif->type != NL80211_IFTYPE_STATION &&
|
||||
@@ -6647,7 +6774,8 @@ static int ath11k_mac_op_add_interface(s
|
||||
@@ -6744,7 +6871,8 @@ static int ath11k_mac_op_add_interface(s
|
||||
goto err;
|
||||
}
|
||||
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
ath11k_warn(ab, "failed to create vdev %u, reached max vdev limit %d\n",
|
||||
ar->num_created_vdevs, TARGET_NUM_VDEVS(ab));
|
||||
ret = -EBUSY;
|
||||
@@ -6660,6 +6788,28 @@ static int ath11k_mac_op_add_interface(s
|
||||
@@ -6757,6 +6885,28 @@ static int ath11k_mac_op_add_interface(s
|
||||
arvif->vif = vif;
|
||||
|
||||
INIT_LIST_HEAD(&arvif->list);
|
||||
@ -271,7 +271,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (vif->p2p)
|
||||
arvif->vdev_subtype = WMI_VDEV_SUBTYPE_P2P_GO;
|
||||
break;
|
||||
@@ -6917,13 +7068,30 @@ static void ath11k_mac_op_remove_interfa
|
||||
@@ -7023,13 +7174,30 @@ static void ath11k_mac_op_remove_interfa
|
||||
struct ath11k *ar = hw->priv;
|
||||
struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
@ -304,7 +304,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
ath11k_dbg(ab, ATH11K_DBG_MAC, "remove interface (vdev %d)\n",
|
||||
arvif->vdev_id);
|
||||
|
||||
@@ -6940,6 +7108,14 @@ static void ath11k_mac_op_remove_interfa
|
||||
@@ -7046,6 +7214,14 @@ static void ath11k_mac_op_remove_interfa
|
||||
if (ret)
|
||||
ath11k_warn(ab, "failed to submit AP self-peer removal on vdev %d: %d\n",
|
||||
arvif->vdev_id, ret);
|
||||
@ -319,7 +319,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
}
|
||||
|
||||
ret = ath11k_mac_vdev_delete(ar, arvif);
|
||||
@@ -6981,8 +7157,7 @@ err_vdev_del:
|
||||
@@ -7087,8 +7263,7 @@ err_vdev_del:
|
||||
/* Recalc txpower for remaining vdev */
|
||||
ath11k_mac_txpower_recalc(ar);
|
||||
|
||||
@ -329,7 +329,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
}
|
||||
|
||||
@@ -7042,16 +7217,17 @@ static int ath11k_mac_op_ampdu_action(st
|
||||
@@ -7148,16 +7323,17 @@ static int ath11k_mac_op_ampdu_action(st
|
||||
struct ieee80211_ampdu_params *params)
|
||||
{
|
||||
struct ath11k *ar = hw->priv;
|
||||
@ -349,7 +349,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
break;
|
||||
case IEEE80211_AMPDU_TX_START:
|
||||
case IEEE80211_AMPDU_TX_STOP_CONT:
|
||||
@@ -9056,6 +9232,7 @@ static void ath11k_mac_op_sta_statistics
|
||||
@@ -9085,6 +9261,7 @@ static void ath11k_mac_op_sta_statistics
|
||||
{
|
||||
struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
|
||||
struct ath11k *ar = arsta->arvif->ar;
|
||||
@ -357,8 +357,8 @@ 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);
|
||||
@@ -9112,7 +9289,8 @@ static void ath11k_mac_op_sta_statistics
|
||||
ATH11K_DEFAULT_NOISE_FLOOR;
|
||||
@@ -9144,7 +9321,8 @@ static void ath11k_mac_op_sta_statistics
|
||||
|
||||
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG);
|
||||
|
||||
- ath11k_nss_update_sta_stats(sinfo, sta, arsta);
|
||||
@ -369,7 +369,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
@@ -5105,6 +5105,8 @@ enum wmi_vdev_subtype {
|
||||
@@ -5111,6 +5111,8 @@ enum wmi_vdev_subtype {
|
||||
WMI_VDEV_SUBTYPE_MESH_11S,
|
||||
};
|
||||
|
||||
@ -415,8 +415,8 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
int ret;
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
@@ -88,9 +88,9 @@ static inline u32 ath11k_he_gi_to_nl8021
|
||||
return ret;
|
||||
@@ -89,9 +89,9 @@ static inline u32 ath11k_he_gi_to_nl8021
|
||||
return ret;
|
||||
}
|
||||
|
||||
-int ath11k_dp_rx_ampdu_start(struct ath11k *ar,
|
||||
|
||||
@ -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 :
|
||||
@@ -367,6 +372,20 @@ struct ath11k_mgmt_frame_stats {
|
||||
@@ -370,6 +375,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;
|
||||
@@ -428,6 +447,11 @@ struct ath11k_vif {
|
||||
@@ -431,6 +450,11 @@ struct ath11k_vif {
|
||||
struct arvif_nss nss;
|
||||
#endif
|
||||
struct list_head ap_vlan_arvifs;
|
||||
@ -128,7 +128,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
static void ath11k_pdev_caps_update(struct ath11k *ar)
|
||||
{
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
@@ -4175,6 +4206,9 @@ static int ath11k_install_key(struct ath
|
||||
@@ -4265,6 +4296,9 @@ static int ath11k_install_key(struct ath
|
||||
if (test_bit(ATH11K_FLAG_HW_CRYPTO_DISABLED, &ar->ab->dev_flags))
|
||||
return 0;
|
||||
|
||||
@ -138,7 +138,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (cmd == DISABLE_KEY) {
|
||||
arg.key_cipher = WMI_CIPHER_NONE;
|
||||
arg.key_data = NULL;
|
||||
@@ -4264,15 +4298,40 @@ static int ath11k_clear_peer_keys(struct
|
||||
@@ -4353,15 +4387,40 @@ static int ath11k_clear_peer_keys(struct
|
||||
return first_errno;
|
||||
}
|
||||
|
||||
@ -181,7 +181,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
const u8 *peer_addr;
|
||||
int ret = 0;
|
||||
u32 flags = 0;
|
||||
@@ -4290,17 +4349,38 @@ static int ath11k_mac_op_set_key(struct
|
||||
@@ -4379,17 +4438,38 @@ static int ath11k_mac_op_set_key(struct
|
||||
if (key->keyidx > WMI_MAX_KEY_INDEX)
|
||||
return -ENOSPC;
|
||||
|
||||
@ -224,7 +224,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
/* the peer should not disappear in mid-way (unless FW goes awry) since
|
||||
* we already hold conf_mutex. we just make sure its there now.
|
||||
*/
|
||||
@@ -4345,6 +4425,74 @@ static int ath11k_mac_op_set_key(struct
|
||||
@@ -4434,6 +4514,74 @@ static int ath11k_mac_op_set_key(struct
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@ -299,7 +299,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
peer = ath11k_peer_find(ab, arvif->vdev_id, peer_addr);
|
||||
|
||||
@@ -4367,6 +4515,27 @@ static int ath11k_mac_op_set_key(struct
|
||||
@@ -4456,6 +4604,27 @@ static int ath11k_mac_op_set_key(struct
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
@ -327,7 +327,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (peer && cmd == SET_KEY) {
|
||||
peer->keys[key->keyidx] = key;
|
||||
if (key->flags & IEEE80211_KEY_FLAG_PAIRWISE) {
|
||||
@@ -4376,18 +4545,23 @@ static int ath11k_mac_op_set_key(struct
|
||||
@@ -4465,18 +4634,23 @@ static int ath11k_mac_op_set_key(struct
|
||||
peer->mcast_keyidx = key->keyidx;
|
||||
peer->sec_type_grp = ath11k_dp_tx_get_encrypt_type(key->cipher);
|
||||
}
|
||||
@ -354,7 +354,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
switch (key->cipher) {
|
||||
case WLAN_CIPHER_SUITE_TKIP:
|
||||
@@ -6792,7 +6966,7 @@ static int ath11k_mac_op_add_interface(s
|
||||
@@ -6889,7 +7063,7 @@ static int ath11k_mac_op_add_interface(s
|
||||
if ((vif->type == NL80211_IFTYPE_AP_VLAN ||
|
||||
vif->type == NL80211_IFTYPE_STATION) && ab->nss.enabled) {
|
||||
if (ath11k_frame_mode == ATH11K_HW_TXRX_ETHERNET &&
|
||||
@ -363,7 +363,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
vif->offload_flags |= IEEE80211_OFFLOAD_ENCAP_4ADDR;
|
||||
arvif->nss.encap = ATH11K_HW_TXRX_ETHERNET;
|
||||
arvif->nss.decap = ATH11K_HW_TXRX_ETHERNET;
|
||||
@@ -6805,6 +6979,7 @@ static int ath11k_mac_op_add_interface(s
|
||||
@@ -6902,6 +7076,7 @@ static int ath11k_mac_op_add_interface(s
|
||||
vif->addr, ret);
|
||||
goto err;
|
||||
}
|
||||
@ -371,7 +371,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
return ret;
|
||||
}
|
||||
@@ -6829,6 +7004,20 @@ static int ath11k_mac_op_add_interface(s
|
||||
@@ -6926,6 +7101,20 @@ static int ath11k_mac_op_add_interface(s
|
||||
arvif->vdev_id = bit;
|
||||
arvif->vdev_subtype = WMI_VDEV_SUBTYPE_NONE;
|
||||
|
||||
@ -392,7 +392,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
switch (vif->type) {
|
||||
case NL80211_IFTYPE_UNSPECIFIED:
|
||||
case NL80211_IFTYPE_STATION:
|
||||
@@ -6869,7 +7058,7 @@ static int ath11k_mac_op_add_interface(s
|
||||
@@ -6975,7 +7164,7 @@ static int ath11k_mac_op_add_interface(s
|
||||
if (ret) {
|
||||
ath11k_warn(ab, "failed to create WMI vdev %d: %d\n",
|
||||
arvif->vdev_id, ret);
|
||||
@ -401,7 +401,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
}
|
||||
|
||||
ar->num_created_vdevs++;
|
||||
@@ -7034,7 +7223,7 @@ err_peer_del:
|
||||
@@ -7140,7 +7329,7 @@ err_peer_del:
|
||||
if (fbret) {
|
||||
ath11k_warn(ar->ab, "fallback fail to delete peer addr %pM vdev_id %d ret %d\n",
|
||||
vif->addr, arvif->vdev_id, fbret);
|
||||
@ -410,7 +410,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7045,6 +7234,8 @@ err_vdev_del:
|
||||
@@ -7151,6 +7340,8 @@ err_vdev_del:
|
||||
list_del(&arvif->list);
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
|
||||
@ -419,7 +419,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
err:
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
|
||||
@@ -7142,6 +7333,7 @@ err_vdev_del:
|
||||
@@ -7248,6 +7439,7 @@ err_vdev_del:
|
||||
list_del(&arvif->list);
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
|
||||
@ -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,
|
||||
@@ -9835,6 +10027,33 @@ static int ath11k_mac_station_remove(str
|
||||
@@ -9872,6 +10064,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,
|
||||
@@ -9924,6 +10143,34 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -9961,6 +10180,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 &&
|
||||
@@ -10535,8 +10782,11 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10575,8 +10822,11 @@ static int __ath11k_mac_register(struct
|
||||
ab->hw_params.bios_sar_capa)
|
||||
ar->hw->wiphy->sar_capa = ab->hw_params.bios_sar_capa;
|
||||
|
||||
@ -511,7 +511,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (ret) {
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -1938,6 +1938,7 @@ int ath11k_wmi_vdev_install_key(struct a
|
||||
@@ -1982,6 +1982,7 @@ int ath11k_wmi_vdev_install_key(struct a
|
||||
cmd->key_len = arg->key_len;
|
||||
cmd->key_txmic_len = arg->key_txmic_len;
|
||||
cmd->key_rxmic_len = arg->key_rxmic_len;
|
||||
@ -519,7 +519,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
if (arg->key_rsc_counter)
|
||||
memcpy(&cmd->key_rsc_counter, &arg->key_rsc_counter,
|
||||
@@ -4276,6 +4277,7 @@ ath11k_wmi_copy_resource_config(struct w
|
||||
@@ -4321,6 +4322,7 @@ ath11k_wmi_copy_resource_config(struct w
|
||||
wmi_cfg->flags2 = WMI_RSRC_CFG_FLAG2_CALC_NEXT_DTIM_COUNT_SET;
|
||||
wmi_cfg->ema_max_vap_cnt = tg_cfg->ema_max_vap_cnt;
|
||||
wmi_cfg->ema_max_profile_period = tg_cfg->ema_max_profile_period;
|
||||
@ -527,7 +527,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
}
|
||||
|
||||
static int ath11k_init_cmd_send(struct ath11k_pdev_wmi *wmi,
|
||||
@@ -4498,6 +4500,9 @@ int ath11k_wmi_cmd_init(struct ath11k_ba
|
||||
@@ -4543,6 +4545,9 @@ int ath11k_wmi_cmd_init(struct ath11k_ba
|
||||
memset(&init_param, 0, sizeof(init_param));
|
||||
memset(&config, 0, sizeof(config));
|
||||
|
||||
@ -539,7 +539,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (test_bit(WMI_TLV_SERVICE_REG_CC_EXT_EVENT_SUPPORT,
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
@@ -3749,6 +3749,7 @@ struct wmi_vdev_install_key_arg {
|
||||
@@ -3755,6 +3755,7 @@ struct wmi_vdev_install_key_arg {
|
||||
u32 vdev_id;
|
||||
const u8 *macaddr;
|
||||
u32 key_idx;
|
||||
@ -547,7 +547,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
u32 key_flags;
|
||||
u32 key_cipher;
|
||||
u32 key_len;
|
||||
@@ -5809,6 +5810,7 @@ struct target_resource_config {
|
||||
@@ -5815,6 +5816,7 @@ struct target_resource_config {
|
||||
u32 bpf_instruction_size;
|
||||
u32 max_bssid_rx_filters;
|
||||
u32 use_pdev_id;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -1126,6 +1126,7 @@ struct ath11k_base {
|
||||
@@ -1129,6 +1129,7 @@ struct ath11k_base {
|
||||
u32 max_ast_index;
|
||||
u32 num_ast_entries;
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@ 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
|
||||
@@ -761,6 +761,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -769,6 +769,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
struct sk_buff *msdu;
|
||||
struct hal_tx_status ts = { 0 };
|
||||
struct dp_tx_ring *tx_ring = &dp->tx_ring[ring_id];
|
||||
@ -32,7 +32,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
u32 *desc;
|
||||
u32 msdu_id;
|
||||
u8 mac_id;
|
||||
@@ -769,9 +770,18 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -777,9 +778,18 @@ void ath11k_dp_tx_completion_handler(str
|
||||
|
||||
ath11k_hal_srng_access_begin(ab, status_ring);
|
||||
|
||||
@ -143,5 +143,5 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
+void ath11k_hal_srng_dst_invalidate_entry(struct ath11k_base *ab,
|
||||
+ struct hal_srng *srng, int entries);
|
||||
u32 *ath11k_hal_srng_src_peek(struct ath11k_base *ab, struct hal_srng *srng);
|
||||
u32 *ath11k_hal_srng_src_get_next_reaped(struct ath11k_base *ab,
|
||||
struct hal_srng *srng);
|
||||
u32 *ath11k_hal_srng_src_next_peek(struct ath11k_base *ab,
|
||||
struct hal_srng *srng);
|
||||
|
||||
@ -55,7 +55,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
tlv_tag, ptr - begin, len, tlv_len);
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -2455,10 +2461,60 @@ ath11k_dp_rx_h_find_peer(struct ath11k_b
|
||||
@@ -2454,10 +2460,60 @@ ath11k_dp_rx_h_find_peer(struct ath11k_b
|
||||
return peer;
|
||||
}
|
||||
|
||||
@ -117,7 +117,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
{
|
||||
bool fill_crypto_hdr;
|
||||
enum hal_encrypt_type enctype;
|
||||
@@ -2469,9 +2525,13 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
@@ -2468,9 +2524,13 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
struct rx_attention *rx_attention;
|
||||
u32 err_bitmap;
|
||||
|
||||
@ -132,7 +132,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
rxcb->is_mcbc = fill_crypto_hdr;
|
||||
|
||||
if (rxcb->is_mcbc) {
|
||||
@@ -2482,6 +2542,26 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
@@ -2481,6 +2541,26 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
peer = ath11k_dp_rx_h_find_peer(ar->ab, msdu);
|
||||
if (peer) {
|
||||
@ -159,7 +159,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
if (rxcb->is_mcbc)
|
||||
enctype = peer->sec_type_grp;
|
||||
else
|
||||
@@ -2491,6 +2571,8 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
@@ -2490,6 +2570,8 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
}
|
||||
spin_unlock_bh(&ar->ab->base_lock);
|
||||
|
||||
@ -168,7 +168,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
rx_attention = ath11k_dp_rx_get_attention(ar->ab, rx_desc);
|
||||
err_bitmap = ath11k_dp_rx_h_attn_mpdu_err(rx_attention);
|
||||
if (enctype != HAL_ENCRYPT_TYPE_OPEN && !err_bitmap)
|
||||
@@ -2732,7 +2814,8 @@ static void ath11k_dp_rx_deliver_msdu(st
|
||||
@@ -2731,7 +2813,8 @@ static void ath11k_dp_rx_deliver_msdu(st
|
||||
static int ath11k_dp_rx_process_msdu(struct ath11k *ar,
|
||||
struct sk_buff *msdu,
|
||||
struct sk_buff_head *msdu_list,
|
||||
@ -178,7 +178,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
{
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
struct hal_rx_desc *rx_desc, *lrx_desc;
|
||||
@@ -2799,8 +2882,13 @@ static int ath11k_dp_rx_process_msdu(str
|
||||
@@ -2798,8 +2881,13 @@ static int ath11k_dp_rx_process_msdu(str
|
||||
}
|
||||
}
|
||||
|
||||
@ -193,7 +193,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
rx_status->flag |= RX_FLAG_SKIP_MONITOR | RX_FLAG_DUP_VALIDATED;
|
||||
|
||||
@@ -2815,10 +2903,12 @@ static void ath11k_dp_rx_process_receive
|
||||
@@ -2814,10 +2902,12 @@ static void ath11k_dp_rx_process_receive
|
||||
struct sk_buff_head *msdu_list,
|
||||
int mac_id)
|
||||
{
|
||||
@ -206,7 +206,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
if (skb_queue_empty(msdu_list))
|
||||
return;
|
||||
@@ -2835,7 +2925,12 @@ static void ath11k_dp_rx_process_receive
|
||||
@@ -2834,7 +2924,12 @@ static void ath11k_dp_rx_process_receive
|
||||
}
|
||||
|
||||
while ((msdu = __skb_dequeue(msdu_list))) {
|
||||
@ -220,7 +220,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
if (unlikely(ret)) {
|
||||
ath11k_dbg(ab, ATH11K_DBG_DATA,
|
||||
"Unable to process msdu %d", ret);
|
||||
@@ -2843,7 +2938,10 @@ static void ath11k_dp_rx_process_receive
|
||||
@@ -2842,7 +2937,10 @@ static void ath11k_dp_rx_process_receive
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -232,7 +232,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2852,11 +2950,12 @@ void ath11k_dp_rx_from_nss(struct ath11k
|
||||
@@ -2851,11 +2949,12 @@ void ath11k_dp_rx_from_nss(struct ath11k
|
||||
{
|
||||
struct ieee80211_rx_status rx_status = {0};
|
||||
struct ath11k_skb_rxcb *rxcb;
|
||||
@ -246,7 +246,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
rx_status.flag |= RX_FLAG_SKIP_MONITOR | RX_FLAG_DUP_VALIDATED;
|
||||
|
||||
@@ -4324,6 +4423,7 @@ static int ath11k_dp_rx_h_null_q_desc(st
|
||||
@@ -4387,6 +4486,7 @@ static int ath11k_dp_rx_h_null_q_desc(st
|
||||
struct ieee80211_rx_status *status,
|
||||
struct sk_buff_head *msdu_list)
|
||||
{
|
||||
@ -254,7 +254,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;
|
||||
@@ -4373,7 +4473,8 @@ static int ath11k_dp_rx_h_null_q_desc(st
|
||||
@@ -4436,7 +4536,8 @@ static int ath11k_dp_rx_h_null_q_desc(st
|
||||
}
|
||||
ath11k_dp_rx_h_ppdu(ar, desc, status);
|
||||
|
||||
@ -328,7 +328,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
|
||||
@@ -10197,6 +10197,14 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10234,6 +10234,14 @@ static int ath11k_mac_op_sta_state(struc
|
||||
}
|
||||
} else if (old_state == IEEE80211_STA_AUTHORIZED &&
|
||||
new_state == IEEE80211_STA_ASSOC) {
|
||||
|
||||
@ -34,7 +34,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
};
|
||||
|
||||
struct ath11k_skb_cb {
|
||||
@@ -921,10 +922,13 @@ struct ath11k_dp_ring_bp_stats {
|
||||
@@ -924,10 +925,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];
|
||||
@ -295,7 +295,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
if (!skb_cb->vif) {
|
||||
ieee80211_free_txskb(ar->hw, msdu);
|
||||
return;
|
||||
@@ -632,6 +663,7 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -636,6 +667,7 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
struct ath11k_peer *peer;
|
||||
struct ath11k_sta *arsta;
|
||||
struct rate_info rate;
|
||||
@ -303,7 +303,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
if (WARN_ON_ONCE(ts->buf_rel_source != HAL_WBM_REL_SRC_MODULE_TQM)) {
|
||||
/* Must not happen */
|
||||
@@ -642,6 +674,20 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -646,6 +678,20 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
|
||||
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
|
||||
@ -324,7 +324,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;
|
||||
@@ -696,7 +742,7 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -704,7 +750,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);
|
||||
@ -333,7 +333,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);
|
||||
@@ -752,19 +798,36 @@ static inline void ath11k_dp_tx_status_p
|
||||
@@ -760,19 +806,36 @@ static inline void ath11k_dp_tx_status_p
|
||||
ts->rate_stats = 0;
|
||||
}
|
||||
|
||||
@ -372,7 +372,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
spin_lock_bh(&status_ring->lock);
|
||||
|
||||
@@ -779,33 +842,27 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -787,33 +850,27 @@ void ath11k_dp_tx_completion_handler(str
|
||||
|
||||
ath11k_hal_srng_dst_invalidate_entry(ab, status_ring, valid_entries);
|
||||
|
||||
@ -420,7 +420,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,
|
||||
@@ -838,7 +895,6 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -846,7 +903,6 @@ void ath11k_dp_tx_completion_handler(str
|
||||
wake_up(&ar->dp.tx_empty_waitq);
|
||||
|
||||
ath11k_dp_tx_complete_msdu(ar, msdu, &ts);
|
||||
@ -430,7 +430,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -6387,12 +6387,22 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
@@ -6484,12 +6484,22 @@ static void ath11k_mac_op_tx(struct ieee
|
||||
if (control->sta)
|
||||
arsta = ath11k_sta_to_arsta(control->sta);
|
||||
|
||||
@ -454,7 +454,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
ieee80211_free_txskb(ar->hw, skb);
|
||||
return;
|
||||
}
|
||||
@@ -7339,7 +7349,7 @@ err_vdev_del:
|
||||
@@ -7445,7 +7455,7 @@ err_vdev_del:
|
||||
idr_for_each(&ar->txmgmt_idr,
|
||||
ath11k_mac_vif_txmgmt_idr_remove, vif);
|
||||
|
||||
@ -507,7 +507,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
},
|
||||
{
|
||||
.name = "qca6390 hw2.0",
|
||||
@@ -359,7 +360,6 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -362,7 +363,6 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.supports_regdb = false,
|
||||
.fix_l1ss = true,
|
||||
.credit_flow = false,
|
||||
@ -515,7 +515,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,
|
||||
@@ -385,6 +385,8 @@ static struct ath11k_hw_params ath11k_hw
|
||||
@@ -388,6 +388,8 @@ static struct ath11k_hw_params ath11k_hw
|
||||
.smp2p_wow_exit = false,
|
||||
.support_fw_mac_sequence = false,
|
||||
.support_dual_stations = false,
|
||||
@ -524,7 +524,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
},
|
||||
{
|
||||
.name = "wcn6855 hw2.0",
|
||||
@@ -2247,6 +2249,9 @@ int ath11k_core_pre_init(struct ath11k_b
|
||||
@@ -2256,6 +2258,9 @@ int ath11k_core_pre_init(struct ath11k_b
|
||||
if (nss_offload)
|
||||
ab->nss.stats_enabled = 1;
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/Makefile
|
||||
+++ b/drivers/net/wireless/ath/ath11k/Makefile
|
||||
@@ -28,6 +28,10 @@ ath11k-$(CPTCFG_ATH11K_SPECTRAL) += spec
|
||||
@@ -29,6 +29,10 @@ ath11k-$(CPTCFG_ATH11K_SPECTRAL) += spec
|
||||
ath11k-$(CONFIG_PM) += wow.o
|
||||
ath11k-$(CPTCFG_ATH11K_NSS_SUPPORT) += nss.o
|
||||
|
||||
@ -1238,7 +1238,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -3476,6 +3476,18 @@ static void ath11k_mac_op_nss_bss_info_c
|
||||
@@ -3563,6 +3563,18 @@ static void ath11k_mac_op_nss_bss_info_c
|
||||
ath11k_warn(ar->ab, "failed to set ap_isolate in nss %d\n", ret);
|
||||
}
|
||||
|
||||
@ -1257,7 +1257,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
}
|
||||
|
||||
@@ -10237,6 +10249,28 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10274,6 +10286,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,
|
||||
@@ -10295,6 +10329,9 @@ static const struct ieee80211_ops ath11k
|
||||
@@ -10332,6 +10366,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,
|
||||
@@ -10804,6 +10841,8 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10844,6 +10881,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
|
||||
@@ -164,6 +164,7 @@ ATH11K=
|
||||
@@ -166,6 +166,7 @@ ATH11K=
|
||||
ATH11K_AHB=
|
||||
ATH11K_PCI=
|
||||
ATH11K_NSS_SUPPORT=
|
||||
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -7358,8 +7358,10 @@ err_vdev_del:
|
||||
@@ -7464,8 +7464,10 @@ err_vdev_del:
|
||||
kfree(arvif->vlan_keyid_map);
|
||||
ath11k_peer_cleanup(ar, arvif->vdev_id);
|
||||
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
spin_lock_bh(&ab->dp.tx_ring[i].tx_idr_lock);
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -6039,13 +6039,13 @@ static int wmi_process_tx_comp(struct at
|
||||
@@ -6084,13 +6084,13 @@ static int wmi_process_tx_comp(struct at
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ath11k_skb_cb *skb_cb;
|
||||
struct ieee80211_hdr *hdr;
|
||||
@ -51,7 +51,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
spin_lock_bh(&ar->txmgmt_idr_lock);
|
||||
msdu = idr_find(&ar->txmgmt_idr, tx_compl_param->desc_id);
|
||||
|
||||
@@ -6053,6 +6053,7 @@ static int wmi_process_tx_comp(struct at
|
||||
@@ -6098,6 +6098,7 @@ static int wmi_process_tx_comp(struct at
|
||||
ath11k_warn(ar->ab, "received mgmt tx compl for invalid msdu_id: %d\n",
|
||||
tx_compl_param->desc_id);
|
||||
spin_unlock_bh(&ar->txmgmt_idr_lock);
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
@@ -6061,6 +6062,28 @@ static int wmi_process_tx_comp(struct at
|
||||
@@ -6106,6 +6107,28 @@ static int wmi_process_tx_comp(struct at
|
||||
|
||||
skb_cb = ATH11K_SKB_CB(msdu);
|
||||
dma_unmap_single(ar->ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
@ -88,7 +88,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
|
||||
info = IEEE80211_SKB_CB(msdu);
|
||||
if ((!(info->flags & IEEE80211_TX_CTL_NO_ACK)) &&
|
||||
@@ -6076,34 +6099,6 @@ static int wmi_process_tx_comp(struct at
|
||||
@@ -6121,34 +6144,6 @@ static int wmi_process_tx_comp(struct at
|
||||
*/
|
||||
info->status.rates[0].idx = -1;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
@@ -9,7 +9,7 @@
|
||||
@@ -10,7 +10,7 @@
|
||||
#include "rx_desc.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -1239,6 +1239,7 @@ static void ath11k_ahb_remove_prepare(st
|
||||
@@ -1265,6 +1265,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
|
||||
@@ -2316,6 +2316,7 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
@@ -2325,6 +2325,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);
|
||||
@@ -2329,6 +2330,8 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
@@ -2338,6 +2339,8 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
INIT_WORK(&ab->restart_work, ath11k_core_restart);
|
||||
INIT_WORK(&ab->update_11d_work, ath11k_update_11d);
|
||||
INIT_WORK(&ab->reset_work, ath11k_core_reset);
|
||||
@ -83,7 +83,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
||||
#include "fw.h"
|
||||
|
||||
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
|
||||
@@ -1130,6 +1131,9 @@ struct ath11k_base {
|
||||
@@ -1133,6 +1134,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
|
||||
@@ -651,9 +651,41 @@ err_out:
|
||||
@@ -655,9 +655,41 @@ err_out:
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
{
|
||||
struct ieee80211_tx_status status = { 0 };
|
||||
struct ieee80211_rate_status status_rate = { 0 };
|
||||
@@ -663,9 +695,11 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -667,9 +699,11 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
struct ath11k_peer *peer;
|
||||
struct ath11k_sta *arsta;
|
||||
struct rate_info rate;
|
||||
@ -69,7 +69,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
/* Must not happen */
|
||||
return;
|
||||
}
|
||||
@@ -674,11 +708,14 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -678,11 +712,14 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
|
||||
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
|
||||
@ -86,7 +86,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
}
|
||||
if (skb_has_frag_list(msdu)) {
|
||||
kfree_skb_list(skb_shinfo(msdu)->frag_list);
|
||||
@@ -688,6 +725,8 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -692,6 +729,8 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
return;
|
||||
}
|
||||
|
||||
@ -95,7 +95,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;
|
||||
@@ -704,10 +743,10 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -708,10 +747,10 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
/* skip tx rate update from ieee80211_status*/
|
||||
info->status.rates[0].idx = -1;
|
||||
|
||||
@ -159,7 +159,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
ieee80211_free_txskb(ar->hw, msdu);
|
||||
return;
|
||||
@@ -767,37 +806,6 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -775,37 +814,6 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
ieee80211_tx_status_ext(ar->hw, &status);
|
||||
}
|
||||
|
||||
@ -197,7 +197,7 @@ 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;
|
||||
@@ -821,9 +829,9 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -829,9 +837,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;
|
||||
@ -208,7 +208,7 @@ Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||
u32 *desc;
|
||||
u32 msdu_id, desc_id;
|
||||
u8 mac_id;
|
||||
@@ -863,14 +871,16 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -871,14 +879,16 @@ void ath11k_dp_tx_completion_handler(str
|
||||
|
||||
while (count--) {
|
||||
tx_status = &tx_ring->tx_status[i++];
|
||||
@ -227,7 +227,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 +904,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -902,7 +912,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);
|
||||
|
||||
|
||||
@ -251,7 +251,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",
|
||||
@@ -870,6 +881,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -878,6 +889,7 @@ void ath11k_dp_tx_completion_handler(str
|
||||
}
|
||||
|
||||
while (count--) {
|
||||
@ -259,7 +259,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,
|
||||
@@ -888,17 +900,19 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -896,17 +908,19 @@ void ath11k_dp_tx_completion_handler(str
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -10727,6 +10727,8 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10767,6 +10767,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
|
||||
@@ -5955,12 +5955,23 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6018,12 +6018,23 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
pmon->mon_ppdu_status = DP_PPDU_STATUS_START;
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Anilkumar Kolli <quic_akolli@quicinc.com>
|
||||
rcu_read_lock();
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
peer = ath11k_peer_find_by_id(ab, ppdu_info->peer_id);
|
||||
@@ -6284,6 +6295,13 @@ static int ath11k_dp_full_mon_process_rx
|
||||
@@ -6347,6 +6358,13 @@ static int ath11k_dp_full_mon_process_rx
|
||||
|
||||
spin_lock_bh(&pmon->mon_lock);
|
||||
|
||||
@ -57,7 +57,7 @@ Signed-off-by: Anilkumar Kolli <quic_akolli@quicinc.com>
|
||||
sw_mon_entries = &pmon->sw_mon_entries;
|
||||
rx_mon_stats = &pmon->rx_mon_stats;
|
||||
|
||||
@@ -6323,7 +6341,6 @@ static int ath11k_dp_full_mon_process_rx
|
||||
@@ -6386,7 +6404,6 @@ static int ath11k_dp_full_mon_process_rx
|
||||
}
|
||||
|
||||
rx_mon_stats->dest_ppdu_done++;
|
||||
@ -65,7 +65,7 @@ Signed-off-by: Anilkumar Kolli <quic_akolli@quicinc.com>
|
||||
pmon->buf_state = DP_MON_STATUS_LAG;
|
||||
pmon->mon_status_paddr = sw_mon_entries->mon_status_paddr;
|
||||
pmon->hold_mon_dst_ring = true;
|
||||
@@ -6354,16 +6371,10 @@ reap_status_ring:
|
||||
@@ -6417,16 +6434,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
|
||||
@@ -1932,6 +1932,11 @@ static int ath11k_core_reconfigure_on_cr
|
||||
@@ -1944,6 +1944,11 @@ static int ath11k_core_reconfigure_on_cr
|
||||
|
||||
clear_bit(ATH11K_FLAG_CRASH_FLUSH, &ab->dev_flags);
|
||||
|
||||
|
||||
@ -57,7 +57,7 @@ Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
spin_unlock_bh(&rx_ring->idr_lock);
|
||||
if (buf_id <= 0)
|
||||
goto fail_dma_unmap;
|
||||
@@ -3142,6 +3142,16 @@ try_again:
|
||||
@@ -3141,6 +3141,16 @@ try_again:
|
||||
while (likely(desc =
|
||||
(struct hal_reo_dest_ring *)ath11k_hal_srng_dst_get_next_entry(ab,
|
||||
srng))) {
|
||||
@ -74,7 +74,7 @@ Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
cookie = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE,
|
||||
desc->buf_addr_info.info1);
|
||||
buf_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_BUF_ID,
|
||||
@@ -3172,8 +3182,6 @@ try_again:
|
||||
@@ -3171,8 +3181,6 @@ try_again:
|
||||
|
||||
num_buffs_reaped[mac_id]++;
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -4902,12 +4902,6 @@ static int ath11k_station_disassoc(struc
|
||||
@@ -4991,12 +4991,6 @@ static int ath11k_station_disassoc(struc
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -10149,6 +10143,17 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10186,6 +10180,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
|
||||
@@ -940,6 +940,9 @@ struct ath11k_soc_dp_stats {
|
||||
@@ -943,6 +943,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];
|
||||
@ -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
|
||||
@@ -1116,8 +1116,10 @@ int ath11k_dp_alloc(struct ath11k_base *
|
||||
@@ -1115,8 +1115,10 @@ int ath11k_dp_alloc(struct ath11k_base *
|
||||
|
||||
INIT_LIST_HEAD(&dp->reo_cmd_list);
|
||||
INIT_LIST_HEAD(&dp->reo_cmd_cache_flush_list);
|
||||
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Rajat Soni <quic_rajson@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -6496,7 +6496,9 @@ static int ath11k_mac_op_start(struct ie
|
||||
@@ -6593,7 +6593,9 @@ static int ath11k_mac_op_start(struct ie
|
||||
break;
|
||||
case ATH11K_STATE_RESTARTING:
|
||||
ar->state = ATH11K_STATE_RESTARTED;
|
||||
|
||||
@ -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
|
||||
@@ -8655,6 +8655,8 @@ static int ath11k_mac_flush_tx_complete(
|
||||
@@ -8688,6 +8688,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
|
||||
@@ -10718,6 +10718,7 @@ static int __ath11k_mac_register(struct
|
||||
@@ -10758,6 +10758,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
|
||||
@@ -6094,7 +6094,9 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6089,7 +6089,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))) {
|
||||
@@ -6112,7 +6114,6 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6107,7 +6109,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);
|
||||
|
||||
@@ -6140,6 +6141,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6135,6 +6136,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);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/Kconfig
|
||||
+++ b/drivers/net/wireless/ath/ath11k/Kconfig
|
||||
@@ -80,6 +80,24 @@ config ATH11K_DEBUGFS
|
||||
@@ -81,6 +81,24 @@ config ATH11K_DEBUGFS
|
||||
|
||||
If unsure, say Y to make it easier to debug problems.
|
||||
|
||||
@ -27,9 +27,9 @@
|
||||
depends on ATH11K && EVENT_TRACING
|
||||
--- a/drivers/net/wireless/ath/ath11k/Makefile
|
||||
+++ b/drivers/net/wireless/ath/ath11k/Makefile
|
||||
@@ -20,7 +20,9 @@ ath11k-y += core.o \
|
||||
pcic.o \
|
||||
fw.o
|
||||
@@ -21,7 +21,9 @@ ath11k-y += core.o \
|
||||
fw.o \
|
||||
p2p.o
|
||||
|
||||
-ath11k-$(CPTCFG_ATH11K_DEBUGFS) += debugfs.o debugfs_htt_stats.o debugfs_sta.o
|
||||
+ath11k-$(CPTCFG_ATH11K_DEBUGFS) += debugfs.o
|
||||
@ -153,7 +153,7 @@
|
||||
#include "hw.h"
|
||||
#include "peer.h"
|
||||
#include "mac.h"
|
||||
@@ -550,7 +552,9 @@ static void ath11k_dp_tx_cache_peer_stat
|
||||
@@ -554,7 +556,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;
|
||||
@@ -639,8 +643,10 @@ void ath11k_dp_tx_update_txcompl(struct
|
||||
@@ -643,8 +647,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
|
||||
@@ -10327,7 +10327,7 @@ static const struct ieee80211_ops ath11k
|
||||
@@ -10364,7 +10364,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
|
||||
@@ -169,6 +169,8 @@ ATH11K_MEM_PROFILE_256M=
|
||||
@@ -171,6 +171,8 @@ ATH11K_MEM_PROFILE_256M=
|
||||
ATH11K_MEM_PROFILE_512M=
|
||||
ATH11K_DEBUG=
|
||||
ATH11K_DEBUGFS=
|
||||
|
||||
@ -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",
|
||||
@@ -890,12 +896,14 @@ void ath11k_dp_tx_completion_handler(str
|
||||
@@ -898,12 +904,14 @@ void ath11k_dp_tx_completion_handler(str
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@ -228,7 +228,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
static void ath11k_dp_service_mon_ring(struct timer_list *t)
|
||||
{
|
||||
struct ath11k_base *ab = from_timer(ab, t, mon_reap_timer);
|
||||
@@ -2390,6 +2425,49 @@ int ath11k_dp_rx_crypto_icv_len(struct a
|
||||
@@ -2389,6 +2424,49 @@ int ath11k_dp_rx_crypto_icv_len(struct a
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -278,7 +278,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
static void ath11k_dp_rx_h_undecap_nwifi(struct ath11k *ar,
|
||||
struct sk_buff *msdu,
|
||||
u8 *first_hdr,
|
||||
@@ -2403,7 +2481,8 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
@@ -2402,7 +2480,8 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
u8 da[ETH_ALEN];
|
||||
u8 sa[ETH_ALEN];
|
||||
u16 qos_ctl = 0;
|
||||
@ -288,7 +288,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
/* copy SA & DA and pull decapped header */
|
||||
hdr = (struct ieee80211_hdr *)msdu->data;
|
||||
@@ -2412,7 +2491,7 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
@@ -2411,7 +2490,7 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
ether_addr_copy(sa, ieee80211_get_SA(hdr));
|
||||
skb_pull(msdu, ieee80211_hdrlen(hdr->frame_control));
|
||||
|
||||
@ -297,7 +297,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
/* original 802.11 header is valid for the first msdu
|
||||
* hence we can reuse the same header
|
||||
*/
|
||||
@@ -2442,16 +2521,23 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
@@ -2441,16 +2520,23 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
|
||||
/* copy decap header before overwriting for reuse below */
|
||||
memcpy(decap_hdr, (uint8_t *)hdr, hdr_len);
|
||||
@ -326,7 +326,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
memcpy(skb_push(msdu,
|
||||
IEEE80211_QOS_CTL_LEN), &qos_ctl,
|
||||
IEEE80211_QOS_CTL_LEN);
|
||||
@@ -2567,6 +2653,20 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
@@ -2566,6 +2652,20 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
u8 da[ETH_ALEN];
|
||||
u8 sa[ETH_ALEN];
|
||||
void *rfc1042;
|
||||
@ -347,7 +347,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
rfc1042 = ath11k_dp_rx_h_find_rfc1042(ar, msdu, enctype);
|
||||
if (WARN_ON_ONCE(!rfc1042))
|
||||
@@ -2595,6 +2695,7 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
@@ -2594,6 +2694,7 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
|
||||
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
|
||||
|
||||
@ -355,7 +355,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
/* original 802.11 header has a different DA and in
|
||||
* case of 4addr it may also have different SA
|
||||
*/
|
||||
@@ -2613,6 +2714,7 @@ static void ath11k_dp_rx_h_undecap_snap(
|
||||
@@ -2612,6 +2713,7 @@ static void ath11k_dp_rx_h_undecap_snap(
|
||||
size_t hdr_len;
|
||||
u8 l3_pad_bytes;
|
||||
struct hal_rx_desc *rx_desc;
|
||||
@ -363,7 +363,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
|
||||
/* Delivered decapped frame:
|
||||
* [amsdu header] <-- replaced with 802.11 hdr
|
||||
@@ -2626,6 +2728,11 @@ static void ath11k_dp_rx_h_undecap_snap(
|
||||
@@ -2625,6 +2727,11 @@ static void ath11k_dp_rx_h_undecap_snap(
|
||||
skb_put(msdu, l3_pad_bytes);
|
||||
skb_pull(msdu, sizeof(struct ath11k_dp_amsdu_subframe_hdr) + l3_pad_bytes);
|
||||
|
||||
@ -375,7 +375,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
hdr = (struct ieee80211_hdr *)first_hdr;
|
||||
hdr_len = ieee80211_hdrlen(hdr->frame_control);
|
||||
|
||||
@@ -3099,6 +3206,20 @@ static int ath11k_dp_rx_process_msdu(str
|
||||
@@ -3098,6 +3205,20 @@ static int ath11k_dp_rx_process_msdu(str
|
||||
goto free_out;
|
||||
}
|
||||
|
||||
@ -396,7 +396,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
rxcb = ATH11K_SKB_RXCB(msdu);
|
||||
rxcb->rx_desc = rx_desc;
|
||||
msdu_len = ath11k_dp_rx_h_msdu_start_msdu_len(ab, rx_desc);
|
||||
@@ -3111,8 +3232,9 @@ static int ath11k_dp_rx_process_msdu(str
|
||||
@@ -3110,8 +3231,9 @@ static int ath11k_dp_rx_process_msdu(str
|
||||
hdr_status = ath11k_dp_rx_h_80211_hdr(ab, rx_desc);
|
||||
ret = -EINVAL;
|
||||
ath11k_warn(ab, "invalid msdu len %u\n", msdu_len);
|
||||
@ -408,7 +408,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
|
||||
ath11k_dbg_dump(ab, ATH11K_DBG_DATA, NULL, "", rx_desc,
|
||||
sizeof(struct hal_rx_desc));
|
||||
goto free_out;
|
||||
@@ -4075,6 +4197,7 @@ static int ath11k_dp_rx_h_verify_tkip_mi
|
||||
@@ -4070,6 +4192,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;
|
||||
|
||||
@@ -4355,8 +4478,8 @@ static void ath11k_dp_rx_h_sort_frags(st
|
||||
@@ -4350,8 +4473,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;
|
||||
|
||||
@@ -4586,8 +4709,9 @@ ath11k_dp_process_rx_err_buf(struct ath1
|
||||
@@ -4581,8 +4704,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);
|
||||
@@ -5212,6 +5336,47 @@ void ath11k_dp_rx_pdev_free(struct ath11
|
||||
@@ -5207,6 +5331,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;
|
||||
@@ -5305,6 +5470,12 @@ config_refill_ring:
|
||||
@@ -5300,6 +5465,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
|
||||
@@ -1275,6 +1275,8 @@ int ath11k_dp_tx_htt_rx_filter_setup(str
|
||||
@@ -1283,6 +1283,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);
|
||||
@@ -1284,6 +1286,26 @@ int ath11k_dp_tx_htt_rx_filter_setup(str
|
||||
@@ -1292,6 +1294,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;
|
||||
@@ -1362,6 +1384,7 @@ int ath11k_dp_tx_htt_monitor_mode_ring_c
|
||||
@@ -1370,6 +1392,7 @@ int ath11k_dp_tx_htt_monitor_mode_ring_c
|
||||
}
|
||||
|
||||
ring_id = dp->rxdma_mon_buf_ring.refill_buf_ring.ring_id;
|
||||
|
||||
@ -28,7 +28,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -3386,18 +3386,16 @@ try_again:
|
||||
@@ -3385,18 +3385,16 @@ try_again:
|
||||
ar = ab->pdevs[mac_id].ar;
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
spin_lock_bh(&rx_ring->idr_lock);
|
||||
@ -50,7 +50,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
dma_unmap_single(ab->dev, rxcb->paddr,
|
||||
msdu->len + skb_tailroom(msdu),
|
||||
DMA_FROM_DEVICE);
|
||||
@@ -4672,17 +4670,14 @@ ath11k_dp_process_rx_err_buf(struct ath1
|
||||
@@ -4667,17 +4665,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),
|
||||
@@ -5088,18 +5083,16 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5083,18 +5078,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);
|
||||
@@ -5214,16 +5207,14 @@ int ath11k_dp_process_rxdma_err(struct a
|
||||
@@ -5209,16 +5202,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,
|
||||
@@ -6428,16 +6419,14 @@ ath11k_dp_rx_full_mon_mpdu_pop(struct at
|
||||
@@ -6423,16 +6414,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
|
||||
@@ -700,6 +700,11 @@ struct ath11k_per_peer_tx_stats {
|
||||
@@ -703,6 +703,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;
|
||||
@@ -849,6 +854,7 @@ struct ath11k {
|
||||
@@ -852,6 +857,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
|
||||
@@ -911,7 +911,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
@@ -910,7 +910,7 @@ int ath11k_dp_service_srng(struct ath11k
|
||||
|
||||
hal_params = ab->hw_params.hal_params;
|
||||
ath11k_dp_rxbufs_replenish(ab, id, rx_ring, 0,
|
||||
@ -114,7 +114,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -3348,11 +3367,14 @@ int ath11k_dp_process_rx(struct ath11k_b
|
||||
@@ -3347,11 +3366,14 @@ int ath11k_dp_process_rx(struct ath11k_b
|
||||
struct ath11k *ar;
|
||||
struct hal_reo_dest_ring *desc;
|
||||
enum hal_reo_dest_ring_push_reason push_reason;
|
||||
@ -130,7 +130,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
|
||||
srng = &ab->hal.srng_list[dp->reo_dst_ring[ring_id].ring_id];
|
||||
|
||||
@@ -3385,8 +3407,15 @@ try_again:
|
||||
@@ -3384,8 +3406,15 @@ try_again:
|
||||
|
||||
ar = ab->pdevs[mac_id].ar;
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
@ -147,7 +147,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
spin_unlock_bh(&rx_ring->idr_lock);
|
||||
if (unlikely(!msdu)) {
|
||||
ath11k_warn(ab, "frame rx with invalid buf_id %d\n",
|
||||
@@ -3464,9 +3493,12 @@ try_again:
|
||||
@@ -3463,9 +3492,12 @@ try_again:
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
|
||||
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i],
|
||||
@ -161,7 +161,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
return total_msdu_reaped;
|
||||
}
|
||||
|
||||
@@ -4832,7 +4864,7 @@ exit:
|
||||
@@ -4827,7 +4859,7 @@ exit:
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
|
||||
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, n_bufs_reaped[i],
|
||||
@ -170,7 +170,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
}
|
||||
|
||||
return tot_n_bufs_reaped;
|
||||
@@ -5048,14 +5080,17 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5043,14 +5075,17 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
struct sk_buff *msdu;
|
||||
struct sk_buff_head msdu_list[MAX_RADIOS];
|
||||
struct ath11k_skb_rxcb *rxcb;
|
||||
@ -189,7 +189,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
|
||||
srng = &ab->hal.srng_list[dp->rx_rel_ring.ring_id];
|
||||
|
||||
@@ -5081,9 +5116,15 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5076,9 +5111,15 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
|
||||
ar = ab->pdevs[mac_id].ar;
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
@ -206,7 +206,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
spin_unlock_bh(&rx_ring->idr_lock);
|
||||
if (!msdu) {
|
||||
ath11k_warn(ab, "frame rx with invalid buf_id %d pdev %d\n",
|
||||
@@ -5128,7 +5169,7 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5123,7 +5164,7 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
|
||||
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i],
|
||||
@ -215,7 +215,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
@@ -5150,6 +5191,8 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
@@ -5145,6 +5186,8 @@ int ath11k_dp_rx_process_wbm_err(struct
|
||||
}
|
||||
rcu_read_unlock();
|
||||
done:
|
||||
@ -224,7 +224,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
return total_num_buffs_reaped;
|
||||
}
|
||||
|
||||
@@ -5235,7 +5278,7 @@ int ath11k_dp_process_rxdma_err(struct a
|
||||
@@ -5230,7 +5273,7 @@ int ath11k_dp_process_rxdma_err(struct a
|
||||
|
||||
if (num_buf_freed)
|
||||
ath11k_dp_rxbufs_replenish(ab, mac_id, rx_ring, num_buf_freed,
|
||||
@ -233,7 +233,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
|
||||
return budget - quota;
|
||||
}
|
||||
@@ -6181,12 +6224,12 @@ static void ath11k_dp_rx_mon_dest_proces
|
||||
@@ -6176,12 +6219,12 @@ static void ath11k_dp_rx_mon_dest_proces
|
||||
ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id,
|
||||
&dp->rxdma_mon_buf_ring,
|
||||
rx_bufs_used,
|
||||
@ -248,7 +248,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6696,7 +6739,7 @@ next_entry:
|
||||
@@ -6691,7 +6734,7 @@ next_entry:
|
||||
ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id,
|
||||
&dp->rxdma_mon_buf_ring,
|
||||
rx_bufs_used,
|
||||
@ -259,7 +259,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
reap_status_ring:
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
@@ -11,6 +11,8 @@
|
||||
@@ -12,6 +12,8 @@
|
||||
|
||||
#define DP_MAX_NWIFI_HDR_LEN 36
|
||||
|
||||
@ -268,7 +268,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
|
||||
#define DP_RX_MPDU_ERR_FCS BIT(0)
|
||||
#define DP_RX_MPDU_ERR_DECRYPT BIT(1)
|
||||
#define DP_RX_MPDU_ERR_TKIP_MIC BIT(2)
|
||||
@@ -125,7 +127,8 @@ int ath11k_dp_process_rx(struct ath11k_b
|
||||
@@ -126,7 +128,8 @@ int ath11k_dp_process_rx(struct ath11k_b
|
||||
int ath11k_dp_rxbufs_replenish(struct ath11k_base *ab, int mac_id,
|
||||
struct dp_rxdma_ring *rx_ring,
|
||||
int req_entries,
|
||||
|
||||
@ -35,7 +35,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -2455,16 +2455,27 @@ static void ath11k_get_dot11_hdr_from_rx
|
||||
@@ -2454,16 +2454,27 @@ static void ath11k_get_dot11_hdr_from_rx
|
||||
size_t hdr_len, crypto_len;
|
||||
struct ieee80211_hdr *hdr;
|
||||
u16 fc, qos_ctl = 0;
|
||||
@ -63,7 +63,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
skb_push(msdu, hdr_len);
|
||||
hdr = (struct ieee80211_hdr *)msdu->data;
|
||||
hdr->frame_control = fc;
|
||||
@@ -2500,6 +2511,7 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
@@ -2499,6 +2510,7 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
u8 da[ETH_ALEN];
|
||||
u8 sa[ETH_ALEN];
|
||||
u16 qos_ctl = 0;
|
||||
@ -71,7 +71,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
u8 *qos, *crypto_hdr;
|
||||
bool add_qos_ctrl = false;
|
||||
|
||||
@@ -2544,26 +2556,46 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
@@ -2543,26 +2555,46 @@ static void ath11k_dp_rx_h_undecap_nwifi
|
||||
}
|
||||
|
||||
if (!(status->flag & RX_FLAG_IV_STRIPPED)) {
|
||||
@ -123,7 +123,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
|
||||
|
||||
/* original 802.11 header has a different DA and in
|
||||
@@ -2672,6 +2704,7 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
@@ -2671,6 +2703,7 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
u8 da[ETH_ALEN];
|
||||
u8 sa[ETH_ALEN];
|
||||
void *rfc1042;
|
||||
@ -131,7 +131,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu);
|
||||
struct ath11k_dp_rfc1042_hdr rfc = {0xaa, 0xaa, 0x03, {0x00, 0x00, 0x00}};
|
||||
|
||||
@@ -2681,6 +2714,11 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
@@ -2680,6 +2713,11 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
ether_addr_copy(sa, eth->h_source);
|
||||
rfc.snap_type = eth->h_proto;
|
||||
skb_pull(msdu, sizeof(struct ethhdr));
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), &rfc,
|
||||
sizeof(struct ath11k_dp_rfc1042_hdr));
|
||||
ath11k_get_dot11_hdr_from_rx_desc(ar, msdu, rxcb, status, enctype);
|
||||
@@ -2698,6 +2736,11 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
@@ -2697,6 +2735,11 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
skb_pull(msdu, sizeof(struct ethhdr));
|
||||
|
||||
/* push rfc1042/llc/snap */
|
||||
@ -155,7 +155,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
memcpy(skb_push(msdu, sizeof(struct ath11k_dp_rfc1042_hdr)), rfc1042,
|
||||
sizeof(struct ath11k_dp_rfc1042_hdr));
|
||||
|
||||
@@ -2706,12 +2749,22 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
@@ -2705,12 +2748,22 @@ static void ath11k_dp_rx_h_undecap_eth(s
|
||||
hdr_len = ieee80211_hdrlen(hdr->frame_control);
|
||||
|
||||
if (!(status->flag & RX_FLAG_IV_STRIPPED)) {
|
||||
@ -182,7 +182,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
|
||||
|
||||
exit:
|
||||
@@ -2732,6 +2785,7 @@ static void ath11k_dp_rx_h_undecap_snap(
|
||||
@@ -2731,6 +2784,7 @@ static void ath11k_dp_rx_h_undecap_snap(
|
||||
struct ieee80211_hdr *hdr;
|
||||
size_t hdr_len;
|
||||
u8 l3_pad_bytes;
|
||||
@ -190,7 +190,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
struct hal_rx_desc *rx_desc;
|
||||
struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu);
|
||||
|
||||
@@ -2756,12 +2810,22 @@ static void ath11k_dp_rx_h_undecap_snap(
|
||||
@@ -2755,12 +2809,22 @@ static void ath11k_dp_rx_h_undecap_snap(
|
||||
hdr_len = ieee80211_hdrlen(hdr->frame_control);
|
||||
|
||||
if (!(status->flag & RX_FLAG_IV_STRIPPED)) {
|
||||
@ -217,7 +217,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
memcpy(skb_push(msdu, hdr_len), hdr, hdr_len);
|
||||
}
|
||||
|
||||
@@ -2890,7 +2954,7 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
@@ -2889,7 +2953,7 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
struct ieee80211_rx_status *rx_status,
|
||||
bool *fast_rx)
|
||||
{
|
||||
@ -226,7 +226,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
enum hal_encrypt_type enctype;
|
||||
bool is_decrypted = false;
|
||||
struct ath11k_skb_rxcb *rxcb;
|
||||
@@ -3123,10 +3187,16 @@ static void ath11k_dp_rx_deliver_msdu(st
|
||||
@@ -3122,10 +3186,16 @@ static void ath11k_dp_rx_deliver_msdu(st
|
||||
u8 decap = DP_RX_DECAP_TYPE_RAW;
|
||||
bool is_mcbc = rxcb->is_mcbc;
|
||||
bool is_eapol = rxcb->is_eapol;
|
||||
@ -243,7 +243,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
he = skb_push(msdu, sizeof(known));
|
||||
memcpy(he, &known, sizeof(known));
|
||||
status->flag |= RX_FLAG_RADIOTAP_HE;
|
||||
@@ -3182,6 +3252,7 @@ static void ath11k_dp_rx_deliver_msdu(st
|
||||
@@ -3181,6 +3251,7 @@ static void ath11k_dp_rx_deliver_msdu(st
|
||||
!(is_mcbc && rx_status->flag & RX_FLAG_DECRYPTED))
|
||||
rx_status->flag |= RX_FLAG_8023;
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
|
||||
enum wmi_sta_keepalive_method method,
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -1874,9 +1874,10 @@ int ath11k_wmi_bcn_tmpl(struct ath11k *a
|
||||
@@ -1918,9 +1918,10 @@ int ath11k_wmi_bcn_tmpl(struct ath11k *a
|
||||
cmd->vdev_id = vdev_id;
|
||||
cmd->tim_ie_offset = offs->tim_offset;
|
||||
|
||||
@ -72,7 +72,7 @@ Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
|
||||
}
|
||||
|
||||
cmd->buf_len = bcn->len;
|
||||
@@ -7567,7 +7568,6 @@ static void ath11k_bcn_tx_status_event(s
|
||||
@@ -7612,7 +7613,6 @@ static void ath11k_bcn_tx_status_event(s
|
||||
rcu_read_unlock();
|
||||
return;
|
||||
}
|
||||
@ -80,7 +80,7 @@ Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
@@ -8481,10 +8481,7 @@ ath11k_wmi_process_csa_switch_count_even
|
||||
@@ -8526,10 +8526,7 @@ ath11k_wmi_process_csa_switch_count_even
|
||||
{
|
||||
int i;
|
||||
struct ath11k_vif *arvif;
|
||||
@ -92,7 +92,7 @@ Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
|
||||
|
||||
rcu_read_lock();
|
||||
for (i = 0; i < ev->num_vdevs; i++) {
|
||||
@@ -8496,8 +8493,18 @@ ath11k_wmi_process_csa_switch_count_even
|
||||
@@ -8541,8 +8538,18 @@ ath11k_wmi_process_csa_switch_count_even
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@ -137,7 +137,7 @@
|
||||
#define ATH11K_HWMON_NAME_LEN 15
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -3193,6 +3193,7 @@ ath11k_wmi_send_thermal_mitigation_param
|
||||
@@ -3237,6 +3237,7 @@ ath11k_wmi_send_thermal_mitigation_param
|
||||
lvl_conf->temp_hwm = param->levelconf[i].tmphwm;
|
||||
lvl_conf->dc_off_percent = param->levelconf[i].dcoffpercent;
|
||||
lvl_conf->prio = param->levelconf[i].priority;
|
||||
@ -147,7 +147,7 @@
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
|
||||
@@ -4053,12 +4053,14 @@ struct wmi_11d_new_cc_ev {
|
||||
@@ -4059,12 +4059,14 @@ struct wmi_11d_new_cc_ev {
|
||||
u32 new_alpha2;
|
||||
} __packed;
|
||||
|
||||
@ -163,7 +163,7 @@
|
||||
};
|
||||
|
||||
struct thermal_mitigation_params {
|
||||
@@ -4069,6 +4071,14 @@ struct thermal_mitigation_params {
|
||||
@@ -4075,6 +4077,14 @@ struct thermal_mitigation_params {
|
||||
struct tt_level_config levelconf[THERMAL_LEVELS];
|
||||
};
|
||||
|
||||
@ -178,7 +178,7 @@
|
||||
struct wmi_therm_throt_config_request_cmd {
|
||||
u32 tlv_header;
|
||||
u32 pdev_id;
|
||||
@@ -4076,14 +4086,48 @@ struct wmi_therm_throt_config_request_cm
|
||||
@@ -4082,14 +4092,48 @@ struct wmi_therm_throt_config_request_cm
|
||||
u32 dc;
|
||||
u32 dc_per_event;
|
||||
u32 therm_throt_levels;
|
||||
@ -229,7 +229,7 @@
|
||||
struct wmi_delba_send_cmd {
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -6586,6 +6586,9 @@ static int ath11k_mac_op_start(struct ie
|
||||
@@ -6683,6 +6683,9 @@ static int ath11k_mac_op_start(struct ie
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -2041,10 +2041,10 @@ void ath11k_core_pre_reconfigure_recover
|
||||
@@ -2050,10 +2050,10 @@ void ath11k_core_pre_reconfigure_recover
|
||||
ar->monitor_vdev_id = -1;
|
||||
clear_bit(ATH11K_FLAG_MONITOR_STARTED, &ar->monitor_flags);
|
||||
clear_bit(ATH11K_FLAG_MONITOR_VDEV_CREATED, &ar->monitor_flags);
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
reinit_completion(&ab->driver_recovery);
|
||||
}
|
||||
@@ -2320,7 +2320,6 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
@@ -2329,7 +2329,6 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
goto err_free_wq;
|
||||
|
||||
mutex_init(&ab->core_lock);
|
||||
@ -20,7 +20,7 @@
|
||||
mutex_init(&ab->base_ast_lock);
|
||||
spin_lock_init(&ab->base_lock);
|
||||
mutex_init(&ab->vdev_id_11d_lock);
|
||||
@@ -2328,8 +2327,6 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
@@ -2337,8 +2336,6 @@ struct ath11k_base *ath11k_core_alloc(st
|
||||
init_completion(&ab->reconfigure_complete);
|
||||
init_completion(&ab->recovery_start);
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
INIT_WORK(&ab->restart_work, ath11k_core_restart);
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||
@@ -737,9 +737,22 @@ struct ath11k {
|
||||
@@ -740,9 +740,22 @@ struct ath11k {
|
||||
iftype[NUM_NL80211_BANDS][NUM_NL80211_IFTYPES];
|
||||
} mac;
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
u32 min_tx_power;
|
||||
u32 max_tx_power;
|
||||
u32 txpower_limit_2g;
|
||||
@@ -817,6 +830,9 @@ struct ath11k {
|
||||
@@ -820,6 +833,9 @@ struct ath11k {
|
||||
struct work_struct wmi_mgmt_tx_work;
|
||||
struct sk_buff_head wmi_mgmt_tx_queue;
|
||||
|
||||
@ -64,7 +64,7 @@
|
||||
struct ath11k_wow wow;
|
||||
struct completion target_suspend;
|
||||
bool target_suspend_ack;
|
||||
@@ -1020,19 +1036,7 @@ struct ath11k_base {
|
||||
@@ -1023,19 +1039,7 @@ struct ath11k_base {
|
||||
struct ath11k_hal_reg_capabilities_ext hal_reg_cap[MAX_RADIOS];
|
||||
unsigned long long free_vdev_map;
|
||||
|
||||
@ -84,7 +84,7 @@
|
||||
u8 mac_addr[ETH_ALEN];
|
||||
int userpd_id;
|
||||
int irq_num[ATH11K_IRQ_NUM_MAX];
|
||||
@@ -1409,4 +1413,36 @@ static inline const char *ath11k_bus_str
|
||||
@@ -1412,4 +1416,36 @@ static inline const char *ath11k_bus_str
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@
|
||||
if (!peer) {
|
||||
ath11k_warn(ab, "failed to lookup peer %pM on vdev %d\n",
|
||||
addr, vdev_id);
|
||||
@@ -90,7 +90,7 @@ int ath11k_dp_peer_setup(struct ath11k *
|
||||
@@ -89,7 +89,7 @@ int ath11k_dp_peer_setup(struct ath11k *
|
||||
peer_clean:
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
|
||||
@ -517,7 +517,7 @@
|
||||
break;
|
||||
case HTT_T2H_MSG_TYPE_PPDU_STATS_IND:
|
||||
ath11k_htt_pull_ppdu_stats(ab, skb);
|
||||
@@ -2877,25 +2893,25 @@ static void ath11k_dp_rx_h_undecap(struc
|
||||
@@ -2876,25 +2892,25 @@ static void ath11k_dp_rx_h_undecap(struc
|
||||
}
|
||||
|
||||
static struct ath11k_peer *
|
||||
@ -549,7 +549,7 @@
|
||||
return peer;
|
||||
}
|
||||
|
||||
@@ -2939,7 +2955,7 @@ static bool ath11k_dp_rx_check_fast_rx(s
|
||||
@@ -2938,7 +2954,7 @@ static bool ath11k_dp_rx_check_fast_rx(s
|
||||
return false;
|
||||
|
||||
/* check if the msdu needs to be bridged to our connected peer */
|
||||
@ -558,7 +558,7 @@
|
||||
|
||||
if (f_peer && f_peer != peer)
|
||||
return false;
|
||||
@@ -2978,7 +2994,7 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
@@ -2977,7 +2993,7 @@ static void ath11k_dp_rx_h_mpdu(struct a
|
||||
}
|
||||
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
@ -567,7 +567,7 @@
|
||||
if (peer) {
|
||||
/* If the pkt is a valid IP packet and peer supports
|
||||
* fast rx, deliver directly to net, also note that
|
||||
@@ -3206,7 +3222,7 @@ static void ath11k_dp_rx_deliver_msdu(st
|
||||
@@ -3205,7 +3221,7 @@ static void ath11k_dp_rx_deliver_msdu(st
|
||||
decap = ath11k_dp_rx_h_msdu_start_decap_type(ar->ab, rxcb->rx_desc);
|
||||
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
@ -576,7 +576,7 @@
|
||||
if (peer && peer->sta)
|
||||
pubsta = peer->sta;
|
||||
spin_unlock_bh(&ar->ab->base_lock);
|
||||
@@ -3505,7 +3521,7 @@ try_again:
|
||||
@@ -3504,7 +3520,7 @@ try_again:
|
||||
if (unlikely(push_reason !=
|
||||
HAL_REO_DEST_RING_PUSH_REASON_ROUTING_INSTRUCTION)) {
|
||||
dev_kfree_skb_any(msdu);
|
||||
@ -585,7 +585,7 @@
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -3737,11 +3753,10 @@ static void ath11k_dp_rx_update_user_sta
|
||||
@@ -3736,11 +3752,10 @@ static void ath11k_dp_rx_update_user_sta
|
||||
if (user_stats->ast_index == 0 || user_stats->ast_index == 0xFFFF)
|
||||
return;
|
||||
|
||||
@ -599,7 +599,7 @@
|
||||
user_stats->ast_index);
|
||||
return;
|
||||
}
|
||||
@@ -4215,7 +4230,7 @@ int ath11k_peer_rx_frag_setup(struct ath
|
||||
@@ -4210,7 +4225,7 @@ int ath11k_peer_rx_frag_setup(struct ath
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
|
||||
@ -608,7 +608,7 @@
|
||||
if (!peer) {
|
||||
ath11k_warn(ab, "failed to find the peer to set up fragment info\n");
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
@@ -4671,7 +4686,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
|
||||
@@ -4666,7 +4681,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
|
||||
return -EINVAL;
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -617,7 +617,7 @@
|
||||
if (!peer) {
|
||||
ath11k_warn(ab, "failed to find the peer to de-fragment received fragment peer_id %d\n",
|
||||
peer_id);
|
||||
@@ -4733,7 +4748,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
|
||||
@@ -4728,7 +4743,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
|
||||
del_timer_sync(&rx_tid->frag_timer);
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
|
||||
@ -626,7 +626,7 @@
|
||||
if (!peer)
|
||||
goto err_frags_cleanup;
|
||||
|
||||
@@ -6397,7 +6412,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6392,7 +6407,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz);
|
||||
|
||||
ppdu_info->peer_id = HAL_INVALID_PEERID;
|
||||
@ -635,7 +635,7 @@
|
||||
|
||||
if (test_bit(ATH11K_FLAG_MONITOR_STARTED, &ar->monitor_flags) &&
|
||||
pmon->mon_ppdu_status == DP_PPDU_STATUS_START &&
|
||||
@@ -6428,7 +6443,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
@@ -6423,7 +6438,7 @@ int ath11k_dp_rx_process_mon_status(stru
|
||||
}
|
||||
rcu_read_lock();
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -646,7 +646,7 @@
|
||||
ath11k_dbg(ab, ATH11K_DBG_DATA,
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.h
|
||||
@@ -129,8 +129,8 @@ int ath11k_dp_rxbufs_replenish(struct at
|
||||
@@ -130,8 +130,8 @@ int ath11k_dp_rxbufs_replenish(struct at
|
||||
int req_entries,
|
||||
enum hal_rx_buf_return_buf_manager mgr,
|
||||
u32 *buf_id);
|
||||
@ -659,7 +659,7 @@
|
||||
int ath11k_dp_rx_process_mon_rings(struct ath11k_base *ab, int mac_id,
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -478,7 +478,7 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
@@ -482,7 +482,7 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
}
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -668,7 +668,7 @@
|
||||
if (!peer || !peer->sta) {
|
||||
ath11k_dbg(ab, ATH11K_DBG_DATA,
|
||||
"dp_tx: failed to find the peer with peer_id %d\n",
|
||||
@@ -576,7 +576,7 @@ void ath11k_dp_tx_update_txcompl(struct
|
||||
@@ -580,7 +580,7 @@ void ath11k_dp_tx_update_txcompl(struct
|
||||
int ret;
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -677,7 +677,7 @@
|
||||
if (!peer || !peer->sta) {
|
||||
ath11k_dbg(ab, ATH11K_DBG_DP_TX,
|
||||
"failed to find the peer by id %u\n", ts->peer_id);
|
||||
@@ -791,7 +791,7 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
@@ -799,7 +799,7 @@ static void ath11k_dp_tx_complete_msdu(s
|
||||
}
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -789,7 +789,7 @@
|
||||
|
||||
ar->num_peers = 0;
|
||||
ar->num_stations = 0;
|
||||
@@ -3100,7 +3100,7 @@ static void ath11k_bss_assoc(struct ieee
|
||||
@@ -3187,7 +3187,7 @@ static void ath11k_bss_assoc(struct ieee
|
||||
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
|
||||
@ -798,7 +798,7 @@
|
||||
if (peer && peer->is_authorized)
|
||||
is_auth = true;
|
||||
|
||||
@@ -4260,7 +4260,7 @@ static int ath11k_clear_peer_keys(struct
|
||||
@@ -4349,7 +4349,7 @@ static int ath11k_clear_peer_keys(struct
|
||||
lockdep_assert_held(&ar->conf_mutex);
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -807,7 +807,7 @@
|
||||
if (!peer) {
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
return -ENOENT;
|
||||
@@ -4376,7 +4376,7 @@ static int ath11k_mac_op_set_key(struct
|
||||
@@ -4465,7 +4465,7 @@ static int ath11k_mac_op_set_key(struct
|
||||
* we already hold conf_mutex. we just make sure its there now.
|
||||
*/
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -816,7 +816,7 @@
|
||||
|
||||
/* flush the fragments cache during key (re)install to
|
||||
* ensure all frags in the new frag list belong to the same key.
|
||||
@@ -4485,7 +4485,7 @@ static int ath11k_mac_op_set_key(struct
|
||||
@@ -4574,7 +4574,7 @@ static int ath11k_mac_op_set_key(struct
|
||||
}
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -825,7 +825,7 @@
|
||||
|
||||
/* TODO: Check if vdev specific security cfg is mandatory */
|
||||
ret = ath11k_nss_vdev_set_cmd(arvif, ATH11K_NSS_WIFI_VDEV_SECURITY_TYPE_CMD, key->cipher);
|
||||
@@ -4516,7 +4516,7 @@ static int ath11k_mac_op_set_key(struct
|
||||
@@ -4605,7 +4605,7 @@ static int ath11k_mac_op_set_key(struct
|
||||
list_for_each_entry_safe(dyn_vlan_cfg, tmp, &ap_vlan_arvif->dyn_vlan_cfg, cfg_list) {
|
||||
struct ieee80211_sta *vlan_sta = dyn_vlan_cfg->sta;
|
||||
|
||||
@ -834,7 +834,7 @@
|
||||
if (ret)
|
||||
ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n",
|
||||
vlan_sta->addr, ret);
|
||||
@@ -5126,7 +5126,7 @@ static void ath11k_sta_set_4addr_wk(stru
|
||||
@@ -5215,7 +5215,7 @@ static void ath11k_sta_set_4addr_wk(stru
|
||||
vif = ap_vlan_arvif->vif;
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -843,7 +843,7 @@
|
||||
if (!wds_peer) {
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
ath11k_warn(ab, "mac sta use 4addr failed to find peer %pM\n",
|
||||
@@ -5349,7 +5349,7 @@ static void ath11k_mac_op_sta_rc_update(
|
||||
@@ -5438,7 +5438,7 @@ static void ath11k_mac_op_sta_rc_update(
|
||||
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
|
||||
@ -852,7 +852,7 @@
|
||||
if (!peer) {
|
||||
spin_unlock_bh(&ar->ab->base_lock);
|
||||
ath11k_warn(ar->ab, "mac sta rc update failed to find peer %pM on vdev %i\n",
|
||||
@@ -8430,7 +8430,7 @@ ath11k_mac_op_assign_vif_chanctx(struct
|
||||
@@ -8463,7 +8463,7 @@ ath11k_mac_op_assign_vif_chanctx(struct
|
||||
if (ab->hw_params.vdev_start_delay &&
|
||||
arvif->vdev_type != WMI_VDEV_TYPE_AP &&
|
||||
arvif->vdev_type != WMI_VDEV_TYPE_MONITOR &&
|
||||
@ -861,7 +861,7 @@
|
||||
memcpy(&arvif->chanctx, ctx, sizeof(*ctx));
|
||||
ret = 0;
|
||||
goto out;
|
||||
@@ -8506,7 +8506,7 @@ ath11k_mac_op_unassign_vif_chanctx(struc
|
||||
@@ -8539,7 +8539,7 @@ ath11k_mac_op_unassign_vif_chanctx(struc
|
||||
if (ab->hw_params.vdev_start_delay &&
|
||||
arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
@ -870,7 +870,7 @@
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
if (peer)
|
||||
ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr);
|
||||
@@ -9080,7 +9080,7 @@ ath11k_mac_validate_vht_he_fixed_rate_se
|
||||
@@ -9113,7 +9113,7 @@ ath11k_mac_validate_vht_he_fixed_rate_se
|
||||
|
||||
rcu_read_lock();
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
@ -879,7 +879,7 @@
|
||||
if (peer->sta) {
|
||||
deflink = &peer->sta->deflink;
|
||||
|
||||
@@ -10032,26 +10032,26 @@ static int ath11k_mac_station_remove(str
|
||||
@@ -10069,26 +10069,26 @@ static int ath11k_mac_station_remove(str
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -913,7 +913,7 @@
|
||||
sta->addr, ret);
|
||||
return ret;
|
||||
}
|
||||
@@ -10101,20 +10101,20 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10138,20 +10138,20 @@ static int ath11k_mac_op_sta_state(struc
|
||||
ath11k_warn(ar->ab, "Failed to remove station: %pM for VDEV: %d\n",
|
||||
sta->addr, arvif->vdev_id);
|
||||
|
||||
@ -938,7 +938,7 @@
|
||||
} else if (old_state == IEEE80211_STA_AUTH &&
|
||||
new_state == IEEE80211_STA_ASSOC &&
|
||||
(vif->type == NL80211_IFTYPE_AP ||
|
||||
@@ -10145,7 +10145,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10182,7 +10182,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||
new_state == IEEE80211_STA_AUTHORIZED) {
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
|
||||
@ -947,7 +947,7 @@
|
||||
if (peer)
|
||||
peer->is_authorized = true;
|
||||
|
||||
@@ -10182,7 +10182,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10219,7 +10219,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||
list_add_tail(&ar_dyn_vlan_cfg->cfg_list, &arvif->dyn_vlan_cfg);
|
||||
}
|
||||
} else {
|
||||
@ -956,7 +956,7 @@
|
||||
if (ret)
|
||||
ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n",
|
||||
sta->addr, ret);
|
||||
@@ -10215,7 +10215,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10252,7 +10252,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||
new_state == IEEE80211_STA_ASSOC) {
|
||||
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
@ -965,7 +965,7 @@
|
||||
if (peer)
|
||||
peer->is_authorized = false;
|
||||
spin_unlock_bh(&ar->ab->base_lock);
|
||||
@@ -10223,7 +10223,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||
@@ -10260,7 +10260,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||
new_state == IEEE80211_STA_ASSOC) {
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
|
||||
@ -974,7 +974,7 @@
|
||||
if (peer)
|
||||
peer->is_authorized = false;
|
||||
|
||||
@@ -10628,9 +10628,9 @@ void ath11k_mac_unregister(struct ath11k
|
||||
@@ -10668,9 +10668,9 @@ void ath11k_mac_unregister(struct ath11k
|
||||
continue;
|
||||
|
||||
__ath11k_mac_unregister(ar);
|
||||
@ -985,7 +985,7 @@
|
||||
}
|
||||
|
||||
static int __ath11k_mac_register(struct ath11k *ar)
|
||||
@@ -10917,15 +10917,15 @@ int ath11k_mac_register(struct ath11k_ba
|
||||
@@ -10954,15 +10954,15 @@ int ath11k_mac_register(struct ath11k_ba
|
||||
ab->cc_freq_hz = IPQ8074_CC_FREQ_HERTZ;
|
||||
ab->free_vdev_map = (1LL << (ab->num_radios * TARGET_NUM_VDEVS(ab))) - 1;
|
||||
|
||||
@ -1004,7 +1004,7 @@
|
||||
if (ab->pdevs_macaddr_valid) {
|
||||
ether_addr_copy(ar->mac_addr, pdev->mac_addr);
|
||||
} else {
|
||||
@@ -10953,9 +10953,9 @@ err_cleanup:
|
||||
@@ -10990,9 +10990,9 @@ err_cleanup:
|
||||
pdev = &ab->pdevs[i];
|
||||
ar = pdev->ar;
|
||||
__ath11k_mac_unregister(ar);
|
||||
@ -1015,7 +1015,7 @@
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -10999,9 +10999,12 @@ int ath11k_mac_allocate(struct ath11k_ba
|
||||
@@ -11036,9 +11036,12 @@ int ath11k_mac_allocate(struct ath11k_ba
|
||||
ar->num_rx_chains = get_num_chains(pdev->cap.rx_chain_mask);
|
||||
|
||||
pdev->ar = ar;
|
||||
@ -2362,7 +2362,7 @@
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath11k/peer.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/peer.h
|
||||
@@ -99,34 +99,32 @@ struct ath11k_peer {
|
||||
@@ -98,34 +98,32 @@ struct ath11k_peer {
|
||||
bool delete_in_progress;
|
||||
};
|
||||
|
||||
@ -2409,7 +2409,7 @@
|
||||
u8* addr);
|
||||
struct ath11k_ast_entry *ath11k_peer_ast_find_by_pdev_idx(struct ath11k *ar,
|
||||
u8* addr);
|
||||
@@ -140,11 +138,11 @@ void ath11k_peer_del_ast(struct ath11k *
|
||||
@@ -139,11 +137,11 @@ void ath11k_peer_del_ast(struct ath11k *
|
||||
void ath11k_peer_ast_cleanup(struct ath11k *ar, struct ath11k_peer *peer,
|
||||
bool is_wds, u32 free_wds_count);
|
||||
void ath11k_peer_ast_wds_wmi_wk(struct work_struct *wk);
|
||||
@ -2423,7 +2423,7 @@
|
||||
u8* addr)
|
||||
{
|
||||
return NULL;
|
||||
@@ -192,7 +190,7 @@ static inline void ath11k_peer_ast_wds_w
|
||||
@@ -191,7 +189,7 @@ static inline void ath11k_peer_ast_wds_w
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2434,7 +2434,7 @@
|
||||
{
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -7579,10 +7579,12 @@ static void ath11k_wmi_event_peer_sta_ps
|
||||
@@ -7624,10 +7624,12 @@ static void ath11k_wmi_event_peer_sta_ps
|
||||
struct ieee80211_sta *sta;
|
||||
struct ath11k_peer *peer;
|
||||
struct ath11k *ar;
|
||||
@ -2447,7 +2447,7 @@
|
||||
|
||||
tb = ath11k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC);
|
||||
if (IS_ERR(tb)) {
|
||||
@@ -7606,64 +7608,60 @@ static void ath11k_wmi_event_peer_sta_ps
|
||||
@@ -7651,64 +7653,60 @@ static void ath11k_wmi_event_peer_sta_ps
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
@ -2554,7 +2554,7 @@
|
||||
}
|
||||
|
||||
out:
|
||||
@@ -7783,9 +7781,9 @@ static void ath11k_mgmt_rx_event(struct
|
||||
@@ -7828,9 +7826,9 @@ static void ath11k_mgmt_rx_event(struct
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
|
||||
@ -2566,7 +2566,7 @@
|
||||
if (!peer) {
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
goto skip_mgmt_stats;
|
||||
@@ -8013,9 +8011,8 @@ static void ath11k_peer_sta_kickout_even
|
||||
@@ -8058,9 +8056,8 @@ static void ath11k_peer_sta_kickout_even
|
||||
{
|
||||
struct wmi_peer_sta_kickout_arg arg = {};
|
||||
struct ieee80211_sta *sta;
|
||||
@ -2577,7 +2577,7 @@
|
||||
|
||||
if (ath11k_pull_peer_sta_kickout_ev(ab, skb, &arg) != 0) {
|
||||
ath11k_warn(ab, "failed to extract peer sta kickout event");
|
||||
@@ -8024,42 +8021,22 @@ static void ath11k_peer_sta_kickout_even
|
||||
@@ -8069,42 +8066,22 @@ static void ath11k_peer_sta_kickout_even
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4716,8 +4716,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4715,8 +4715,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
if (!key)
|
||||
key = rcu_dereference(sdata->default_unicast_key);
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
struct net_device *upper_dev)
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -404,6 +404,20 @@ enum ieee80211_bss_change {
|
||||
@@ -406,6 +406,20 @@ enum ieee80211_bss_change {
|
||||
/* when adding here, make sure to change ieee80211_reconfig */
|
||||
};
|
||||
|
||||
@ -73,7 +73,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
* - DATA3_DATA_MCS
|
||||
* - DATA3_DATA_DCM
|
||||
* - DATA3_CODING
|
||||
@@ -1453,7 +1469,7 @@ ieee80211_tx_info_clear_status(struct ie
|
||||
@@ -1492,7 +1508,7 @@ ieee80211_tx_info_clear_status(struct ie
|
||||
* - DATA5_DATA_BW_RU_ALLOC
|
||||
* - DATA6_NSTS
|
||||
* - DATA3_STBC
|
||||
@ -82,7 +82,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
* from the RX info data, so leave those zeroed when building this data)
|
||||
* @RX_FLAG_RADIOTAP_HE_MU: HE MU radiotap data is present
|
||||
* (&struct ieee80211_radiotap_he_mu)
|
||||
@@ -2084,6 +2100,16 @@ static inline bool lockdep_vif_wiphy_mut
|
||||
@@ -2127,6 +2143,16 @@ static inline bool lockdep_vif_wiphy_mut
|
||||
lockdep_vif_wiphy_mutex_held(vif))
|
||||
|
||||
/**
|
||||
@ -99,7 +99,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
|
||||
@@ -2788,6 +2814,8 @@ struct ieee80211_txq {
|
||||
@@ -2825,6 +2851,8 @@ struct ieee80211_txq {
|
||||
* implements MLO, so operation can continue on other links when one
|
||||
* link is switching.
|
||||
*
|
||||
@ -127,7 +127,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.
|
||||
@@ -4425,7 +4458,9 @@ struct ieee80211_ops {
|
||||
@@ -4461,7 +4494,9 @@ struct ieee80211_ops {
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *info,
|
||||
u64 changed);
|
||||
@ -138,7 +138,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
int (*start_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf);
|
||||
void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
@@ -4735,7 +4770,7 @@ struct ieee80211_ops {
|
||||
@@ -4771,7 +4806,7 @@ struct ieee80211_ops {
|
||||
int (*reset_tid_config)(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta, u8 tids);
|
||||
@ -184,7 +184,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
|
||||
@@ -413,6 +413,17 @@ void ieee80211_link_info_change_notify(s
|
||||
@@ -414,6 +414,17 @@ void ieee80211_link_info_change_notify(s
|
||||
drv_link_info_changed(local, sdata, link->conf, link->link_id, changed);
|
||||
}
|
||||
|
||||
@ -202,7 +202,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;
|
||||
@@ -844,12 +855,6 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
@@ -852,12 +863,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,
|
||||
@ -215,7 +215,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);
|
||||
@@ -1180,6 +1185,18 @@ int ieee80211_register_hw(struct ieee802
|
||||
@@ -1185,6 +1190,18 @@ int ieee80211_register_hw(struct ieee802
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -236,7 +236,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
return -EINVAL;
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -2416,6 +2416,9 @@ sta_get_last_rx_stats(struct sta_info *s
|
||||
@@ -2412,6 +2412,9 @@ sta_get_last_rx_stats(struct sta_info *s
|
||||
struct ieee80211_sta_rx_stats *stats = &sta->deflink.rx_stats;
|
||||
int cpu;
|
||||
|
||||
@ -272,7 +272,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ac = skb_get_queue_mapping(skb);
|
||||
tx->sta->deflink.tx_stats.bytes[ac] += skb->len;
|
||||
}
|
||||
@@ -2877,7 +2889,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2876,7 +2888,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
if (unlikely(!multicast &&
|
||||
((skb->sk &&
|
||||
skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS) ||
|
||||
@ -283,7 +283,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
info_id = ieee80211_store_ack_skb(local, skb, &info_flags,
|
||||
cookie);
|
||||
|
||||
@@ -4666,7 +4680,8 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4665,7 +4679,8 @@ static void ieee80211_8023_xmit(struct i
|
||||
}
|
||||
|
||||
if (unlikely(skb->sk &&
|
||||
@ -293,7 +293,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)
|
||||
@@ -4674,8 +4689,10 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4673,8 +4688,10 @@ static void ieee80211_8023_xmit(struct i
|
||||
}
|
||||
|
||||
dev_sw_netstats_tx_add(dev, skbs, len);
|
||||
@ -308,7 +308,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
--- a/net/wireless/util.c
|
||||
+++ b/net/wireless/util.c
|
||||
@@ -2627,6 +2627,9 @@ bool cfg80211_does_bw_fit_range(const st
|
||||
@@ -2629,6 +2629,9 @@ bool cfg80211_does_bw_fit_range(const st
|
||||
|
||||
int cfg80211_sinfo_alloc_tid_stats(struct station_info *sinfo, gfp_t gfp)
|
||||
{
|
||||
@ -320,7 +320,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
gfp);
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2676,7 +2676,7 @@ static int ieee80211_change_bss(struct w
|
||||
@@ -2695,7 +2695,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;
|
||||
@ -329,7 +329,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
link = ieee80211_link_or_deflink(sdata, params->link_id, true);
|
||||
if (IS_ERR(link))
|
||||
@@ -2726,6 +2726,8 @@ static int ieee80211_change_bss(struct w
|
||||
@@ -2745,6 +2745,8 @@ static int ieee80211_change_bss(struct w
|
||||
sdata->flags |= IEEE80211_SDATA_DONT_BRIDGE_PACKETS;
|
||||
else
|
||||
sdata->flags &= ~IEEE80211_SDATA_DONT_BRIDGE_PACKETS;
|
||||
@ -338,7 +338,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
ieee80211_check_fast_rx_iface(sdata);
|
||||
}
|
||||
|
||||
@@ -2754,6 +2756,8 @@ static int ieee80211_change_bss(struct w
|
||||
@@ -2773,6 +2775,8 @@ static int ieee80211_change_bss(struct w
|
||||
|
||||
ieee80211_link_info_change_notify(sdata, link, changed);
|
||||
|
||||
@ -375,7 +375,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
{
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1842,6 +1842,8 @@ void ieee80211_vif_cfg_change_notify(str
|
||||
@@ -1859,6 +1859,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);
|
||||
@ -386,7 +386,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
|
||||
|
||||
--- a/net/mac80211/trace.h
|
||||
+++ b/net/mac80211/trace.h
|
||||
@@ -412,6 +412,38 @@ TRACE_EVENT(drv_config,
|
||||
@@ -421,6 +421,38 @@ TRACE_EVENT(drv_config,
|
||||
LOCAL_PR_ARG, __entry->changed, CHANDEF_PR_ARG
|
||||
)
|
||||
);
|
||||
@ -427,7 +427,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
|
||||
@@ -982,7 +982,8 @@ static bool ieee80211_set_sdata_offload_
|
||||
@@ -969,7 +969,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
|
||||
@@ -6259,7 +6259,13 @@ int ieee80211_tx_control_port(struct wip
|
||||
@@ -6260,7 +6260,13 @@ int ieee80211_tx_control_port(struct wip
|
||||
|
||||
start_xmit:
|
||||
local_bh_disable();
|
||||
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -9574,4 +9574,15 @@ ssize_t wiphy_locked_debugfs_write(struc
|
||||
@@ -9698,4 +9698,15 @@ ssize_t wiphy_locked_debugfs_write(struc
|
||||
void *data);
|
||||
#endif
|
||||
|
||||
@ -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
|
||||
@@ -7506,6 +7506,20 @@ u32 ieee80211_calc_rx_airtime(struct iee
|
||||
@@ -7557,6 +7557,20 @@ u32 ieee80211_calc_rx_airtime(struct iee
|
||||
int len);
|
||||
|
||||
/**
|
||||
@ -72,7 +72,7 @@ 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
|
||||
@@ -1334,6 +1334,10 @@
|
||||
@@ -1329,6 +1329,10 @@
|
||||
* %NL80211_ATTR_MLO_TTLM_ULINK attributes are used to specify the
|
||||
* TID to Link mapping for downlink/uplink traffic.
|
||||
*
|
||||
@ -83,7 +83,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -1591,6 +1595,7 @@ enum nl80211_commands {
|
||||
@@ -1586,6 +1590,7 @@ enum nl80211_commands {
|
||||
|
||||
NL80211_CMD_SET_TID_TO_LINK_MAPPING,
|
||||
|
||||
@ -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
|
||||
@@ -8727,3 +8727,15 @@ void ieee80211_disable_rssi_reports(stru
|
||||
@@ -9336,3 +9336,15 @@ void ieee80211_disable_rssi_reports(stru
|
||||
_ieee80211_enable_rssi_reports(sdata, 0, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_disable_rssi_reports);
|
||||
@ -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
|
||||
@@ -3125,6 +3125,26 @@ TRACE_EVENT(stop_queue,
|
||||
@@ -3134,6 +3134,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
|
||||
@@ -820,6 +820,7 @@ static const struct nla_policy nl80211_p
|
||||
@@ -825,6 +825,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,7 +166,7 @@ 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),
|
||||
@@ -20324,6 +20325,42 @@ void cfg80211_schedule_channels_check(st
|
||||
@@ -20367,6 +20368,42 @@ void cfg80211_schedule_channels_check(st
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_schedule_channels_check);
|
||||
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
int __init nl80211_init(void)
|
||||
--- a/net/wireless/trace.h
|
||||
+++ b/net/wireless/trace.h
|
||||
@@ -3809,6 +3809,46 @@ TRACE_EVENT(cfg80211_update_owe_info_eve
|
||||
@@ -3957,6 +3957,46 @@ TRACE_EVENT(cfg80211_update_owe_info_eve
|
||||
__entry->assoc_link_id, __entry->peer_mld_addr)
|
||||
);
|
||||
|
||||
|
||||
@ -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,
|
||||
@@ -4293,6 +4296,8 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4292,6 +4295,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);
|
||||
@@ -4314,6 +4319,19 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4313,6 +4318,19 @@ void __ieee80211_subif_start_xmit(struct
|
||||
if (IS_ERR(sta))
|
||||
sta = NULL;
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -34,6 +34,9 @@
|
||||
@@ -35,6 +35,9 @@
|
||||
#include "sta_info.h"
|
||||
#include "debug.h"
|
||||
#include "drop.h"
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
|
||||
extern const struct cfg80211_ops mac80211_config_ops;
|
||||
|
||||
@@ -1171,6 +1174,9 @@ struct ieee80211_sub_if_data {
|
||||
@@ -1184,6 +1187,9 @@ struct ieee80211_sub_if_data {
|
||||
struct dentry *default_beacon_key;
|
||||
} debugfs;
|
||||
#endif
|
||||
@ -65,7 +65,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
/**
|
||||
* DOC: Interface list locking
|
||||
*
|
||||
@@ -763,6 +769,13 @@ static int ieee80211_stop(struct net_dev
|
||||
@@ -759,6 +765,13 @@ static int ieee80211_stop(struct net_dev
|
||||
ieee80211_stop_mbssid(sdata);
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
wiphy_lock(sdata->local->hw.wiphy);
|
||||
wiphy_work_cancel(sdata->local->hw.wiphy, &sdata->activate_links_work);
|
||||
|
||||
@@ -1217,6 +1230,34 @@ void ieee80211_del_virtual_monitor(struc
|
||||
@@ -1204,6 +1217,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
|
||||
@@ -1444,6 +1485,21 @@ int ieee80211_do_open(struct wireless_de
|
||||
@@ -1431,6 +1472,21 @@ int ieee80211_do_open(struct wireless_de
|
||||
|
||||
ieee80211_recalc_ps(local);
|
||||
|
||||
@ -217,7 +217,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4526,6 +4526,35 @@ static void ieee80211_mlo_multicast_tx(s
|
||||
@@ -4525,6 +4525,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
|
||||
@@ -4541,6 +4570,10 @@ netdev_tx_t ieee80211_subif_start_xmit(s
|
||||
@@ -4540,6 +4569,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;
|
||||
|
||||
@@ -4730,6 +4763,9 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4729,6 +4762,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
|
||||
@@ -5234,6 +5234,17 @@ void ieee80211_sta_pspoll(struct ieee802
|
||||
@@ -5270,6 +5270,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
|
||||
@@ -2189,7 +2189,13 @@ static int ieee80211_change_station(stru
|
||||
@@ -2208,7 +2208,13 @@ static int ieee80211_change_station(stru
|
||||
|
||||
rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
|
||||
__ieee80211_check_fast_rx_iface(vlansdata);
|
||||
@ -73,7 +73,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
|
||||
@@ -686,6 +686,9 @@ static void ieee80211_do_stop(struct iee
|
||||
@@ -682,6 +682,9 @@ static void ieee80211_do_stop(struct iee
|
||||
|
||||
switch (sdata->vif.type) {
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
@ -83,7 +83,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
break;
|
||||
case NL80211_IFTYPE_MONITOR:
|
||||
if (local->monitors == 0)
|
||||
@@ -973,6 +976,7 @@ static bool ieee80211_iftype_supports_hd
|
||||
@@ -960,6 +963,7 @@ static bool ieee80211_iftype_supports_hd
|
||||
switch (iftype) {
|
||||
/* P2P GO and client are mapped to AP/STATION types */
|
||||
case NL80211_IFTYPE_AP:
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
case NL80211_IFTYPE_STATION:
|
||||
return true;
|
||||
default:
|
||||
@@ -1027,7 +1031,8 @@ static void ieee80211_set_vif_encap_ops(
|
||||
@@ -1014,7 +1018,8 @@ static void ieee80211_set_vif_encap_ops(
|
||||
struct ieee80211_sub_if_data *bss = sdata;
|
||||
bool enabled;
|
||||
|
||||
@ -101,7 +101,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
if (!sdata->bss)
|
||||
return;
|
||||
|
||||
@@ -1353,10 +1358,17 @@ int ieee80211_do_open(struct wireless_de
|
||||
@@ -1340,10 +1345,17 @@ int ieee80211_do_open(struct wireless_de
|
||||
|
||||
switch (sdata->vif.type) {
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
@ -137,7 +137,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
{
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4320,8 +4320,11 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4319,8 +4319,11 @@ void __ieee80211_subif_start_xmit(struct
|
||||
sta = NULL;
|
||||
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
|
||||
@ -151,7 +151,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)
|
||||
@@ -4713,7 +4716,8 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4712,7 +4715,8 @@ static void ieee80211_8023_xmit(struct i
|
||||
|
||||
info->hw_queue = sdata->vif.hw_queue[queue];
|
||||
|
||||
@ -163,7 +163,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
--- a/net/mac80211/util.c
|
||||
+++ b/net/mac80211/util.c
|
||||
@@ -1664,6 +1664,9 @@ static void ieee80211_assign_chanctx(str
|
||||
@@ -1668,6 +1668,9 @@ static void ieee80211_assign_chanctx(str
|
||||
|
||||
lockdep_assert_wiphy(local->hw.wiphy);
|
||||
|
||||
@ -173,7 +173,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) {
|
||||
@@ -1869,7 +1872,8 @@ int ieee80211_reconfig(struct ieee80211_
|
||||
@@ -1873,7 +1876,8 @@ int ieee80211_reconfig(struct ieee80211_
|
||||
}
|
||||
|
||||
list_for_each_entry(sdata, &local->interfaces, list) {
|
||||
@ -183,7 +183,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
sdata->vif.type != NL80211_IFTYPE_MONITOR &&
|
||||
ieee80211_sdata_running(sdata)) {
|
||||
res = drv_add_interface(local, sdata);
|
||||
@@ -1884,7 +1888,8 @@ int ieee80211_reconfig(struct ieee80211_
|
||||
@@ -1888,7 +1892,8 @@ int ieee80211_reconfig(struct ieee80211_
|
||||
if (res) {
|
||||
list_for_each_entry_continue_reverse(sdata, &local->interfaces,
|
||||
list)
|
||||
@ -195,7 +195,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
drv_remove_interface(local, sdata);
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -5297,7 +5297,8 @@ static bool ieee80211_assoc_success(stru
|
||||
@@ -5696,7 +5696,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
|
||||
*/
|
||||
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -2184,6 +2184,8 @@ enum ieee80211_key_flags {
|
||||
@@ -2227,6 +2227,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-3)
|
||||
* @keylen: key material length
|
||||
* @key: key material. For ALG_TKIP the key is encoded as a 256-bit (32 byte)
|
||||
@@ -2203,6 +2205,7 @@ struct ieee80211_key_conf {
|
||||
@@ -2246,6 +2248,7 @@ struct ieee80211_key_conf {
|
||||
u8 hw_key_idx;
|
||||
s8 keyidx;
|
||||
u16 flags;
|
||||
@ -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
|
||||
@@ -4672,16 +4672,25 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4671,16 +4671,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 {
|
||||
@@ -218,6 +218,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
|
||||
@@ -4701,19 +4701,21 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4700,19 +4700,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));
|
||||
@@ -4773,7 +4775,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4772,7 +4774,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
|
||||
@@ -4791,9 +4793,13 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4790,9 +4792,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]);
|
||||
@@ -4804,6 +4810,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4803,6 +4809,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;
|
||||
|
||||
@@ -6326,13 +6333,7 @@ int ieee80211_tx_control_port(struct wip
|
||||
@@ -6327,13 +6334,7 @@ int ieee80211_tx_control_port(struct wip
|
||||
|
||||
start_xmit:
|
||||
local_bh_disable();
|
||||
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
/**
|
||||
* enum ieee80211_max_queues - maximum number of queues
|
||||
*
|
||||
@@ -411,11 +414,17 @@ enum ieee80211_bss_change {
|
||||
@@ -413,11 +416,17 @@ enum ieee80211_bss_change {
|
||||
* to indicate which NSS BSS parameter changed.
|
||||
*
|
||||
* @BSS_CHANGED_NSS_AP_ISOLATE: AP Isolate feature in NSS mode
|
||||
@ -66,7 +66,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -809,6 +818,11 @@ struct ieee80211_bss_conf {
|
||||
@@ -847,6 +856,11 @@ struct ieee80211_bss_conf {
|
||||
bool he_full_ul_mumimo;
|
||||
bool eht_su_beamformer;
|
||||
bool eht_su_beamformee;
|
||||
@ -76,9 +76,9 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
+ bool nss_offld_mesh_forward_enabled;
|
||||
+ u32 nss_offld_mpath_refresh_time;
|
||||
bool eht_mu_beamformer;
|
||||
bool eht_80mhz_full_bw_ul_mumimo;
|
||||
bool nss_ap_isolate;
|
||||
};
|
||||
@@ -1302,6 +1316,8 @@ struct ieee80211_rate_status {
|
||||
@@ -1341,6 +1355,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;
|
||||
@@ -1312,6 +1328,8 @@ struct ieee80211_tx_status {
|
||||
@@ -1351,6 +1367,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>
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1820,6 +1838,7 @@ struct ieee80211_channel_switch {
|
||||
@@ -1859,6 +1877,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>
|
||||
*/
|
||||
enum ieee80211_vif_flags {
|
||||
IEEE80211_VIF_BEACON_FILTER = BIT(0),
|
||||
@@ -1828,6 +1847,7 @@ enum ieee80211_vif_flags {
|
||||
@@ -1867,6 +1886,7 @@ enum ieee80211_vif_flags {
|
||||
IEEE80211_VIF_GET_NOA_UPDATE = BIT(3),
|
||||
IEEE80211_VIF_EML_ACTIVE = BIT(4),
|
||||
IEEE80211_VIF_IGNORE_OFDMA_WIDER_BW = BIT(5),
|
||||
@ -112,15 +112,15 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
};
|
||||
|
||||
|
||||
@@ -2879,6 +2899,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_DISALLOW_PUNCTURING,
|
||||
@@ -2916,6 +2936,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ,
|
||||
IEEE80211_HW_HANDLES_QUIET_CSA,
|
||||
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
|
||||
+ IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,
|
||||
|
||||
/* keep last, obviously */
|
||||
NUM_IEEE80211_HW_FLAGS
|
||||
@@ -4388,6 +4409,8 @@ struct ieee80211_prep_tx_info {
|
||||
@@ -4424,6 +4445,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.
|
||||
@@ -4782,6 +4805,12 @@ struct ieee80211_ops {
|
||||
@@ -4818,6 +4841,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);
|
||||
@@ -7667,4 +7696,100 @@ int ieee80211_emulate_switch_vif_chanctx
|
||||
@@ -7722,4 +7751,100 @@ int ieee80211_emulate_switch_vif_chanctx
|
||||
int n_vifs,
|
||||
enum ieee80211_chanctx_switch_mode mode);
|
||||
|
||||
@ -245,7 +245,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
#endif /* MAC80211_H */
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2519,6 +2519,7 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2538,6 +2538,7 @@ static int ieee80211_update_mesh_config(
|
||||
struct mesh_config *conf;
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
struct ieee80211_if_mesh *ifmsh;
|
||||
@ -253,7 +253,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
|
||||
sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
ifmsh = &sdata->u.mesh;
|
||||
@@ -2535,8 +2536,11 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2554,8 +2555,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 +266,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)) {
|
||||
@@ -2550,8 +2554,12 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2569,8 +2573,12 @@ static int ieee80211_update_mesh_config(
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES, mask))
|
||||
conf->dot11MeshHWMPmaxPREQretries =
|
||||
nconf->dot11MeshHWMPmaxPREQretries;
|
||||
@ -280,7 +280,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))
|
||||
@@ -2586,8 +2594,12 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2605,8 +2613,12 @@ static int ieee80211_update_mesh_config(
|
||||
if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_RANN_INTERVAL, mask))
|
||||
conf->dot11MeshHWMPRannInterval =
|
||||
nconf->dot11MeshHWMPRannInterval;
|
||||
@ -294,7 +294,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.
|
||||
@@ -2629,6 +2641,7 @@ static int ieee80211_update_mesh_config(
|
||||
@@ -2648,6 +2660,7 @@ static int ieee80211_update_mesh_config(
|
||||
conf->dot11MeshConnectedToAuthServer =
|
||||
nconf->dot11MeshConnectedToAuthServer;
|
||||
ieee80211_mbss_info_change_notify(sdata, BSS_CHANGED_BEACON);
|
||||
@ -331,7 +331,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
--- a/net/mac80211/debugfs.c
|
||||
+++ b/net/mac80211/debugfs.c
|
||||
@@ -509,6 +509,7 @@ static const char *hw_flag_names[] = {
|
||||
FLAG(DISALLOW_PUNCTURING),
|
||||
FLAG(DISALLOW_PUNCTURING_5GHZ),
|
||||
FLAG(HANDLES_QUIET_CSA),
|
||||
FLAG(SUPPORTS_NSS_OFFLOAD),
|
||||
+ FLAG(SUPPORTS_MESH_NSS_OFFLOAD),
|
||||
@ -1193,7 +1193,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;
|
||||
@@ -2974,6 +2984,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2973,6 +2983,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
|
||||
skb_reset_mac_header(skb);
|
||||
|
||||
@ -1203,7 +1203,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
memset(info, 0, sizeof(*info));
|
||||
|
||||
@@ -4297,6 +4310,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4296,6 +4309,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
struct sk_buff *next;
|
||||
int len = skb->len;
|
||||
struct ieee80211_key *key = NULL;
|
||||
@ -1211,7 +1211,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)) {
|
||||
@@ -4371,9 +4385,15 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4370,9 +4384,15 @@ void __ieee80211_subif_start_xmit(struct
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1232,7 +1232,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
|
||||
@@ -1737,4 +1737,10 @@ drv_can_neg_ttlm(struct ieee80211_local
|
||||
@@ -1749,4 +1749,10 @@ drv_can_neg_ttlm(struct ieee80211_local
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
|
||||
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -2839,6 +2839,8 @@ struct ieee80211_txq {
|
||||
@@ -2876,6 +2876,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 {
|
||||
@@ -2900,6 +2902,7 @@ enum ieee80211_hw_flags {
|
||||
@@ -2937,6 +2939,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_HANDLES_QUIET_CSA,
|
||||
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
|
||||
IEEE80211_HW_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
|
||||
@@ -4790,6 +4790,67 @@ out_free:
|
||||
@@ -4789,6 +4789,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)
|
||||
{
|
||||
@@ -4829,6 +4890,11 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4828,6 +4889,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
|
||||
@@ -1759,6 +1759,8 @@ static void sta_apply_mesh_params(struct
|
||||
@@ -1761,6 +1761,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:
|
||||
@@ -1773,6 +1775,7 @@ static void sta_apply_mesh_params(struct
|
||||
@@ -1775,6 +1777,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
|
||||
@@ -4713,10 +4713,15 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4717,10 +4717,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;
|
||||
@@ -4757,7 +4762,7 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4761,7 +4766,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;
|
||||
@@ -4939,6 +4944,10 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4943,6 +4948,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
|
||||
@@ -4988,6 +4997,37 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4992,6 +5001,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)))
|
||||
@@ -5025,9 +5065,33 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -5029,9 +5069,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
|
||||
@@ -4721,7 +4721,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4720,7 +4720,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) {
|
||||
@@ -4775,7 +4775,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4774,7 +4774,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
}
|
||||
|
||||
dev_sw_netstats_tx_add(dev, skbs, len);
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -1011,7 +1011,8 @@ static bool ieee80211_set_sdata_offload_
|
||||
@@ -998,7 +998,8 @@ static bool ieee80211_set_sdata_offload_
|
||||
flags |= IEEE80211_OFFLOAD_DECAP_ENABLED;
|
||||
|
||||
if (local->monitors &&
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
|
||||
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -1442,8 +1442,6 @@ ieee80211_tx_info_clear_status(struct ie
|
||||
@@ -1481,8 +1481,6 @@ ieee80211_tx_info_clear_status(struct ie
|
||||
* @RX_FLAG_AMPDU_IS_LAST: this subframe is the last subframe of the A-MPDU
|
||||
* @RX_FLAG_AMPDU_DELIM_CRC_ERROR: A delimiter CRC error has been detected
|
||||
* on this subframe
|
||||
@ -23,7 +23,7 @@ Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
|
||||
* @RX_FLAG_MIC_STRIPPED: The mic was stripped of this packet. Decryption was
|
||||
* done by the hardware
|
||||
* @RX_FLAG_ONLY_MONITOR: Report frame only to monitor interfaces without
|
||||
@@ -1500,39 +1498,38 @@ ieee80211_tx_info_clear_status(struct ie
|
||||
@@ -1539,39 +1537,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
|
||||
@@ -2060,6 +2060,11 @@ netdev_tx_t ieee80211_subif_start_xmit(s
|
||||
@@ -2080,6 +2080,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,
|
||||
@@ -4343,7 +4344,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4342,7 +4343,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;
|
||||
}
|
||||
@@ -4389,7 +4390,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4388,7 +4389,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);
|
||||
@@ -4689,7 +4690,8 @@ static bool ieee80211_tx_8023(struct iee
|
||||
@@ -4688,7 +4689,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;
|
||||
@@ -4745,6 +4747,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4744,6 +4746,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 &&
|
||||
@@ -4765,11 +4768,12 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4764,11 +4767,12 @@ static void ieee80211_8023_xmit(struct i
|
||||
memcpy(IEEE80211_SKB_CB(seg), info, sizeof(*info));
|
||||
}
|
||||
|
||||
@ -96,7 +96,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
if (info->status_data)
|
||||
info->status_data_idr = 1;
|
||||
}
|
||||
@@ -4792,7 +4796,8 @@ out_free:
|
||||
@@ -4791,7 +4795,8 @@ out_free:
|
||||
|
||||
void ieee80211_8023_xmit_ap(struct ieee80211_sub_if_data *sdata,
|
||||
struct net_device *dev, struct sta_info *sta,
|
||||
@ -106,7 +106,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
{
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
@@ -4801,6 +4806,9 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
@@ -4800,6 +4805,9 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
unsigned long flags;
|
||||
int q;
|
||||
u16 q_map;
|
||||
@ -116,7 +116,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
/*
|
||||
* If the skb is shared we need to obtain our own copy.
|
||||
@@ -4812,11 +4820,13 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
@@ -4811,11 +4819,13 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
memset(info, 0, sizeof(*info));
|
||||
@ -133,7 +133,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
info->flags |= IEEE80211_TX_CTL_HW_80211_ENCAP;
|
||||
info->control.vif = &sdata->vif;
|
||||
@@ -4850,14 +4860,23 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
@@ -4849,14 +4859,23 @@ void ieee80211_8023_xmit_ap(struct ieee8
|
||||
drv_tx(local, &control, skb);
|
||||
|
||||
}
|
||||
@ -158,7 +158,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
#ifdef CPTCFG_MAC80211_NSS_SUPPORT
|
||||
ieee80211_xmit_nss_fixup(skb, dev);
|
||||
@@ -4873,14 +4892,15 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4872,14 +4891,15 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
kfree_skb(skb);
|
||||
goto out;
|
||||
}
|
||||
@ -176,7 +176,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
goto skip_offload;
|
||||
|
||||
key = rcu_dereference(sta->ptk[sta->ptk_idx]);
|
||||
@@ -4891,13 +4911,13 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
@@ -4890,13 +4910,13 @@ netdev_tx_t ieee80211_subif_start_xmit_8
|
||||
goto skip_offload;
|
||||
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP) {
|
||||
@ -192,7 +192,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
goto out;
|
||||
|
||||
skip_offload:
|
||||
@@ -6419,7 +6439,10 @@ int ieee80211_tx_control_port(struct wip
|
||||
@@ -6420,7 +6440,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
|
||||
@@ -2346,7 +2346,7 @@ static void mpath_set_pinfo(struct mesh_
|
||||
@@ -2365,7 +2365,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,7 +16,7 @@ Signed-off-by: Maharaja Kennadyrajan <quic_mkenna@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -2411,7 +2411,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
@@ -2407,7 +2407,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
}
|
||||
|
||||
static struct ieee80211_sta_rx_stats *
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Maharaja Kennadyrajan <quic_mkenna@quicinc.com>
|
||||
{
|
||||
struct ieee80211_sta_rx_stats *stats = &sta->deflink.rx_stats;
|
||||
int cpu;
|
||||
@@ -2424,8 +2424,13 @@ sta_get_last_rx_stats(struct sta_info *s
|
||||
@@ -2420,8 +2420,13 @@ sta_get_last_rx_stats(struct sta_info *s
|
||||
|
||||
for_each_possible_cpu(cpu) {
|
||||
struct ieee80211_sta_rx_stats *cpustats;
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Maharaja Kennadyrajan <quic_mkenna@quicinc.com>
|
||||
|
||||
if (time_after(cpustats->last_rx, stats->last_rx))
|
||||
stats = cpustats;
|
||||
@@ -2502,7 +2507,7 @@ static void sta_stats_decode_rate(struct
|
||||
@@ -2498,7 +2503,7 @@ static void sta_stats_decode_rate(struct
|
||||
|
||||
static int sta_set_rate_info_rx(struct sta_info *sta, struct rate_info *rinfo)
|
||||
{
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Maharaja Kennadyrajan <quic_mkenna@quicinc.com>
|
||||
|
||||
if (rate == STA_STATS_RATE_INVALID)
|
||||
return -EINVAL;
|
||||
@@ -2602,7 +2607,7 @@ void sta_set_sinfo(struct sta_info *sta,
|
||||
@@ -2598,7 +2603,7 @@ void sta_set_sinfo(struct sta_info *sta,
|
||||
int i, ac, cpu;
|
||||
struct ieee80211_sta_rx_stats *last_rxstats;
|
||||
|
||||
@ -57,7 +57,7 @@ Signed-off-by: Maharaja Kennadyrajan <quic_mkenna@quicinc.com>
|
||||
|
||||
sinfo->generation = sdata->local->sta_generation;
|
||||
|
||||
@@ -2886,7 +2891,7 @@ u32 sta_get_expected_throughput(struct s
|
||||
@@ -2882,7 +2887,7 @@ u32 sta_get_expected_throughput(struct s
|
||||
|
||||
unsigned long ieee80211_sta_last_active(struct sta_info *sta)
|
||||
{
|
||||
|
||||
@ -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,
|
||||
@@ -3658,7 +3660,7 @@ ieee80211_sdata_netdev_features(struct i
|
||||
@@ -3656,7 +3658,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;
|
||||
@@ -3676,7 +3678,7 @@ ieee80211_tx_skb_fixup(struct sk_buff *s
|
||||
@@ -3674,7 +3676,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)
|
||||
@@ -3822,7 +3824,7 @@ static bool ieee80211_xmit_fast(struct i
|
||||
@@ -3820,7 +3822,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;
|
||||
|
||||
@@ -4367,7 +4369,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4366,7 +4368,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;
|
||||
@@ -4740,7 +4742,7 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4739,7 +4741,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
|
||||
@@ -2263,6 +2263,10 @@ int ieee80211_if_add(struct ieee80211_lo
|
||||
@@ -2246,6 +2246,10 @@ int ieee80211_if_add(struct ieee80211_lo
|
||||
|
||||
ndev->features |= local->hw.netdev_features;
|
||||
ndev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
|
||||
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -2838,6 +2838,9 @@ struct ieee80211_txq {
|
||||
@@ -2875,6 +2875,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 {
|
||||
@@ -2900,6 +2903,7 @@ enum ieee80211_hw_flags {
|
||||
@@ -2937,6 +2940,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
|
||||
IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,
|
||||
IEEE80211_HW_SUPPORTS_TID_CLASS_OFFLOAD,
|
||||
@ -83,7 +83,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
return false;
|
||||
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
|
||||
@@ -4352,7 +4359,8 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -4351,7 +4358,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) {
|
||||
@@ -4706,8 +4714,10 @@ static void ieee80211_8023_xmit(struct i
|
||||
@@ -4705,8 +4713,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);
|
||||
|
||||
@@ -6426,9 +6436,12 @@ int ieee80211_tx_control_port(struct wip
|
||||
@@ -6427,9 +6437,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
|
||||
@@ -4565,6 +4565,9 @@ static int ieee80211_get_txq_stats(struc
|
||||
@@ -4576,6 +4576,9 @@ static int ieee80211_get_txq_stats(struc
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
int ret = 0;
|
||||
|
||||
@ -135,7 +135,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/main.c
|
||||
+++ b/net/mac80211/main.c
|
||||
@@ -993,7 +993,10 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
@@ -1001,7 +1001,10 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
atomic_set(&local->agg_queue_stop[i], 0);
|
||||
}
|
||||
tasklet_setup(&local->tx_pending_tasklet, ieee80211_tx_pending);
|
||||
@ -205,7 +205,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
int i;
|
||||
|
||||
sta = kzalloc(sizeof(*sta) + hw->sta_data_size, gfp);
|
||||
@@ -615,18 +617,22 @@ __sta_info_alloc(struct ieee80211_sub_if
|
||||
@@ -611,18 +613,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))
|
||||
@@ -700,7 +706,8 @@ __sta_info_alloc(struct ieee80211_sub_if
|
||||
@@ -696,7 +702,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
|
||||
@@ -1719,11 +1726,13 @@ void ieee80211_sta_ps_deliver_wakeup(str
|
||||
@@ -1715,11 +1722,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);
|
||||
|
||||
@ -265,7 +265,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
}
|
||||
|
||||
skb_queue_head_init(&pending);
|
||||
@@ -2138,6 +2147,9 @@ ieee80211_sta_ps_deliver_response(struct
|
||||
@@ -2134,6 +2143,9 @@ ieee80211_sta_ps_deliver_response(struct
|
||||
* TIM recalculation.
|
||||
*/
|
||||
|
||||
@ -275,7 +275,7 @@ 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)) ||
|
||||
@@ -2572,7 +2584,7 @@ static void sta_set_tidstats(struct sta_
|
||||
@@ -2568,7 +2580,7 @@ static void sta_set_tidstats(struct sta_
|
||||
tidstats->tx_msdu_failed = sta->deflink.status_stats.msdu_failed[tid];
|
||||
}
|
||||
|
||||
@ -284,7 +284,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
|
||||
spin_lock_bh(&local->fq.lock);
|
||||
rcu_read_lock();
|
||||
|
||||
@@ -2901,6 +2913,9 @@ unsigned long ieee80211_sta_last_active(
|
||||
@@ -2897,6 +2909,9 @@ unsigned long ieee80211_sta_last_active(
|
||||
|
||||
static void sta_update_codel_params(struct sta_info *sta, u32 thr)
|
||||
{
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Aaradhana Sahu <quic_aarasahu@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -4711,16 +4711,14 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4715,16 +4715,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;
|
||||
}
|
||||
@@ -4942,10 +4940,7 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4946,10 +4944,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
|
||||
@@ -4995,37 +4990,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4999,37 +4994,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)))
|
||||
@@ -5063,30 +5027,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -5067,30 +5031,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Manish Dharanenthiran <quic_mdharane@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -728,7 +728,7 @@ struct ieee80211_if_mesh {
|
||||
@@ -731,7 +731,7 @@ struct ieee80211_if_mesh {
|
||||
struct timer_list mesh_path_root_timer;
|
||||
|
||||
unsigned long wrkq_flags;
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Balamurugan Ramar <quic_bramar@quicinc.com>
|
||||
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -7144,7 +7144,7 @@ void ieee80211_sta_work(struct ieee80211
|
||||
@@ -7752,7 +7752,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
|
||||
@@ -2412,10 +2412,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
@@ -2408,10 +2408,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]);
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -8756,6 +8756,7 @@ bool cfg80211_rx_spurious_frame(struct n
|
||||
@@ -8803,6 +8803,7 @@ bool cfg80211_rx_spurious_frame(struct n
|
||||
* @dev: The device the frame matched to
|
||||
* @addr: the transmitter address
|
||||
* @gfp: context flags
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
*
|
||||
* This function is used in AP mode (only!) to inform userspace that
|
||||
* an associated station sent a 4addr frame but that wasn't expected.
|
||||
@@ -8765,7 +8766,8 @@ bool cfg80211_rx_spurious_frame(struct n
|
||||
@@ -8812,7 +8813,8 @@ bool cfg80211_rx_spurious_frame(struct n
|
||||
* for a reason other than not having a subscription.)
|
||||
*/
|
||||
bool cfg80211_rx_unexpected_4addr_frame(struct net_device *dev,
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
* cfg80211_probe_status - notify userspace about probe status
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2188,9 +2188,16 @@ static int ieee80211_change_station(stru
|
||||
@@ -2207,9 +2207,16 @@ static int ieee80211_change_station(stru
|
||||
vlansdata = IEEE80211_DEV_TO_SUB_IF(params->vlan);
|
||||
|
||||
if (params->vlan->ieee80211_ptr->use_4addr) {
|
||||
@ -54,7 +54,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
|
||||
__ieee80211_check_fast_rx_iface(vlansdata);
|
||||
|
||||
@@ -2200,6 +2207,39 @@ static int ieee80211_change_station(stru
|
||||
@@ -2219,6 +2226,39 @@ static int ieee80211_change_station(stru
|
||||
else
|
||||
drv_sta_set_4addr(local, sta->sdata, &sta->sta,
|
||||
true);
|
||||
@ -127,7 +127,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -18877,7 +18877,8 @@ void cfg80211_conn_failed(struct net_dev
|
||||
@@ -18916,7 +18916,8 @@ void cfg80211_conn_failed(struct net_dev
|
||||
EXPORT_SYMBOL(cfg80211_conn_failed);
|
||||
|
||||
static bool __nl80211_unexpected_frame(struct net_device *dev, u8 cmd,
|
||||
@ -137,7 +137,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
{
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
|
||||
@@ -18903,6 +18904,9 @@ static bool __nl80211_unexpected_frame(s
|
||||
@@ -18942,6 +18943,9 @@ static bool __nl80211_unexpected_frame(s
|
||||
nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr))
|
||||
goto nla_put_failure;
|
||||
|
||||
@ -147,7 +147,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
genlmsg_end(msg, hdr);
|
||||
genlmsg_unicast(wiphy_net(&rdev->wiphy), msg, nlportid);
|
||||
return true;
|
||||
@@ -18926,14 +18930,15 @@ bool cfg80211_rx_spurious_frame(struct n
|
||||
@@ -18965,14 +18969,15 @@ bool cfg80211_rx_spurious_frame(struct n
|
||||
return false;
|
||||
}
|
||||
ret = __nl80211_unexpected_frame(dev, NL80211_CMD_UNEXPECTED_FRAME,
|
||||
@ -165,7 +165,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
{
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
bool ret;
|
||||
@@ -18948,7 +18953,7 @@ bool cfg80211_rx_unexpected_4addr_frame(
|
||||
@@ -18987,7 +18992,7 @@ bool cfg80211_rx_unexpected_4addr_frame(
|
||||
}
|
||||
ret = __nl80211_unexpected_frame(dev,
|
||||
NL80211_CMD_UNEXPECTED_4ADDR_FRAME,
|
||||
@ -176,7 +176,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
}
|
||||
--- a/net/mac80211/chan.c
|
||||
+++ b/net/mac80211/chan.c
|
||||
@@ -979,6 +979,8 @@ __ieee80211_link_copy_chanctx_to_vlans(s
|
||||
@@ -1035,6 +1035,8 @@ __ieee80211_link_copy_chanctx_to_vlans(s
|
||||
list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) {
|
||||
struct ieee80211_bss_conf *vlan_conf;
|
||||
|
||||
@ -185,7 +185,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
vlan_conf = wiphy_dereference(local->hw.wiphy,
|
||||
vlan->vif.link_conf[link_id]);
|
||||
if (WARN_ON(!vlan_conf))
|
||||
@@ -1220,6 +1222,8 @@ ieee80211_link_update_chanreq(struct iee
|
||||
@@ -1276,6 +1278,8 @@ ieee80211_link_update_chanreq(struct iee
|
||||
list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) {
|
||||
struct ieee80211_bss_conf *vlan_conf;
|
||||
|
||||
@ -196,7 +196,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
|
||||
if (WARN_ON(!vlan_conf))
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -1847,9 +1847,9 @@ void ieee80211_send_4addr_nullfunc(struc
|
||||
@@ -2062,9 +2062,9 @@ void ieee80211_send_4addr_nullfunc(struc
|
||||
fc = cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC |
|
||||
IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS);
|
||||
nullfunc->frame_control = fc;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user