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 */ /* SMBIOS type containing Board Data File Name Extension */
#define ATH11K_SMBIOS_BDF_EXT_TYPE 0xF8 #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; struct ath11k_vif *arvif;
}; };
@@ -47,7 +47,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
struct ath11k_rx_peer_stats { struct ath11k_rx_peer_stats {
u64 num_msdu; u64 num_msdu;
u64 num_mpdu_fcs_ok; 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 non_ampdu_msdu_count;
u64 stbc_count; u64 stbc_count;
u64 beamformed_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 coding_count[HAL_RX_SU_MU_CODING_MAX];
u64 tid_count[IEEE80211_NUM_TIDS + 1]; u64 tid_count[IEEE80211_NUM_TIDS + 1];
u64 pream_cnt[HAL_RX_PREAMBLE_MAX]; 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 rx_duration;
u64 dcm_count; u64 dcm_count;
u64 ru_alloc_cnt[HAL_RX_RU_ALLOC_TYPE_MAX]; 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" #include "fw.h"
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK) #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 bw[ATH11K_COUNTER_TYPE_MAX][ATH11K_BW_NUM];
u64 nss[ATH11K_COUNTER_TYPE_MAX][ATH11K_NSS_NUM]; u64 nss[ATH11K_COUNTER_TYPE_MAX][ATH11K_NSS_NUM];
u64 gi[ATH11K_COUNTER_TYPE_MAX][ATH11K_GI_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 { 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 tx_duration;
u64 ba_fails; u64 ba_fails;
u64 ack_fails; u64 ack_fails;
@@ -42,7 +42,7 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
}; };
struct ath11k_per_ppdu_tx_stats { 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 succ_bytes;
u32 retry_bytes; u32 retry_bytes;
u32 failed_bytes; u32 failed_bytes;

View File

@@ -33,7 +33,7 @@
struct ath11k_vif { struct ath11k_vif {
u32 vdev_id; u32 vdev_id;
enum wmi_vdev_type vdev_type; 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_rekey_data rekey_data;
struct ath11k_reg_tpc_power_info reg_tpc_info; struct ath11k_reg_tpc_power_info reg_tpc_info;
@@ -258,7 +258,7 @@
ieee80211_tx_status_irqsafe(ar->hw, msdu); ieee80211_tx_status_irqsafe(ar->hw, msdu);
num_mgmt = atomic_dec_if_positive(&ar->num_pending_mgmt_tx); 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; struct ieee80211_hdr *hdr;
u16 fc; u16 fc;
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
@@ -270,7 +270,7 @@
if (ath11k_pull_mgmt_rx_params_tlv(ab, skb, &rx_ev) != 0) { if (ath11k_pull_mgmt_rx_params_tlv(ab, skb, &rx_ev) != 0) {
ath11k_warn(ab, "failed to extract mgmt rx event"); 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; hdr = (struct ieee80211_hdr *)skb->data;
fc = le16_to_cpu(hdr->frame_control); fc = le16_to_cpu(hdr->frame_control);

View File

@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath11k/mac.c --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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, wiphy_ext_feature_set(ar->hw->wiphy,
NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT); NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT);

View File

@@ -260,8 +260,8 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
+ if (!peer) { + if (!peer) {
+ spin_unlock_bh(&ab->base_lock); + spin_unlock_bh(&ab->base_lock);
+ if(ab->nss.debug_mode) + if(ab->nss.debug_mode)
+ ath11k_warn(ab, "ath11k_nss: unable to free peer mem, peer_id:%d\n", + ath11k_warn(ab, "ath11k_nss: unable to free peer mem, peer_id:%d\n",
+ peer_id); + peer_id);
+ return; + return;
+ } + }
+ +
@@ -1298,9 +1298,9 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
+ preamble_type = ppdu_info->preamble_type; + preamble_type = ppdu_info->preamble_type;
+ } + }
+ +
+ if ((preamble_type == WMI_RATE_PREAMBLE_CCK || + if ((preamble_type == WMI_RATE_PREAMBLE_CCK ||
+ preamble_type == WMI_RATE_PREAMBLE_OFDM) && + preamble_type == WMI_RATE_PREAMBLE_OFDM) &&
+ (ppdu_info->rate < ATH11K_LEGACY_NUM)) { + (ppdu_info->rate < ATH11K_LEGACY_NUM)) {
+ rate = ath11k_hal_rx_legacy_rates[ppdu_info->rate]; + 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? */ /* TODO: Do we need to enable ANI? */
--- a/drivers/net/wireless/ath/ath11k/core.h --- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/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. * idr unavailable etc.
*/ */
atomic_t misc_fail; atomic_t misc_fail;
@@ -3026,7 +3026,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
}; };
struct ath11k_soc_dp_stats { struct ath11k_soc_dp_stats {
@@ -976,6 +978,7 @@ struct ath11k_base { @@ -977,6 +979,7 @@ struct ath11k_base {
struct list_head peers; struct list_head peers;
wait_queue_head_t peer_mapping_wq; wait_queue_head_t peer_mapping_wq;
u8 mac_addr[ETH_ALEN]; 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) #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_reg_tpc_power_info reg_tpc_info;
struct ath11k_mgmt_frame_stats mgmt_stats; struct ath11k_mgmt_frame_stats mgmt_stats;
@@ -174,7 +174,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
}; };
struct ath11k_vif_iter { struct ath11k_vif_iter {
@@ -578,6 +582,9 @@ struct ath11k_sta { @@ -579,6 +583,9 @@ struct ath11k_sta {
#endif #endif
bool use_4addr_set; bool use_4addr_set;
@@ -184,7 +184,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
u16 tcl_metadata; u16 tcl_metadata;
/* Protected with ar->data_lock */ /* Protected with ar->data_lock */
@@ -672,6 +679,9 @@ struct ath11k { @@ -673,6 +680,9 @@ struct ath11k {
struct ath11k_pdev *pdev; struct ath11k_pdev *pdev;
struct ieee80211_hw *hw; struct ieee80211_hw *hw;
struct ath11k_pdev_wmi *wmi; struct ath11k_pdev_wmi *wmi;
@@ -194,7 +194,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
struct ath11k_pdev_dp dp; struct ath11k_pdev_dp dp;
u8 mac_addr[ETH_ALEN]; u8 mac_addr[ETH_ALEN];
struct ath11k_he ar_he; 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_htc htc;
struct ath11k_dp dp; 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, +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 ieee80211_rx_status rx_status = {0};
+ struct ath11k_skb_rxcb *rxcb; + 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); ret = ath11k_wmi_vdev_delete(ar, arvif->vdev_id);
if (ret) { if (ret) {
ath11k_warn(ar->ab, "failed to delete WMI vdev %d: %d\n", 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); list_add(&arvif->list, &ar->arvifs);
spin_unlock_bh(&ar->data_lock); 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; nss = get_num_chains(ar->cfg_tx_chainmask) ? : 1;
ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, 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: err_vdev_del:
@@ -718,7 +718,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
ath11k_mac_vdev_delete(ar, arvif); ath11k_mac_vdev_delete(ar, arvif);
spin_lock_bh(&ar->data_lock); spin_lock_bh(&ar->data_lock);
list_del(&arvif->list); 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); arvif->vdev_id, ret);
continue; continue;
} }
@@ -729,7 +729,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
} }
/* Restart the internal monitor vdev on new channel */ /* 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->signal_avg += ATH11K_DEFAULT_NOISE_FLOOR;
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG); 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) #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, .update_vif_offload = ath11k_mac_op_update_vif_offload,
.config = ath11k_mac_op_config, .config = ath11k_mac_op_config,
.bss_info_changed = ath11k_mac_op_bss_info_changed, .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, .configure_filter = ath11k_mac_op_configure_filter,
.hw_scan = ath11k_mac_op_hw_scan, .hw_scan = ath11k_mac_op_hw_scan,
.cancel_hw_scan = ath11k_mac_op_cancel_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, TX_AMPDU_SETUP_IN_HW);
ieee80211_hw_set(ar->hw, SUPPORTS_REORDERING_BUFFER); ieee80211_hw_set(ar->hw, SUPPORTS_REORDERING_BUFFER);
ieee80211_hw_set(ar->hw, SUPPORTS_AMSDU_IN_AMPDU); 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; 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) ab->hw_params.bios_sar_capa)
ar->hw->wiphy->sar_capa = 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] = { [WMI_TAG_11D_NEW_COUNTRY_EVENT] = {
.min_len = sizeof(struct wmi_11d_new_cc_ev) }, .min_len = sizeof(struct wmi_11d_new_cc_ev) },
[WMI_TAG_PER_CHAIN_RSSI_STATS] = { [WMI_TAG_PER_CHAIN_RSSI_STATS] = {
@@ -8805,6 +8807,74 @@ out: @@ -8807,6 +8809,74 @@ out:
kfree(tb); 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) static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb)
{ {
struct wmi_cmd_hdr *cmd_hdr; 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: case WMI_11D_NEW_COUNTRY_EVENTID:
ath11k_reg_11d_new_cc_event(ab, skb); ath11k_reg_11d_new_cc_event(ab, skb);
break; 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, int ath11k_dp_tx(struct ath11k *ar, struct ath11k_vif *arvif,
--- a/drivers/net/wireless/ath/ath11k/mac.c --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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); 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) #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; 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 */ /* Master structure to hold the hw data which may be used in core module */
struct ath11k_base { struct ath11k_base {
enum ath11k_hw_rev hw_rev; 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); DECLARE_BITMAP(fw_features, ATH11K_FW_FEATURE_COUNT);
} fw; } 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, const u8 *addr)
+static inline int ath11k_nss_peer_delete(struct ath11k_base *ab, u32 vdev_id, +static inline int ath11k_nss_peer_delete(struct ath11k_base *ab, u32 vdev_id,
+ const u8 *addr) + const u8 *addr)
{ {
return 0; return 0;
} }

View File

@@ -26,7 +26,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
--- a/drivers/net/wireless/ath/ath11k/core.h --- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/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; struct ath11k_pdev_wmi *wmi;
#ifdef CPTCFG_ATH11K_NSS_SUPPORT #ifdef CPTCFG_ATH11K_NSS_SUPPORT
struct ath11k_nss nss; struct ath11k_nss nss;
@@ -34,7 +34,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
#endif #endif
struct ath11k_pdev_dp dp; struct ath11k_pdev_dp dp;
u8 mac_addr[ETH_ALEN]; u8 mac_addr[ETH_ALEN];
@@ -1100,6 +1101,9 @@ struct ath11k_base { @@ -1101,6 +1102,9 @@ struct ath11k_base {
} testmode; } testmode;
#endif #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, +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; + struct ath11k_ast_entry *ast_entry, *tmp;
+ u32 ast_deleted_count = 0; + 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; ab->pktlog_defs_checksum = fixed_param.pktlog_defs_checksum;
break; break;
case WMI_TAG_ARRAY_FIXED_STRUCT: case WMI_TAG_ARRAY_FIXED_STRUCT:
@@ -8875,6 +8953,22 @@ exit: @@ -8877,6 +8955,22 @@ exit:
kfree(tb); 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) static void ath11k_wmi_tlv_op_rx(struct ath11k_base *ab, struct sk_buff *skb)
{ {
struct wmi_cmd_hdr *cmd_hdr; 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: case WMI_P2P_NOA_EVENTID:
ath11k_wmi_p2p_noa_event(ab, skb); ath11k_wmi_p2p_noa_event(ab, skb);
break; break;

View File

@@ -215,7 +215,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
if (!ev) { if (!ev) {
ath11k_warn(ab, "failed to fetch mgmt tx compl ev"); ath11k_warn(ab, "failed to fetch mgmt tx compl ev");
kfree(tb); 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) 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"); ath11k_warn(ab, "failed to extract mgmt tx compl event");
return; 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; goto exit;
} }
@@ -238,7 +238,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
ath11k_dbg(ab, ATH11K_DBG_MGMT, ath11k_dbg(ab, ATH11K_DBG_MGMT,
"event mgmt tx compl ev pdev_id %d, desc_id %d, status %d ack_rssi %d", "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(); 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, static struct ath11k *ath11k_get_ar_on_scan_state(struct ath11k_base *ab,
u32 vdev_id, u32 vdev_id,
enum ath11k_scan_state state) 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: case WMI_WDS_PEER_EVENTID:
ath11k_wmi_wds_peer_event(ab, skb); ath11k_wmi_wds_peer_event(ab, skb);
break; 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"); ath11k_dbg(ar->ab, ATH11K_DBG_NSS, "nss vdev up tx msg success\n");
+ +
+ if (arvif->vif->type == NL80211_IFTYPE_AP) + if (arvif->vif->type == NL80211_IFTYPE_AP)
+ list_for_each_entry_safe(ap_vlan_arvif, tmp, &arvif->ap_vlan_arvifs, + list_for_each_entry_safe(ap_vlan_arvif, tmp,
+ list) + &arvif->ap_vlan_arvifs, list)
+ if (ap_vlan_arvif->nss.added) + if (ap_vlan_arvif->nss.added)
+ ath11k_nss_ext_vdev_up(ap_vlan_arvif); + ath11k_nss_ext_vdev_up(ap_vlan_arvif);
free: 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"); ath11k_dbg(ar->ab, ATH11K_DBG_NSS, "nss vdev down tx msg success\n");
+ +
+ if (arvif->vif->type == NL80211_IFTYPE_AP) + if (arvif->vif->type == NL80211_IFTYPE_AP)
+ list_for_each_entry_safe(ap_vlan_arvif, tmp, &arvif->ap_vlan_arvifs, + list_for_each_entry_safe(ap_vlan_arvif, tmp,
+ list) + &arvif->ap_vlan_arvifs, list)
+ ath11k_nss_ext_vdev_down(ap_vlan_arvif); + ath11k_nss_ext_vdev_down(ap_vlan_arvif);
free: free:
kfree(vdev_msg); kfree(vdev_msg);

View File

@@ -69,7 +69,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
struct ath11k_vif { struct ath11k_vif {
u32 vdev_id; u32 vdev_id;
enum wmi_vdev_type vdev_type; enum wmi_vdev_type vdev_type;
@@ -431,6 +450,11 @@ struct ath11k_vif { @@ -432,6 +451,11 @@ struct ath11k_vif {
struct arvif_nss nss; struct arvif_nss nss;
#endif #endif
struct list_head ap_vlan_arvifs; struct list_head ap_vlan_arvifs;
@@ -346,7 +346,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
+ } else if (!peer) { + } else if (!peer) {
/* impossible unless FW goes crazy */ /* impossible unless FW goes crazy */
ath11k_warn(ab, "peer %pM disappeared!\n", peer_addr); ath11k_warn(ab, "peer %pM disappeared!\n", peer_addr);
+ } + }
- if (sta) { - if (sta) {
- arsta = ath11k_sta_to_arsta(sta); - arsta = ath11k_sta_to_arsta(sta);
@@ -354,7 +354,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
switch (key->cipher) { switch (key->cipher) {
case WLAN_CIPHER_SUITE_TKIP: 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 || if ((vif->type == NL80211_IFTYPE_AP_VLAN ||
vif->type == NL80211_IFTYPE_STATION) && ab->nss.enabled) { vif->type == NL80211_IFTYPE_STATION) && ab->nss.enabled) {
if (ath11k_frame_mode == ATH11K_HW_TXRX_ETHERNET && 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; vif->offload_flags |= IEEE80211_OFFLOAD_ENCAP_4ADDR;
arvif->nss.encap = ATH11K_HW_TXRX_ETHERNET; arvif->nss.encap = ATH11K_HW_TXRX_ETHERNET;
arvif->nss.decap = 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); vif->addr, ret);
goto err; goto err;
} }
@@ -371,7 +371,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
mutex_unlock(&ar->conf_mutex); mutex_unlock(&ar->conf_mutex);
return ret; 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_id = bit;
arvif->vdev_subtype = WMI_VDEV_SUBTYPE_NONE; arvif->vdev_subtype = WMI_VDEV_SUBTYPE_NONE;
@@ -392,7 +392,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
switch (vif->type) { switch (vif->type) {
case NL80211_IFTYPE_UNSPECIFIED: case NL80211_IFTYPE_UNSPECIFIED:
case NL80211_IFTYPE_STATION: 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) { if (ret) {
ath11k_warn(ab, "failed to create WMI vdev %d: %d\n", ath11k_warn(ab, "failed to create WMI vdev %d: %d\n",
arvif->vdev_id, ret); arvif->vdev_id, ret);
@@ -401,7 +401,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
} }
ar->num_created_vdevs++; ar->num_created_vdevs++;
@@ -7140,7 +7329,7 @@ err_peer_del: @@ -7151,7 +7340,7 @@ err_peer_del:
if (fbret) { if (fbret) {
ath11k_warn(ar->ab, "fallback fail to delete peer addr %pM vdev_id %d ret %d\n", ath11k_warn(ar->ab, "fallback fail to delete peer addr %pM vdev_id %d ret %d\n",
vif->addr, arvif->vdev_id, fbret); 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); list_del(&arvif->list);
spin_unlock_bh(&ar->data_lock); spin_unlock_bh(&ar->data_lock);
@@ -419,7 +419,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
err: err:
mutex_unlock(&ar->conf_mutex); mutex_unlock(&ar->conf_mutex);
@@ -7248,6 +7439,7 @@ err_vdev_del: @@ -7260,6 +7451,7 @@ err_vdev_del:
list_del(&arvif->list); list_del(&arvif->list);
spin_unlock_bh(&ar->data_lock); 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); ath11k_peer_cleanup(ar, arvif->vdev_id);
idr_for_each(&ar->txmgmt_idr, 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; 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, static int ath11k_mac_op_sta_state(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, struct ieee80211_vif *vif,
struct ieee80211_sta *sta, 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) if (ret)
ath11k_warn(ar->ab, "Unable to authorize peer %pM vdev %d: %d\n", ath11k_warn(ar->ab, "Unable to authorize peer %pM vdev %d: %d\n",
sta->addr, arvif->vdev_id, ret); sta->addr, arvif->vdev_id, ret);
@@ -496,7 +496,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
} }
if (!ret && 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) ab->hw_params.bios_sar_capa)
ar->hw->wiphy->sar_capa = 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 { enum ath11k_hw_rev {
@@ -1129,6 +1130,7 @@ struct ath11k_base { @@ -1130,6 +1131,7 @@ struct ath11k_base {
u32 max_ast_index; u32 max_ast_index;
u32 num_ast_entries; u32 num_ast_entries;
@@ -124,7 +124,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
goto out; goto out;
} }
+ debugfs_create_file("stats_disable", 0600, ab->debugfs_soc, ab, + debugfs_create_file("stats_disable", 0600, ab->debugfs_soc, ab,
+ &fops_soc_stats_disable); + &fops_soc_stats_disable);
ret = 0; 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); bool (*rx_desc_get_mpdu_fc_valid)(struct hal_rx_desc *desc);
--- a/drivers/net/wireless/ath/ath11k/mac.c --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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 && } else if (old_state == IEEE80211_STA_AUTHORIZED &&
new_state == IEEE80211_STA_ASSOC) { new_state == IEEE80211_STA_ASSOC) {

View File

@@ -34,7 +34,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
}; };
struct ath11k_skb_cb { 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 { struct ath11k_soc_dp_tx_err_stats {
/* TCL Ring Descriptor unavailable */ /* TCL Ring Descriptor unavailable */
u32 desc_na[DP_TCL_NUM_RING_MAX]; 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); ieee80211_free_txskb(ar->hw, skb);
return; return;
} }
@@ -7445,7 +7455,7 @@ err_vdev_del: @@ -7457,7 +7467,7 @@ err_vdev_del:
idr_for_each(&ar->txmgmt_idr, idr_for_each(&ar->txmgmt_idr,
ath11k_mac_vif_txmgmt_idr_remove, vif); 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); 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; return ret;
} }
@@ -1286,7 +1286,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
static const struct ieee80211_ops ath11k_ops = { static const struct ieee80211_ops ath11k_ops = {
.tx = ath11k_mac_op_tx, .tx = ath11k_mac_op_tx,
.wake_tx_queue = ieee80211_handle_wake_tx_queue, .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, .set_sar_specs = ath11k_mac_op_set_bios_sar_specs,
.remain_on_channel = ath11k_mac_op_remain_on_channel, .remain_on_channel = ath11k_mac_op_remain_on_channel,
.cancel_remain_on_channel = ath11k_mac_op_cancel_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, 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); ieee80211_hw_set(ar->hw, SUPPORTS_NSS_OFFLOAD);
wiphy_ext_feature_set(ar->hw->wiphy, wiphy_ext_feature_set(ar->hw->wiphy,
NL80211_EXT_FEATURE_VLAN_OFFLOAD); NL80211_EXT_FEATURE_VLAN_OFFLOAD);
@@ -3272,7 +3272,7 @@ Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@codeaurora.org>
+ enum ieee80211_mesh_path_offld_cmd cmd, + enum ieee80211_mesh_path_offld_cmd cmd,
+ struct ieee80211_mesh_path_offld *path) + struct ieee80211_mesh_path_offld *path)
+{ +{
+ return 0; + return 0;
+} +}
+#endif +#endif
+int ath11k_nss_mesh_config_update(struct ieee80211_vif *vif, int changed); +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 --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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); kfree(arvif->vlan_keyid_map);
ath11k_peer_cleanup(ar, arvif->vdev_id); ath11k_peer_cleanup(ar, arvif->vdev_id);

View File

@@ -83,7 +83,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
#include "fw.h" #include "fw.h"
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK) #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 max_ast_index;
u32 num_ast_entries; u32 num_ast_entries;
@@ -358,7 +358,7 @@ Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
return 0; return 0;
+ if (peer && peer->delete_in_progress) + if (peer && peer->delete_in_progress)
+ return -EINVAL; + return -EINVAL;
+ +
ast_entry->vdev_id = peer->vdev_id; ast_entry->vdev_id = peer->vdev_id;
ast_entry->pdev_idx = peer->pdev_idx; 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, tcl_cmd.info3 = FIELD_PREP(HAL_TCL_DATA_CMD_INFO3_DSCP_TID_TABLE_IDX,
--- a/drivers/net/wireless/ath/ath11k/mac.c --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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); ieee80211_hw_set(ar->hw, USES_RSS);
} }

