ath11k_nss: Refresh patches for backports 6.11.2

Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
Sean Khan
2024-09-30 23:33:21 -04:00
parent 3b40600123
commit f78a7d6e35
45 changed files with 202 additions and 203 deletions

View File

@@ -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
@@ -418,6 +420,17 @@ struct ath11k_vif_iter {
@@ -419,6 +421,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;
@@ -429,10 +442,6 @@ struct ath11k_rx_peer_stats {
@@ -430,10 +443,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];
@@ -440,6 +449,8 @@ struct ath11k_rx_peer_stats {
@@ -441,6 +450,8 @@ struct ath11k_rx_peer_stats {
u64 rx_duration;
u64 dcm_count;
u64 ru_alloc_cnt[HAL_RX_RU_ALLOC_TYPE_MAX];

View File

@@ -23,7 +23,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
#include "fw.h"
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
@@ -511,6 +512,8 @@ struct ath11k_htt_data_stats {
@@ -512,6 +513,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 {
@@ -518,6 +521,9 @@ struct ath11k_htt_tx_stats {
@@ -519,6 +522,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 {
@@ -634,11 +640,16 @@ struct ath11k_per_peer_tx_stats {
@@ -635,11 +641,16 @@ struct ath11k_per_peer_tx_stats {
u32 succ_bytes;
u32 retry_bytes;
u32 failed_bytes;

View File

@@ -33,7 +33,7 @@
struct ath11k_vif {
u32 vdev_id;
enum wmi_vdev_type vdev_type;
@@ -414,6 +424,7 @@ struct ath11k_vif {
@@ -415,6 +425,7 @@ struct ath11k_vif {
struct ath11k_rekey_data rekey_data;
struct ath11k_reg_tpc_power_info reg_tpc_info;
@@ -258,7 +258,7 @@
ieee80211_tx_status_irqsafe(ar->hw, msdu);
num_mgmt = atomic_dec_if_positive(&ar->num_pending_mgmt_tx);
@@ -7545,6 +7576,11 @@ static void ath11k_mgmt_rx_event(struct
@@ -7547,6 +7578,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");
@@ -7610,7 +7646,34 @@ static void ath11k_mgmt_rx_event(struct
@@ -7612,7 +7648,34 @@ static void ath11k_mgmt_rx_event(struct
hdr = (struct ieee80211_hdr *)skb->data;
fc = le16_to_cpu(hdr->frame_control);

View File

@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -10199,6 +10199,8 @@ static int __ath11k_mac_register(struct
@@ -10211,6 +10211,8 @@ static int __ath11k_mac_register(struct
wiphy_ext_feature_set(ar->hw->wiphy,
NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT);

View File

@@ -260,8 +260,8 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
+ if (!peer) {
+ spin_unlock_bh(&ab->base_lock);
+ if(ab->nss.debug_mode)
+ ath11k_warn(ab, "ath11k_nss: unable to free peer mem, peer_id:%d\n",
+ peer_id);
+ ath11k_warn(ab, "ath11k_nss: unable to free peer mem, peer_id:%d\n",
+ peer_id);
+ return;
+ }
+
@@ -1298,9 +1298,9 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
+ preamble_type = ppdu_info->preamble_type;
+ }
+
+ if ((preamble_type == WMI_RATE_PREAMBLE_CCK ||
+ preamble_type == WMI_RATE_PREAMBLE_OFDM) &&
+ (ppdu_info->rate < ATH11K_LEGACY_NUM)) {
+ if ((preamble_type == WMI_RATE_PREAMBLE_CCK ||
+ preamble_type == WMI_RATE_PREAMBLE_OFDM) &&
+ (ppdu_info->rate < ATH11K_LEGACY_NUM)) {
+ rate = ath11k_hal_rx_legacy_rates[ppdu_info->rate];
+ }
+
@@ -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
@@ -890,6 +890,8 @@ struct ath11k_soc_dp_tx_err_stats {
@@ -891,6 +891,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 {
@@ -976,6 +978,7 @@ struct ath11k_base {
@@ -977,6 +979,7 @@ struct ath11k_base {
struct list_head peers;
wait_queue_head_t peer_mapping_wq;
u8 mac_addr[ETH_ALEN];

View File

@@ -164,7 +164,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
@@ -425,6 +426,9 @@ struct ath11k_vif {
@@ -426,6 +427,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 {
@@ -578,6 +582,9 @@ struct ath11k_sta {
@@ -579,6 +583,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 */
@@ -672,6 +679,9 @@ struct ath11k {
@@ -673,6 +680,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;
@@ -933,9 +943,11 @@ struct ath11k_base {
@@ -934,9 +944,11 @@ struct ath11k_base {
struct ath11k_htc htc;
struct ath11k_dp dp;
@@ -380,7 +380,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
}
+void ath11k_dp_rx_from_nss(struct ath11k *ar, struct sk_buff *msdu,
+ struct napi_struct *napi)
+ struct napi_struct *napi)
+{
+ struct ieee80211_rx_status rx_status = {0};
+ struct ath11k_skb_rxcb *rxcb;
@@ -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",
@@ -6740,7 +6813,34 @@ static int ath11k_mac_op_add_interface(s
@@ -6751,7 +6824,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,
@@ -6870,6 +6970,7 @@ err_peer_del:
@@ -6881,6 +6981,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);
@@ -7387,6 +7488,10 @@ ath11k_mac_update_vif_chan(struct ath11k
@@ -7399,6 +7500,10 @@ ath11k_mac_update_vif_chan(struct ath11k
arvif->vdev_id, ret);
continue;
}
@@ -729,7 +729,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
}
/* Restart the internal monitor vdev on new channel */
@@ -9014,6 +9119,8 @@ static void ath11k_mac_op_sta_statistics
@@ -9026,6 +9131,8 @@ static void ath11k_mac_op_sta_statistics
sinfo->signal_avg += ATH11K_DEFAULT_NOISE_FLOOR;
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG);
@@ -738,7 +738,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
}
#if IS_ENABLED(CONFIG_IPV6)
@@ -9711,6 +9818,7 @@ static const struct ieee80211_ops ath11k
@@ -9723,6 +9830,7 @@ static const struct ieee80211_ops ath11k
.update_vif_offload = ath11k_mac_op_update_vif_offload,
.config = ath11k_mac_op_config,
.bss_info_changed = ath11k_mac_op_bss_info_changed,
@@ -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,
@@ -10149,7 +10257,8 @@ static int __ath11k_mac_register(struct
@@ -10161,7 +10269,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;
@@ -10264,6 +10373,9 @@ static int __ath11k_mac_register(struct
@@ -10276,6 +10385,9 @@ static int __ath11k_mac_register(struct
ab->hw_params.bios_sar_capa)
ar->hw->wiphy->sar_capa = ab->hw_params.bios_sar_capa;

View File

@@ -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] = {
@@ -8805,6 +8807,74 @@ out:
@@ -8807,6 +8809,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;
@@ -8923,6 +8993,9 @@ static void ath11k_wmi_tlv_op_rx(struct
@@ -8925,6 +8995,9 @@ static void ath11k_wmi_tlv_op_rx(struct
case WMI_11D_NEW_COUNTRY_EVENTID:
ath11k_reg_11d_new_cc_event(ab, skb);
break;

View File

@@ -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
@@ -10390,6 +10390,9 @@ static int __ath11k_mac_register(struct
@@ -10402,6 +10402,9 @@ static int __ath11k_mac_register(struct
*/
ar->hw->wiphy->interface_modes &= ~BIT(NL80211_IFTYPE_MONITOR);

View File

@@ -152,7 +152,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
@@ -928,6 +928,11 @@ struct ath11k_msi_config {
@@ -929,6 +929,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;
@@ -1085,6 +1090,8 @@ struct ath11k_base {
@@ -1086,6 +1091,8 @@ struct ath11k_base {
DECLARE_BITMAP(fw_features, ATH11K_FW_FEATURE_COUNT);
} fw;

View File

@@ -652,7 +652,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
-static inline int ath11k_nss_peer_delete(struct ath11k_base *ab, const u8 *addr)
+static inline int ath11k_nss_peer_delete(struct ath11k_base *ab, u32 vdev_id,
+ const u8 *addr)
+ const u8 *addr)
{
return 0;
}

View File

@@ -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
@@ -682,6 +682,7 @@ struct ath11k {
@@ -683,6 +683,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];
@@ -1100,6 +1101,9 @@ struct ath11k_base {
@@ -1101,6 +1102,9 @@ struct ath11k_base {
} testmode;
#endif
@@ -378,7 +378,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
+}
+
+void ath11k_peer_ast_cleanup(struct ath11k *ar, struct ath11k_peer *peer,
+ bool is_wds, u32 free_wds_count)
+ bool is_wds, u32 free_wds_count)
+{
+ struct ath11k_ast_entry *ast_entry, *tmp;
+ u32 ast_deleted_count = 0;
@@ -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:
@@ -8875,6 +8953,22 @@ exit:
@@ -8877,6 +8955,22 @@ exit:
kfree(tb);
}
@@ -905,7 +905,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb)
{
struct wmi_cmd_hdr *cmd_hdr;
@@ -9008,6 +9102,9 @@ static void ath11k_wmi_tlv_op_rx(struct
@@ -9010,6 +9104,9 @@ static void ath11k_wmi_tlv_op_rx(struct
case WMI_P2P_NOA_EVENTID:
ath11k_wmi_p2p_noa_event(ab, skb);
break;

View File

@@ -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);
@@ -7836,10 +7894,11 @@ exit:
@@ -7838,10 +7896,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;
}
@@ -7852,7 +7911,7 @@ static void ath11k_mgmt_tx_compl_event(s
@@ -7854,7 +7913,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",
@@ -7863,6 +7922,36 @@ exit:
@@ -7865,6 +7924,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)
@@ -9105,6 +9194,10 @@ static void ath11k_wmi_tlv_op_rx(struct
@@ -9107,6 +9196,10 @@ static void ath11k_wmi_tlv_op_rx(struct
case WMI_WDS_PEER_EVENTID:
ath11k_wmi_wds_peer_event(ab, skb);
break;

View File

@@ -215,8 +215,8 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
ath11k_dbg(ar->ab, ATH11K_DBG_NSS, "nss vdev up tx msg success\n");
+
+ if (arvif->vif->type == NL80211_IFTYPE_AP)
+ list_for_each_entry_safe(ap_vlan_arvif, tmp, &arvif->ap_vlan_arvifs,
+ list)
+ list_for_each_entry_safe(ap_vlan_arvif, tmp,
+ &arvif->ap_vlan_arvifs, list)
+ if (ap_vlan_arvif->nss.added)
+ ath11k_nss_ext_vdev_up(ap_vlan_arvif);
free:
@@ -236,8 +236,8 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
ath11k_dbg(ar->ab, ATH11K_DBG_NSS, "nss vdev down tx msg success\n");
+
+ if (arvif->vif->type == NL80211_IFTYPE_AP)
+ list_for_each_entry_safe(ap_vlan_arvif, tmp, &arvif->ap_vlan_arvifs,
+ list)
+ list_for_each_entry_safe(ap_vlan_arvif, tmp,
+ &arvif->ap_vlan_arvifs, list)
+ ath11k_nss_ext_vdev_down(ap_vlan_arvif);
free:
kfree(vdev_msg);

View File

@@ -69,7 +69,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
struct ath11k_vif {
u32 vdev_id;
enum wmi_vdev_type vdev_type;
@@ -431,6 +450,11 @@ struct ath11k_vif {
@@ -432,6 +451,11 @@ struct ath11k_vif {
struct arvif_nss nss;
#endif
struct list_head ap_vlan_arvifs;
@@ -346,7 +346,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
+ } else if (!peer) {
/* impossible unless FW goes crazy */
ath11k_warn(ab, "peer %pM disappeared!\n", peer_addr);
+ }
+ }
- if (sta) {
- arsta = ath11k_sta_to_arsta(sta);
@@ -354,7 +354,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
switch (key->cipher) {
case WLAN_CIPHER_SUITE_TKIP:
@@ -6889,7 +7063,7 @@ static int ath11k_mac_op_add_interface(s
@@ -6899,7 +7073,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;
@@ -6902,6 +7076,7 @@ static int ath11k_mac_op_add_interface(s
@@ -6912,6 +7086,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;
}
@@ -6926,6 +7101,20 @@ static int ath11k_mac_op_add_interface(s
@@ -6937,6 +7112,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:
@@ -6975,7 +7164,7 @@ static int ath11k_mac_op_add_interface(s
@@ -6986,7 +7175,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++;
@@ -7140,7 +7329,7 @@ err_peer_del:
@@ -7151,7 +7340,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>
}
}
@@ -7151,6 +7340,8 @@ err_vdev_del:
@@ -7162,6 +7351,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);
@@ -7248,6 +7439,7 @@ err_vdev_del:
@@ -7260,6 +7451,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,
@@ -9872,6 +10064,33 @@ static int ath11k_mac_station_remove(str
@@ -9884,6 +10076,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,
@@ -9961,6 +10180,34 @@ static int ath11k_mac_op_sta_state(struc
@@ -9973,6 +10192,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 &&
@@ -10575,8 +10822,11 @@ static int __ath11k_mac_register(struct
@@ -10587,8 +10834,11 @@ static int __ath11k_mac_register(struct
ab->hw_params.bios_sar_capa)
ar->hw->wiphy->sar_capa = ab->hw_params.bios_sar_capa;

View File

@@ -29,7 +29,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
};
enum ath11k_hw_rev {
@@ -1129,6 +1130,7 @@ struct ath11k_base {
@@ -1130,6 +1131,7 @@ struct ath11k_base {
u32 max_ast_index;
u32 num_ast_entries;
@@ -124,7 +124,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
goto out;
}
+ debugfs_create_file("stats_disable", 0600, ab->debugfs_soc, ab,
+ &fops_soc_stats_disable);
+ &fops_soc_stats_disable);
ret = 0;
@@ -425,7 +425,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
@@ -10234,6 +10234,14 @@ static int ath11k_mac_op_sta_state(struc
@@ -10246,6 +10246,14 @@ static int ath11k_mac_op_sta_state(struc
}
} else if (old_state == IEEE80211_STA_AUTHORIZED &&
new_state == IEEE80211_STA_ASSOC) {

View File

@@ -34,7 +34,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
};
struct ath11k_skb_cb {
@@ -924,10 +925,13 @@ struct ath11k_dp_ring_bp_stats {
@@ -925,10 +926,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];
@@ -454,7 +454,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
ieee80211_free_txskb(ar->hw, skb);
return;
}
@@ -7445,7 +7455,7 @@ err_vdev_del:
@@ -7457,7 +7467,7 @@ err_vdev_del:
idr_for_each(&ar->txmgmt_idr,
ath11k_mac_vif_txmgmt_idr_remove, vif);

View File

@@ -1257,7 +1257,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
mutex_unlock(&ar->conf_mutex);
}
@@ -10274,6 +10286,28 @@ static int ath11k_mac_op_sta_state(struc
@@ -10286,6 +10298,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,
@@ -10332,6 +10366,9 @@ static const struct ieee80211_ops ath11k
@@ -10344,6 +10378,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,
@@ -10844,6 +10881,8 @@ static int __ath11k_mac_register(struct
@@ -10856,6 +10893,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);
@@ -3272,7 +3272,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
+ enum ieee80211_mesh_path_offld_cmd cmd,
+ struct ieee80211_mesh_path_offld *path)
+{
+ return 0;
+ return 0;
+}
+#endif
+int ath11k_nss_mesh_config_update(struct ieee80211_vif *vif, int changed);

View File

@@ -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
@@ -7464,8 +7464,10 @@ err_vdev_del:
@@ -7476,8 +7476,10 @@ err_vdev_del:
kfree(arvif->vlan_keyid_map);
ath11k_peer_cleanup(ar, arvif->vdev_id);

View File

@@ -83,7 +83,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
#include "fw.h"
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
@@ -1133,6 +1134,9 @@ struct ath11k_base {
@@ -1134,6 +1135,9 @@ struct ath11k_base {
u32 max_ast_index;
u32 num_ast_entries;
@@ -358,7 +358,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
return 0;
+ if (peer && peer->delete_in_progress)
+ return -EINVAL;
+ return -EINVAL;
+
ast_entry->vdev_id = peer->vdev_id;
ast_entry->pdev_idx = peer->pdev_idx;

View File

@@ -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
@@ -10767,6 +10767,8 @@ static int __ath11k_mac_register(struct
@@ -10779,6 +10779,8 @@ static int __ath11k_mac_register(struct
ieee80211_hw_set(ar->hw, USES_RSS);
}

View File

@@ -30,7 +30,7 @@ Signed-off-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
return 0;
}
@@ -10186,6 +10180,17 @@ static int ath11k_mac_op_sta_state(struc
@@ -10198,6 +10192,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);

View File

@@ -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
@@ -943,6 +943,9 @@ struct ath11k_soc_dp_stats {
@@ -944,6 +944,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];

View File

@@ -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
@@ -8688,6 +8688,8 @@ static int ath11k_mac_flush_tx_complete(
@@ -8700,6 +8700,8 @@ static int ath11k_mac_flush_tx_complete(
ret = -ETIMEDOUT;
}

View File

@@ -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
@@ -10758,6 +10758,7 @@ static int __ath11k_mac_register(struct
@@ -10770,6 +10770,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);

View File

@@ -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
@@ -10364,7 +10364,7 @@ static const struct ieee80211_ops ath11k
@@ -10376,7 +10376,7 @@ static const struct ieee80211_ops ath11k
.set_wakeup = ath11k_wow_op_set_wakeup,
#endif

View File

@@ -688,13 +688,13 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
+static bool ath11k_hw_qcn9074_rx_desc_mac_addr2_valid(struct hal_rx_desc *desc)
{
- return &desc->u.ipq8074.msdu_payload[0];
+ return __le32_to_cpu(desc->u.qcn9074.mpdu_start.info11) &
+ return __le32_to_cpu(desc->u.qcn9074.mpdu_start.info11) &
+ RX_MPDU_START_INFO11_MAC_ADDR2_VALID;
+}
+
+static u8* ath11k_hw_qcn9074_rx_desc_mpdu_start_addr2(struct hal_rx_desc *desc)
+{
+ return desc->u.qcn9074.mpdu_start.addr2;
+ return desc->u.qcn9074.mpdu_start.addr2;
}
static bool ath11k_hw_qcn9074_rx_desc_get_first_msdu(struct hal_rx_desc *desc)
@@ -943,7 +943,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
ret = ath11k_dp_tx_htt_rx_filter_setup(ar->ab, ring_id,
--- a/drivers/net/wireless/ath/ath11k/rx_desc.h
+++ b/drivers/net/wireless/ath/ath11k/rx_desc.h
@@ -1508,4 +1508,17 @@ struct hal_rx_desc {
@@ -1508,4 +1508,16 @@ struct hal_rx_desc {
#define RU_484 18
#define RU_996 37
@@ -958,7 +958,6 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
+
+#define HAL_RX_MPDU_INFO_PN_GET_BYTE4(__val) \
+ FIELD_GET(GENMASK(31, 24), __le32_to_cpu(__val))
+
+
#endif /* ATH11K_RX_DESC_H */
--- a/drivers/net/wireless/ath/ath11k/nss.c

View File

@@ -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
@@ -703,6 +703,11 @@ struct ath11k_per_peer_tx_stats {
@@ -704,6 +704,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;
@@ -852,6 +857,7 @@ struct ath11k {
@@ -853,6 +858,7 @@ struct ath11k {
bool ps_state_enable;
bool ps_timekeeper_enable;
s8 max_allowed_tx_power;

View File

@@ -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
@@ -3237,6 +3237,7 @@ ath11k_wmi_send_thermal_mitigation_param
@@ -3236,6 +3236,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;
@@ -168,11 +168,11 @@
};
+typedef enum {
+ WMI_THERMAL_CLIENT_UNSPECIFIED = 0,
+ WMI_THERMAL_CLIENT_APPS = 1,
+ WMI_THERMAL_CLIENT_WPSS = 2,
+ WMI_THERMAL_CLIENT_FW = 3,
+ WMI_THERMAL_CLIENT_MAX
+ WMI_THERMAL_CLIENT_UNSPECIFIED = 0,
+ WMI_THERMAL_CLIENT_APPS = 1,
+ WMI_THERMAL_CLIENT_WPSS = 2,
+ WMI_THERMAL_CLIENT_FW = 3,
+ WMI_THERMAL_CLIENT_MAX
+} WMI_THERMAL_MITIGATION_CLIENTS;
+
struct wmi_therm_throt_config_request_cmd {
@@ -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
@@ -6683,6 +6683,9 @@ static int ath11k_mac_op_start(struct ie
@@ -6704,6 +6704,9 @@ static int ath11k_mac_op_start(struct ie
}
}

View File

@@ -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
@@ -740,9 +740,22 @@ struct ath11k {
@@ -741,9 +741,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;
@@ -820,6 +833,9 @@ struct ath11k {
@@ -821,6 +834,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;
@@ -1023,19 +1039,7 @@ struct ath11k_base {
@@ -1024,19 +1040,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];
@@ -1412,4 +1416,36 @@ static inline const char *ath11k_bus_str
@@ -1413,4 +1417,36 @@ static inline const char *ath11k_bus_str
return "unknown";
}
@@ -784,7 +784,7 @@
ar->num_peers = 0;
ar->num_stations = 0;
@@ -3187,7 +3187,7 @@ static void ath11k_bss_assoc(struct ieee
@@ -3208,7 +3208,7 @@ static void ath11k_bss_assoc(struct ieee
spin_lock_bh(&ar->ab->base_lock);
@@ -793,7 +793,7 @@
if (peer && peer->is_authorized)
is_auth = true;
@@ -4349,7 +4349,7 @@ static int ath11k_clear_peer_keys(struct
@@ -4370,7 +4370,7 @@ static int ath11k_clear_peer_keys(struct
lockdep_assert_held(&ar->conf_mutex);
spin_lock_bh(&ab->base_lock);
@@ -802,7 +802,7 @@
if (!peer) {
spin_unlock_bh(&ab->base_lock);
return -ENOENT;
@@ -4465,7 +4465,7 @@ static int ath11k_mac_op_set_key(struct
@@ -4486,7 +4486,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);
@@ -811,7 +811,7 @@
/* flush the fragments cache during key (re)install to
* ensure all frags in the new frag list belong to the same key.
@@ -4574,7 +4574,7 @@ static int ath11k_mac_op_set_key(struct
@@ -4595,7 +4595,7 @@ static int ath11k_mac_op_set_key(struct
}
spin_lock_bh(&ab->base_lock);
@@ -820,7 +820,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);
@@ -4605,7 +4605,7 @@ static int ath11k_mac_op_set_key(struct
@@ -4626,7 +4626,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;
@@ -829,7 +829,7 @@
if (ret)
ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n",
vlan_sta->addr, ret);
@@ -5215,7 +5215,7 @@ static void ath11k_sta_set_4addr_wk(stru
@@ -5236,7 +5236,7 @@ static void ath11k_sta_set_4addr_wk(stru
vif = ap_vlan_arvif->vif;
spin_lock_bh(&ab->base_lock);
@@ -838,7 +838,7 @@
if (!wds_peer) {
spin_unlock_bh(&ab->base_lock);
ath11k_warn(ab, "mac sta use 4addr failed to find peer %pM\n",
@@ -5438,7 +5438,7 @@ static void ath11k_mac_op_sta_rc_update(
@@ -5459,7 +5459,7 @@ static void ath11k_mac_op_sta_rc_update(
spin_lock_bh(&ar->ab->base_lock);
@@ -847,7 +847,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",
@@ -8463,7 +8463,7 @@ ath11k_mac_op_assign_vif_chanctx(struct
@@ -8496,7 +8496,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 &&
@@ -856,7 +856,7 @@
memcpy(&arvif->chanctx, ctx, sizeof(*ctx));
ret = 0;
goto out;
@@ -8539,7 +8539,7 @@ ath11k_mac_op_unassign_vif_chanctx(struc
@@ -8572,7 +8572,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);
@@ -865,7 +865,7 @@
spin_unlock_bh(&ab->base_lock);
if (peer)
ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr);
@@ -9113,7 +9113,7 @@ ath11k_mac_validate_vht_he_fixed_rate_se
@@ -9146,7 +9146,7 @@ ath11k_mac_validate_vht_he_fixed_rate_se
rcu_read_lock();
spin_lock_bh(&ar->ab->base_lock);
@@ -874,7 +874,7 @@
if (peer->sta) {
deflink = &peer->sta->deflink;
@@ -10069,26 +10069,26 @@ static int ath11k_mac_station_remove(str
@@ -10102,26 +10102,26 @@ static int ath11k_mac_station_remove(str
return ret;
}
@@ -908,7 +908,7 @@
sta->addr, ret);
return ret;
}
@@ -10138,20 +10138,20 @@ static int ath11k_mac_op_sta_state(struc
@@ -10171,20 +10171,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);
@@ -933,7 +933,7 @@
} else if (old_state == IEEE80211_STA_AUTH &&
new_state == IEEE80211_STA_ASSOC &&
(vif->type == NL80211_IFTYPE_AP ||
@@ -10182,7 +10182,7 @@ static int ath11k_mac_op_sta_state(struc
@@ -10215,7 +10215,7 @@ static int ath11k_mac_op_sta_state(struc
new_state == IEEE80211_STA_AUTHORIZED) {
spin_lock_bh(&ar->ab->base_lock);
@@ -942,7 +942,7 @@
if (peer)
peer->is_authorized = true;
@@ -10219,7 +10219,7 @@ static int ath11k_mac_op_sta_state(struc
@@ -10252,7 +10252,7 @@ static int ath11k_mac_op_sta_state(struc
list_add_tail(&ar_dyn_vlan_cfg->cfg_list, &arvif->dyn_vlan_cfg);
}
} else {
@@ -951,7 +951,7 @@
if (ret)
ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n",
sta->addr, ret);
@@ -10252,7 +10252,7 @@ static int ath11k_mac_op_sta_state(struc
@@ -10285,7 +10285,7 @@ static int ath11k_mac_op_sta_state(struc
new_state == IEEE80211_STA_ASSOC) {
spin_lock_bh(&ar->ab->base_lock);
@@ -960,7 +960,7 @@
if (peer)
peer->is_authorized = false;
spin_unlock_bh(&ar->ab->base_lock);
@@ -10260,7 +10260,7 @@ static int ath11k_mac_op_sta_state(struc
@@ -10293,7 +10293,7 @@ static int ath11k_mac_op_sta_state(struc
new_state == IEEE80211_STA_ASSOC) {
spin_lock_bh(&ar->ab->base_lock);
@@ -969,7 +969,7 @@
if (peer)
peer->is_authorized = false;
@@ -10668,9 +10668,9 @@ void ath11k_mac_unregister(struct ath11k
@@ -10701,9 +10701,9 @@ void ath11k_mac_unregister(struct ath11k
continue;
__ath11k_mac_unregister(ar);
@@ -980,7 +980,7 @@
}
static int __ath11k_mac_register(struct ath11k *ar)
@@ -10954,15 +10954,15 @@ int ath11k_mac_register(struct ath11k_ba
@@ -10987,15 +10987,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;
@@ -999,7 +999,7 @@
if (ab->pdevs_macaddr_valid) {
ether_addr_copy(ar->mac_addr, pdev->mac_addr);
} else {
@@ -10990,9 +10990,9 @@ err_cleanup:
@@ -11023,9 +11023,9 @@ err_cleanup:
pdev = &ab->pdevs[i];
ar = pdev->ar;
__ath11k_mac_unregister(ar);
@@ -1010,7 +1010,7 @@
return ret;
}
@@ -11036,9 +11036,12 @@ int ath11k_mac_allocate(struct ath11k_ba
@@ -11069,9 +11069,12 @@ int ath11k_mac_allocate(struct ath11k_ba
ar->num_rx_chains = get_num_chains(pdev->cap.rx_chain_mask);
pdev->ar = ar;
@@ -1062,8 +1062,8 @@
- if (!peer) {
- spin_unlock_bh(&ab->base_lock);
- if(ab->nss.debug_mode)
- ath11k_warn(ab, "ath11k_nss: unable to free peer mem, peer_id:%d\n",
- peer_id);
- ath11k_warn(ab, "ath11k_nss: unable to free peer mem, peer_id:%d\n",
- peer_id);
- return;
- }
+ for (i = 0; i < ab->num_radios; i++) {
@@ -1141,20 +1141,20 @@
-static void ath11k_nss_wds_type_rx(struct ath11k *ar, struct net_device *dev,
+static bool vdev_check_local_dev(u8 *wds_src_mac)
+{
+ struct net_device *dev = NULL;
+ struct net_device *dev = NULL;
+
+ rcu_read_lock();
+ for_each_netdev_rcu(&init_net, dev) {
+ if (!dev) {
+ continue;
+ }
+ if (!memcmp(dev->dev_addr, wds_src_mac, 6)) {
+ rcu_read_unlock();
+ return true;
+ }
+ }
+ rcu_read_unlock();
+ return false;
+ rcu_read_lock();
+ for_each_netdev_rcu(&init_net, dev) {
+ if (!dev) {
+ continue;
+ }
+ if (!memcmp(dev->dev_addr, wds_src_mac, 6)) {
+ rcu_read_unlock();
+ return true;
+ }
+ }
+ rcu_read_unlock();
+ return false;
+}
+
+static void ath11k_nss_wds_type_rx(struct ath11k_vif *arvif, struct net_device *dev,
@@ -1399,7 +1399,7 @@
-static inline int ath11k_nss_peer_delete(struct ath11k_base *ab, u32 vdev_id,
+static inline int ath11k_nss_peer_delete(struct ath11k *ar, u32 vdev_id,
const u8 *addr)
const u8 *addr)
{
return 0;
--- a/drivers/net/wireless/ath/ath11k/peer.c
@@ -1593,7 +1593,7 @@
if (ast_entry) {
ast_entry->ast_idx = hw_peer_id;
@@ -418,6 +386,7 @@ void ath11k_peer_ast_cleanup(struct ath1
bool is_wds, u32 free_wds_count)
bool is_wds, u32 free_wds_count)
{
struct ath11k_ast_entry *ast_entry, *tmp;
+ struct ath11k_base *ab = ar->ab;
@@ -2429,7 +2429,7 @@
{
--- a/drivers/net/wireless/ath/ath11k/wmi.c
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
@@ -7624,10 +7624,12 @@ static void ath11k_wmi_event_peer_sta_ps
@@ -7626,10 +7626,12 @@ static void ath11k_wmi_event_peer_sta_ps
struct ieee80211_sta *sta;
struct ath11k_peer *peer;
struct ath11k *ar;
@@ -2442,7 +2442,7 @@
tb = ath11k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC);
if (IS_ERR(tb)) {
@@ -7651,64 +7653,60 @@ static void ath11k_wmi_event_peer_sta_ps
@@ -7653,64 +7655,60 @@ static void ath11k_wmi_event_peer_sta_ps
rcu_read_lock();
@@ -2549,7 +2549,7 @@
}
out:
@@ -7828,9 +7826,9 @@ static void ath11k_mgmt_rx_event(struct
@@ -7830,9 +7828,9 @@ static void ath11k_mgmt_rx_event(struct
spin_lock_bh(&ab->base_lock);
@@ -2561,7 +2561,7 @@
if (!peer) {
spin_unlock_bh(&ab->base_lock);
goto skip_mgmt_stats;
@@ -8058,9 +8056,8 @@ static void ath11k_peer_sta_kickout_even
@@ -8060,9 +8058,8 @@ static void ath11k_peer_sta_kickout_even
{
struct wmi_peer_sta_kickout_arg arg = {};
struct ieee80211_sta *sta;
@@ -2572,7 +2572,7 @@
if (ath11k_pull_peer_sta_kickout_ev(ab, skb, &arg) != 0) {
ath11k_warn(ab, "failed to extract peer sta kickout event");
@@ -8069,42 +8066,22 @@ static void ath11k_peer_sta_kickout_even
@@ -8071,42 +8068,22 @@ static void ath11k_peer_sta_kickout_even
rcu_read_lock();

View File

@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -5274,14 +5274,19 @@ skip_nss_ext:
@@ -5295,14 +5295,19 @@ skip_nss_ext:
* AP vif of the AP_VLAN vif
*/
ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
@@ -23,7 +23,7 @@
return;
ext_vdev_down:
@@ -7207,6 +7212,23 @@ static int ath11k_mac_op_add_interface(s
@@ -7239,6 +7244,23 @@ static int ath11k_mac_op_add_interface(s
goto err_vdev_del;
}

View File

@@ -64,7 +64,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
};
/**
@@ -1484,7 +1500,7 @@ ieee80211_tx_info_clear_status(struct ie
@@ -1485,7 +1501,7 @@ ieee80211_tx_info_clear_status(struct ie
* @RX_FLAG_AMPDU_EOF_BIT_KNOWN: The EOF value is known
* @RX_FLAG_RADIOTAP_HE: HE radiotap data is present
* (&struct ieee80211_radiotap_he, mac80211 will fill in
@@ -73,7 +73,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
* - DATA3_DATA_MCS
* - DATA3_DATA_DCM
* - DATA3_CODING
@@ -1492,7 +1508,7 @@ ieee80211_tx_info_clear_status(struct ie
@@ -1493,7 +1509,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)
@@ -2127,6 +2143,16 @@ static inline bool lockdep_vif_wiphy_mut
@@ -2128,6 +2144,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
@@ -2825,6 +2851,8 @@ struct ieee80211_txq {
@@ -2826,6 +2852,8 @@ struct ieee80211_txq {
* implements MLO, so operation can continue on other links when one
* link is switching.
*
@@ -108,7 +108,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
*/
enum ieee80211_hw_flags {
@@ -2884,6 +2912,7 @@ enum ieee80211_hw_flags {
@@ -2885,6 +2913,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_DISALLOW_PUNCTURING,
IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ,
IEEE80211_HW_HANDLES_QUIET_CSA,
@@ -116,7 +116,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
/* keep last, obviously */
NUM_IEEE80211_HW_FLAGS
@@ -3899,6 +3928,10 @@ struct ieee80211_prep_tx_info {
@@ -3900,6 +3929,10 @@ struct ieee80211_prep_tx_info {
* non-MLO connections.
* The callback can sleep.
*
@@ -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.
@@ -4461,7 +4494,9 @@ struct ieee80211_ops {
@@ -4462,7 +4495,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,
@@ -4771,7 +4806,7 @@ struct ieee80211_ops {
@@ -4772,7 +4807,7 @@ struct ieee80211_ops {
int (*reset_tid_config)(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_sta *sta, u8 tids);
@@ -189,14 +189,14 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
}
+void ieee80211_nss_bss_info_change_notify(struct ieee80211_sub_if_data *sdata,
+ u64 changed)
+ u64 changed)
+{
+ struct ieee80211_local *local = sdata->local;
+ struct ieee80211_local *local = sdata->local;
+
+ if (!changed || sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
+ return;
+ if (!changed || sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
+ return;
+
+ drv_nss_bss_info_changed(local, sdata, &sdata->vif.bss_conf, changed);
+ drv_nss_bss_info_changed(local, sdata, &sdata->vif.bss_conf, changed);
+}
+
u64 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata)
@@ -308,7 +308,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -2629,6 +2629,9 @@ bool cfg80211_does_bw_fit_range(const st
@@ -2631,6 +2631,9 @@ bool cfg80211_does_bw_fit_range(const st
int cfg80211_sinfo_alloc_tid_stats(struct station_info *sinfo, gfp_t gfp)
{
@@ -375,7 +375,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
{
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1859,6 +1859,8 @@ void ieee80211_vif_cfg_change_notify(str
@@ -1860,6 +1860,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);
@@ -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
@@ -969,7 +969,8 @@ static bool ieee80211_set_sdata_offload_
@@ -984,7 +984,8 @@ static bool ieee80211_set_sdata_offload_
local->hw.wiphy->frag_threshold != (u32)-1)
flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED;

View File

@@ -31,7 +31,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -9698,4 +9698,15 @@ ssize_t wiphy_locked_debugfs_write(struc
@@ -9701,4 +9701,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
@@ -7557,6 +7557,20 @@ u32 ieee80211_calc_rx_airtime(struct iee
@@ -7561,6 +7561,20 @@ u32 ieee80211_calc_rx_airtime(struct iee
int len);
/**
@@ -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
@@ -9336,3 +9336,15 @@ void ieee80211_disable_rssi_reports(stru
@@ -9341,3 +9341,15 @@ void ieee80211_disable_rssi_reports(stru
_ieee80211_enable_rssi_reports(sdata, 0, 0);
}
EXPORT_SYMBOL(ieee80211_disable_rssi_reports);
@@ -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),
@@ -20367,6 +20368,42 @@ void cfg80211_schedule_channels_check(st
@@ -20396,6 +20397,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
@@ -3957,6 +3957,46 @@ TRACE_EVENT(cfg80211_update_owe_info_eve
@@ -3975,6 +3975,46 @@ TRACE_EVENT(cfg80211_update_owe_info_eve
__entry->assoc_link_id, __entry->peer_mld_addr)
);

View File

@@ -40,7 +40,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
extern const struct cfg80211_ops mac80211_config_ops;
@@ -1184,6 +1187,9 @@ struct ieee80211_sub_if_data {
@@ -1185,6 +1188,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
*
@@ -759,6 +765,13 @@ static int ieee80211_stop(struct net_dev
@@ -774,6 +780,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);
@@ -1204,6 +1217,34 @@ void ieee80211_del_virtual_monitor(struc
@@ -1219,6 +1232,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
@@ -1431,6 +1472,21 @@ int ieee80211_do_open(struct wireless_de
@@ -1446,6 +1487,21 @@ int ieee80211_do_open(struct wireless_de
ieee80211_recalc_ps(local);

View File

@@ -21,7 +21,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -5270,6 +5270,17 @@ void ieee80211_sta_pspoll(struct ieee802
@@ -5271,6 +5271,17 @@ void ieee80211_sta_pspoll(struct ieee802
*/
void ieee80211_sta_uapsd_trigger(struct ieee80211_sta *sta, u8 tid);
@@ -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
@@ -682,6 +682,9 @@ static void ieee80211_do_stop(struct iee
@@ -697,6 +697,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)
@@ -960,6 +963,7 @@ static bool ieee80211_iftype_supports_hd
@@ -975,6 +978,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:
@@ -1014,7 +1018,8 @@ static void ieee80211_set_vif_encap_ops(
@@ -1029,7 +1033,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;
@@ -1340,10 +1345,17 @@ int ieee80211_do_open(struct wireless_de
@@ -1355,10 +1360,17 @@ int ieee80211_do_open(struct wireless_de
switch (sdata->vif.type) {
case NL80211_IFTYPE_AP_VLAN:
@@ -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
@@ -5696,7 +5696,8 @@ static bool ieee80211_assoc_success(stru
@@ -5700,7 +5700,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
*/

View File

@@ -24,7 +24,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2227,6 +2227,8 @@ enum ieee80211_key_flags {
@@ -2228,6 +2228,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)
@@ -2246,6 +2248,7 @@ struct ieee80211_key_conf {
@@ -2247,6 +2249,7 @@ struct ieee80211_key_conf {
u8 hw_key_idx;
s8 keyidx;
u16 flags;

View File

@@ -78,7 +78,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
bool eht_mu_beamformer;
bool eht_80mhz_full_bw_ul_mumimo;
bool nss_ap_isolate;
@@ -1341,6 +1355,8 @@ struct ieee80211_rate_status {
@@ -1342,6 +1356,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;
@@ -1351,6 +1367,8 @@ struct ieee80211_tx_status {
@@ -1352,6 +1368,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>
};
/**
@@ -1859,6 +1877,7 @@ struct ieee80211_channel_switch {
@@ -1860,6 +1878,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),
@@ -1867,6 +1886,7 @@ enum ieee80211_vif_flags {
@@ -1868,6 +1887,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,7 +112,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
};
@@ -2916,6 +2936,7 @@ enum ieee80211_hw_flags {
@@ -2917,6 +2937,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ,
IEEE80211_HW_HANDLES_QUIET_CSA,
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
@@ -120,7 +120,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
/* keep last, obviously */
NUM_IEEE80211_HW_FLAGS
@@ -4424,6 +4445,8 @@ struct ieee80211_prep_tx_info {
@@ -4425,6 +4446,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.
@@ -4818,6 +4841,12 @@ struct ieee80211_ops {
@@ -4819,6 +4842,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);
@@ -7722,4 +7751,100 @@ int ieee80211_emulate_switch_vif_chanctx
@@ -7726,4 +7755,100 @@ int ieee80211_emulate_switch_vif_chanctx
int n_vifs,
enum ieee80211_chanctx_switch_mode mode);

View File

@@ -16,7 +16,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2876,6 +2876,8 @@ struct ieee80211_txq {
@@ -2877,6 +2877,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 {
@@ -2937,6 +2939,7 @@ enum ieee80211_hw_flags {
@@ -2938,6 +2940,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_HANDLES_QUIET_CSA,
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,

View File

@@ -21,7 +21,7 @@ Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -998,7 +998,8 @@ static bool ieee80211_set_sdata_offload_
@@ -1013,7 +1013,8 @@ static bool ieee80211_set_sdata_offload_
flags |= IEEE80211_OFFLOAD_DECAP_ENABLED;
if (local->monitors &&

View File

@@ -14,7 +14,7 @@ Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1481,8 +1481,6 @@ ieee80211_tx_info_clear_status(struct ie
@@ -1482,8 +1482,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
@@ -1539,39 +1537,38 @@ ieee80211_tx_info_clear_status(struct ie
@@ -1540,39 +1538,38 @@ ieee80211_tx_info_clear_status(struct ie
* hardware or driver)
*/
enum mac80211_rx_flags {

View File

@@ -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
@@ -2080,6 +2080,11 @@ netdev_tx_t ieee80211_subif_start_xmit(s
@@ -2081,6 +2081,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);

View File

@@ -78,7 +78,7 @@ Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -2246,6 +2246,10 @@ int ieee80211_if_add(struct ieee80211_lo
@@ -2259,6 +2259,10 @@ int ieee80211_if_add(struct ieee80211_lo
ndev->features |= local->hw.netdev_features;
ndev->priv_flags |= IFF_LIVE_ADDR_CHANGE;

View File

@@ -23,7 +23,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2875,6 +2875,9 @@ struct ieee80211_txq {
@@ -2876,6 +2876,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 {
@@ -2937,6 +2940,7 @@ enum ieee80211_hw_flags {
@@ -2938,6 +2941,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,
IEEE80211_HW_SUPPORTS_TID_CLASS_OFFLOAD,
@@ -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
@@ -4576,6 +4576,9 @@ static int ieee80211_get_txq_stats(struc
@@ -4584,6 +4584,9 @@ static int ieee80211_get_txq_stats(struc
struct ieee80211_sub_if_data *sdata;
int ret = 0;

View File

@@ -27,7 +27,7 @@ Signed-off-by: Balamurugan Ramar <quic_bramar@quicinc.com>
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -7752,7 +7752,7 @@ void ieee80211_sta_work(struct ieee80211
@@ -7757,7 +7757,7 @@ void ieee80211_sta_work(struct ieee80211
*/
if (status_acked) {
ifmgd->assoc_data->timeout =

View File

@@ -17,7 +17,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -8803,6 +8803,7 @@ bool cfg80211_rx_spurious_frame(struct n
@@ -8806,6 +8806,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.
@@ -8812,7 +8813,8 @@ bool cfg80211_rx_spurious_frame(struct n
@@ -8815,7 +8816,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,
@@ -127,7 +127,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -18916,7 +18916,8 @@ void cfg80211_conn_failed(struct net_dev
@@ -18945,7 +18945,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);
@@ -18942,6 +18943,9 @@ static bool __nl80211_unexpected_frame(s
@@ -18971,6 +18972,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;
@@ -18965,14 +18969,15 @@ bool cfg80211_rx_spurious_frame(struct n
@@ -18994,14 +18998,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;
@@ -18987,7 +18992,7 @@ bool cfg80211_rx_unexpected_4addr_frame(
@@ -19016,7 +19021,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
@@ -1035,6 +1035,8 @@ __ieee80211_link_copy_chanctx_to_vlans(s
@@ -1036,6 +1036,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))
@@ -1276,6 +1278,8 @@ ieee80211_link_update_chanreq(struct iee
@@ -1277,6 +1279,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;

View File

@@ -20,7 +20,7 @@ Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1348,7 +1348,8 @@ int ieee80211_do_open(struct wireless_de
@@ -1363,7 +1363,8 @@ int ieee80211_do_open(struct wireless_de
case NL80211_IFTYPE_AP_VLAN:
if (sdata->bss->active) {
ieee80211_link_vlan_copy_chanctx(&sdata->deflink);
@@ -30,7 +30,7 @@ Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
if (ieee80211_hw_check(&local->hw, SUPPORTS_NSS_OFFLOAD)) {
ieee80211_set_sdata_offload_flags(sdata);
@@ -1359,7 +1360,8 @@ int ieee80211_do_open(struct wireless_de
@@ -1374,7 +1375,8 @@ int ieee80211_do_open(struct wireless_de
ieee80211_set_vif_encap_ops(sdata);
} else {
@@ -40,7 +40,7 @@ Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
}
break;
case NL80211_IFTYPE_MONITOR:
@@ -1390,7 +1392,8 @@ int ieee80211_do_open(struct wireless_de
@@ -1405,7 +1407,8 @@ int ieee80211_do_open(struct wireless_de
ieee80211_recalc_offload(local);
ieee80211_recalc_idle(local);
@@ -50,7 +50,7 @@ Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
break;
default:
if (coming_up) {
@@ -1434,7 +1437,8 @@ int ieee80211_do_open(struct wireless_de
@@ -1449,7 +1452,8 @@ int ieee80211_do_open(struct wireless_de
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_MESH_POINT:
case NL80211_IFTYPE_OCB: