From dc9af4e7fb3194af9f300fddf26a86966ea62817 Mon Sep 17 00:00:00 2001 From: Srikanth Marepalli Date: Sat, 15 Apr 2023 00:04:22 +0530 Subject: [PATCH 1/6] qcacld-3.0: Send the 6 GHz channel in WMI_ROAM_CHAN_LIST When the Intra band INI is enabled and the STA connected in 6 GHz band the channel count and frequency are not sent in the WMI_ROAM_CHAN_LIST command as the band is not defined or unknown. As a result of this DUT is unable to trigger partial roam scan in the current connected 6 GHz channel and does a full roam scan. Add the 6 GHz band check in the Intra band enabled case. Change-Id: I765c233d1e6bf71cab186041ebd7df2293be6f05 CRs-Fixed: 3469197 --- core/sme/src/csr/csr_api_roam.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index aea7767b52b8..d09e2611c8ea 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -1839,6 +1839,13 @@ csr_check_band_freq_match(enum band_info band, uint32_t freq) if (band == BAND_5G && WLAN_REG_IS_5GHZ_CH_FREQ(freq)) return true; + /* + * Not adding the band check for now as band_info will be soon + * replaced with reg_wifi_band enum + */ + if (WLAN_REG_IS_6GHZ_CHAN_FREQ(freq)) + return true; + return false; } From 2dfa36c59c063743150b0229b849742ba5cf025c Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Mon, 15 May 2023 05:21:02 -0700 Subject: [PATCH 2/6] Release 2.0.8.33 Release 2.0.8.33 Change-Id: I8dde8ce3f99640b2a277914b36cb41eaad42cc9a CRs-Fixed: 774533 --- core/mac/inc/qwlan_version.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h index 7f2770d52ba7..c0ef4eba2ede 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 "Z" -#define QWLAN_VERSION_BUILD 32 +#define QWLAN_VERSION_EXTRA "" +#define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.32Z" +#define QWLAN_VERSIONSTR "2.0.8.33" #endif /* QWLAN_VERSION_H */ From 48c010910f53e87304db2ddbaab340148324d934 Mon Sep 17 00:00:00 2001 From: Sai Pavan Akhil Remella Date: Wed, 10 May 2023 11:43:32 +0530 Subject: [PATCH 3/6] qcacld-3.0: Don't start vdev trans if vdev ops is pending Currently for REASSOC command host starts vdev ops and tries to use vdev. In parallel if host receives interface down and starts vdev trans then proceeds to stop adapter and destroys the vdev, this leads to null pointer dereference if vdev is destroyed first. This happens because driver doesn't wait for vdev ops to complete after starting vdev trans. To address this issue, start vdev trans and wait for vdev ops to complete before proceeding to execute further. Change-Id: I363d05f742f7569dffed70cfa9b6bb9a0a766d9e CRs-Fixed: 3445858 --- os_if/sync/src/osif_vdev_sync.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/os_if/sync/src/osif_vdev_sync.c b/os_if/sync/src/osif_vdev_sync.c index 6442f239bcc5..1c1740f7c3c6 100644 --- a/os_if/sync/src/osif_vdev_sync.c +++ b/os_if/sync/src/osif_vdev_sync.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2018-2019 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 @@ -255,6 +256,9 @@ int __osif_vdev_sync_trans_start(struct net_device *net_dev, dsc_vdev_trans_start); osif_vdev_sync_unlock(); + if (!errno) + osif_vdev_sync_wait_for_ops(*out_vdev_sync); + return errno; } @@ -269,6 +273,9 @@ int __osif_vdev_sync_trans_start_wait(struct net_device *net_dev, out_vdev_sync, desc, dsc_vdev_trans_start_wait); + if (!errno) + osif_vdev_sync_wait_for_ops(*out_vdev_sync); + return errno; } From 88566769623f78089b5309c405af570807472593 Mon Sep 17 00:00:00 2001 From: Madan Koyyalamudi Date: Thu, 18 May 2023 09:09:33 -0700 Subject: [PATCH 4/6] Release 2.0.8.33A Release 2.0.8.33A Change-Id: Ib7f21d00e7839abd2867a0b826e7e89841f914ba 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 c0ef4eba2ede..b0fcaf164834 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 "" +#define QWLAN_VERSION_EXTRA "A" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33" +#define QWLAN_VERSIONSTR "2.0.8.33A" #endif /* QWLAN_VERSION_H */ From fc563469de52fa14188855d677b56d1113b7d4e2 Mon Sep 17 00:00:00 2001 From: Amit Mehta Date: Sun, 13 Feb 2022 15:55:23 +0530 Subject: [PATCH 5/6] qcacld-3.0: Print wow_nack reason code Currently, Fw did not set NACK reason code to Host when Fw is not ready for WoW. As part of the new change, Fw will send NACK reason code along with WoW NACK to host. Make changes in host to store and print NACK reason code. Change-Id: Ic978af9572c8de37df3fb926083aac5e6ddefda7 CRs-Fixed: 3481177 --- .../pmo/core/inc/wlan_pmo_suspend_resume.h | 5 +++- components/pmo/core/inc/wlan_pmo_wow.h | 25 ++++++++++++++++++- .../pmo/core/src/wlan_pmo_suspend_resume.c | 13 ++++++---- .../pmo/dispatcher/inc/wlan_pmo_ucfg_api.h | 11 +++++--- .../inc/wlan_pmo_wow_public_struct.h | 6 +++-- .../pmo/dispatcher/src/wlan_pmo_ucfg_api.c | 7 ++++-- 6 files changed, 53 insertions(+), 14 deletions(-) diff --git a/components/pmo/core/inc/wlan_pmo_suspend_resume.h b/components/pmo/core/inc/wlan_pmo_suspend_resume.h index 156ba9cbe118..0cc7a6b72b6d 100644 --- a/components/pmo/core/inc/wlan_pmo_suspend_resume.h +++ b/components/pmo/core/inc/wlan_pmo_suspend_resume.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2017-2018, 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 @@ -290,10 +291,12 @@ int pmo_core_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc); * pmo_core_psoc_target_suspend_acknowledge() - update target susspend status * @context: HTC_INIT_INFO->context * @wow_nack: true when wow is rejected + * @reason_code : WoW status reason code * * Return: none */ -void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack); +void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack, + uint16_t reason_code); /** * pmo_core_psoc_wakeup_host_event_received() - received host wake up event diff --git a/components/pmo/core/inc/wlan_pmo_wow.h b/components/pmo/core/inc/wlan_pmo_wow.h index df559cc39bb1..593ed833f0f1 100644 --- a/components/pmo/core/inc/wlan_pmo_wow.h +++ b/components/pmo/core/inc/wlan_pmo_wow.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 @@ -421,14 +422,17 @@ bool pmo_core_is_wow_enabled(struct pmo_psoc_priv_obj *psoc_ctx) * pmo_core_set_wow_nack() - Set wow nack flag * @psoc_ctx: Pointer to objmgr psoc handle * @value: true if received wow nack from else false + * @reason_code: WoW status reason code * * Return: None */ static inline -void pmo_core_set_wow_nack(struct pmo_psoc_priv_obj *psoc_ctx, bool value) +void pmo_core_set_wow_nack(struct pmo_psoc_priv_obj *psoc_ctx, bool value, + uint16_t reason_code) { qdf_spin_lock_bh(&psoc_ctx->lock); psoc_ctx->wow.wow_nack = value; + psoc_ctx->wow.reason_code = reason_code; qdf_spin_unlock_bh(&psoc_ctx->lock); } @@ -449,6 +453,25 @@ bool pmo_core_get_wow_nack(struct pmo_psoc_priv_obj *psoc_ctx) return value; } + +/** + * pmo_core_get_wow_reason_code() - Get wow status reason code + * @psoc_ctx: Pointer to objmgr psoc handle + * + * Return: wow status reason code + */ +static inline +uint16_t pmo_core_get_wow_reason_code(struct pmo_psoc_priv_obj *psoc_ctx) +{ + uint16_t value; + + qdf_spin_lock_bh(&psoc_ctx->lock); + value = psoc_ctx->wow.reason_code; + qdf_spin_unlock_bh(&psoc_ctx->lock); + + return value; +} + /** * pmo_core_update_wow_enable_cmd_sent() - update wow enable cmd sent flag * @psoc_ctx: Pointer to objmgr psoc handle diff --git a/components/pmo/core/src/wlan_pmo_suspend_resume.c b/components/pmo/core/src/wlan_pmo_suspend_resume.c index 3a3c144a70ab..dba62a0b43c8 100644 --- a/components/pmo/core/src/wlan_pmo_suspend_resume.c +++ b/components/pmo/core/src/wlan_pmo_suspend_resume.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2017-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 @@ -735,12 +735,13 @@ pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc, struct pmo_psoc_cfg *psoc_cfg = &psoc_ctx->psoc_cfg; QDF_STATUS status; void *hif_ctx; + uint16_t reason_code; pmo_enter(); hif_ctx = pmo_core_psoc_get_hif_handle(psoc); qdf_event_reset(&psoc_ctx->wow.target_suspend); - pmo_core_set_wow_nack(psoc_ctx, false); + pmo_core_set_wow_nack(psoc_ctx, false, 0); host_credits = pmo_tgt_psoc_get_host_credits(psoc); wmi_pending_cmds = pmo_tgt_psoc_get_pending_cmnds(psoc); pmo_debug("Credits:%d; Pending_Cmds: %d", @@ -847,7 +848,8 @@ pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc, } if (pmo_core_get_wow_nack(psoc_ctx)) { - pmo_err("FW not ready to WOW"); + reason_code = pmo_core_get_wow_reason_code(psoc_ctx); + pmo_err("FW not ready to WOW reason code: %d", reason_code); pmo_tgt_update_target_suspend_flag(psoc, false); status = QDF_STATUS_E_AGAIN; goto out; @@ -1514,7 +1516,8 @@ out: return status; } -void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack) +void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack, + uint16_t reason_code) { struct pmo_psoc_priv_obj *psoc_ctx; struct wlan_objmgr_psoc *psoc = (struct wlan_objmgr_psoc *)context; @@ -1535,7 +1538,7 @@ void pmo_core_psoc_target_suspend_acknowledge(void *context, bool wow_nack) psoc_ctx = pmo_psoc_get_priv(psoc); - pmo_core_set_wow_nack(psoc_ctx, wow_nack); + pmo_core_set_wow_nack(psoc_ctx, wow_nack, reason_code); qdf_event_set(&psoc_ctx->wow.target_suspend); if (!pmo_tgt_psoc_get_runtime_pm_in_progress(psoc)) { if (wow_nack) diff --git a/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h b/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h index e506331d8a7f..96a4bc13b4a3 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.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 @@ -993,11 +994,14 @@ int ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc); /** * ucfg_pmo_psoc_target_suspend_acknowledge() - Clear initial wake up status - * @psoc: objmgr psoc handle + * @context: caller-provided context + * @wow_nack: Was WoW NACK'ed + * @reason_code: WoW status reason code * * Return: None */ -void ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack); +void ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack, + uint16_t reason_code); /** * ucfg_pmo_psoc_wakeup_host_event_received() - got host wake up evennt from fwr @@ -1665,7 +1669,8 @@ ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc) } static inline void -ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack) +ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack, + uint16_t reason_code) { } diff --git a/components/pmo/dispatcher/inc/wlan_pmo_wow_public_struct.h b/components/pmo/dispatcher/inc/wlan_pmo_wow_public_struct.h index a38e36c8e84b..e1cc1e8625b7 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_wow_public_struct.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_wow_public_struct.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2017-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 @@ -224,6 +224,7 @@ enum pmo_wow_state { * @target_suspend: target suspend event * @target_resume: target resume event * @wow_nack: wow negative ack flag + * @reason_code : wow status reason code * @wow_initial_wake_up: target initial wake up is received * @wow_wake_lock: wow wake lock * @lphb_cache: lphb cache @@ -245,7 +246,8 @@ struct pmo_wow { enum pmo_wow_state wow_state; qdf_event_t target_suspend; qdf_event_t target_resume; - int wow_nack; + bool wow_nack; + uint16_t reason_code; atomic_t wow_initial_wake_up; qdf_wake_lock_t wow_wake_lock; /* diff --git a/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c b/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c index c1676d611d47..5663480501c8 100644 --- a/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c +++ b/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c @@ -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 @@ -486,9 +487,11 @@ int ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc) return pmo_core_psoc_clear_target_wake_up(psoc); } -void ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack) +void ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack, + uint16_t reason_code) { - pmo_core_psoc_target_suspend_acknowledge(context, wow_nack); + pmo_core_psoc_target_suspend_acknowledge(context, wow_nack, + reason_code); } void ucfg_pmo_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc *psoc) From b84e72e50aaa899705b066d88b1c4dbf256b7f22 Mon Sep 17 00:00:00 2001 From: Rahul Choudhary Date: Mon, 22 May 2023 05:21:07 -0700 Subject: [PATCH 6/6] Release 2.0.8.33B Release 2.0.8.33B Change-Id: Ibcb966a02e5ef43108902ab53da18f6487ef7911 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 b0fcaf164834..a22196838e55 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 "A" +#define QWLAN_VERSION_EXTRA "B" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33A" +#define QWLAN_VERSIONSTR "2.0.8.33B" #endif /* QWLAN_VERSION_H */