From 424157846542e2ba86f2e9bd7d21baa9d26cd2f7 Mon Sep 17 00:00:00 2001 From: Balaji Pothunoori Date: Thu, 23 Mar 2023 12:11:03 +0530 Subject: [PATCH 01/27] qcacld-3.0: update mcs value for HT and VHT mode for mon mode Currently monitor mode HT & VHT data packet tx rate is not matching with ota packet tx rate due to incorrect mcs value. This change is to update proper mcs value for HT & VHT modes. Change-Id: Ib4fb06a06ce35a4e8e683e5a22c8be226492b13f CRs-Fixed: 3442509 --- .../pkt_capture/core/src/wlan_pkt_capture_data_txrx.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c b/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c index 6cebfe5481b9..0c69d911f0ac 100644 --- a/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c +++ b/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -179,12 +179,14 @@ static void pkt_capture_tx_get_phy_info( mcs = 8 + pktcapture_hdr->mcs; else mcs = pktcapture_hdr->mcs; + + tx_status->ht_mcs = mcs; break; case 0x3: tx_status->vht_flags = 1; mcs = pktcapture_hdr->mcs; tx_status->vht_flag_values3[0] = - mcs << 0x4 | (pktcapture_hdr->nss + 1); + mcs << 0x4 | (pktcapture_hdr->nss); tx_status->vht_flag_values2 = pktcapture_hdr->bw; break; case 0x4: From 03d81c87dbaa68d2534045f5431dd9f755e439e3 Mon Sep 17 00:00:00 2001 From: Balaji Pothunoori Date: Wed, 29 Mar 2023 15:35:19 +0530 Subject: [PATCH 02/27] qcacld-3.0: tx rate update for data packet in legacy modes Currently, For legacy modes monitor mode reporting incorrect tx rate for data packet in radiotap header due to packetcapture_hdr rate is hardcoded as '0'. This change calculates the data rate of legacy packets using mcs reported in tx completion. Change-Id: I2a651b8fb36947672bd30f8a635f0e643219e520 CRs-Fixed: 3442376 --- components/pkt_capture/core/src/wlan_pkt_capture_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/pkt_capture/core/src/wlan_pkt_capture_main.c b/components/pkt_capture/core/src/wlan_pkt_capture_main.c index 27081aa1c9a6..d4009775dd07 100644 --- a/components/pkt_capture/core/src/wlan_pkt_capture_main.c +++ b/components/pkt_capture/core/src/wlan_pkt_capture_main.c @@ -292,8 +292,8 @@ pkt_capture_process_tx_data(void *soc, void *log_data, u_int16_t vdev_id, /* nss not available */ pktcapture_hdr.nss = 0; pktcapture_hdr.rssi_comb = tx_comp_status.ack_frame_rssi; - /* rate not available */ - pktcapture_hdr.rate = 0; + /* update rate from available mcs */ + pktcapture_hdr.rate = tx_comp_status.mcs; pktcapture_hdr.stbc = tx_comp_status.stbc; pktcapture_hdr.sgi = tx_comp_status.sgi; pktcapture_hdr.ldpc = tx_comp_status.ldpc; From 92151b69be14f9510223cef9d074d495b8bb2175 Mon Sep 17 00:00:00 2001 From: Balaji Pothunoori Date: Mon, 3 Apr 2023 16:08:48 +0530 Subject: [PATCH 03/27] qcacld-3.0: Fix ofdm and cck flag info for mon mode data packets Currently cck and ofdm flags are filled wrongly for monitor mode data packets based on preamble and wireshark deriving incorrect phy type for 11G & 11B. This change is to update cck and ofdm flags based on packet type. Change-Id: I5fcdc463ea2a6d83253e39cc377a2471aeb4e144 CRs-Fixed: 3447567 --- .../pkt_capture/core/inc/wlan_pkt_capture_data_txrx.h | 3 +++ .../pkt_capture/core/src/wlan_pkt_capture_data_txrx.c | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/components/pkt_capture/core/inc/wlan_pkt_capture_data_txrx.h b/components/pkt_capture/core/inc/wlan_pkt_capture_data_txrx.h index e933c47ce78e..c56ff2787944 100644 --- a/components/pkt_capture/core/inc/wlan_pkt_capture_data_txrx.h +++ b/components/pkt_capture/core/inc/wlan_pkt_capture_data_txrx.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2021, 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -42,6 +43,8 @@ #define IEEE80211_RADIOTAP_HE_DATA1_STBC_KNOWN 0x0200 #endif +#define HAL_TX_PKT_TYPE_11B 1 + /** * pkt_capture_data_process_type - data pkt types to process * for packet capture mode diff --git a/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c b/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c index 0c69d911f0ac..3bd0a085964e 100644 --- a/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c +++ b/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c @@ -207,9 +207,9 @@ static void pkt_capture_tx_get_phy_info( break; } - if (preamble == 0) + if (preamble_type != HAL_TX_PKT_TYPE_11B) tx_status->ofdm_flag = 1; - else if (preamble == 1) + else tx_status->cck_flag = 1; tx_status->mcs = mcs; @@ -729,9 +729,9 @@ static void pkt_capture_rx_get_phy_info(void *context, void *psoc, break; } - if (preamble == 0) + if (preamble_type != HAL_RX_PKT_TYPE_11B) rx_status->ofdm_flag = 1; - else if (preamble == 1) + else rx_status->cck_flag = 1; rx_status->bw = bw; From a6ae724cc90abdb7023a2014706f60f3cf1164de Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Wed, 24 May 2023 06:36:31 -0700 Subject: [PATCH 04/27] Release 2.0.8.33C Release 2.0.8.33C Change-Id: I094706e9e81db607b7ca2153ce46d7af7200169b CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index a22196838e55..0a11c2fd4a18 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "B" +#define QWLAN_VERSION_EXTRA "C" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33B" +#define QWLAN_VERSIONSTR "2.0.8.33C" #endif /* QWLAN_VERSION_H */ From 44f77a6b2572cb8d6ae547870e3b2ca91f854de1 Mon Sep 17 00:00:00 2001 From: Azmath Mohammed Date: Fri, 26 Aug 2022 11:57:02 +0530 Subject: [PATCH 05/27] qcacld-3.0: Fix for code error Add missing break after the update of ret variable. Change-Id: Ib9c54575d97d26f05239a2fb44a87a63440b9bdf CRs-Fixed: 3277218 --- components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c | 1 + 1 file changed, 1 insertion(+) diff --git a/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c b/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c index 3bd0a085964e..e8c8682737c3 100644 --- a/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c +++ b/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c @@ -115,6 +115,7 @@ static unsigned char pkt_capture_get_tx_rate( case 0x0: ret = 0x16; *preamble = LONG_PREAMBLE; + break; case 0x1: ret = 0xB; *preamble = LONG_PREAMBLE; From 3ae434d51664de2a260511ebf35cf60beed1584e Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Wed, 24 May 2023 09:02:43 -0700 Subject: [PATCH 06/27] Release 2.0.8.33D Release 2.0.8.33D Change-Id: I5486a330381e4472ab77cabe67d1fe341a7f6e2b CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 0a11c2fd4a18..378883e3ded1 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "C" +#define QWLAN_VERSION_EXTRA "D" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33C" +#define QWLAN_VERSIONSTR "2.0.8.33D" #endif /* QWLAN_VERSION_H */ From 632d736aa2bba0f9d4a6eed19ca705f08f546172 Mon Sep 17 00:00:00 2001 From: Surya Prakash Sivaraj Date: Tue, 16 May 2023 11:08:19 +0530 Subject: [PATCH 07/27] qcacld-3.0: Update channel before user space update As part of roaming, roamed event is sent to the userspace. This marks the end of roaming and userspace begins CSI restart for the new BSS. But, the channel information of the new BSS is not yet updated to the vdev. This leads to sending wrong channel in the for CFR capture. To fix this, update the channel info of the new BSS before sending userspace update. Change-Id: I3af5aadf6041e56f2261aaebd7d2c1a108f63c65 CRs-Fixed: 3500062 --- core/wma/src/wma_scan_roam.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 409c88336202..702063ef6170 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -1398,16 +1398,6 @@ int wma_mlme_roam_synch_event_handler_cb(void *handle, uint8_t *event, wma_roam_update_vdev(wma, roam_synch_ind_ptr); - if (QDF_IS_STATUS_ERROR(wma->csr_roam_synch_cb(wma->mac_context, - roam_synch_ind_ptr, - bss_desc_ptr, SIR_ROAM_SYNCH_PROPAGATION))) { - wma_err("CSR roam synch propagation failed, abort roam"); - status = -EINVAL; - goto cleanup_label; - } - - wma_process_roam_synch_complete(wma, synch_event->vdev_id); - /* update freq and channel width */ wma->interfaces[synch_event->vdev_id].ch_freq = roam_synch_ind_ptr->chan_freq; @@ -1426,6 +1416,16 @@ int wma_mlme_roam_synch_event_handler_cb(void *handle, uint8_t *event, param_buf->chan, &wma->interfaces[synch_event->vdev_id]); + if (QDF_IS_STATUS_ERROR(wma->csr_roam_synch_cb(wma->mac_context, + roam_synch_ind_ptr, + bss_desc_ptr, SIR_ROAM_SYNCH_PROPAGATION))) { + wma_err("CSR roam synch propagation failed, abort roam"); + status = -EINVAL; + goto cleanup_label; + } + + wma_process_roam_synch_complete(wma, synch_event->vdev_id); + wma->csr_roam_synch_cb(wma->mac_context, roam_synch_ind_ptr, bss_desc_ptr, SIR_ROAM_SYNCH_COMPLETE); wma->interfaces[synch_event->vdev_id].roam_synch_delay = From b7e74f81db1202dd2a7b0397b2e3ef6a44e9be1e Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Fri, 26 May 2023 03:13:58 -0700 Subject: [PATCH 08/27] Release 2.0.8.33E Release 2.0.8.33E Change-Id: I91532367e0600df8aa3156eda0e5e854bd479ce3 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 378883e3ded1..6ac0327ecc61 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "D" +#define QWLAN_VERSION_EXTRA "E" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33D" +#define QWLAN_VERSIONSTR "2.0.8.33E" #endif /* QWLAN_VERSION_H */ From 9dd3327764f8d7c30234584a6a5b975908814825 Mon Sep 17 00:00:00 2001 From: Jinwei Chen Date: Tue, 8 Nov 2022 05:29:46 -0800 Subject: [PATCH 09/27] qcacld-3.0: add minimal UDP data length check for FISA current observation is as following, (1) RX UDP data length less then 12 bytes and they are aggregated by FISA. (2) aggregated UDP data might not be supported by user APP or they are forwarded to other netdev. if above two is met, kernel panic appears. no solid conclusion from kernel network currently, as a SW WAR from wlan driver side, check if current UDP data length < 16 bytes, skip FISA aggregation. Change-Id: Ia9e46705c7ace6a6e5580494231056adf214d7b2 CRs-Fixed: 3330035 --- core/dp/txrx3.0/dp_fisa_rx.c | 7 ++++++- core/dp/txrx3.0/dp_fisa_rx.h | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/dp/txrx3.0/dp_fisa_rx.c b/core/dp/txrx3.0/dp_fisa_rx.c index 35e359914b88..690962cb3d7d 100644 --- a/core/dp/txrx3.0/dp_fisa_rx.c +++ b/core/dp/txrx3.0/dp_fisa_rx.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -1608,6 +1608,10 @@ static bool dp_fisa_aggregation_should_stop( uint32_t cumulative_ip_len_delta = hal_cumulative_ip_len - fisa_flow->hal_cumultive_ip_len; /** + * kernel network panic if UDP data length < 12 bytes get aggregated, + * no solid conclusion currently, as a SW WAR, only allow UDP + * aggregation if UDP data length >= 16 bytes. + * * current cumulative ip length should > last cumulative_ip_len * and <= last cumulative_ip_len + 1478, also current aggregate * count should be equal to last aggregate count + 1, @@ -1616,6 +1620,7 @@ static bool dp_fisa_aggregation_should_stop( * otherwise, current fisa flow aggregation should be stopped. */ if (fisa_flow->do_not_aggregate || + msdu_len < (l4_hdr_offset + FISA_MIN_L4_AND_DATA_LEN) || hal_cumulative_ip_len <= fisa_flow->hal_cumultive_ip_len || cumulative_ip_len_delta > FISA_MAX_SINGLE_CUMULATIVE_IP_LEN || (fisa_flow->last_hal_aggr_count + 1) != hal_aggr_count || diff --git a/core/dp/txrx3.0/dp_fisa_rx.h b/core/dp/txrx3.0/dp_fisa_rx.h index e660fdc030fa..1ded3f38d820 100644 --- a/core/dp/txrx3.0/dp_fisa_rx.h +++ b/core/dp/txrx3.0/dp_fisa_rx.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -37,6 +38,12 @@ #define FISA_FLOW_MAX_CUMULATIVE_IP_LEN \ (FISA_MAX_SINGLE_CUMULATIVE_IP_LEN * FISA_FLOW_MAX_AGGR_COUNT) +/* minimal pure UDP data length required for FISA */ +#define FISA_MIN_UDP_DATA_LEN 16 +/* minimal length without L2/L3 header required for FISA */ +#define FISA_MIN_L4_AND_DATA_LEN \ + (FISA_UDP_HDR_LEN + FISA_MIN_UDP_DATA_LEN) + #define IPSEC_PORT 500 #define IPSEC_NAT_PORT 4500 From 2c7d3ebcf2da03aed82d3532eb837b386035de16 Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Thu, 15 Jun 2023 05:29:06 -0700 Subject: [PATCH 10/27] Release 2.0.8.33F Release 2.0.8.33F Change-Id: I2a40530f8f0874f6e2f031c0baa57e05451869d5 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 6ac0327ecc61..f3ce0a7d16b4 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "E" +#define QWLAN_VERSION_EXTRA "F" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33E" +#define QWLAN_VERSIONSTR "2.0.8.33F" #endif /* QWLAN_VERSION_H */ From 367c18f30315a2a9547900688834036f936b7743 Mon Sep 17 00:00:00 2001 From: Rahul Gusain Date: Fri, 2 Jun 2023 22:56:21 +0530 Subject: [PATCH 11/27] qcacld-3.0: Update NDP peer MC list Currently, driver gets peer multicast address list from kernel for all interfaces and it send this list to firmware. For NDI, on NDP confirmation indication, driver appends the multicast list with new NDP peer added and then send it to firmware. But this is done for first NDP peer only, kernel does not provide multicast list again as kernel already configures the multicast addresses, unless there is some reset happens in kernel. This can cause issue as firmware is expecting the updated multicast filter on each NDP confirmation (new peer is added) to enable the NS frame exchange. As new peer is not added in the filter, firmware will reject the NS frame. So, to fix this, update the multicast list on NDP peer addition and deletion. Change-Id: I6371199ae5c3a8f4088987f1e6f10c39cbed1685 CRs-Fixed: 3518887 --- components/nan/core/inc/nan_public_structs.h | 3 ++ components/nan/dispatcher/src/nan_ucfg_api.c | 42 ++++++++++++++++++-- core/hdd/inc/wlan_hdd_main.h | 11 ++++- core/hdd/src/wlan_hdd_main.c | 33 +++++++++++++-- core/hdd/src/wlan_hdd_nan_datapath.c | 7 ++-- 5 files changed, 86 insertions(+), 10 deletions(-) diff --git a/components/nan/core/inc/nan_public_structs.h b/components/nan/core/inc/nan_public_structs.h index f4ca28fb5ee9..71e0940ac5f1 100644 --- a/components/nan/core/inc/nan_public_structs.h +++ b/components/nan/core/inc/nan_public_structs.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -788,6 +789,7 @@ struct nan_datapath_host_event { * @delete_peers_by_addr: LIM callback for deleting peer by MAC address * @update_ndi_conn: WMA callback to update NDI's connection info * @nan_concurrency_update: Callback to handle nan concurrency + * @set_mc_list: HDD callback to set multicast peer list */ struct nan_callbacks { /* callback to os_if layer from umac */ @@ -813,6 +815,7 @@ struct nan_callbacks { struct nan_datapath_channel_info *chan_info); void (*nan_concurrency_update)(void); + void (*set_mc_list)(struct wlan_objmgr_vdev *vdev); }; /** diff --git a/components/nan/dispatcher/src/nan_ucfg_api.c b/components/nan/dispatcher/src/nan_ucfg_api.c index f32734f19919..cc5c74ddcea2 100644 --- a/components/nan/dispatcher/src/nan_ucfg_api.c +++ b/components/nan/dispatcher/src/nan_ucfg_api.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -186,6 +186,37 @@ inline QDF_STATUS ucfg_nan_set_active_peers(struct wlan_objmgr_vdev *vdev, return QDF_STATUS_SUCCESS; } +/** + * ucfg_nan_update_mc_list() - update the multicast list + * @vdev: Pointer to VDEV Object + * + * This function will update the multicast list for NDP peer + */ +static void ucfg_nan_update_mc_list(struct wlan_objmgr_vdev *vdev) +{ + struct nan_callbacks cb_obj; + QDF_STATUS status; + struct wlan_objmgr_psoc *psoc = wlan_vdev_get_psoc(vdev); + + if (!psoc) { + nan_err("psoc is null"); + return; + } + + status = ucfg_nan_get_callbacks(psoc, &cb_obj); + if (QDF_IS_STATUS_ERROR(status)) { + nan_err("Couldn't get callback object"); + return; + } + + if (!cb_obj.set_mc_list) { + nan_err("set_mc_list callback not registered"); + return; + } + + cb_obj.set_mc_list(vdev); +} + inline void ucfg_nan_set_peer_mc_list(struct wlan_objmgr_vdev *vdev, struct qdf_mac_addr peer_mac_addr) { @@ -215,7 +246,7 @@ inline void ucfg_nan_set_peer_mc_list(struct wlan_objmgr_vdev *vdev, } if (list_idx == max_ndp_sessions) { nan_err("Peer multicast address list is full"); - goto end; + qdf_spin_unlock_bh(&priv_obj->lock); } /* Derive peer multicast addr */ peer_mac_addr.bytes[0] = 0x33; @@ -223,8 +254,9 @@ inline void ucfg_nan_set_peer_mc_list(struct wlan_objmgr_vdev *vdev, peer_mac_addr.bytes[2] = 0xff; priv_obj->peer_mc_addr_list[list_idx] = peer_mac_addr; -end: qdf_spin_unlock_bh(&priv_obj->lock); + + ucfg_nan_update_mc_list(vdev); } inline void ucfg_nan_get_peer_mc_list( @@ -269,7 +301,10 @@ inline void ucfg_nan_clear_peer_mc_list(struct wlan_objmgr_psoc *psoc, break; } } + qdf_spin_unlock_bh(&priv_obj->lock); + + ucfg_nan_update_mc_list(vdev); } inline uint32_t ucfg_nan_get_active_peers(struct wlan_objmgr_vdev *vdev) @@ -623,6 +658,7 @@ int ucfg_nan_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc, ucfg_nan_request_process_cb; psoc_obj->cb_obj.nan_concurrency_update = cb_obj->nan_concurrency_update; + psoc_obj->cb_obj.set_mc_list = cb_obj->set_mc_list; return 0; } diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index 5d74543caefc..2f64a398ac69 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -5030,4 +5030,13 @@ void wlan_hdd_set_pm_qos_request(struct hdd_context *hdd_ctx, { } #endif + +/** + * hdd_update_multicast_list() - update the multicast list + * @vdev: pointer to VDEV object + * + * Return: none + */ +void hdd_update_multicast_list(struct wlan_objmgr_vdev *vdev); + #endif /* end #if !defined(WLAN_HDD_MAIN_H) */ diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 68cdfec4e54a..f85385bc2362 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -3589,6 +3589,7 @@ static void hdd_nan_register_callbacks(struct hdd_context *hdd_ctx) cb_obj.peer_departed_ind = hdd_ndp_peer_departed_handler; cb_obj.nan_concurrency_update = hdd_nan_concurrency_update; + cb_obj.set_mc_list = hdd_update_multicast_list; os_if_nan_register_hdd_callbacks(hdd_ctx->psoc, &cb_obj); } @@ -4163,7 +4164,7 @@ int hdd_wlan_start_modules(struct hdd_context *hdd_ctx, bool reinit) goto deregister_cb; /* - * NAN compoenet requires certian operations like, open adapter, + * NAN component requires certain operations like, open adapter, * close adapter, etc. to be initiated by HDD, for those * register HDD callbacks with UMAC's NAN componenet. */ @@ -4949,8 +4950,7 @@ hdd_set_derived_multicast_list(struct wlan_objmgr_psoc *psoc, /** * __hdd_set_multicast_list() - set the multicast address list - * @dev: Pointer to the WLAN device. - * @skb: Pointer to OS packet (sk_buff). + * @dev: Pointer to the WLAN device. * * This funciton sets the multicast address list. * @@ -5065,6 +5065,33 @@ static void hdd_set_multicast_list(struct net_device *net_dev) osif_vdev_sync_op_stop(vdev_sync); } +void hdd_update_multicast_list(struct wlan_objmgr_vdev *vdev) +{ + struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); + struct hdd_adapter *adapter; + uint8_t vdev_id = wlan_vdev_get_id(vdev); + struct net_device *net_dev; + + if (!hdd_ctx) { + hdd_err("hdd_ctx is null"); + return; + } + + adapter = hdd_get_adapter_by_vdev(hdd_ctx, vdev_id); + if (!adapter) { + hdd_err("adapter is null for vdev_id %d", vdev_id); + return; + } + + net_dev = adapter->dev; + if (!net_dev) { + hdd_err("netdev is null"); + return; + } + + __hdd_set_multicast_list(net_dev); +} + #ifdef WLAN_FEATURE_TSF_PTP static const struct ethtool_ops wlan_ethtool_ops = { .get_ts_info = wlan_get_ts_info, diff --git a/core/hdd/src/wlan_hdd_nan_datapath.c b/core/hdd/src/wlan_hdd_nan_datapath.c index 9e4d8d0b288e..4dde13d19221 100644 --- a/core/hdd/src/wlan_hdd_nan_datapath.c +++ b/core/hdd/src/wlan_hdd_nan_datapath.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -1148,10 +1148,11 @@ void hdd_ndp_peer_departed_handler(uint8_t vdev_id, uint16_t sta_id, hdd_delete_peer(sta_ctx, peer_mac_addr); + ucfg_nan_clear_peer_mc_list(hdd_ctx->psoc, adapter->vdev, + peer_mac_addr); + if (last_peer) { hdd_debug("No more ndp peers."); - ucfg_nan_clear_peer_mc_list(hdd_ctx->psoc, adapter->vdev, - peer_mac_addr); hdd_cleanup_ndi(hdd_ctx, adapter); qdf_event_set(&adapter->peer_cleanup_done); /* From 244338dedb1f87c0ff74db20a3d09b716fa4987c Mon Sep 17 00:00:00 2001 From: Rahul Gusain Date: Fri, 2 Jun 2023 23:55:52 +0530 Subject: [PATCH 12/27] qcacld-3.0: Add lock for multicast list update Currently, kernel provides the multicast address list to the driver and driver appends this list with new peer multicast address which are not included in the list. This is done in irq thread. But with recent changes, for NDI, driver will update this list on the peer addition and deletion which is executed in scheduler thread. This may lead to issue when request to update the multicast list comes from scheduler thread while irq thread request is in progress and vice-versa. So, to handle such situation, add spin lock which will protect the multicast address list. Change-Id: I9093a92d3714abd875dcd02743f711a5bed26090 CRs-Fixed: 3518989 --- core/hdd/inc/wlan_hdd_main.h | 3 +++ core/hdd/src/wlan_hdd_main.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index 2f64a398ac69..c834bd7979d1 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -1223,6 +1223,8 @@ enum qdisc_filter_status { * @cache_sta_count: number of currently cached stations * @acs_complete_event: acs complete event * @latency_level: 0 - normal, 1 - moderate, 2 - low, 3 - ultralow + * @mc_addr_list: multicast address list + * @mc_list_lock: spin lock for multicast list * @last_disconnect_reason: Last disconnected internal reason code * as per enum qca_disconnect_reason_codes * @connect_req_status: Last disconnected internal status code @@ -1408,6 +1410,7 @@ struct hdd_adapter { #endif struct hdd_multicast_addr_list mc_addr_list; + qdf_spinlock_t mc_list_lock; uint8_t addr_filter_pattern; struct hdd_scan_info scan_info; diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index f85385bc2362..b7f2353b28e8 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -4992,6 +4992,7 @@ static void __hdd_set_multicast_list(struct net_device *dev) if (!mc_list_request) return; + qdf_spin_lock_bh(&adapter->mc_list_lock); /* Delete already configured multicast address list */ if (adapter->mc_addr_list.mc_cnt > 0) hdd_disable_and_flush_mc_addr_list(adapter, @@ -5044,6 +5045,7 @@ static void __hdd_set_multicast_list(struct net_device *dev) hdd_enable_mc_addr_filtering(adapter, pmo_mc_list_change_notify); free_req: + qdf_spin_unlock_bh(&adapter->mc_list_lock); qdf_mem_free(mc_list_request); } @@ -6196,6 +6198,7 @@ static void hdd_cleanup_adapter(struct hdd_context *hdd_ctx, hdd_periodic_sta_stats_mutex_destroy(adapter); hdd_apf_context_destroy(adapter); qdf_spinlock_destroy(&adapter->vdev_lock); + qdf_spinlock_destroy(&adapter->mc_list_lock); hdd_sta_info_deinit(&adapter->sta_info_list); hdd_sta_info_deinit(&adapter->cache_sta_info_list); @@ -7023,6 +7026,7 @@ struct hdd_adapter *hdd_open_adapter(struct hdd_context *hdd_ctx, uint8_t sessio qdf_list_create(&adapter->blocked_scan_request_q, WLAN_MAX_SCAN_COUNT); qdf_mutex_create(&adapter->blocked_scan_request_q_lock); qdf_event_create(&adapter->acs_complete_event); + qdf_spinlock_create(&adapter->mc_list_lock); qdf_event_create(&adapter->peer_cleanup_done); hdd_sta_info_init(&adapter->sta_info_list); hdd_sta_info_init(&adapter->cache_sta_info_list); From b4a586de033eeeee6b7cd7cc3ec7cb312bb24682 Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Wed, 21 Jun 2023 10:20:13 -0700 Subject: [PATCH 13/27] Release 2.0.8.33G Release 2.0.8.33G Change-Id: I003f27743200e14414d1b3a8849acd610c8373bd CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index f3ce0a7d16b4..b84dbe73bacf 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "F" +#define QWLAN_VERSION_EXTRA "G" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33F" +#define QWLAN_VERSIONSTR "2.0.8.33G" #endif /* QWLAN_VERSION_H */ From e7a7c95866720dea5a256b8e60c8d5ef5861f584 Mon Sep 17 00:00:00 2001 From: Krupali Dhanvijay Date: Thu, 19 Jan 2023 12:03:23 +0530 Subject: [PATCH 14/27] qcacld-3.0: Fix low TPC power for vendor DTPC IE Currently low TPC power is configured to firmware if power constraint IE is not present and only vendor DTPC IE is present. TPC power calculation is depends on regulatory power, ap power constraint and TPE IE. To fix this add new check is_power_constraint_abs in reg_tpc_obj. Whenever local power constraint is from DTPC IE, is_power_constraint_abs is set to true. And TPC power is calculated with regulatory power, DTPC IE power and TPE IE power. Change-Id: I37b14d144242fa30f02268f8a76b1b016bf69848 CRs-Fixed: 3383531 --- core/mac/src/pe/lim/lim_ft.c | 6 ++-- .../src/pe/lim/lim_process_mlm_rsp_messages.c | 7 ++--- .../src/pe/lim/lim_process_sme_req_messages.c | 11 ++++--- core/mac/src/pe/lim/lim_utils.h | 3 -- core/mac/src/pe/rrm/rrm_api.c | 5 +++- core/mac/src/pe/sch/sch_beacon_process.c | 29 +++++++++++++------ 6 files changed, 38 insertions(+), 23 deletions(-) diff --git a/core/mac/src/pe/lim/lim_ft.c b/core/mac/src/pe/lim/lim_ft.c index 0017167ac437..45303ef60fc2 100644 --- a/core/mac/src/pe/lim/lim_ft.c +++ b/core/mac/src/pe/lim/lim_ft.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -516,7 +516,7 @@ void lim_fill_ft_session(struct mac_context *mac, tSchBeaconStruct *pBeaconStruct; ePhyChanBondState cbEnabledMode; struct vdev_mlme_obj *mlme_obj; - bool is_pwr_constraint; + bool is_pwr_constraint = false; pBeaconStruct = qdf_mem_malloc(sizeof(tSchBeaconStruct)); if (!pBeaconStruct) @@ -697,6 +697,8 @@ void lim_fill_ft_session(struct mac_context *mac, if (is_pwr_constraint) localPowerConstraint = regMax - localPowerConstraint; + mlme_obj->reg_tpc_obj.is_power_constraint_abs = !is_pwr_constraint; + ft_session->limReassocBssQosCaps = ft_session->limCurrentBssQosCaps; diff --git a/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c b/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c index 0028143b26ca..a468c70e49b3 100644 --- a/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c +++ b/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -2325,8 +2325,7 @@ void lim_handle_add_bss_rsp(struct mac_context *mac_ctx, } tx_ops = wlan_reg_get_tx_ops(mac_ctx->psoc); - lim_calculate_tpc(mac_ctx, session_entry, false, 0, - false); + lim_calculate_tpc(mac_ctx, session_entry, 0, false); if (tx_ops->set_tpc_power) tx_ops->set_tpc_power(mac_ctx->psoc, @@ -2811,7 +2810,7 @@ static void lim_process_switch_channel_join_req( goto error; } - lim_calculate_tpc(mac_ctx, session_entry, false, 0, false); + lim_calculate_tpc(mac_ctx, session_entry, 0, false); if (tx_ops->set_tpc_power) tx_ops->set_tpc_power(mac_ctx->psoc, diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index 1fec33b2ddbd..b535912d9f3b 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -1222,7 +1222,7 @@ __lim_process_sme_join_req(struct mac_context *mac_ctx, void *msg_buf) uint8_t vdev_id = 0; int8_t local_power_constraint = 0; struct vdev_mlme_obj *mlme_obj; - bool is_pwr_constraint; + bool is_pwr_constraint = false; uint16_t ie_len; const uint8_t *vendor_ie; struct bss_description *bss_desc; @@ -1614,6 +1614,9 @@ __lim_process_sme_join_req(struct mac_context *mac_ctx, void *msg_buf) &session->gLimCurrentBssUapsd, &local_power_constraint, session, &is_pwr_constraint); + mlme_obj->reg_tpc_obj.is_power_constraint_abs = + !is_pwr_constraint; + if (wlan_reg_is_ext_tpc_supported(mac_ctx->psoc)) { mlme_obj->reg_tpc_obj.ap_constraint_power = local_power_constraint; @@ -2017,7 +2020,6 @@ uint8_t lim_get_max_tx_power(struct mac_context *mac, void lim_calculate_tpc(struct mac_context *mac, struct pe_session *session, - bool is_pwr_constraint_absolute, uint8_t ap_pwr_type, bool ctry_code_match) { @@ -2140,8 +2142,9 @@ void lim_calculate_tpc(struct mac_context *mac, mlme_obj->reg_tpc_obj.ap_constraint_power; pe_debug("local constraint: %d" "power constraint absolute: %d", - local_constraint, is_pwr_constraint_absolute); - if (is_pwr_constraint_absolute) + local_constraint, + mlme_obj->reg_tpc_obj.is_power_constraint_abs); + if (mlme_obj->reg_tpc_obj.is_power_constraint_abs) max_tx_power = QDF_MIN(reg_max, local_constraint); else diff --git a/core/mac/src/pe/lim/lim_utils.h b/core/mac/src/pe/lim/lim_utils.h index eaa7d7585adc..b97bb75871da 100644 --- a/core/mac/src/pe/lim/lim_utils.h +++ b/core/mac/src/pe/lim/lim_utils.h @@ -188,8 +188,6 @@ uint8_t lim_get_max_tx_power(struct mac_context *mac, * lim_calculate_tpc() - Utility to get maximum tx power * @mac: mac handle * @session: PE Session Entry - * @is_pwr_constraint_absolute: If local power constraint is an absolute - * value or an offset value. * @ap_pwr_type: Ap power type for 6G * @ctry_code_match: check for country IE and sta programmed ctry match * @@ -200,7 +198,6 @@ uint8_t lim_get_max_tx_power(struct mac_context *mac, */ void lim_calculate_tpc(struct mac_context *mac, struct pe_session *session, - bool is_pwr_constraint_absolute, uint8_t ap_pwr_type, bool ctry_code_match); diff --git a/core/mac/src/pe/rrm/rrm_api.c b/core/mac/src/pe/rrm/rrm_api.c index f9e9670fe4e2..3e020cef811b 100644 --- a/core/mac/src/pe/rrm/rrm_api.c +++ b/core/mac/src/pe/rrm/rrm_api.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -270,7 +271,9 @@ rrm_process_link_measurement_request(struct mac_context *mac, ap_pwr_constraint = mlme_obj->reg_tpc_obj.ap_constraint_power; mlme_obj->reg_tpc_obj.ap_constraint_power = pLinkReq->MaxTxPower.maxTxPower; - lim_calculate_tpc(mac, pe_session, true, 0, false); + /* Set is_power_constraint_abs to true to calculate tpc power */ + mlme_obj->reg_tpc_obj.is_power_constraint_abs = true; + lim_calculate_tpc(mac, pe_session, 0, false); LinkReport.txPower = mlme_obj->reg_tpc_obj.chan_power_info[0].tx_power; diff --git a/core/mac/src/pe/sch/sch_beacon_process.c b/core/mac/src/pe/sch/sch_beacon_process.c index bb6f30baf728..7fe5f6b26875 100644 --- a/core/mac/src/pe/sch/sch_beacon_process.c +++ b/core/mac/src/pe/sch/sch_beacon_process.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -688,15 +688,19 @@ sch_bcn_process_sta_opmode(struct mac_context *mac_ctx, #ifdef FEATURE_WLAN_ESE static void get_local_power_constraint_beacon( tpSchBeaconStruct bcn, - int8_t *local_constraint) + int8_t *local_constraint, + bool *is_power_constraint_abs) { - if (bcn->eseTxPwr.present) + if (bcn->eseTxPwr.present) { *local_constraint = bcn->eseTxPwr.power_limit; + *is_power_constraint_abs = true; + } } #else static void get_local_power_constraint_beacon( tpSchBeaconStruct bcn, - int8_t *local_constraint) + int8_t *local_constraint, + bool *is_power_constraint_abs) { } @@ -721,6 +725,7 @@ static void __sch_beacon_process_for_session(struct mac_context *mac_ctx, uint8_t programmed_country[REG_ALPHA2_LEN + 1]; enum reg_6g_ap_type pwr_type_6g = REG_INDOOR_AP; bool ctry_code_match = false; + bool is_power_constraint_abs = false; qdf_mem_zero(&beaconParams, sizeof(tUpdateBeaconParams)); beaconParams.paramChangeBitmap = 0; @@ -777,8 +782,9 @@ static void __sch_beacon_process_for_session(struct mac_context *mac_ctx, &tpe_change); if (mac_ctx->mlme_cfg->sta.allow_tpc_from_ap) { - get_local_power_constraint_beacon(bcn, - &local_constraint); + get_local_power_constraint_beacon( + bcn, &local_constraint, + &is_power_constraint_abs); if (mac_ctx->rrm.rrmPEContext.rrmEnable && bcn->powerConstraintPresent) @@ -790,12 +796,14 @@ static void __sch_beacon_process_for_session(struct mac_context *mac_ctx, mlme_obj->reg_tpc_obj.ap_constraint_power) { mlme_obj->reg_tpc_obj.ap_constraint_power = local_constraint; + mlme_obj->reg_tpc_obj.is_power_constraint_abs = + is_power_constraint_abs; ap_constraint_change = true; } if ((ap_constraint_change && local_constraint) || (tpe_change && !skip_tpe)) { - lim_calculate_tpc(mac_ctx, session, false, pwr_type_6g, + lim_calculate_tpc(mac_ctx, session, pwr_type_6g, ctry_code_match); if (tx_ops->set_tpc_power) @@ -810,8 +818,9 @@ static void __sch_beacon_process_for_session(struct mac_context *mac_ctx, local_constraint = regMax; if (mac_ctx->mlme_cfg->sta.allow_tpc_from_ap) { - get_local_power_constraint_beacon(bcn, - &local_constraint); + get_local_power_constraint_beacon( + bcn, &local_constraint, + &is_power_constraint_abs); if (mac_ctx->rrm.rrmPEContext.rrmEnable && bcn->powerConstraintPresent) { @@ -820,6 +829,8 @@ static void __sch_beacon_process_for_session(struct mac_context *mac_ctx, bcn->localPowerConstraint.localPowerConstraints; } } + mlme_obj->reg_tpc_obj.is_power_constraint_abs = + is_power_constraint_abs; mlme_obj->reg_tpc_obj.reg_max[0] = regMax; mlme_obj->reg_tpc_obj.ap_constraint_power = local_constraint; mlme_obj->reg_tpc_obj.frequency[0] = session->curr_op_freq; From 04226dac61d8ff29a0e8414a1b2aa52ab6306ec5 Mon Sep 17 00:00:00 2001 From: Krupali Dhanvijay Date: Thu, 16 Feb 2023 10:11:43 +0530 Subject: [PATCH 15/27] qcacld-3.0: Prefer power constraint over DTPC when both IE present DTPC and power constraint IE is mutually exclusive, but there are some faulty AP which are advertising both IE's at the same time. To address this if both the IE's are present, preference is given to the local power constraint IE. Change-Id: I7810cbf3a570ba19d83934fe3946b9aa38967990 CRs-Fixed: 3383531 --- core/mac/src/pe/sch/sch_beacon_process.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/mac/src/pe/sch/sch_beacon_process.c b/core/mac/src/pe/sch/sch_beacon_process.c index 7fe5f6b26875..fc0dffe910e5 100644 --- a/core/mac/src/pe/sch/sch_beacon_process.c +++ b/core/mac/src/pe/sch/sch_beacon_process.c @@ -787,9 +787,11 @@ static void __sch_beacon_process_for_session(struct mac_context *mac_ctx, &is_power_constraint_abs); if (mac_ctx->rrm.rrmPEContext.rrmEnable && - bcn->powerConstraintPresent) + bcn->powerConstraintPresent) { local_constraint = bcn->localPowerConstraint.localPowerConstraints; + is_power_constraint_abs = false; + } } if (local_constraint != @@ -827,6 +829,8 @@ static void __sch_beacon_process_for_session(struct mac_context *mac_ctx, local_constraint = regMax; local_constraint -= bcn->localPowerConstraint.localPowerConstraints; + is_power_constraint_abs = false; + } } mlme_obj->reg_tpc_obj.is_power_constraint_abs = From 54e06bfd9e514dd869e2cd7faf1d828174a4ff36 Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Wed, 28 Jun 2023 05:18:28 -0700 Subject: [PATCH 16/27] Release 2.0.8.33H Release 2.0.8.33H Change-Id: Ibfbc08bc555b1fb98ec69d1117100f3fe4df6475 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index b84dbe73bacf..05eec8437598 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "G" +#define QWLAN_VERSION_EXTRA "H" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33G" +#define QWLAN_VERSIONSTR "2.0.8.33H" #endif /* QWLAN_VERSION_H */ From 919505139f59f3ca3d51818df13e2c16a983d19d Mon Sep 17 00:00:00 2001 From: Ananya Gupta Date: Thu, 23 Jun 2022 17:24:01 +0530 Subject: [PATCH 17/27] qcacld-3.0: Drop packets if suspend in progress Currently, there is a race condition where packet gets enqueued when WOW handshake is being done in parallel during bus suspend resulting in assert in FW as Tx is aborted when WOW command is received in FW. To fix this, hdd_wlan_suspend_in_progress flag is set to drop packets in SAP mode when APSS suspend is in progress. Change-Id: I38a6a6bdf9858f627205f75f75f351f7debbb7f7 CRs-Fixed: 3227752 --- core/hdd/inc/wlan_hdd_main.h | 1 + core/hdd/src/wlan_hdd_power.c | 9 +++++++-- core/hdd/src/wlan_hdd_softap_tx_rx.c | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index c834bd7979d1..9934f6c2fb0d 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -1937,6 +1937,7 @@ struct hdd_context { bool is_ol_rx_thread_suspended; #endif + bool hdd_wlan_suspend_in_progress; bool hdd_wlan_suspended; bool suspended; /* flag to start pktlog after SSR/PDR if previously enabled */ diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c index df9f54dc88d2..7099e39b2498 100644 --- a/core/hdd/src/wlan_hdd_power.c +++ b/core/hdd/src/wlan_hdd_power.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -1496,12 +1496,17 @@ hdd_suspend_wlan(void) hdd_adapter_dev_put_debug(adapter, NET_DEV_HOLD_SUSPEND_WLAN); } + hdd_ctx->hdd_wlan_suspend_in_progress = true; + status = ucfg_pmo_psoc_user_space_suspend_req(hdd_ctx->psoc, QDF_SYSTEM_SUSPEND); - if (status != QDF_STATUS_SUCCESS) + if (status != QDF_STATUS_SUCCESS) { + hdd_ctx->hdd_wlan_suspend_in_progress = false; return -EAGAIN; + } hdd_ctx->hdd_wlan_suspended = true; + hdd_ctx->hdd_wlan_suspend_in_progress = false; hdd_configure_sar_sleep_index(hdd_ctx); diff --git a/core/hdd/src/wlan_hdd_softap_tx_rx.c b/core/hdd/src/wlan_hdd_softap_tx_rx.c index 4bdd7cae9fdb..71ea18963386 100644 --- a/core/hdd/src/wlan_hdd_softap_tx_rx.c +++ b/core/hdd/src/wlan_hdd_softap_tx_rx.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -551,7 +551,8 @@ static void __hdd_softap_hard_start_xmit(struct sk_buff *skb, goto drop_pkt; } - if (hdd_ctx->hdd_wlan_suspended) { + if (qdf_unlikely(hdd_ctx->hdd_wlan_suspended || + hdd_ctx->hdd_wlan_suspend_in_progress)) { hdd_err_rl("Device is system suspended, drop pkt"); goto drop_pkt; } From 007fd086526fc2b495715758e61cb5cc09d36ecf Mon Sep 17 00:00:00 2001 From: Ananya Gupta Date: Fri, 23 Sep 2022 09:31:28 +0530 Subject: [PATCH 18/27] qcacld-3.0: Pause Tx when bus suspend in progress In SAP due to intrabss forwarding, Tx ring update is going through when WOW enable command has been sent to FW. This results in crash. To fix this, set is_tx_pause flag when suspend sequence starts, which will pause Tx ring HP update. Change-Id: I81f25b8bfca917c95180c460fd932c0f75094c10 CRs-Fixed: 3295428 --- core/dp/txrx3.0/dp_txrx.h | 4 ++++ core/hdd/src/wlan_hdd_tx_rx.c | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/dp/txrx3.0/dp_txrx.h b/core/dp/txrx3.0/dp_txrx.h index de2a3cf30feb..065b6c170d05 100644 --- a/core/dp/txrx3.0/dp_txrx.h +++ b/core/dp/txrx3.0/dp_txrx.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -202,6 +203,8 @@ static inline QDF_STATUS dp_txrx_resume(ol_txrx_soc_handle soc) goto ret; } + cdp_set_tx_pause(soc, false); + refill_thread = &dp_ext_hdl->refill_thread; if (refill_thread->enabled) { qdf_status = dp_rx_refill_thread_resume(refill_thread); @@ -248,6 +251,7 @@ static inline QDF_STATUS dp_txrx_suspend(ol_txrx_soc_handle soc) if (QDF_IS_STATUS_ERROR(qdf_status) && refill_thread->enabled) dp_rx_refill_thread_resume(refill_thread); + cdp_set_tx_pause(soc, true); ret: return qdf_status; } diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index f4ffa2002ce9..39de8384548a 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -1029,7 +1029,8 @@ static void __hdd_hard_start_xmit(struct sk_buff *skb, if (wlan_hdd_validate_context(hdd_ctx)) goto drop_pkt; - if (hdd_ctx->hdd_wlan_suspended) { + if (qdf_unlikely(!hdd_ctx || hdd_ctx->hdd_wlan_suspended || + hdd_ctx->hdd_wlan_suspend_in_progress)) { hdd_err_rl("Device is system suspended, drop pkt"); goto drop_pkt; } From d7ec458298f93019328ec97c64fe4464efacffce Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Mon, 3 Jul 2023 11:38:07 -0700 Subject: [PATCH 19/27] Release 2.0.8.33I Release 2.0.8.33I Change-Id: Ia9132c4e6236d41d77cf2bb265d5c87a42802714 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 05eec8437598..33607d3a4e37 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "H" +#define QWLAN_VERSION_EXTRA "I" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33H" +#define QWLAN_VERSIONSTR "2.0.8.33I" #endif /* QWLAN_VERSION_H */ From a5e7c6d8612db6392fa46de293096f89a0afe910 Mon Sep 17 00:00:00 2001 From: Pragaspathi Thilagaraj Date: Mon, 1 Aug 2022 17:48:50 +0530 Subject: [PATCH 20/27] qcacld-3.0: Reset wait for hw mode change event Hw mode change in progress is set after the set_hw_mode command is queued in serialization. Its not reset in below cases: Active command timeout case, serialization command cancelled case. Before connect request is queued, if hw mode change is in progress, there is 6 secs wait and if there is no hw mode change response, connection failure. This causes subsequent connection failures and there is no recovery. Reset the wait for hw mode change event in serialization command failure cases. Change-Id: I716982f06198e9c3495685ddb158044778c4b1ff CRs-Fixed: 3256424 --- .../cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h | 8 ++++++++ .../cmn_services/policy_mgr/src/wlan_policy_mgr_action.c | 8 ++++++++ core/sme/src/common/sme_api.c | 7 ++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/components/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h b/components/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h index 429b34486e40..d902f7ee4327 100644 --- a/components/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h +++ b/components/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h @@ -1967,6 +1967,14 @@ QDF_STATUS policy_mgr_wait_for_connection_update( */ QDF_STATUS policy_mgr_reset_connection_update(struct wlan_objmgr_psoc *psoc); +/** + * policy_mgr_reset_hw_mode_change() - Reset the hw mode change. + * @psoc: Pointer to PSOC object + * + * Return: none + */ +void policy_mgr_reset_hw_mode_change(struct wlan_objmgr_psoc *psoc); + /** * policy_mgr_set_connection_update() - Set connection update * event diff --git a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c index 8bddabd08af7..671ae3c3b3a2 100644 --- a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c +++ b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c @@ -2609,6 +2609,14 @@ QDF_STATUS policy_mgr_reset_connection_update(struct wlan_objmgr_psoc *psoc) return QDF_STATUS_SUCCESS; } +void policy_mgr_reset_hw_mode_change(struct wlan_objmgr_psoc *psoc) +{ + policy_mgr_err("Clear hw mode change and connection update evt"); + policy_mgr_set_hw_mode_change_in_progress( + psoc, POLICY_MGR_HW_MODE_NOT_IN_PROGRESS); + policy_mgr_reset_connection_update(psoc); +} + QDF_STATUS policy_mgr_set_connection_update(struct wlan_objmgr_psoc *psoc) { QDF_STATUS status; diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 67e2e9c67def..c6e3757eec5f 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -615,6 +615,8 @@ QDF_STATUS sme_ser_cmd_callback(struct wlan_serialization_command *cmd, status = sme_ser_handle_active_cmd(cmd); break; case WLAN_SER_CB_CANCEL_CMD: + if (cmd->cmd_type == WLAN_SER_CMD_SET_HW_MODE) + policy_mgr_reset_hw_mode_change(mac_ctx->psoc); break; case WLAN_SER_CB_RELEASE_MEM_CMD: if (cmd->vdev) @@ -629,6 +631,9 @@ QDF_STATUS sme_ser_cmd_callback(struct wlan_serialization_command *cmd, sme_cmd->command == eSmeCommandWmStatusChange)) qdf_trigger_self_recovery(mac_ctx->psoc, QDF_ACTIVE_LIST_TIMEOUT); + + if (cmd->cmd_type == WLAN_SER_CMD_SET_HW_MODE) + policy_mgr_reset_hw_mode_change(mac_ctx->psoc); break; default: sme_debug("unknown reason code"); From f6518226925ff505343b7d6cdc14048c57dc555e Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Thu, 6 Jul 2023 03:45:49 -0700 Subject: [PATCH 21/27] Release 2.0.8.33J Release 2.0.8.33J Change-Id: Id623278a255b23cc2fc874963f3e7b83685f5119 CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 33607d3a4e37..1b7f0550dd60 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "I" +#define QWLAN_VERSION_EXTRA "J" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33I" +#define QWLAN_VERSIONSTR "2.0.8.33J" #endif /* QWLAN_VERSION_H */ From 43957256d4d51cdebf8683f9934ed6c63147a0c8 Mon Sep 17 00:00:00 2001 From: Pragaspathi Thilagaraj Date: Tue, 13 Jun 2023 11:53:26 +0530 Subject: [PATCH 22/27] qcacld-3.0: Fix RSO state change in disconnected state When roaming has started and connect request from userspace is received, disconnect is initiated as part of the connect request and RSO stop->RSO Deinit is sent to firmware. But before receiving the RSO stop, firmware posted the Roam Synch indication to the host driver. While droping the roam synch indication, the driver does abort roaming and as part of that RSO state is changed to RSO enabled in connecting state. Change the RSO state to RSO enabled only if roaming or roam synch indication processing is in progress. Change-Id: I7869d1a559884480708b9d1a493296a443364f0b CRs-Fixed: 3089165 --- core/sme/src/csr/csr_api_roam.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index d09e2611c8ea..9aa6882b0864 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -21306,10 +21306,19 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx, * the candidate was not successful. * Connection to the previous AP is still valid in this * case. So move to RSO_ENABLED state. + * + * Switch to RSO enabled state only if the current state is + * WLAN_ROAMING_IN_PROG or WLAN_ROAM_SYNCH_IN_PROG. + * This API can be called in internal roam aborts also when + * RSO state is deinit and cause RSO start to be sent in + * disconnected state. */ - csr_post_roam_state_change(mac_ctx, session_id, - WLAN_ROAM_RSO_ENABLED, - REASON_ROAM_ABORT); + if (MLME_IS_ROAMING_IN_PROG(mac_ctx->psoc, session_id) || + MLME_IS_ROAM_SYNCH_IN_PROGRESS(mac_ctx->psoc, session_id)) + csr_post_roam_state_change(mac_ctx, session_id, + WLAN_ROAM_RSO_ENABLED, + REASON_ROAM_ABORT); + csr_roam_roaming_offload_timer_action(mac_ctx, 0, session_id, ROAMING_OFFLOAD_TIMER_STOP); csr_roam_call_callback(mac_ctx, session_id, NULL, 0, From 37807a72d75e7e7990dd68019bb0823b1442806f Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Thu, 6 Jul 2023 05:58:06 -0700 Subject: [PATCH 23/27] Release 2.0.8.33K Release 2.0.8.33K Change-Id: Ide32768dada9ff3cae12bd0c44390d363d5446de CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 1b7f0550dd60..0bfd60ebc622 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "J" +#define QWLAN_VERSION_EXTRA "K" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33J" +#define QWLAN_VERSIONSTR "2.0.8.33K" #endif /* QWLAN_VERSION_H */ From 21aa15dc9f9f6d2e1231b024ddddc8eff1af1637 Mon Sep 17 00:00:00 2001 From: Balaji Pothunoori Date: Fri, 7 Jul 2023 19:34:03 +0530 Subject: [PATCH 24/27] qcacld-3.0: Fix data rate for mgmt tx packets in packet capture mode Currently, data rate for management tx packets is filled only as 1 or 6 Mbps which is wrong. Sniffer expect data rate multiple of 2. Hence fill the data rate with multiple of 2 for tx management packets which received from firmware and converting into mbps. Change-Id: I5dd6515804cd3751925af0992a30a7441ebf9bbb CRs-Fixed: 3444177 --- .../core/src/wlan_pkt_capture_mgmt_txrx.c | 16 +++++++++------- .../inc/wlan_pkt_capture_public_structs.h | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/components/pkt_capture/core/src/wlan_pkt_capture_mgmt_txrx.c b/components/pkt_capture/core/src/wlan_pkt_capture_mgmt_txrx.c index d185bb943250..b2cfe1332536 100644 --- a/components/pkt_capture/core/src/wlan_pkt_capture_mgmt_txrx.c +++ b/components/pkt_capture/core/src/wlan_pkt_capture_mgmt_txrx.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020, 2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -362,6 +362,7 @@ pkt_capture_process_mgmt_tx_data(struct wlan_objmgr_pdev *pdev, struct wlan_objmgr_psoc *psoc; tpSirMacFrameCtl pfc = (tpSirMacFrameCtl)(qdf_nbuf_data(nbuf)); struct ieee80211_frame *wh; + uint16_t rate; psoc = wlan_pdev_get_psoc(pdev); if (!psoc) { @@ -388,8 +389,6 @@ pkt_capture_process_mgmt_tx_data(struct wlan_objmgr_pdev *pdev, txrx_status.tsft = (u_int64_t)params->tsf_l32; txrx_status.chan_num = wlan_freq_to_chan(params->chan_freq); txrx_status.chan_freq = params->chan_freq; - /* params->rate is in Kbps, convert into Mbps */ - txrx_status.rate = (params->rate_kbps / 1000); if (params->rssi == INVALID_RSSI_FOR_TX) /* RSSI -128 is invalid rssi for TX, make it 0 here, * will be normalized during radiotap updation @@ -400,15 +399,18 @@ pkt_capture_process_mgmt_tx_data(struct wlan_objmgr_pdev *pdev, txrx_status.rssi_comb = txrx_status.ant_signal_db; txrx_status.nr_ant = 1; - txrx_status.rtap_flags |= - ((txrx_status.rate == 6 /* Mbps */) ? BIT(1) : 0); + rate = params->rate_kbps * 2; + /* params->rate is in Kbps, convert into Mbps */ + txrx_status.rate = (uint8_t)(rate / 1000); - if (txrx_status.rate == 6) + txrx_status.rtap_flags |= + ((txrx_status.rate == 12 /* Mbps */) ? BIT(1) : 0); + + if (txrx_status.rate == 12) txrx_status.ofdm_flag = 1; else txrx_status.cck_flag = 1; - txrx_status.rate = ((txrx_status.rate == 6 /* Mbps */) ? 0x0c : 0x02); txrx_status.tx_status = status; txrx_status.tx_retry_cnt = params->tx_retry_cnt; txrx_status.add_rtap_ext = true; diff --git a/components/pkt_capture/dispatcher/inc/wlan_pkt_capture_public_structs.h b/components/pkt_capture/dispatcher/inc/wlan_pkt_capture_public_structs.h index 946d812f4eaf..f4e637ca1994 100644 --- a/components/pkt_capture/dispatcher/inc/wlan_pkt_capture_public_structs.h +++ b/components/pkt_capture/dispatcher/inc/wlan_pkt_capture_public_structs.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021, 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -73,7 +73,7 @@ enum pkt_capture_config { struct mgmt_offload_event_params { uint32_t tsf_l32; uint32_t chan_freq; - uint32_t rate_kbps; + uint16_t rate_kbps; uint32_t rssi; uint32_t buf_len; uint32_t tx_status; From e497bde953f9592794f80beebcc5e9abbd2088a3 Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Mon, 10 Jul 2023 07:16:08 -0700 Subject: [PATCH 25/27] Release 2.0.8.33L Release 2.0.8.33L Change-Id: Id6926128d04ec244a8f0df421715ea2207bcb44c CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 0bfd60ebc622..c46166263097 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "K" +#define QWLAN_VERSION_EXTRA "L" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33K" +#define QWLAN_VERSIONSTR "2.0.8.33L" #endif /* QWLAN_VERSION_H */ From af6dbcdfe2381d127ae307ac6858b71f7dccae69 Mon Sep 17 00:00:00 2001 From: Sai Pavan Akhil Remella Date: Fri, 2 Jun 2023 11:12:21 +0530 Subject: [PATCH 26/27] qcacld-3.0: Remove interface up dependency for usable channels Currently for QCA_NL80211_VENDOR_SUBCMD_USABLE_CHANNELS vendor command STA interface should be UP and running. During STA/SAP concurrency when STA is disabled SAP cannot get the usable channels from driver since STA iface is brought down by Wifi HAL. These changes remove interface running dependency for get usable channels vendor command. Change-Id: I3760adda2ce258f428f2b803112ab25503e97b60 CRs-Fixed: 3517894 --- core/hdd/src/wlan_hdd_cfg80211.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index e7ec3a87528c..3c5cd5e6ad03 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -16742,8 +16742,7 @@ const struct wiphy_vendor_command hdd_wiphy_vendor_commands[] = { .info.vendor_id = QCA_NL80211_VENDOR_ID, .info.subcmd = QCA_NL80211_VENDOR_SUBCMD_USABLE_CHANNELS, .flags = WIPHY_VENDOR_CMD_NEED_WDEV | - WIPHY_VENDOR_CMD_NEED_NETDEV | - WIPHY_VENDOR_CMD_NEED_RUNNING, + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = wlan_hdd_cfg80211_get_usable_channel, vendor_command_policy(get_usable_channel_policy, QCA_WLAN_VENDOR_ATTR_MAX) From 3e51b2ee8e6d1827a88452f0e5e1d4626514e40b Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Wed, 12 Jul 2023 02:42:08 -0700 Subject: [PATCH 27/27] Release 2.0.8.33M Release 2.0.8.33M Change-Id: I5cf4e612cfbf0b2eb97473f5009e6991e92dbe6d CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index c46166263097..8f7b64080e47 100644 --- a/core/mac/inc/qwlan_version.h +++ b/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "L" +#define QWLAN_VERSION_EXTRA "M" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33L" +#define QWLAN_VERSIONSTR "2.0.8.33M" #endif /* QWLAN_VERSION_H */