From d0a428a6556ea5a006e22e28b0b1cd037885fe20 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 22 Nov 2023 01:07:12 +0000 Subject: [PATCH] add gmac0 read mac form eeprom,pcie30x1 --- kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c | 27 ++++++++++++++++++++++++++- 1 files changed, 26 insertions(+), 1 deletions(-) diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c index a3da591..d15b758 100644 --- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c +++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c @@ -2452,14 +2452,19 @@ dhd_pub_t *dhd = (dhd_pub_t *)handle; unsigned long flags; wifi_adapter_info_t *adapter; + int wowl_dngldown = 0; if (dhd == NULL) { DBUSERR(("%s: dhd is NULL\n", __FUNCTION__)); return; } adapter = (wifi_adapter_info_t *)dhd->adapter; +#ifdef WL_EXT_WOWL + wowl_dngldown = dhd_conf_wowl_dngldown(dhd); +#endif - if (dhd->busstate == DHD_BUS_SUSPEND && state == DBUS_STATE_DOWN) { + if ((dhd->busstate == DHD_BUS_SUSPEND && state == DBUS_STATE_DOWN) || + (dhd->hostsleep && wowl_dngldown)) { DBUSERR(("%s: switch state %d to %d\n", __FUNCTION__, state, DBUS_STATE_SLEEP)); state = DBUS_STATE_SLEEP; } @@ -3059,6 +3064,7 @@ } DBUSTRACE(("%s: Exit\n", __FUNCTION__)); + wifi_clr_adapter_status(adapter, WIFI_STATUS_BUS_DISCONNECTED); if (net_attached) { wifi_set_adapter_status(adapter, WIFI_STATUS_NET_ATTACHED); wake_up_interruptible(&adapter->status_event); @@ -3112,6 +3118,7 @@ dhd_dbus_advertise_bus_remove(bus->dhd); dbus_detach(pub->bus); pub->bus = NULL; + wifi_set_adapter_status(adapter, WIFI_STATUS_BUS_DISCONNECTED); wake_up_interruptible(&adapter->status_event); } else { osh = pub->osh; @@ -3133,6 +3140,24 @@ DBUSTRACE(("%s: Exit\n", __FUNCTION__)); } +int +dhd_bus_sleep(dhd_pub_t *dhdp, bool sleep, uint32 *intstatus) +{ + wifi_adapter_info_t *adapter = (wifi_adapter_info_t *)dhdp->adapter; + s32 timeout = -1; + int err = 0; + + timeout = wait_event_interruptible_timeout(adapter->status_event, + wifi_get_adapter_status(adapter, WIFI_STATUS_BUS_DISCONNECTED), + msecs_to_jiffies(12000)); + if (timeout <= 0) { + err = -1; + DBUSERR(("%s: bus disconnected timeout\n", __FUNCTION__)); + } + + return err; +} + #ifdef LINUX_EXTERNAL_MODULE_DBUS static int __init -- Gitblit v1.6.2