View File

@@ -30,7 +30,7 @@ Signed-off-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
return 0; 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 = ath11k_mac_ieee80211_sta_bw_to_wmi(ar, sta);
arsta->bw_prev = arsta->bw; arsta->bw_prev = arsta->bw;
spin_unlock_bh(&ar->data_lock); 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 --- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/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 rxdma_error[HAL_REO_ENTR_RING_RXDMA_ECODE_MAX];
u32 reo_error[HAL_REO_DEST_RING_ERROR_CODE_MAX]; u32 reo_error[HAL_REO_DEST_RING_ERROR_CODE_MAX];
u32 hal_reo_error[DP_REO_DST_RING_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 --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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; 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 --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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, QUEUE_CONTROL);
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG); ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK); ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);

View File

@@ -176,7 +176,7 @@
spin_unlock_bh(&ab->base_lock); spin_unlock_bh(&ab->base_lock);
--- a/drivers/net/wireless/ath/ath11k/mac.c --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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, .set_wakeup = ath11k_wow_op_set_wakeup,
#endif #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) +static bool ath11k_hw_qcn9074_rx_desc_mac_addr2_valid(struct hal_rx_desc *desc)
{ {
- return &desc->u.ipq8074.msdu_payload[0]; - 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; + RX_MPDU_START_INFO11_MAC_ADDR2_VALID;
+} +}
+ +
+static u8* ath11k_hw_qcn9074_rx_desc_mpdu_start_addr2(struct hal_rx_desc *desc) +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) 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, ret = ath11k_dp_tx_htt_rx_filter_setup(ar->ab, ring_id,
--- a/drivers/net/wireless/ath/ath11k/rx_desc.h --- a/drivers/net/wireless/ath/ath11k/rx_desc.h
+++ b/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_484 18
#define RU_996 37 #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) \ +#define HAL_RX_MPDU_INFO_PN_GET_BYTE4(__val) \
+ FIELD_GET(GENMASK(31, 24), __le32_to_cpu(__val)) + FIELD_GET(GENMASK(31, 24), __le32_to_cpu(__val))
+
+ +
#endif /* ATH11K_RX_DESC_H */ #endif /* ATH11K_RX_DESC_H */
--- a/drivers/net/wireless/ath/ath11k/nss.c --- 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 --- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/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_FLUSH_TIMEOUT (5 * HZ)
#define ATH11K_VDEV_DELETE_TIMEOUT_HZ (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 {
struct ath11k_base *ab; struct ath11k_base *ab;
struct ath11k_pdev *pdev; struct ath11k_pdev *pdev;
@@ -852,6 +857,7 @@ struct ath11k { @@ -853,6 +858,7 @@ struct ath11k {
bool ps_state_enable; bool ps_state_enable;
bool ps_timekeeper_enable; bool ps_timekeeper_enable;
s8 max_allowed_tx_power; s8 max_allowed_tx_power;

View File

@@ -137,7 +137,7 @@
#define ATH11K_HWMON_NAME_LEN 15 #define ATH11K_HWMON_NAME_LEN 15
--- a/drivers/net/wireless/ath/ath11k/wmi.c --- a/drivers/net/wireless/ath/ath11k/wmi.c
+++ b/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->temp_hwm = param->levelconf[i].tmphwm;
lvl_conf->dc_off_percent = param->levelconf[i].dcoffpercent; lvl_conf->dc_off_percent = param->levelconf[i].dcoffpercent;
lvl_conf->prio = param->levelconf[i].priority; lvl_conf->prio = param->levelconf[i].priority;
@@ -168,11 +168,11 @@
}; };
+typedef enum { +typedef enum {
+ WMI_THERMAL_CLIENT_UNSPECIFIED = 0, + WMI_THERMAL_CLIENT_UNSPECIFIED = 0,
+ WMI_THERMAL_CLIENT_APPS = 1, + WMI_THERMAL_CLIENT_APPS = 1,
+ WMI_THERMAL_CLIENT_WPSS = 2, + WMI_THERMAL_CLIENT_WPSS = 2,
+ WMI_THERMAL_CLIENT_FW = 3, + WMI_THERMAL_CLIENT_FW = 3,
+ WMI_THERMAL_CLIENT_MAX + WMI_THERMAL_CLIENT_MAX
+} WMI_THERMAL_MITIGATION_CLIENTS; +} WMI_THERMAL_MITIGATION_CLIENTS;
+ +
struct wmi_therm_throt_config_request_cmd { struct wmi_therm_throt_config_request_cmd {
@@ -229,7 +229,7 @@
struct wmi_delba_send_cmd { struct wmi_delba_send_cmd {
--- a/drivers/net/wireless/ath/ath11k/mac.c --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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); INIT_WORK(&ab->restart_work, ath11k_core_restart);
--- a/drivers/net/wireless/ath/ath11k/core.h --- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/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]; iftype[NUM_NL80211_BANDS][NUM_NL80211_IFTYPES];
} mac; } mac;
@@ -54,7 +54,7 @@
u32 min_tx_power; u32 min_tx_power;
u32 max_tx_power; u32 max_tx_power;
u32 txpower_limit_2g; u32 txpower_limit_2g;
@@ -820,6 +833,9 @@ struct ath11k { @@ -821,6 +834,9 @@ struct ath11k {
struct work_struct wmi_mgmt_tx_work; struct work_struct wmi_mgmt_tx_work;
struct sk_buff_head wmi_mgmt_tx_queue; struct sk_buff_head wmi_mgmt_tx_queue;
@@ -64,7 +64,7 @@
struct ath11k_wow wow; struct ath11k_wow wow;
struct completion target_suspend; struct completion target_suspend;
bool target_suspend_ack; 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]; struct ath11k_hal_reg_capabilities_ext hal_reg_cap[MAX_RADIOS];
unsigned long long free_vdev_map; unsigned long long free_vdev_map;
@@ -84,7 +84,7 @@
u8 mac_addr[ETH_ALEN]; u8 mac_addr[ETH_ALEN];
int userpd_id; int userpd_id;
int irq_num[ATH11K_IRQ_NUM_MAX]; 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"; return "unknown";
} }
@@ -784,7 +784,7 @@
ar->num_peers = 0; ar->num_peers = 0;
ar->num_stations = 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); spin_lock_bh(&ar->ab->base_lock);
@@ -793,7 +793,7 @@
if (peer && peer->is_authorized) if (peer && peer->is_authorized)
is_auth = true; 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); lockdep_assert_held(&ar->conf_mutex);
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@@ -802,7 +802,7 @@
if (!peer) { if (!peer) {
spin_unlock_bh(&ab->base_lock); spin_unlock_bh(&ab->base_lock);
return -ENOENT; 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. * we already hold conf_mutex. we just make sure its there now.
*/ */
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@@ -811,7 +811,7 @@
/* flush the fragments cache during key (re)install to /* flush the fragments cache during key (re)install to
* ensure all frags in the new frag list belong to the same key. * 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); spin_lock_bh(&ab->base_lock);
@@ -820,7 +820,7 @@
/* TODO: Check if vdev specific security cfg is mandatory */ /* 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); 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) { 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; struct ieee80211_sta *vlan_sta = dyn_vlan_cfg->sta;
@@ -829,7 +829,7 @@
if (ret) if (ret)
ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n", ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n",
vlan_sta->addr, ret); 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; vif = ap_vlan_arvif->vif;
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@@ -838,7 +838,7 @@
if (!wds_peer) { if (!wds_peer) {
spin_unlock_bh(&ab->base_lock); spin_unlock_bh(&ab->base_lock);
ath11k_warn(ab, "mac sta use 4addr failed to find peer %pM\n", 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); spin_lock_bh(&ar->ab->base_lock);
@@ -847,7 +847,7 @@
if (!peer) { if (!peer) {
spin_unlock_bh(&ar->ab->base_lock); spin_unlock_bh(&ar->ab->base_lock);
ath11k_warn(ar->ab, "mac sta rc update failed to find peer %pM on vdev %i\n", 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 && if (ab->hw_params.vdev_start_delay &&
arvif->vdev_type != WMI_VDEV_TYPE_AP && arvif->vdev_type != WMI_VDEV_TYPE_AP &&
arvif->vdev_type != WMI_VDEV_TYPE_MONITOR && arvif->vdev_type != WMI_VDEV_TYPE_MONITOR &&
@@ -856,7 +856,7 @@
memcpy(&arvif->chanctx, ctx, sizeof(*ctx)); memcpy(&arvif->chanctx, ctx, sizeof(*ctx));
ret = 0; ret = 0;
goto out; 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 && if (ab->hw_params.vdev_start_delay &&
arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) { arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
spin_lock_bh(&ab->base_lock); spin_lock_bh(&ab->base_lock);
@@ -865,7 +865,7 @@
spin_unlock_bh(&ab->base_lock); spin_unlock_bh(&ab->base_lock);
if (peer) if (peer)
ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr); 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(); rcu_read_lock();
spin_lock_bh(&ar->ab->base_lock); spin_lock_bh(&ar->ab->base_lock);
@@ -874,7 +874,7 @@
if (peer->sta) { if (peer->sta) {
deflink = &peer->sta->deflink; 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; return ret;
} }
@@ -908,7 +908,7 @@
sta->addr, ret); sta->addr, ret);
return 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", ath11k_warn(ar->ab, "Failed to remove station: %pM for VDEV: %d\n",
sta->addr, arvif->vdev_id); sta->addr, arvif->vdev_id);
@@ -933,7 +933,7 @@
} else if (old_state == IEEE80211_STA_AUTH && } else if (old_state == IEEE80211_STA_AUTH &&
new_state == IEEE80211_STA_ASSOC && new_state == IEEE80211_STA_ASSOC &&
(vif->type == NL80211_IFTYPE_AP || (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) { new_state == IEEE80211_STA_AUTHORIZED) {
spin_lock_bh(&ar->ab->base_lock); spin_lock_bh(&ar->ab->base_lock);
@@ -942,7 +942,7 @@
if (peer) if (peer)
peer->is_authorized = true; 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); list_add_tail(&ar_dyn_vlan_cfg->cfg_list, &arvif->dyn_vlan_cfg);
} }
} else { } else {
@@ -951,7 +951,7 @@
if (ret) if (ret)
ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n", ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n",
sta->addr, ret); 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) { new_state == IEEE80211_STA_ASSOC) {
spin_lock_bh(&ar->ab->base_lock); spin_lock_bh(&ar->ab->base_lock);
@@ -960,7 +960,7 @@
if (peer) if (peer)
peer->is_authorized = false; peer->is_authorized = false;
spin_unlock_bh(&ar->ab->base_lock); 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) { new_state == IEEE80211_STA_ASSOC) {
spin_lock_bh(&ar->ab->base_lock); spin_lock_bh(&ar->ab->base_lock);
@@ -969,7 +969,7 @@
if (peer) if (peer)
peer->is_authorized = false; 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; continue;
__ath11k_mac_unregister(ar); __ath11k_mac_unregister(ar);
@@ -980,7 +980,7 @@
} }
static int __ath11k_mac_register(struct ath11k *ar) 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->cc_freq_hz = IPQ8074_CC_FREQ_HERTZ;
ab->free_vdev_map = (1LL << (ab->num_radios * TARGET_NUM_VDEVS(ab))) - 1; ab->free_vdev_map = (1LL << (ab->num_radios * TARGET_NUM_VDEVS(ab))) - 1;
@@ -999,7 +999,7 @@
if (ab->pdevs_macaddr_valid) { if (ab->pdevs_macaddr_valid) {
ether_addr_copy(ar->mac_addr, pdev->mac_addr); ether_addr_copy(ar->mac_addr, pdev->mac_addr);
} else { } else {
@@ -10990,9 +10990,9 @@ err_cleanup: @@ -11023,9 +11023,9 @@ err_cleanup:
pdev = &ab->pdevs[i]; pdev = &ab->pdevs[i];
ar = pdev->ar; ar = pdev->ar;
__ath11k_mac_unregister(ar); __ath11k_mac_unregister(ar);
@@ -1010,7 +1010,7 @@
return ret; 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); ar->num_rx_chains = get_num_chains(pdev->cap.rx_chain_mask);
pdev->ar = ar; pdev->ar = ar;
@@ -1062,8 +1062,8 @@
- if (!peer) { - if (!peer) {
- spin_unlock_bh(&ab->base_lock); - spin_unlock_bh(&ab->base_lock);
- if(ab->nss.debug_mode) - if(ab->nss.debug_mode)
- ath11k_warn(ab, "ath11k_nss: unable to free peer mem, peer_id:%d\n", - ath11k_warn(ab, "ath11k_nss: unable to free peer mem, peer_id:%d\n",
- peer_id); - peer_id);
- return; - return;
- } - }
+ for (i = 0; i < ab->num_radios; i++) { + 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 void ath11k_nss_wds_type_rx(struct ath11k *ar, struct net_device *dev,
+static bool vdev_check_local_dev(u8 *wds_src_mac) +static bool vdev_check_local_dev(u8 *wds_src_mac)
+{ +{
+ struct net_device *dev = NULL; + struct net_device *dev = NULL;
+ +
+ rcu_read_lock(); + rcu_read_lock();
+ for_each_netdev_rcu(&init_net, dev) { + for_each_netdev_rcu(&init_net, dev) {
+ if (!dev) { + if (!dev) {
+ continue; + continue;
+ } + }
+ if (!memcmp(dev->dev_addr, wds_src_mac, 6)) { + if (!memcmp(dev->dev_addr, wds_src_mac, 6)) {
+ rcu_read_unlock(); + rcu_read_unlock();
+ return true; + return true;
+ } + }
+ } + }
+ rcu_read_unlock(); + rcu_read_unlock();
+ return false; + return false;
+} +}
+ +
+static void ath11k_nss_wds_type_rx(struct ath11k_vif *arvif, struct net_device *dev, +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_base *ab, u32 vdev_id,
+static inline int ath11k_nss_peer_delete(struct ath11k *ar, u32 vdev_id, +static inline int ath11k_nss_peer_delete(struct ath11k *ar, u32 vdev_id,
const u8 *addr) const u8 *addr)
{ {
return 0; return 0;
--- a/drivers/net/wireless/ath/ath11k/peer.c --- a/drivers/net/wireless/ath/ath11k/peer.c
@@ -1593,7 +1593,7 @@
if (ast_entry) { if (ast_entry) {
ast_entry->ast_idx = hw_peer_id; ast_entry->ast_idx = hw_peer_id;
@@ -418,6 +386,7 @@ void ath11k_peer_ast_cleanup(struct ath1 @@ -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_ast_entry *ast_entry, *tmp;
+ struct ath11k_base *ab = ar->ab; + struct ath11k_base *ab = ar->ab;
@@ -2429,7 +2429,7 @@
{ {
--- a/drivers/net/wireless/ath/ath11k/wmi.c --- a/drivers/net/wireless/ath/ath11k/wmi.c
+++ b/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 ieee80211_sta *sta;
struct ath11k_peer *peer; struct ath11k_peer *peer;
struct ath11k *ar; struct ath11k *ar;
@@ -2442,7 +2442,7 @@
tb = ath11k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); tb = ath11k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC);
if (IS_ERR(tb)) { 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(); rcu_read_lock();
@@ -2549,7 +2549,7 @@
} }
out: 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); spin_lock_bh(&ab->base_lock);
@@ -2561,7 +2561,7 @@
if (!peer) { if (!peer) {
spin_unlock_bh(&ab->base_lock); spin_unlock_bh(&ab->base_lock);
goto skip_mgmt_stats; 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 wmi_peer_sta_kickout_arg arg = {};
struct ieee80211_sta *sta; struct ieee80211_sta *sta;
@@ -2572,7 +2572,7 @@
if (ath11k_pull_peer_sta_kickout_ev(ab, skb, &arg) != 0) { if (ath11k_pull_peer_sta_kickout_ev(ab, skb, &arg) != 0) {
ath11k_warn(ab, "failed to extract peer sta kickout event"); 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(); rcu_read_lock();

View File

@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath11k/mac.c --- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/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 * AP vif of the AP_VLAN vif
*/ */
ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
@@ -23,7 +23,7 @@
return; return;
ext_vdev_down: 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; 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_AMPDU_EOF_BIT_KNOWN: The EOF value is known
* @RX_FLAG_RADIOTAP_HE: HE radiotap data is present * @RX_FLAG_RADIOTAP_HE: HE radiotap data is present
* (&struct ieee80211_radiotap_he, mac80211 will fill in * (&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_MCS
* - DATA3_DATA_DCM * - DATA3_DATA_DCM
* - DATA3_CODING * - 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 * - DATA5_DATA_BW_RU_ALLOC
* - DATA6_NSTS * - DATA6_NSTS
* - DATA3_STBC * - 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) * from the RX info data, so leave those zeroed when building this data)
* @RX_FLAG_RADIOTAP_HE_MU: HE MU radiotap data is present * @RX_FLAG_RADIOTAP_HE_MU: HE MU radiotap data is present
* (&struct ieee80211_radiotap_he_mu) * (&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)) lockdep_vif_wiphy_mutex_held(vif))
/** /**
@@ -99,7 +99,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
* enum ieee80211_key_flags - key flags * enum ieee80211_key_flags - key flags
* *
* These flags are used for communication about keys between the driver * 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 * implements MLO, so operation can continue on other links when one
* link is switching. * 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 * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
*/ */
enum ieee80211_hw_flags { 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,
IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ, IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ,
IEEE80211_HW_HANDLES_QUIET_CSA, IEEE80211_HW_HANDLES_QUIET_CSA,
@@ -116,7 +116,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
/* keep last, obviously */ /* keep last, obviously */
NUM_IEEE80211_HW_FLAGS 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. * non-MLO connections.
* The callback can sleep. * The callback can sleep.
* *
@@ -127,7 +127,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
* @prepare_multicast: Prepare for multicast filter configuration. * @prepare_multicast: Prepare for multicast filter configuration.
* This callback is optional, and its return value is passed * This callback is optional, and its return value is passed
* to configure_filter(). This callback must be atomic. * 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_vif *vif,
struct ieee80211_bss_conf *info, struct ieee80211_bss_conf *info,
u64 changed); 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, int (*start_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_bss_conf *link_conf); struct ieee80211_bss_conf *link_conf);
void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 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, int (*reset_tid_config)(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, struct ieee80211_vif *vif,
struct ieee80211_sta *sta, u8 tids); 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, +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) + if (!changed || sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
+ return; + 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) 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 --- a/net/wireless/util.c
+++ b/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) 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 --- a/net/mac80211/ieee80211_i.h
+++ b/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, void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata,
struct ieee80211_link_data *link, struct ieee80211_link_data *link,
u64 changed); u64 changed);
@@ -427,7 +427,7 @@ Signed-off-by: Sriram R <srirrama@codeaurora.org>
TP_PROTO(struct ieee80211_local *local, TP_PROTO(struct ieee80211_local *local,
--- a/net/mac80211/iface.c --- a/net/mac80211/iface.c
+++ b/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) local->hw.wiphy->frag_threshold != (u32)-1)
flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED; flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED;

