mbox series

[0/3] wifi: ath12k: add support device recovery for WCN7850

Message ID 20230720025232.7701-1-quic_wgong@quicinc.com
Headers show
Series wifi: ath12k: add support device recovery for WCN7850 | expand

Message

Wen Gong July 20, 2023, 2:52 a.m. UTC
Add support for device recovery, e.g. firmware crashed.

depends on MHI patch which has applied to mhi-next:
[PATCH v4] bus: mhi: host: Skip MHI reset if device is in RDDM
https://lore.kernel.org/all/1684390959-17836-1-git-send-email-quic_qianyu@quicinc.com/

Wen Gong (3):
  wifi: ath12k: configure RDDM size to mhi for device recovery
  wifi: ath12k: add ath12k_qmi_free_resource() for recovery
  wifi: ath12k: fix invalid m3 buffer address

 drivers/net/wireless/ath/ath12k/core.c | 1 +
 drivers/net/wireless/ath/ath12k/hw.c   | 3 +++
 drivers/net/wireless/ath/ath12k/hw.h   | 1 +
 drivers/net/wireless/ath/ath12k/mhi.c  | 1 +
 drivers/net/wireless/ath/ath12k/qmi.c  | 7 +++++++
 drivers/net/wireless/ath/ath12k/qmi.h  | 1 +
 6 files changed, 14 insertions(+)


base-commit: b21fe5be53eb873c02e7479372726c8aeed171e3

Comments

Jeff Johnson July 20, 2023, 7:06 p.m. UTC | #1
Subject nit: s/mhi/MHI

On 7/19/2023 7:52 PM, Wen Gong wrote:
> RDDM is RAM DUMP DUBUG module, it is used to debugging issue when firmware

s/DUBUG/DEBUG/

s/debugging issue/ debug issues/

> hit error.

encounters an error.

> 
> The rddm_size is needed by firmware while MHI enter RDDM state, add it

s/, add/. Add/

> to support device recovery when ath12k receive MHI_CB_EE_RDDM message.
> 
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
> 
> Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
> ---
>   drivers/net/wireless/ath/ath12k/hw.c  | 3 +++
>   drivers/net/wireless/ath/ath12k/hw.h  | 1 +
>   drivers/net/wireless/ath/ath12k/mhi.c | 1 +
>   3 files changed, 5 insertions(+)
> 
> diff --git a/drivers/net/wireless/ath/ath12k/hw.c b/drivers/net/wireless/ath/ath12k/hw.c
> index 5991cc91cd00..c69cfca67f7d 100644
> --- a/drivers/net/wireless/ath/ath12k/hw.c
> +++ b/drivers/net/wireless/ath/ath12k/hw.c
> @@ -907,6 +907,7 @@ static const struct ath12k_hw_params ath12k_hw_params[] = {
>   		.hal_ops = &hal_qcn9274_ops,
>   
>   		.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01),
> +		.rddm_size = 0,
>   	},
>   	{
>   		.name = "wcn7850 hw2.0",
> @@ -964,6 +965,7 @@ static const struct ath12k_hw_params ath12k_hw_params[] = {
>   
>   		.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01) |
>   					   BIT(CNSS_PCIE_PERST_NO_PULL_V01),
> +		.rddm_size = 0x780000,
>   	},
>   	{
>   		.name = "qcn9274 hw2.0",
> @@ -1019,6 +1021,7 @@ static const struct ath12k_hw_params ath12k_hw_params[] = {
>   		.hal_ops = &hal_qcn9274_ops,
>   
>   		.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01),
> +		.rddm_size = 0,
>   	},
>   };
>   
> diff --git a/drivers/net/wireless/ath/ath12k/hw.h b/drivers/net/wireless/ath/ath12k/hw.h
> index e6c4223c283c..7d82b76ad021 100644
> --- a/drivers/net/wireless/ath/ath12k/hw.h
> +++ b/drivers/net/wireless/ath/ath12k/hw.h
> @@ -186,6 +186,7 @@ struct ath12k_hw_params {
>   	const struct hal_ops *hal_ops;
>   
>   	u64 qmi_cnss_feature_bitmap;
> +	u32 rddm_size;
>   };
>   
>   struct ath12k_hw_ops {
> diff --git a/drivers/net/wireless/ath/ath12k/mhi.c b/drivers/net/wireless/ath/ath12k/mhi.c
> index 42f1140baa4f..91b2abf6da44 100644
> --- a/drivers/net/wireless/ath/ath12k/mhi.c
> +++ b/drivers/net/wireless/ath/ath12k/mhi.c
> @@ -366,6 +366,7 @@ int ath12k_mhi_register(struct ath12k_pci *ab_pci)
>   	mhi_ctrl->fw_image = ab_pci->amss_path;
>   	mhi_ctrl->regs = ab->mem;
>   	mhi_ctrl->reg_len = ab->mem_len;
> +	mhi_ctrl->rddm_size = ab->hw_params->rddm_size;
>   
>   	ret = ath12k_mhi_get_msi(ab_pci);
>   	if (ret) {

actual code LGTM, subject/commit text nits can be addressed when you 
upstream