Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v2.6: Pull latest wifi fixes #1443

Merged
merged 25 commits into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f5ea4da
drivers: wifi: Option for Qos NULL frame based power save
ajayparida Jul 15, 2024
eef6574
drivers: wifi: Change mode to mechanism
ajayparida Jul 29, 2024
d21b5fb
drivers: wifi: Implement RPU recovery callbacks
krish2718 May 15, 2024
e9f422b
drivers: wifi: nrf700x: Fix crash in TX done during de-init
krish2718 May 27, 2024
02751df
drivers: wifi: Always check for watchdog IRQ
srinivas1201 May 28, 2024
f996604
nrf_wifi: Add support for recovering RPU stuck in sleep
krish2718 Jun 4, 2024
d5a4a20
drivers: wifi: Use a separate variable to track host assertion
krish2718 Jul 8, 2024
57da5d7
drivers: wifi: Fix RPU recovery not being triggered
krish2718 Jul 8, 2024
d300c15
drivers: wifi: Fix crash during interface down
krish2718 Jul 9, 2024
82f852c
drivers: wifi: Add support for separate debugs for RPU recovery
krish2718 Jul 9, 2024
2ce6a64
drivers: wifi: Fix de-init race condition
krish2718 Jul 9, 2024
9e3fbfd
drivers: wifi: Log the event len
krish2718 Jul 2, 2024
bf96b7f
drivers: wifi: Drain events during de-init
krish2718 Jul 15, 2024
571d801
drivers: wifi: Fix memory leak in HAL
krish2718 Jul 15, 2024
e785ede
drivers: wifi: Fix RPU recovery disabled build failures
krish2718 Jul 17, 2024
7b41ad6
drivers: wifi: Fix TX buffers leak
krish2718 Jul 17, 2024
2409b6e
drivers: wifi: Add PS state debugs
krish2718 Jul 18, 2024
af707fb
drivers: wifi: Add command and event logging
krish2718 Jul 18, 2024
89c5a98
drivers: wifi: Shorten the prints
krish2718 Jul 18, 2024
acfa868
drivers: wifi: Enable management buffers offload
krish2718 Jul 18, 2024
8675cea
drivers: wifi: Add support for keepalive
krish2718 Aug 6, 2024
41a992c
drivers: wifi: Send user timeout to FW
krish2718 Jul 25, 2024
623631b
drivers: wifi: Update RPU patch to release/v2.6 rev#3fc62454e39
karun2796 Aug 21, 2024
bede420
drivers: wifi: Update RPU patch to release/v2.6 rev#6ab90eaa613
imapa Aug 23, 2024
9c75989
ci: compliance: skip KconfigBasic
thst-nordic Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/compliance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
# debug
ls -la
git log --pretty=oneline | head -n 10
$ZEPHYR_BASE/scripts/ci/check_compliance.py -m Codeowners -m Devicetree -m Gitlint -m Identity -m Nits -m pylint -m checkpatch -m KconfigBasic -c origin/${BASE_REF}..
$ZEPHYR_BASE/scripts/ci/check_compliance.py -m Codeowners -m Devicetree -m Gitlint -m Identity -m Nits -m pylint -m checkpatch -c origin/${BASE_REF}..

