mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
Issue - When WiFi operating channel is switched, at times the wifi role index and role bitmap show that there is already a role assigned for the channel context and this causes a failure in association. Kernel warning is shown when this occurs. Fix - Update driver to v126-10 that fixes this issue. [ 57.590860] Call trace: [ 57.590861] rtw_phl_chanctx_add+0x528/0x8f4 [rtl8852ce] [ 57.590947] rtw_clear_is_accepted_status+0x4a4/0xbb8 [rtl8852ce] [ 57.591033] cur_req_hdl+0x3c/0x4c [rtl8852ce] [ 57.591118] msg_dispatch+0x2dc/0x3f8 [rtl8852ce] [ 57.591204] dispr_thread_loop_hdl+0x270/0x2dc [rtl8852ce] [ 57.591289] dispr_share_thread_loop_hdl+0x10/0x1c [rtl8852ce] [ 57.591374] share_thread_hdl+0xb8/0x1a0 [rtl8852ce] [ 57.591459] kthread+0x110/0x124 [ 57.591466] ret_from_fork+0x10/0x20 Bug 5440351 Bug 5442104 Change-Id: Ie78c70c1ea7a789351a2ba4ad445c4d0062281da Signed-off-by: Shobek Attupurath <sattupurath@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3426784 GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com> Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
48 lines
1.6 KiB
C
48 lines
1.6 KiB
C
/******************************************************************************
|
|
*
|
|
* Copyright(c) 2024 Realtek Corporation.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of version 2 of the GNU General Public License as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
*****************************************************************************/
|
|
#ifndef _PHL_INT_H_
|
|
#define _PHL_INT_H_
|
|
|
|
void rtw_phl_enable_interrupt_sync(struct rtw_phl_com_t* phl_com);
|
|
void rtw_phl_disable_interrupt_sync(struct rtw_phl_com_t* phl_com);
|
|
|
|
static inline void phl_restore_interrupt_sync(struct rtw_phl_com_t* phl_com, bool wlock, bool rx)
|
|
{
|
|
#ifdef CONFIG_SYNC_INTERRUPT
|
|
struct rtw_phl_evt_ops *evt_ops = &phl_com->evt_ops;
|
|
|
|
evt_ops->interrupt_restore(phl_com->drv_priv, rx);
|
|
#else
|
|
#if defined(CONFIG_PCI_HCI)
|
|
struct phl_info_t *phl_info = (struct phl_info_t *)phl_com->phl_priv;
|
|
|
|
if (wlock) {
|
|
void *drv = phl_to_drvpriv(phl_info);
|
|
struct hci_info_t *hci_info = (struct hci_info_t *)phl_info->hci;
|
|
_os_spinlockfg sp_flags;
|
|
|
|
_os_spinlock(drv, &hci_info->int_hdl_lock, _irq, &sp_flags);
|
|
if (hci_info->int_disabled == false)
|
|
rtw_hal_restore_interrupt(phl_com, phl_info->hal);
|
|
_os_spinunlock(drv, &hci_info->int_hdl_lock, _irq, &sp_flags);
|
|
} else {
|
|
rtw_hal_restore_interrupt(phl_com, phl_info->hal);
|
|
}
|
|
#endif
|
|
#endif
|
|
}
|
|
|
|
#endif /*_PHL_INT_H_*/
|