View File

@@ -31,7 +31,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
--- a/include/net/cfg80211.h --- a/include/net/cfg80211.h
+++ b/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); void *data);
#endif #endif
@@ -49,7 +49,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
#endif /* __NET_CFG80211_H */ #endif /* __NET_CFG80211_H */
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/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); int len);
/** /**
@@ -111,7 +111,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
__NL80211_ATTR_AFTER_LAST, __NL80211_ATTR_AFTER_LAST,
--- a/net/mac80211/mlme.c --- a/net/mac80211/mlme.c
+++ b/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); _ieee80211_enable_rssi_reports(sdata, 0, 0);
} }
EXPORT_SYMBOL(ieee80211_disable_rssi_reports); 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_BSS_DUMP_INCLUDE_USE_DATA] = { .type = NLA_FLAG },
[NL80211_ATTR_MLO_TTLM_DLINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8), [NL80211_ATTR_MLO_TTLM_DLINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8),
[NL80211_ATTR_MLO_TTLM_ULINK] = 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); EXPORT_SYMBOL(cfg80211_schedule_channels_check);
@@ -211,7 +211,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
int __init nl80211_init(void) int __init nl80211_init(void)
--- a/net/wireless/trace.h --- a/net/wireless/trace.h
+++ b/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) __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; 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; struct dentry *default_beacon_key;
} debugfs; } debugfs;
#endif #endif
@@ -65,7 +65,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
/** /**
* DOC: Interface list locking * 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); ieee80211_stop_mbssid(sdata);
} }
@@ -79,7 +79,7 @@ Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
wiphy_lock(sdata->local->hw.wiphy); wiphy_lock(sdata->local->hw.wiphy);
wiphy_work_cancel(sdata->local->hw.wiphy, &sdata->activate_links_work); 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); 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 * 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 * 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); ieee80211_recalc_ps(local);

View File

@@ -21,7 +21,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/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); 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); trace_drv_add_interface(local, sdata);
--- a/net/mac80211/iface.c --- a/net/mac80211/iface.c
+++ b/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) { switch (sdata->vif.type) {
case NL80211_IFTYPE_AP_VLAN: case NL80211_IFTYPE_AP_VLAN:
@@ -83,7 +83,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
break; break;
case NL80211_IFTYPE_MONITOR: case NL80211_IFTYPE_MONITOR:
if (local->monitors == 0) 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) { switch (iftype) {
/* P2P GO and client are mapped to AP/STATION types */ /* P2P GO and client are mapped to AP/STATION types */
case NL80211_IFTYPE_AP: case NL80211_IFTYPE_AP:
@@ -91,7 +91,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
case NL80211_IFTYPE_STATION: case NL80211_IFTYPE_STATION:
return true; return true;
default: 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; struct ieee80211_sub_if_data *bss = sdata;
bool enabled; bool enabled;
@@ -101,7 +101,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
if (!sdata->bss) if (!sdata->bss)
return; 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) { switch (sdata->vif.type) {
case NL80211_IFTYPE_AP_VLAN: case NL80211_IFTYPE_AP_VLAN:
@@ -195,7 +195,7 @@ Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
drv_remove_interface(local, sdata); drv_remove_interface(local, sdata);
--- a/net/mac80211/mlme.c --- a/net/mac80211/mlme.c
+++ b/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 * 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 * 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 --- a/include/net/mac80211.h
+++ b/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 * @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) * needs to do software PN assignment by itself (e.g. due to TSO)
* @flags: key flags, see &enum ieee80211_key_flags. * @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) * @keyidx: the key index (0-3)
* @keylen: key material length * @keylen: key material length
* @key: key material. For ALG_TKIP the key is encoded as a 256-bit (32 byte) * @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; u8 hw_key_idx;
s8 keyidx; s8 keyidx;
u16 flags; u16 flags;