- name: Upload Results
uses: actions/upload-artifact@master
Expand Down
Binary file modified nrf_wifi/fw_bins/default/nrf70.bin
Binary file not shown.
Binary file modified nrf_wifi/fw_bins/radio_test/nrf70.bin
Binary file not shown.
Binary file modified nrf_wifi/fw_bins/scan_only/nrf70.bin
Binary file not shown.
7 changes: 7 additions & 0 deletions nrf_wifi/fw_if/umac_if/inc/default/fmac_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -1036,6 +1036,13 @@ bool nrf_wifi_util_is_rawpktmode_enabled(struct nrf_wifi_fmac_vif_ctx *vif);
*@retval WIFI_NRF_STATUS_FAIL On failure
*/
enum nrf_wifi_status nrf_wifi_check_mode_validity(unsigned char mode);
#if defined(CONFIG_NRF_WIFI_RPU_RECOVERY) || defined(__DOXYGEN__)
/** @cond INTERNAL_HIDDEN */
enum nrf_wifi_status nrf_wifi_fmac_rpu_recovery_callback(void *mac_dev_ctx,
void *event_data,
unsigned int len);
/** @endcond */
#endif /* CONFIG_NRF_RPU_RECOVERY */
/**
* @}
*/
Expand Down
5 changes: 5 additions & 0 deletions nrf_wifi/fw_if/umac_if/inc/default/fmac_structs.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@ struct raw_rx_pkt_header {
* the UMAC IF layer needs to invoke for various events.
*/
struct nrf_wifi_fmac_callbk_fns {
/** Callback function to be called when RPU recovery is required. */
void (*rpu_recovery_callbk_fn)(void *os_vif_ctx,
void *event_data,
unsigned int event_len);

/** Callback function to be called when a scan is started. */
void (*scan_start_callbk_fn)(void *os_vif_ctx,
struct nrf_wifi_umac_event_trigger_scan *scan_start_event,
Expand Down
38 changes: 38 additions & 0 deletions nrf_wifi/fw_if/umac_if/inc/fw/host_rpu_sys_if.h
Original file line number Diff line number Diff line change
Expand Up @@ -828,6 +828,30 @@ enum op_band {
BAND_24G
};

/**
* @brief This enum defines keep alive state
*
*/
enum keep_alive_status {
/** Keep alive feature disabled */
KEEP_ALIVE_DISABLED = 0,
/** Keep alive feature enabled */
KEEP_ALIVE_ENABLED = 1
};

/**
* @brief This enum specifies the type of frames used to retrieve buffered data
* from the AP in power save mode.
*/
enum data_retrieve_mechanism {
/** Retrieves data from the AP using a PS-Poll frame */
PS_POLL_FRAME,
/** Retrieves data from the AP using a QoS Null frame */
QOS_NULL_FRAME,
/** For future implementation. The RPU will decide which frame to use */
AUTOMATIC
};

#define TWT_EXTEND_SP_EDCA 0x1
#define DISABLE_DFS_CHANNELS 0x2

Expand Down Expand Up @@ -872,6 +896,20 @@ struct nrf_wifi_cmd_sys_init {
* without receiving beacons before disconnection.
*/
unsigned int discon_timeout;
/** RPU uses QoS null frame or PS-Poll frame to retrieve buffered frames
* from the AP in power save @ref data_retrieve_mechanism.
*/
unsigned char ps_data_retrieval_mech;
/** The RPU uses this value to configure watchdog timer */
unsigned int watchdog_timer_val;
/** The RPU uses this value to decide whether keep alive
* feature is enabled or not see enum keep_alive_status
*/
unsigned char keep_alive_enable;
/** The RPU uses this value(in seconds) for periodicity of the keep
* alive frame.
*/
unsigned int keep_alive_period;
} __NRF_WIFI_PKD;

/**
Expand Down
2 changes: 1 addition & 1 deletion nrf_wifi/fw_if/umac_if/inc/fw/lmac_if_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#define RPU_MEM_LMAC_VER 0xB7000D54

#define RPU_MEM_LMAC_PATCH_BIN 0x80044000
#define RPU_MEM_LMAC_PATCH_BIMG 0x8004B000
#define RPU_MEM_LMAC_PATCH_BIMG 0x8004B400

#define NRF_WIFI_LMAC_VER(ver) ((ver & 0xFF000000) >> 24)
#define NRF_WIFI_LMAC_VER_MAJ(ver) ((ver & 0x00FF0000) >> 16)
Expand Down
28 changes: 27 additions & 1 deletion nrf_wifi/fw_if/umac_if/src/cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,10 +149,30 @@ enum nrf_wifi_status umac_cmd_init(struct nrf_wifi_fmac_dev_ctx *fmac_dev_ctx,
umac_cmd_data->tcp_ip_checksum_offload = 1;
#endif /* CONFIG_NRF700X_TCP_IP_CHECKSUM_OFFLOAD */
umac_cmd_data->discon_timeout = CONFIG_NRF_WIFI_AP_DEAD_DETECT_TIMEOUT;
#ifdef CONFIG_NRF_WIFI_RPU_RECOVERY
umac_cmd_data->watchdog_timer_val =
(CONFIG_NRF_WIFI_RPU_RECOVERY_PS_ACTIVE_TIMEOUT_MS) / 1000;
#else
/* Disable watchdog */
umac_cmd_data->watchdog_timer_val = 0xFFFFFF;
#endif /* CONFIG_NRF_WIFI_RPU_RECOVERY */

nrf_wifi_osal_log_dbg(fmac_dev_ctx->fpriv->opriv, "RPU LPM type: %s",
umac_cmd_data->sys_params.sleep_enable == 2 ? "HW" :
umac_cmd_data->sys_params.sleep_enable == 1 ? "SW" : "DISABLED");
#ifdef CONFIG_NRF_WIFI_MGMT_BUFF_OFFLOAD
umac_cmd_data->mgmt_buff_offload = 1;
nrf_wifi_osal_log_info(fmac_dev_ctx->fpriv->opriv,
"Management buffer offload enabled\n");
#endif /* CONFIG_NRF_WIFI_MGMT_BUFF_OFFLOAD */
#ifdef CONFIG_NRF_WIFI_FEAT_KEEPALIVE
umac_cmd_data->keep_alive_enable = KEEP_ALIVE_ENABLED;
umac_cmd_data->keep_alive_period = CONFIG_NRF_WIFI_KEEPALIVE_PERIOD_S;
nrf_wifi_osal_log_dbg(fmac_dev_ctx->fpriv->opriv,
"Keepalive enabled with period %d\n",
umac_cmd_data->keepalive_period);
#endif /* CONFIG_NRF_WIFI_FEAT_KEEPALIVE */

#ifndef CONFIG_NRF700X_RADIO_TEST
nrf_wifi_osal_mem_cpy(fmac_dev_ctx->fpriv->opriv,
umac_cmd_data->rx_buf_pools,
Expand Down Expand Up @@ -202,7 +222,13 @@ enum nrf_wifi_status umac_cmd_init(struct nrf_wifi_fmac_dev_ctx *fmac_dev_ctx,
umac_cmd_data->disable_beamforming = 1;
}

status = nrf_wifi_hal_ctrl_cmd_send(fmac_dev_ctx->hal_dev_ctx,
#if defined(CONFIG_NRF_WIFI_QOS_NULL_BASED_RETRIEVAL)
umac_cmd_data->ps_data_retrieval_mech = QOS_NULL_FRAME;
#else
umac_cmd_data->ps_data_retrieval_mech = PS_POLL_FRAME;
#endif /* CONFIG_NRF_WIFI_QOS_NULL_BASED_RETRIEVAL */

status = nrf_wifi_hal_ctrl_cmd_send(fmac_dev_ctx->hal_dev_ctx,
umac_cmd,
(sizeof(*umac_cmd) + len));

Expand Down
48 changes: 45 additions & 3 deletions nrf_wifi/fw_if/umac_if/src/default/fmac_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -433,13 +433,50 @@ enum nrf_wifi_status nrf_wifi_fmac_dev_init(struct nrf_wifi_fmac_dev_ctx *fmac_d

void nrf_wifi_fmac_dev_deinit(struct nrf_wifi_fmac_dev_ctx *fmac_dev_ctx)
{
nrf_wifi_hal_lock_rx(fmac_dev_ctx->hal_dev_ctx);
nrf_wifi_hal_dev_deinit(fmac_dev_ctx->hal_dev_ctx);
nrf_wifi_fmac_fw_deinit(fmac_dev_ctx);
nrf_wifi_osal_mem_free(fmac_dev_ctx->fpriv->opriv,
fmac_dev_ctx->tx_pwr_ceil_params);
nrf_wifi_hal_unlock_rx(fmac_dev_ctx->hal_dev_ctx);
}

#ifdef CONFIG_NRF_WIFI_RPU_RECOVERY
enum nrf_wifi_status nrf_wifi_fmac_rpu_recovery_callback(void *mac_dev_ctx,
void *event_data,
unsigned int len)
{
enum nrf_wifi_status status = NRF_WIFI_STATUS_FAIL;
struct nrf_wifi_fmac_dev_ctx *fmac_dev_ctx = NULL;
struct nrf_wifi_fmac_dev_ctx_def *def_dev_ctx = NULL;
struct nrf_wifi_fmac_priv *fpriv = NULL;
struct nrf_wifi_fmac_priv_def *def_priv = NULL;

fmac_dev_ctx = mac_dev_ctx;
if (!fmac_dev_ctx) {
nrf_wifi_osal_log_err(fpriv->opriv,
"%s: Invalid device context",
__func__);
goto out;
}
def_dev_ctx = wifi_dev_priv(fmac_dev_ctx);
if (!def_dev_ctx) {
nrf_wifi_osal_log_err(fpriv->opriv,
"%s: Invalid device context",
__func__);
goto out;
}
fpriv = fmac_dev_ctx->fpriv;
def_priv = wifi_fmac_priv(fpriv);

/* Here we only care about FMAC, so, just use VIF0 */
def_priv->callbk_fns.rpu_recovery_callbk_fn(def_dev_ctx->vif_ctx[0],
event_data, len);

status = NRF_WIFI_STATUS_SUCCESS;
out:
return status;
}
#endif /* CONFIG_NRF_WIFI_RPU_RECOVERY */

struct nrf_wifi_fmac_priv *nrf_wifi_fmac_init(struct nrf_wifi_data_config_params *data_config,
struct rx_buf_pool_params *rx_buf_pools,
struct nrf_wifi_fmac_callbk_fns *callbk_fns)
Expand Down Expand Up @@ -525,7 +562,12 @@ struct nrf_wifi_fmac_priv *nrf_wifi_fmac_init(struct nrf_wifi_data_config_params

fpriv->hpriv = nrf_wifi_hal_init(opriv,
&hal_cfg_params,
&nrf_wifi_fmac_event_callback);
&nrf_wifi_fmac_event_callback,
#ifdef CONFIG_NRF_WIFI_RPU_RECOVERY
&nrf_wifi_fmac_rpu_recovery_callback);
#else
NULL);
#endif

if (!fpriv->hpriv) {
nrf_wifi_osal_log_err(opriv,
Expand Down
21 changes: 21 additions & 0 deletions nrf_wifi/fw_if/umac_if/src/event.c
Original file line number Diff line number Diff line change
Expand Up @@ -194,10 +194,17 @@ static enum nrf_wifi_status umac_event_ctrl_process(struct nrf_wifi_fmac_dev_ctx
callbk_fns = &def_priv->callbk_fns;
#endif /* !CONFIG_NRF700X_RADIO_TEST */

#ifdef CONFIG_NRF_WIFI_CMD_EVENT_LOG
nrf_wifi_osal_log_info(fmac_dev_ctx->fpriv->opriv,
"%s: Event %d received from UMAC\n",
__func__,
event_num);
#else
nrf_wifi_osal_log_dbg(fmac_dev_ctx->fpriv->opriv,
"%s: Event %d received from UMAC",
__func__,
event_num);
#endif /* CONFIG_NRF_WIFI_CMD_EVENT_LOG */

switch (umac_hdr->cmd_evnt) {
case NRF_WIFI_UMAC_EVENT_GET_REG:
Expand Down Expand Up @@ -631,10 +638,17 @@ nrf_wifi_fmac_data_event_process(struct nrf_wifi_fmac_dev_ctx *fmac_dev_ctx,

event = ((struct nrf_wifi_umac_head *)umac_head)->cmd;

#ifdef CONFIG_NRF_WIFI_CMD_EVENT_LOG
nrf_wifi_osal_log_info(fmac_dev_ctx->fpriv->opriv,
"%s: Event %d received from UMAC\n",
__func__,
event);
#else
nrf_wifi_osal_log_dbg(fmac_dev_ctx->fpriv->opriv,
"%s: Event %d received from UMAC",
__func__,
event);
#endif /* CONFIG_NRF_WIFI_CMD_EVENT_LOG */

switch (event) {
case NRF_WIFI_CMD_RX_BUFF:
Expand Down Expand Up @@ -1121,10 +1135,17 @@ enum nrf_wifi_status nrf_wifi_fmac_event_callback(void *mac_dev_ctx,
umac_msg_len = rpu_msg->hdr.len;
umac_msg_type = umac_hdr->cmd_evnt;

#ifdef CONFIG_NRF_WIFI_CMD_EVENT_LOG
nrf_wifi_osal_log_info(fmac_dev_ctx->fpriv->opriv,
"%s: Event type %d recd\n",
__func__,
rpu_msg->type);
#else
nrf_wifi_osal_log_dbg(fmac_dev_ctx->fpriv->opriv,
"%s: Event type %d recd",
__func__,
rpu_msg->type);
#endif /* CONFIG_NRF_WIFI_CMD_EVENT_LOG */

switch (rpu_msg->type) {
#ifndef CONFIG_NRF700X_RADIO_TEST
Expand Down
3 changes: 2 additions & 1 deletion nrf_wifi/fw_if/umac_if/src/radio_test/fmac_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,8 @@ struct nrf_wifi_fmac_priv *nrf_wifi_fmac_init_rt(void)

fpriv->hpriv = nrf_wifi_hal_init(opriv,
&hal_cfg_params,
&nrf_wifi_fmac_event_callback);
&nrf_wifi_fmac_event_callback,
NULL);

if (!fpriv->hpriv) {
nrf_wifi_osal_log_err(opriv,
Expand Down
3 changes: 3 additions & 0 deletions nrf_wifi/fw_if/umac_if/src/rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,9 @@ enum nrf_wifi_status nrf_wifi_fmac_rx_event_process(struct nrf_wifi_fmac_dev_ctx
#endif /* CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS */
nrf_wifi_osal_nbuf_free(fmac_dev_ctx->fpriv->opriv,
nwb);
#ifdef CONFIG_NRF_WIFI_MGMT_BUFF_OFFLOAD
goto out;
#endif /* CONFIG_NRF_WIFI_MGMT_BUFF_OFFLOAD */
}
#if defined(CONFIG_NRF700X_RAW_DATA_RX) || defined(CONFIG_NRF700X_PROMISC_DATA_RX)
else if (config->rx_pkt_type == NRF_WIFI_RAW_RX_PKT) {
Expand Down
20 changes: 20 additions & 0 deletions nrf_wifi/fw_if/umac_if/src/tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1452,6 +1452,14 @@ enum nrf_wifi_status nrf_wifi_fmac_rawtx_done_event_process(
goto out;
}

def_dev_ctx = wifi_dev_priv(fmac_dev_ctx);
if (!def_dev_ctx || !def_dev_ctx->tx_config.tx_lock) {
/* This is a valid case when the TX_DONE event is received
* during the driver deinit, so, silently ignore the failure.
*/
return NRF_WIFI_STATUS_SUCCESS;
}

nrf_wifi_osal_spinlock_take(fmac_dev_ctx->fpriv->opriv,
def_dev_ctx->tx_config.tx_lock);

Expand Down Expand Up @@ -1790,6 +1798,12 @@ void tx_deinit(struct nrf_wifi_fmac_dev_ctx *fmac_dev_ctx)

for (i = 0; i < def_priv->num_tx_tokens; i++) {
if (def_dev_ctx->tx_config.pkt_info_p) {
while (nrf_wifi_utils_q_len(fpriv->opriv,
def_dev_ctx->tx_config.pkt_info_p[i].pkt)) {
nrf_wifi_osal_nbuf_free(fpriv->opriv,
nrf_wifi_utils_q_dequeue(fpriv->opriv,
def_dev_ctx->tx_config.pkt_info_p[i].pkt));
}
nrf_wifi_utils_list_free(fpriv->opriv,
def_dev_ctx->tx_config.pkt_info_p[i].pkt);
}
Expand All @@ -1800,6 +1814,12 @@ void tx_deinit(struct nrf_wifi_fmac_dev_ctx *fmac_dev_ctx)

for (i = 0; i < NRF_WIFI_FMAC_AC_MAX; i++) {
for (j = 0; j < MAX_SW_PEERS; j++) {
while (nrf_wifi_utils_q_len(fpriv->opriv,
def_dev_ctx->tx_config.data_pending_txq[j][i])) {
nrf_wifi_osal_nbuf_free(fpriv->opriv,
nrf_wifi_utils_q_dequeue(fpriv->opriv,
def_dev_ctx->tx_config.data_pending_txq[j][i]));
}
nrf_wifi_utils_q_free(fpriv->opriv,
def_dev_ctx->tx_config.data_pending_txq[j][i]);
}
Expand Down
6 changes: 6 additions & 0 deletions nrf_wifi/hw_if/hal/inc/fw/rpu_if.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@ struct rpu_mcu_boot_vectors {
#define RPU_REG_BIT_MIPS_WATCHDOG_INT_STATUS 1

#define RPU_REG_MIPS_MCU_TIMER_CONTROL 0xA4000048
#define RPU_REG_MIPS_MCU_TIMER 0xA400004C /* 24 bit timer@core clock ticks*/
#define RPU_REG_MIPS_MCU_TIMER_RESET_VAL 0xFFFFFF

#define RPU_REG_MIPS_MCU_UCCP_INT_CLEAR 0xA400000C
#define RPU_REG_BIT_MIPS_UCCP_INT_CLEAR 0
#define RPU_REG_BIT_MIPS_WATCHDOG_INT_CLEAR 1

#define RPU_REG_MIPS_MCU_SYS_CORE_MEM_CTRL 0xA4000030 /* 13.1.10 */
#define RPU_REG_MIPS_MCU_SYS_CORE_MEM_WDATA 0xA4000034 /* 13.1.11 */
Expand Down
7 changes: 6 additions & 1 deletion nrf_wifi/hw_if/hal/inc/hal_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ extern const struct nrf70_fw_addr_info nrf70_fw_addr_info[];
* @cfg_params: Parameters needed to configure the HAL for WLAN operation.
* @intr_callbk_fn: Pointer to the callback function which the user of this
* layer needs to implement to handle events from the RPU.
* @rpu_recovery_callbk_fn: Pointer to the callback function which the user of
* this layer needs to implement to handle RPU recovery.
*
* This API is used to initialize the HAL layer and is expected to be called
* before using the HAL layer. This API returns a pointer to the HAL context
Expand All @@ -48,7 +50,10 @@ nrf_wifi_hal_init(struct nrf_wifi_osal_priv *opriv,
struct nrf_wifi_hal_cfg_params *cfg_params,
enum nrf_wifi_status (*intr_callbk_fn)(void *mac_ctx,
void *event_data,
unsigned int len));
unsigned int len),
enum nrf_wifi_status (*rpu_recovery_callbk_fn)(void *mac_ctx,
void *event_data,
unsigned int len));

/**
* nrf_wifi_hal_deinit() - Deinitialize the HAL layer.
Expand Down
5 changes: 4 additions & 1 deletion nrf_wifi/hw_if/hal/inc/hal_interrupt.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ enum nrf_wifi_status hal_rpu_irq_disable(struct nrf_wifi_hal_dev_ctx *hal_dev_ct
/**
* hal_rpu_irq_process() - Processes an interrupt from the RPU.
* @hal_dev_ctx: Pointer to HAL context.
* @do_rpu_recovery: Pointer to a boolean variable that indicates if the RPU recovery
* is required.
*
* This function is an interrupt handler for the interrupts generated by the
* RPU. This function does the following:
Expand All @@ -57,5 +59,6 @@ enum nrf_wifi_status hal_rpu_irq_disable(struct nrf_wifi_hal_dev_ctx *hal_dev_ct
* Pass : %NRF_WIFI_STATUS_SUCCESS
* Error: %NRF_WIFI_STATUS_FAIL
*/
enum nrf_wifi_status hal_rpu_irq_process(struct nrf_wifi_hal_dev_ctx *hal_dev_ctx);
enum nrf_wifi_status hal_rpu_irq_process(struct nrf_wifi_hal_dev_ctx *hal_dev_ctx,
bool *do_rpu_recovery);
#endif /* __HAL_INTERRUPT_H__ */
Loading
Loading