Loading CORE/VOSS/inc/i_vos_lock.h +10 −1 Original line number Diff line number Diff line Loading @@ -77,8 +77,17 @@ typedef struct vos_lock_s typedef spinlock_t vos_spin_lock_t; #if defined(WLAN_OPEN_SOURCE) #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) typedef struct wakeup_source vos_wake_lock_t; /** * typedef struct - vos_wake_lock_t * @lock: this lock needs to be used in kernel version < 4.19 * @priv: this lock pointer needs to be used in kernel version >= 4.19 */ typedef struct vos_wake_lock { struct wakeup_source lock; struct wakeup_source *priv; } vos_wake_lock_t; #else typedef struct wake_lock vos_wake_lock_t; #endif Loading CORE/VOSS/src/vos_lock.c +34 −10 Original line number Diff line number Diff line Loading @@ -482,11 +482,27 @@ VOS_STATUS vos_spin_lock_destroy(vos_spin_lock_t *pLock) return VOS_STATUS_SUCCESS; } #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 110)) || \ defined(WAKEUP_SOURCE_DEV) VOS_STATUS vos_wake_lock_init(vos_wake_lock_t *lock, const char *name) { vos_mem_zero(lock, sizeof(*lock)); lock->priv = wakeup_source_register(lock->lock.dev, name); if (!(lock->priv)) { VOS_BUG(0); return VOS_STATUS_E_FAILURE; } lock->lock = *(lock->priv); return VOS_STATUS_SUCCESS; } #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ defined(WLAN_OPEN_SOURCE) VOS_STATUS vos_wake_lock_init(vos_wake_lock_t *pLock, const char *name) { wakeup_source_init(pLock, name); wakeup_source_init(&pLock->lock, name); pLock->priv = &(pLock->lock); return VOS_STATUS_SUCCESS; } #else Loading @@ -513,8 +529,8 @@ VOS_STATUS vos_wake_lock_init(vos_wake_lock_t *pLock, const char *name) defined(WLAN_OPEN_SOURCE) static const char *vos_wake_lock_name(vos_wake_lock_t *pLock) { if (pLock->name) return pLock->name; if (pLock) return pLock->lock.name; return "UNNAMED_WAKELOCK"; } Loading Loading @@ -548,7 +564,7 @@ VOS_STATUS vos_wake_lock_acquire(vos_wake_lock_t *pLock, uint32_t reason) vos_log_wlock_diag(reason, vos_wake_lock_name(pLock), WIFI_POWER_EVENT_DEFAULT_WAKELOCK_TIMEOUT, WIFI_POWER_EVENT_WAKELOCK_TAKEN); __pm_stay_awake(pLock); __pm_stay_awake(pLock->priv); return VOS_STATUS_SUCCESS; } #else Loading Loading @@ -586,7 +602,7 @@ VOS_STATUS vos_wake_lock_timeout_release(vos_wake_lock_t *pLock, v_U32_t msec, * Wakelock for Rx is frequent. * It is reported only during active debug */ __pm_wakeup_event(pLock, msec); __pm_wakeup_event(pLock->priv, msec); return VOS_STATUS_SUCCESS; } #else Loading Loading @@ -630,7 +646,7 @@ VOS_STATUS vos_wake_lock_release(vos_wake_lock_t *pLock, uint32_t reason) vos_log_wlock_diag(reason, vos_wake_lock_name(pLock), WIFI_POWER_EVENT_DEFAULT_WAKELOCK_TIMEOUT, WIFI_POWER_EVENT_WAKELOCK_RELEASED); __pm_relax(pLock); __pm_relax(pLock->priv); return VOS_STATUS_SUCCESS; } #else Loading Loading @@ -660,11 +676,19 @@ VOS_STATUS vos_wake_lock_release(vos_wake_lock_t *pLock, uint32_t reason) } #endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 110)) || \ defined(WAKEUP_SOURCE_DEV) VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *lock) { wakeup_source_unregister(lock->priv); return VOS_STATUS_SUCCESS; } #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ defined(WLAN_OPEN_SOURCE) VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *pLock) { wakeup_source_trash(pLock); wakeup_source_trash(pLock->priv); return VOS_STATUS_SUCCESS; } #else Loading @@ -691,7 +715,7 @@ VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *pLock) defined(WLAN_OPEN_SOURCE) bool vos_wake_lock_active(vos_wake_lock_t *lock) { return lock->active; return lock->priv->active; } #else bool vos_wake_lock_active(vos_wake_lock_t *lock) Loading Loading
CORE/VOSS/inc/i_vos_lock.h +10 −1 Original line number Diff line number Diff line Loading @@ -77,8 +77,17 @@ typedef struct vos_lock_s typedef spinlock_t vos_spin_lock_t; #if defined(WLAN_OPEN_SOURCE) #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) typedef struct wakeup_source vos_wake_lock_t; /** * typedef struct - vos_wake_lock_t * @lock: this lock needs to be used in kernel version < 4.19 * @priv: this lock pointer needs to be used in kernel version >= 4.19 */ typedef struct vos_wake_lock { struct wakeup_source lock; struct wakeup_source *priv; } vos_wake_lock_t; #else typedef struct wake_lock vos_wake_lock_t; #endif Loading
CORE/VOSS/src/vos_lock.c +34 −10 Original line number Diff line number Diff line Loading @@ -482,11 +482,27 @@ VOS_STATUS vos_spin_lock_destroy(vos_spin_lock_t *pLock) return VOS_STATUS_SUCCESS; } #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 110)) || \ defined(WAKEUP_SOURCE_DEV) VOS_STATUS vos_wake_lock_init(vos_wake_lock_t *lock, const char *name) { vos_mem_zero(lock, sizeof(*lock)); lock->priv = wakeup_source_register(lock->lock.dev, name); if (!(lock->priv)) { VOS_BUG(0); return VOS_STATUS_E_FAILURE; } lock->lock = *(lock->priv); return VOS_STATUS_SUCCESS; } #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ defined(WLAN_OPEN_SOURCE) VOS_STATUS vos_wake_lock_init(vos_wake_lock_t *pLock, const char *name) { wakeup_source_init(pLock, name); wakeup_source_init(&pLock->lock, name); pLock->priv = &(pLock->lock); return VOS_STATUS_SUCCESS; } #else Loading @@ -513,8 +529,8 @@ VOS_STATUS vos_wake_lock_init(vos_wake_lock_t *pLock, const char *name) defined(WLAN_OPEN_SOURCE) static const char *vos_wake_lock_name(vos_wake_lock_t *pLock) { if (pLock->name) return pLock->name; if (pLock) return pLock->lock.name; return "UNNAMED_WAKELOCK"; } Loading Loading @@ -548,7 +564,7 @@ VOS_STATUS vos_wake_lock_acquire(vos_wake_lock_t *pLock, uint32_t reason) vos_log_wlock_diag(reason, vos_wake_lock_name(pLock), WIFI_POWER_EVENT_DEFAULT_WAKELOCK_TIMEOUT, WIFI_POWER_EVENT_WAKELOCK_TAKEN); __pm_stay_awake(pLock); __pm_stay_awake(pLock->priv); return VOS_STATUS_SUCCESS; } #else Loading Loading @@ -586,7 +602,7 @@ VOS_STATUS vos_wake_lock_timeout_release(vos_wake_lock_t *pLock, v_U32_t msec, * Wakelock for Rx is frequent. * It is reported only during active debug */ __pm_wakeup_event(pLock, msec); __pm_wakeup_event(pLock->priv, msec); return VOS_STATUS_SUCCESS; } #else Loading Loading @@ -630,7 +646,7 @@ VOS_STATUS vos_wake_lock_release(vos_wake_lock_t *pLock, uint32_t reason) vos_log_wlock_diag(reason, vos_wake_lock_name(pLock), WIFI_POWER_EVENT_DEFAULT_WAKELOCK_TIMEOUT, WIFI_POWER_EVENT_WAKELOCK_RELEASED); __pm_relax(pLock); __pm_relax(pLock->priv); return VOS_STATUS_SUCCESS; } #else Loading Loading @@ -660,11 +676,19 @@ VOS_STATUS vos_wake_lock_release(vos_wake_lock_t *pLock, uint32_t reason) } #endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 110)) || \ defined(WAKEUP_SOURCE_DEV) VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *lock) { wakeup_source_unregister(lock->priv); return VOS_STATUS_SUCCESS; } #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ defined(WLAN_OPEN_SOURCE) VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *pLock) { wakeup_source_trash(pLock); wakeup_source_trash(pLock->priv); return VOS_STATUS_SUCCESS; } #else Loading @@ -691,7 +715,7 @@ VOS_STATUS vos_wake_lock_destroy(vos_wake_lock_t *pLock) defined(WLAN_OPEN_SOURCE) bool vos_wake_lock_active(vos_wake_lock_t *lock) { return lock->active; return lock->priv->active; } #else bool vos_wake_lock_active(vos_wake_lock_t *lock) Loading