net: rockchip_wlan: cywdhd: update version to 1.363.125.19-20210427

1. Add to support Low Power Solution.
2. Fix that system can't suspend in Android.
3. Fix that the SSID list will be shown very slowly when disable/enable wifi in Android.

Signed-off-by: Alex Zhao <zzc@rock-chips.com>
Change-Id: Ib0f9387e670cb2cb4aca9e2279f76f24dec3aa99
This commit is contained in:
Alex Zhao
2021-05-06 19:39:26 +08:00
committed by Tao Huang
parent c9825f398a
commit 7d5518f87b
3 changed files with 26 additions and 4 deletions

View File

@@ -400,6 +400,9 @@ typedef struct dhd_pub {
/* Internal dhd items */
bool up; /* Driver up/down (to OS) */
#ifdef WL_CFG80211
spinlock_t up_lock; /* Synchronization with CFG80211 down */
#endif
bool txoff; /* Transmit flow-controlled */
bool dongle_reset; /* TRUE = DEVRESET put dongle into reset */
enum dhd_bus_state busstate;

View File

@@ -6257,6 +6257,9 @@ static int
dhd_stop(struct net_device *net)
{
int ifidx = 0;
#ifdef WL_CFG80211
unsigned long flags = 0;
#endif
dhd_info_t *dhd = DHD_DEV_INFO(net);
DHD_OS_WAKE_LOCK(&dhd->pub);
DHD_PERIM_LOCK(&dhd->pub);
@@ -6280,7 +6283,13 @@ dhd_stop(struct net_device *net)
/* Set state and stop OS transmissions */
netif_stop_queue(net);
#ifdef WL_CFG80211
spin_lock_irqsave(&dhd->pub.up_lock, flags);
dhd->pub.up = 0;
spin_unlock_irqrestore(&dhd->pub.up_lock, flags);
#else
dhd->pub.up = 0;
#endif
#ifdef WL_CFG80211
if (ifidx == 0) {
@@ -7543,6 +7552,7 @@ dhd_attach(osl_t *osh, struct dhd_bus *bus, uint bus_hdrlen)
dhd_state |= DHD_ATTACH_STATE_PROT_ATTACH;
#ifdef WL_CFG80211
spin_lock_init(&dhd->pub.up_lock);
/* Attach and link in the cfg80211 */
if (unlikely(wl_cfg80211_attach(net, &dhd->pub))) {
DHD_ERROR(("wl_cfg80211_attach failed\n"));
@@ -11024,6 +11034,9 @@ dhd_wl_host_event(dhd_info_t *dhd, int *ifidx, void *pktdata, uint16 pktlen,
wl_event_msg_t *event, void **data)
{
int bcmerror = 0;
#ifdef WL_CFG80211
unsigned long flags = 0;
#endif /* WL_CFG80211 */
ASSERT(dhd != NULL);
#ifdef SHOW_LOGTRACE
@@ -11055,8 +11068,13 @@ dhd_wl_host_event(dhd_info_t *dhd, int *ifidx, void *pktdata, uint16 pktlen,
#ifdef WL_CFG80211
ASSERT(dhd->iflist[*ifidx] != NULL);
ASSERT(dhd->iflist[*ifidx]->net != NULL);
if (dhd->iflist[*ifidx]->net)
wl_cfg80211_event(dhd->iflist[*ifidx]->net, event, *data);
if (dhd->iflist[*ifidx]->net) {
spin_lock_irqsave(&dhd->pub.up_lock, flags);
if (dhd->pub.up) {
wl_cfg80211_event(dhd->iflist[*ifidx]->net, event, *data);
}
spin_unlock_irqrestore(&dhd->pub.up_lock, flags);
}
#endif /* defined(WL_CFG80211) */
return (bcmerror);

View File

@@ -11265,6 +11265,7 @@ void wl_terminate_event_handler(void)
if (cfg) {
wl_destroy_event_handler(cfg);
wl_flush_eq(cfg);
}
}
@@ -12673,7 +12674,7 @@ static s32 wl_event_handler(void *data)
while (down_interruptible (&tsk->sema) == 0) {
SMP_RD_BARRIER_DEPENDS();
if (tsk->terminated) {
DHD_EVENT_WAKE_LOCK(cfg->pub);
DHD_EVENT_WAKE_UNLOCK(cfg->pub);
break;
}
while ((e = wl_deq_event(cfg))) {
@@ -12707,7 +12708,7 @@ static s32 wl_event_handler(void *data)
fail:
wl_put_event(e);
}
DHD_EVENT_WAKE_LOCK(cfg->pub);
DHD_EVENT_WAKE_UNLOCK(cfg->pub);
}
WL_ERR(("was terminated\n"));
complete_and_exit(&tsk->completed, 0);