From dd5f5c1afa4ab969b68717be955752f19527fb17 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 | 3 ++- htc/htc_recv.c | 10 ++++++++-- utils/epping/src/epping_main.c | 5 ++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/htc/htc_api.h b/htc/htc_api.h index cd79a79238..388cf9f87b 100644 --- a/htc/htc_api.h +++ b/htc/htc_api.h @@ -54,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 747505b331..4854790ff1 100644 --- a/htc/htc_recv.c +++ b/htc/htc_recv.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2013-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 @@ -394,6 +395,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); @@ -451,24 +453,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 fa0832bd06..0a5195551a 100644 --- a/utils/epping/src/epping_main.c +++ b/utils/epping/src/epping_main.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2014-2019,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 @@ -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,