From bbf3081a79f74c4c7c54c60d16645843cb813211 Mon Sep 17 00:00:00 2001 From: Amit Mehta Date: Sun, 13 Feb 2022 15:57:29 +0530 Subject: [PATCH] qcacmn: Get 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 parse NACK reason code from the received message. Change-Id: I17ee99cb302ff546731a46d3ce03977c3c3d5a67 CRs-Fixed: 3481189 --- htc/htc_api.h | 4 +++- htc/htc_recv.c | 10 ++++++++-- utils/epping/src/epping_main.c | 5 ++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/htc/htc_api.h b/htc/htc_api.h index 18fd830b0b1a..ae400350f95a 100644 --- a/htc/htc_api.h +++ b/htc/htc_api.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2013-2014, 2016-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 @@ -53,7 +54,8 @@ typedef void (*HTC_TARGET_FAILURE)(void *Instance, QDF_STATUS Status); struct htc_init_info { void *pContext; /* context for target notifications */ void (*TargetFailure)(void *Instance, QDF_STATUS Status); - void (*TargetSendSuspendComplete)(void *ctx, bool is_nack); + void (*TargetSendSuspendComplete)(void *ctx, bool is_nack, + uint16_t reason_code); void (*target_initial_wakeup_cb)(void *cb_ctx); void *target_psoc; uint32_t cfg_wmi_credit_cnt; diff --git a/htc/htc_recv.c b/htc/htc_recv.c index 2d6047da83ef..2c3371a6e872 100644 --- a/htc/htc_recv.c +++ b/htc/htc_recv.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2013-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 @@ -397,6 +398,7 @@ QDF_STATUS htc_rx_completion_handler(void *Context, qdf_nbuf_t netbuf, uint16_t message_id; HTC_UNKNOWN_MSG *htc_msg; bool wow_nack; + uint16_t reason_code; /* remove HTC header */ qdf_nbuf_pull_head(netbuf, HTC_HDR_LENGTH); @@ -455,24 +457,28 @@ QDF_STATUS htc_rx_completion_handler(void *Context, qdf_nbuf_t netbuf, #endif case HTC_MSG_SEND_SUSPEND_COMPLETE: wow_nack = false; + reason_code = 0; htc_credit_record(HTC_SUSPEND_ACK, pEndpoint->TxCredits, HTC_PACKET_QUEUE_DEPTH( &pEndpoint->TxQueue)); target->HTCInitInfo.TargetSendSuspendComplete( target->HTCInitInfo.target_psoc, - wow_nack); + wow_nack, reason_code); break; case HTC_MSG_NACK_SUSPEND: wow_nack = true; + reason_code = HTC_GET_FIELD(htc_msg, + HTC_UNKNOWN_MSG, + METADATA); htc_credit_record(HTC_SUSPEND_ACK, pEndpoint->TxCredits, HTC_PACKET_QUEUE_DEPTH( &pEndpoint->TxQueue)); target->HTCInitInfo.TargetSendSuspendComplete( target->HTCInitInfo.target_psoc, - wow_nack); + wow_nack, reason_code); break; } diff --git a/utils/epping/src/epping_main.c b/utils/epping/src/epping_main.c index 7f8ceb83df65..0716135c8deb 100644 --- a/utils/epping/src/epping_main.c +++ b/utils/epping/src/epping_main.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2014-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 @@ -160,8 +161,10 @@ void epping_close(void) * epping_target_suspend_acknowledge() - process wow ack/nack from fw * @context: htc_init_info->context * @wow_nack: true when wow is rejected + * @reason_code : WoW status reason code */ -static void epping_target_suspend_acknowledge(void *context, bool wow_nack) +static void epping_target_suspend_acknowledge(void *context, bool wow_nack, + uint16_t reson_code) { if (!g_epping_ctx) { EPPING_LOG(QDF_TRACE_LEVEL_FATAL,