View File

@@ -78,7 +78,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
bool eht_mu_beamformer; bool eht_mu_beamformer;
bool eht_80mhz_full_bw_ul_mumimo; bool eht_80mhz_full_bw_ul_mumimo;
bool nss_ap_isolate; 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 * @ack_hwtstamp: Hardware timestamp of the received ack in nanoseconds
* Only needed for Timing measurement and Fine timing measurement action * Only needed for Timing measurement and Fine timing measurement action
* frames. Only reported by devices that have timestamping enabled. * 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_tx_status {
struct ieee80211_sta *sta; struct ieee80211_sta *sta;
@@ -1351,6 +1367,8 @@ struct ieee80211_tx_status { @@ -1352,6 +1368,8 @@ struct ieee80211_tx_status {
u8 n_rates; u8 n_rates;
struct list_head *free_list; 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 * operation on this interface and request a channel context without
* the AP definition. Use this e.g. because the device is able to * 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. * 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 { enum ieee80211_vif_flags {
IEEE80211_VIF_BEACON_FILTER = BIT(0), 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_GET_NOA_UPDATE = BIT(3),
IEEE80211_VIF_EML_ACTIVE = BIT(4), IEEE80211_VIF_EML_ACTIVE = BIT(4),
IEEE80211_VIF_IGNORE_OFDMA_WIDER_BW = BIT(5), 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_DISALLOW_PUNCTURING_5GHZ,
IEEE80211_HW_HANDLES_QUIET_CSA, IEEE80211_HW_HANDLES_QUIET_CSA,
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD, IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
@@ -120,7 +120,7 @@ Signed-off-by: Gautham Kumar Senthilkumaran <quic_gauthamk@quicinc.com>
/* keep last, obviously */ /* keep last, obviously */
NUM_IEEE80211_HW_FLAGS 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. * @set_sar_specs: Update the SAR (TX power) settings.
* @sta_set_decap_offload: Called to notify the driver when a station is allowed * @sta_set_decap_offload: Called to notify the driver when a station is allowed
* to use rx decapsulation offload * 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. * @add_twt_setup: Update hw with TWT agreement parameters received from the peer.
* This callback allows the hw to check if requested parameters * This callback allows the hw to check if requested parameters
* are supported and if there is enough room for a new agreement. * 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, void (*sta_set_decap_offload)(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, struct ieee80211_vif *vif,
struct ieee80211_sta *sta, bool enabled); 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, void (*add_twt_setup)(struct ieee80211_hw *hw,
struct ieee80211_sta *sta, struct ieee80211_sta *sta,
struct ieee80211_twt_setup *twt); 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, int n_vifs,
enum ieee80211_chanctx_switch_mode mode); 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 --- a/include/net/mac80211.h
+++ b/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 * @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 * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
*/ */
enum ieee80211_hw_flags { 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_HANDLES_QUIET_CSA,
IEEE80211_HW_SUPPORTS_NSS_OFFLOAD, IEEE80211_HW_SUPPORTS_NSS_OFFLOAD,
IEEE80211_HW_SUPPORTS_MESH_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 --- a/net/mac80211/iface.c
+++ b/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; flags |= IEEE80211_OFFLOAD_DECAP_ENABLED;
if (local->monitors && if (local->monitors &&

View File

@@ -14,7 +14,7 @@ Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/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_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 * @RX_FLAG_AMPDU_DELIM_CRC_ERROR: A delimiter CRC error has been detected
* on this subframe * 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 * @RX_FLAG_MIC_STRIPPED: The mic was stripped of this packet. Decryption was
* done by the hardware * done by the hardware
* @RX_FLAG_ONLY_MONITOR: Report frame only to monitor interfaces without * @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) * hardware or driver)
*/ */
enum mac80211_rx_flags { 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 --- a/net/mac80211/ieee80211_i.h
+++ b/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); struct net_device *dev);
netdev_tx_t ieee80211_subif_start_xmit_8023(struct sk_buff *skb, netdev_tx_t ieee80211_subif_start_xmit_8023(struct sk_buff *skb,
struct net_device *dev); 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 --- a/net/mac80211/iface.c
+++ b/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->features |= local->hw.netdev_features;
ndev->priv_flags |= IFF_LIVE_ADDR_CHANGE; 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 --- a/include/net/mac80211.h
+++ b/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. * @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 * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
*/ */
enum ieee80211_hw_flags { 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_NSS_OFFLOAD,
IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD, IEEE80211_HW_SUPPORTS_MESH_NSS_OFFLOAD,
IEEE80211_HW_SUPPORTS_TID_CLASS_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 * for MLO STA, the SA should be the AP MLD address, but
--- a/net/mac80211/cfg.c --- a/net/mac80211/cfg.c
+++ b/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; struct ieee80211_sub_if_data *sdata;
int ret = 0; int ret = 0;

View File

@@ -27,7 +27,7 @@ Signed-off-by: Balamurugan Ramar <quic_bramar@quicinc.com>
--- a/net/mac80211/mlme.c --- a/net/mac80211/mlme.c
+++ b/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) { if (status_acked) {
ifmgd->assoc_data->timeout = ifmgd->assoc_data->timeout =

View File

@@ -17,7 +17,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
--- a/include/net/cfg80211.h --- a/include/net/cfg80211.h
+++ b/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 * @dev: The device the frame matched to
* @addr: the transmitter address * @addr: the transmitter address
* @gfp: context flags * @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 * This function is used in AP mode (only!) to inform userspace that
* an associated station sent a 4addr frame but that wasn't expected. * 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.) * for a reason other than not having a subscription.)
*/ */
bool cfg80211_rx_unexpected_4addr_frame(struct net_device *dev, 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 --- a/net/wireless/nl80211.c
+++ b/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); EXPORT_SYMBOL(cfg80211_conn_failed);
static bool __nl80211_unexpected_frame(struct net_device *dev, u8 cmd, 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 wireless_dev *wdev = dev->ieee80211_ptr;
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); 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)) nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr))
goto nla_put_failure; goto nla_put_failure;
@@ -147,7 +147,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
genlmsg_end(msg, hdr); genlmsg_end(msg, hdr);
genlmsg_unicast(wiphy_net(&rdev->wiphy), msg, nlportid); genlmsg_unicast(wiphy_net(&rdev->wiphy), msg, nlportid);
return true; 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; return false;
} }
ret = __nl80211_unexpected_frame(dev, NL80211_CMD_UNEXPECTED_FRAME, 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; struct wireless_dev *wdev = dev->ieee80211_ptr;
bool ret; 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, ret = __nl80211_unexpected_frame(dev,
NL80211_CMD_UNEXPECTED_4ADDR_FRAME, NL80211_CMD_UNEXPECTED_4ADDR_FRAME,
@@ -176,7 +176,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
} }
--- a/net/mac80211/chan.c --- a/net/mac80211/chan.c
+++ b/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) { list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) {
struct ieee80211_bss_conf *vlan_conf; 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_conf = wiphy_dereference(local->hw.wiphy,
vlan->vif.link_conf[link_id]); vlan->vif.link_conf[link_id]);
if (WARN_ON(!vlan_conf)) 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) { list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) {
struct ieee80211_bss_conf *vlan_conf; 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 --- a/net/mac80211/iface.c
+++ b/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: case NL80211_IFTYPE_AP_VLAN:
if (sdata->bss->active) { if (sdata->bss->active) {
ieee80211_link_vlan_copy_chanctx(&sdata->deflink); 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)) { if (ieee80211_hw_check(&local->hw, SUPPORTS_NSS_OFFLOAD)) {
ieee80211_set_sdata_offload_flags(sdata); 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); ieee80211_set_vif_encap_ops(sdata);
} else { } else {
@@ -40,7 +40,7 @@ Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
} }
break; break;
case NL80211_IFTYPE_MONITOR: 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_offload(local);
ieee80211_recalc_idle(local); ieee80211_recalc_idle(local);
@@ -50,7 +50,7 @@ Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
break; break;
default: default:
if (coming_up) { 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_AP:
case NL80211_IFTYPE_MESH_POINT: case NL80211_IFTYPE_MESH_POINT:
case NL80211_IFTYPE_OCB: case NL80211_IFTYPE_OCB: