Просмотр исходного кода

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
Amit Mehta 3 лет назад
Родитель
Сommit
dd5f5c1afa
3 измененных файлов с 14 добавлено и 4 удалено
  1. 2 1
      htc/htc_api.h
  2. 8 2
      htc/htc_recv.c
  3. 4 1
      utils/epping/src/epping_main.c

+ 2 - 1
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;

+ 8 - 2
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;
 			}
 

+ 4 - 1
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,