qcacmn: Add RX frame pending check for WoW

Sometimes frames are queued to dp_rx_thread wait queue
during WoW suspend in progress. At this time dp_rx_thread
is in SUSPEND state and these frames can't deliver to Linux
Stack, for ICMP case, if no other frames come to wake up
system, ICMP timeout will happen. Add a RX suspend check
in WoW to avoid suspend when frame comes before WMI_WOW_ENABLE
sends to FW

Change-Id: I756d3127f75da8f0e6e303c1250c01ce0c6ac573
CRs-Fixed: 2756263
This commit is contained in:
Yu Tian
2020-08-15 19:19:48 +08:00
committed by snandini
parent 926912fe86
commit dabf6e13ee
2 changed files with 15 additions and 0 deletions

View File

@@ -2651,4 +2651,18 @@ cdp_soc_config_full_mon_mode(ol_txrx_soc_handle soc, uint8_t val)
return soc->ops->mon_ops->config_full_mon_mode(soc, val); return soc->ops->mon_ops->config_full_mon_mode(soc, val);
} }
/**
* cdp_rx_get_pending() - Get number of pending frames of RX threads
* @soc: opaque soc handle
* Return: number of pending frames
*/
static inline int
cdp_rx_get_pending(ol_txrx_soc_handle soc)
{
if (!soc || !soc->ol_ops ||
!soc->ol_ops->dp_rx_get_pending)
return 0;
return soc->ol_ops->dp_rx_get_pending(soc);
}
#endif /* _CDP_TXRX_CMN_H_ */ #endif /* _CDP_TXRX_CMN_H_ */

View File

@@ -1101,6 +1101,7 @@ struct ol_if_ops {
uint8_t pdev_id); uint8_t pdev_id);
QDF_STATUS(*nss_stats_clr)(struct cdp_ctrl_objmgr_psoc *psoc, QDF_STATUS(*nss_stats_clr)(struct cdp_ctrl_objmgr_psoc *psoc,
uint8_t vdev_id); uint8_t vdev_id);
int (*dp_rx_get_pending)(ol_txrx_soc_handle soc);
/* TODO: Add any other control path calls required to OL_IF/WMA layer */ /* TODO: Add any other control path calls required to OL_IF/WMA layer */
}; };