ath11k_nss: Refresh patches for 6.9.9

Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
Sean Khan
2024-09-20 17:30:58 -04:00
parent 2eee79c132
commit 7924de9f52
7 changed files with 59 additions and 58 deletions

View File

@@ -48,7 +48,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
@@ -6091,7 +6091,9 @@ int ath11k_dp_rx_process_mon_status(stru
@@ -6094,7 +6094,9 @@ int ath11k_dp_rx_process_mon_status(stru
if (!num_buffs_reaped)
goto exit;
@@ -59,7 +59,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
ppdu_info->peer_id = HAL_INVALID_PEERID;
while ((skb = __skb_dequeue(&skb_list))) {
@@ -6109,7 +6111,6 @@ int ath11k_dp_rx_process_mon_status(stru
@@ -6112,7 +6114,6 @@ int ath11k_dp_rx_process_mon_status(stru
if (log_type != ATH11K_PKTLOG_TYPE_INVALID)
trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz);
@@ -67,7 +67,7 @@ Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
ppdu_info->peer_id = HAL_INVALID_PEERID;
hal_status = ath11k_hal_rx_parse_mon_status(ab, ppdu_info, skb);
@@ -6137,6 +6138,7 @@ int ath11k_dp_rx_process_mon_status(stru
@@ -6140,6 +6141,7 @@ int ath11k_dp_rx_process_mon_status(stru
if ((ppdu_info->peer_id == HAL_INVALID_PEERID ||
hal_status != HAL_RX_MON_STATUS_PPDU_DONE)) {
dev_kfree_skb_any(skb);

View File

@@ -408,7 +408,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
ath11k_dbg_dump(ab, ATH11K_DBG_DATA, NULL, "", rx_desc,
sizeof(struct hal_rx_desc));
goto free_out;
@@ -4072,6 +4194,7 @@ static int ath11k_dp_rx_h_verify_tkip_mi
@@ -4075,6 +4197,7 @@ static int ath11k_dp_rx_h_verify_tkip_mi
hdr = (struct ieee80211_hdr *)(msdu->data + hal_rx_desc_sz);
hdr_len = ieee80211_hdrlen(hdr->frame_control);
@@ -416,7 +416,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
head_len = hdr_len + hal_rx_desc_sz + IEEE80211_TKIP_IV_LEN;
tail_len = IEEE80211_CCMP_MIC_LEN + IEEE80211_TKIP_ICV_LEN + FCS_LEN;
@@ -4352,8 +4475,8 @@ static void ath11k_dp_rx_h_sort_frags(st
@@ -4355,8 +4478,8 @@ static void ath11k_dp_rx_h_sort_frags(st
static u64 ath11k_dp_rx_h_get_pn(struct ath11k *ar, struct sk_buff *skb)
{
@@ -426,7 +426,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
u8 *ehdr;
u32 hal_rx_desc_sz = ar->ab->hw_params.hal_desc_sz;
@@ -4583,8 +4706,9 @@ ath11k_dp_process_rx_err_buf(struct ath1
@@ -4586,8 +4709,9 @@ ath11k_dp_process_rx_err_buf(struct ath1
if ((msdu_len + hal_rx_desc_sz) > DP_RX_BUFFER_SIZE) {
hdr_status = ath11k_dp_rx_h_80211_hdr(ar->ab, rx_desc);
ath11k_warn(ar->ab, "invalid msdu leng %u", msdu_len);
@@ -438,7 +438,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
ath11k_dbg_dump(ar->ab, ATH11K_DBG_DATA, NULL, "", rx_desc,
sizeof(struct hal_rx_desc));
dev_kfree_skb_any(msdu);
@@ -5209,6 +5333,47 @@ void ath11k_dp_rx_pdev_free(struct ath11
@@ -5212,6 +5336,47 @@ void ath11k_dp_rx_pdev_free(struct ath11
ath11k_dp_rxdma_pdev_buf_free(ar);
}
@@ -486,7 +486,7 @@ Signed-off-by: Ramya Gnanasekar <rgnanase@codeaurora.org>
int ath11k_dp_rx_pdev_alloc(struct ath11k_base *ab, int mac_id)
{
struct ath11k *ar = ab->pdevs[mac_id].ar;
@@ -5302,6 +5467,12 @@ config_refill_ring:
@@ -5305,6 +5470,12 @@ config_refill_ring:
}
}

View File

@@ -50,7 +50,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
dma_unmap_single(ab->dev, rxcb->paddr,
msdu->len + skb_tailroom(msdu),
DMA_FROM_DEVICE);
@@ -4669,17 +4667,14 @@ ath11k_dp_process_rx_err_buf(struct ath1
@@ -4672,17 +4670,14 @@ ath11k_dp_process_rx_err_buf(struct ath1
u32 hal_rx_desc_sz = ar->ab->hw_params.hal_desc_sz;
spin_lock_bh(&rx_ring->idr_lock);
@@ -70,7 +70,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
rxcb = ATH11K_SKB_RXCB(msdu);
dma_unmap_single(ar->ab->dev, rxcb->paddr,
msdu->len + skb_tailroom(msdu),
@@ -5085,18 +5080,16 @@ int ath11k_dp_rx_process_wbm_err(struct
@@ -5088,18 +5083,16 @@ int ath11k_dp_rx_process_wbm_err(struct
rx_ring = &ar->dp.rx_refill_buf_ring;
spin_lock_bh(&rx_ring->idr_lock);
@@ -92,7 +92,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
dma_unmap_single(ab->dev, rxcb->paddr,
msdu->len + skb_tailroom(msdu),
DMA_FROM_DEVICE);
@@ -5211,16 +5204,14 @@ int ath11k_dp_process_rxdma_err(struct a
@@ -5214,16 +5207,14 @@ int ath11k_dp_process_rxdma_err(struct a
msdu_cookies[i]);
spin_lock_bh(&rx_ring->idr_lock);
@@ -111,7 +111,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
rxcb = ATH11K_SKB_RXCB(skb);
dma_unmap_single(ab->dev, rxcb->paddr,
@@ -6425,16 +6416,14 @@ ath11k_dp_rx_full_mon_mpdu_pop(struct at
@@ -6428,16 +6419,14 @@ ath11k_dp_rx_full_mon_mpdu_pop(struct at
msdu_list.sw_cookie[i]);
spin_lock_bh(&rx_ring->idr_lock);

View File

@@ -161,7 +161,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
return total_msdu_reaped;
}
@@ -4829,7 +4861,7 @@ exit:
@@ -4832,7 +4864,7 @@ exit:
rx_ring = &ar->dp.rx_refill_buf_ring;
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, n_bufs_reaped[i],
@@ -170,7 +170,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
}
return tot_n_bufs_reaped;
@@ -5045,14 +5077,17 @@ int ath11k_dp_rx_process_wbm_err(struct
@@ -5048,14 +5080,17 @@ int ath11k_dp_rx_process_wbm_err(struct
struct sk_buff *msdu;
struct sk_buff_head msdu_list[MAX_RADIOS];
struct ath11k_skb_rxcb *rxcb;
@@ -189,7 +189,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
srng = &ab->hal.srng_list[dp->rx_rel_ring.ring_id];
@@ -5078,9 +5113,15 @@ int ath11k_dp_rx_process_wbm_err(struct
@@ -5081,9 +5116,15 @@ int ath11k_dp_rx_process_wbm_err(struct
ar = ab->pdevs[mac_id].ar;
rx_ring = &ar->dp.rx_refill_buf_ring;
@@ -206,7 +206,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
spin_unlock_bh(&rx_ring->idr_lock);
if (!msdu) {
ath11k_warn(ab, "frame rx with invalid buf_id %d pdev %d\n",
@@ -5125,7 +5166,7 @@ int ath11k_dp_rx_process_wbm_err(struct
@@ -5128,7 +5169,7 @@ int ath11k_dp_rx_process_wbm_err(struct
rx_ring = &ar->dp.rx_refill_buf_ring;
ath11k_dp_rxbufs_replenish(ab, i, rx_ring, num_buffs_reaped[i],
@@ -215,7 +215,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
}
rcu_read_lock();
@@ -5147,6 +5188,8 @@ int ath11k_dp_rx_process_wbm_err(struct
@@ -5150,6 +5191,8 @@ int ath11k_dp_rx_process_wbm_err(struct
}
rcu_read_unlock();
done:
@@ -224,7 +224,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
return total_num_buffs_reaped;
}
@@ -5232,7 +5275,7 @@ int ath11k_dp_process_rxdma_err(struct a
@@ -5235,7 +5278,7 @@ int ath11k_dp_process_rxdma_err(struct a
if (num_buf_freed)
ath11k_dp_rxbufs_replenish(ab, mac_id, rx_ring, num_buf_freed,
@@ -233,7 +233,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
return budget - quota;
}
@@ -6178,12 +6221,12 @@ static void ath11k_dp_rx_mon_dest_proces
@@ -6181,12 +6224,12 @@ static void ath11k_dp_rx_mon_dest_proces
ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id,
&dp->rxdma_mon_buf_ring,
rx_bufs_used,
@@ -248,7 +248,7 @@ Signed-off-by: Tamizh Chelvam <quic_tamizhr@quicinc.com>
}
}
@@ -6693,7 +6736,7 @@ next_entry:
@@ -6696,7 +6739,7 @@ next_entry:
ath11k_dp_rxbufs_replenish(ar->ab, dp->mac_id,
&dp->rxdma_mon_buf_ring,
rx_bufs_used,

View File

@@ -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
@@ -6591,6 +6591,9 @@ static int ath11k_mac_op_start(struct ie
@@ -6586,6 +6586,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
@@ -739,9 +739,22 @@ struct ath11k {
@@ -737,9 +737,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;
@@ -819,6 +832,9 @@ struct ath11k {
@@ -817,6 +830,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;
@@ -1022,19 +1038,7 @@ struct ath11k_base {
@@ -1020,19 +1036,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];
@@ -1411,4 +1415,36 @@ static inline const char *ath11k_bus_str
@@ -1409,4 +1413,36 @@ static inline const char *ath11k_bus_str
return "unknown";
}
@@ -599,7 +599,7 @@
user_stats->ast_index);
return;
}
@@ -4212,7 +4227,7 @@ int ath11k_peer_rx_frag_setup(struct ath
@@ -4215,7 +4230,7 @@ int ath11k_peer_rx_frag_setup(struct ath
spin_lock_bh(&ab->base_lock);
@@ -608,7 +608,7 @@
if (!peer) {
ath11k_warn(ab, "failed to find the peer to set up fragment info\n");
spin_unlock_bh(&ab->base_lock);
@@ -4668,7 +4683,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
@@ -4671,7 +4686,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
return -EINVAL;
spin_lock_bh(&ab->base_lock);
@@ -617,7 +617,7 @@
if (!peer) {
ath11k_warn(ab, "failed to find the peer to de-fragment received fragment peer_id %d\n",
peer_id);
@@ -4730,7 +4745,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
@@ -4733,7 +4748,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
del_timer_sync(&rx_tid->frag_timer);
spin_lock_bh(&ab->base_lock);
@@ -626,7 +626,7 @@
if (!peer)
goto err_frags_cleanup;
@@ -6394,7 +6409,7 @@ int ath11k_dp_rx_process_mon_status(stru
@@ -6397,7 +6412,7 @@ int ath11k_dp_rx_process_mon_status(stru
trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz);
ppdu_info->peer_id = HAL_INVALID_PEERID;
@@ -635,7 +635,7 @@
if (test_bit(ATH11K_FLAG_MONITOR_STARTED, &ar->monitor_flags) &&
pmon->mon_ppdu_status == DP_PPDU_STATUS_START &&
@@ -6425,7 +6440,7 @@ int ath11k_dp_rx_process_mon_status(stru
@@ -6428,7 +6443,7 @@ int ath11k_dp_rx_process_mon_status(stru
}
rcu_read_lock();
spin_lock_bh(&ab->base_lock);
@@ -789,7 +789,7 @@
ar->num_peers = 0;
ar->num_stations = 0;
@@ -3109,7 +3109,7 @@ static void ath11k_bss_assoc(struct ieee
@@ -3100,7 +3100,7 @@ static void ath11k_bss_assoc(struct ieee
spin_lock_bh(&ar->ab->base_lock);
@@ -798,7 +798,7 @@
if (peer && peer->is_authorized)
is_auth = true;
@@ -4269,7 +4269,7 @@ static int ath11k_clear_peer_keys(struct
@@ -4260,7 +4260,7 @@ static int ath11k_clear_peer_keys(struct
lockdep_assert_held(&ar->conf_mutex);
spin_lock_bh(&ab->base_lock);
@@ -807,7 +807,7 @@
if (!peer) {
spin_unlock_bh(&ab->base_lock);
return -ENOENT;
@@ -4385,7 +4385,7 @@ static int ath11k_mac_op_set_key(struct
@@ -4376,7 +4376,7 @@ static int ath11k_mac_op_set_key(struct
* we already hold conf_mutex. we just make sure its there now.
*/
spin_lock_bh(&ab->base_lock);
@@ -816,7 +816,7 @@
/* flush the fragments cache during key (re)install to
* ensure all frags in the new frag list belong to the same key.
@@ -4494,7 +4494,7 @@ static int ath11k_mac_op_set_key(struct
@@ -4485,7 +4485,7 @@ static int ath11k_mac_op_set_key(struct
}
spin_lock_bh(&ab->base_lock);
@@ -825,7 +825,7 @@
/* TODO: Check if vdev specific security cfg is mandatory */
ret = ath11k_nss_vdev_set_cmd(arvif, ATH11K_NSS_WIFI_VDEV_SECURITY_TYPE_CMD, key->cipher);
@@ -4525,7 +4525,7 @@ static int ath11k_mac_op_set_key(struct
@@ -4516,7 +4516,7 @@ static int ath11k_mac_op_set_key(struct
list_for_each_entry_safe(dyn_vlan_cfg, tmp, &ap_vlan_arvif->dyn_vlan_cfg, cfg_list) {
struct ieee80211_sta *vlan_sta = dyn_vlan_cfg->sta;
@@ -834,7 +834,7 @@
if (ret)
ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n",
vlan_sta->addr, ret);
@@ -5135,7 +5135,7 @@ static void ath11k_sta_set_4addr_wk(stru
@@ -5126,7 +5126,7 @@ static void ath11k_sta_set_4addr_wk(stru
vif = ap_vlan_arvif->vif;
spin_lock_bh(&ab->base_lock);
@@ -843,7 +843,7 @@
if (!wds_peer) {
spin_unlock_bh(&ab->base_lock);
ath11k_warn(ab, "mac sta use 4addr failed to find peer %pM\n",
@@ -5358,7 +5358,7 @@ static void ath11k_mac_op_sta_rc_update(
@@ -5349,7 +5349,7 @@ static void ath11k_mac_op_sta_rc_update(
spin_lock_bh(&ar->ab->base_lock);
@@ -852,7 +852,7 @@
if (!peer) {
spin_unlock_bh(&ar->ab->base_lock);
ath11k_warn(ar->ab, "mac sta rc update failed to find peer %pM on vdev %i\n",
@@ -8464,7 +8464,7 @@ ath11k_mac_op_assign_vif_chanctx(struct
@@ -8430,7 +8430,7 @@ ath11k_mac_op_assign_vif_chanctx(struct
if (ab->hw_params.vdev_start_delay &&
arvif->vdev_type != WMI_VDEV_TYPE_AP &&
arvif->vdev_type != WMI_VDEV_TYPE_MONITOR &&
@@ -861,7 +861,7 @@
memcpy(&arvif->chanctx, ctx, sizeof(*ctx));
ret = 0;
goto out;
@@ -8540,7 +8540,7 @@ ath11k_mac_op_unassign_vif_chanctx(struc
@@ -8506,7 +8506,7 @@ ath11k_mac_op_unassign_vif_chanctx(struc
if (ab->hw_params.vdev_start_delay &&
arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
spin_lock_bh(&ab->base_lock);
@@ -870,7 +870,7 @@
spin_unlock_bh(&ab->base_lock);
if (peer)
ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr);
@@ -9114,7 +9114,7 @@ ath11k_mac_validate_vht_he_fixed_rate_se
@@ -9080,7 +9080,7 @@ ath11k_mac_validate_vht_he_fixed_rate_se
rcu_read_lock();
spin_lock_bh(&ar->ab->base_lock);
@@ -879,7 +879,7 @@
if (peer->sta) {
deflink = &peer->sta->deflink;
@@ -10066,26 +10066,26 @@ static int ath11k_mac_station_remove(str
@@ -10032,26 +10032,26 @@ static int ath11k_mac_station_remove(str
return ret;
}
@@ -913,7 +913,7 @@
sta->addr, ret);
return ret;
}
@@ -10135,20 +10135,20 @@ static int ath11k_mac_op_sta_state(struc
@@ -10101,20 +10101,20 @@ static int ath11k_mac_op_sta_state(struc
ath11k_warn(ar->ab, "Failed to remove station: %pM for VDEV: %d\n",
sta->addr, arvif->vdev_id);
@@ -938,7 +938,7 @@
} else if (old_state == IEEE80211_STA_AUTH &&
new_state == IEEE80211_STA_ASSOC &&
(vif->type == NL80211_IFTYPE_AP ||
@@ -10179,7 +10179,7 @@ static int ath11k_mac_op_sta_state(struc
@@ -10145,7 +10145,7 @@ static int ath11k_mac_op_sta_state(struc
new_state == IEEE80211_STA_AUTHORIZED) {
spin_lock_bh(&ar->ab->base_lock);
@@ -947,7 +947,7 @@
if (peer)
peer->is_authorized = true;
@@ -10216,7 +10216,7 @@ static int ath11k_mac_op_sta_state(struc
@@ -10182,7 +10182,7 @@ static int ath11k_mac_op_sta_state(struc
list_add_tail(&ar_dyn_vlan_cfg->cfg_list, &arvif->dyn_vlan_cfg);
}
} else {
@@ -956,7 +956,7 @@
if (ret)
ath11k_warn(ar->ab, "failed to cfg dyn vlan for peer %pM: %d\n",
sta->addr, ret);
@@ -10249,7 +10249,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_ASSOC) {
spin_lock_bh(&ar->ab->base_lock);
@@ -965,7 +965,7 @@
if (peer)
peer->is_authorized = false;
spin_unlock_bh(&ar->ab->base_lock);
@@ -10257,7 +10257,7 @@ static int ath11k_mac_op_sta_state(struc
@@ -10223,7 +10223,7 @@ static int ath11k_mac_op_sta_state(struc
new_state == IEEE80211_STA_ASSOC) {
spin_lock_bh(&ar->ab->base_lock);
@@ -974,7 +974,7 @@
if (peer)
peer->is_authorized = false;
@@ -10662,9 +10662,9 @@ void ath11k_mac_unregister(struct ath11k
@@ -10628,9 +10628,9 @@ void ath11k_mac_unregister(struct ath11k
continue;
__ath11k_mac_unregister(ar);
@@ -985,7 +985,7 @@
}
static int __ath11k_mac_register(struct ath11k *ar)
@@ -10951,15 +10951,15 @@ int ath11k_mac_register(struct ath11k_ba
@@ -10917,15 +10917,15 @@ int ath11k_mac_register(struct ath11k_ba
ab->cc_freq_hz = IPQ8074_CC_FREQ_HERTZ;
ab->free_vdev_map = (1LL << (ab->num_radios * TARGET_NUM_VDEVS(ab))) - 1;
@@ -1004,7 +1004,7 @@
if (ab->pdevs_macaddr_valid) {
ether_addr_copy(ar->mac_addr, pdev->mac_addr);
} else {
@@ -10987,9 +10987,9 @@ err_cleanup:
@@ -10953,9 +10953,9 @@ err_cleanup:
pdev = &ab->pdevs[i];
ar = pdev->ar;
__ath11k_mac_unregister(ar);
@@ -1015,7 +1015,7 @@
return ret;
}
@@ -11033,9 +11033,12 @@ int ath11k_mac_allocate(struct ath11k_ba
@@ -10999,9 +10999,12 @@ int ath11k_mac_allocate(struct ath11k_ba
ar->num_rx_chains = get_num_chains(pdev->cap.rx_chain_mask);
pdev->ar = ar;
@@ -2630,3 +2630,4 @@
-exit:
rcu_read_unlock();
}

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
@@ -8760,6 +8760,7 @@ bool cfg80211_rx_spurious_frame(struct n
@@ -8756,6 +8756,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.
@@ -8769,7 +8770,8 @@ bool cfg80211_rx_spurious_frame(struct n
@@ -8765,7 +8766,8 @@ bool cfg80211_rx_spurious_frame(struct n
* for a reason other than not having a subscription.)
*/
bool cfg80211_rx_unexpected_4addr_frame(struct net_device *dev,
@@ -37,7 +37,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
* cfg80211_probe_status - notify userspace about probe status
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2189,9 +2189,16 @@ static int ieee80211_change_station(stru
@@ -2188,9 +2188,16 @@ static int ieee80211_change_station(stru
vlansdata = IEEE80211_DEV_TO_SUB_IF(params->vlan);
if (params->vlan->ieee80211_ptr->use_4addr) {
@@ -54,7 +54,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
__ieee80211_check_fast_rx_iface(vlansdata);
@@ -2201,6 +2208,39 @@ static int ieee80211_change_station(stru
@@ -2200,6 +2207,39 @@ static int ieee80211_change_station(stru
else
drv_sta_set_4addr(local, sta->sdata, &sta->sta,
true);
@@ -127,7 +127,7 @@ Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -18887,7 +18887,8 @@ void cfg80211_conn_failed(struct net_dev
@@ -18877,7 +18877,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);
@@ -18913,6 +18914,9 @@ static bool __nl80211_unexpected_frame(s
@@ -18903,6 +18904,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;
@@ -18936,14 +18940,15 @@ bool cfg80211_rx_spurious_frame(struct n
@@ -18926,14 +18930,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;
@@ -18958,7 +18963,7 @@ bool cfg80211_rx_unexpected_4addr_frame(
@@ -18948,7 +18953,7 @@ bool cfg80211_rx_unexpected_4addr_frame(
}
ret = __nl80211_unexpected_frame(dev,
NL80211_CMD_UNEXPECTED_4ADDR_FRAME,