Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08d41209 authored by CNSS_WLAN Service's avatar CNSS_WLAN Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "wlan: Update Wakelock apis fix for kernel 4.19" into wlan-driver.lnx.1.0

parents 62ab5a01 c61eb6c8
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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
+34 −10
Original line number Diff line number Diff line
@@ -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
@@ -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";
}
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)