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

Commit 7a45d0b6 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "soc: qcom: ipc_router_glink_xprt: Add wakeup source in RX path"

parents 2a5d8fe0 6706ec15
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ struct ipc_router_glink_xprt {
	struct msm_ipc_router_xprt xprt;
	void *ch_hndl;
	struct workqueue_struct *xprt_wq;
	struct wakeup_source notify_rxv_ws;
	struct rw_semaphore ss_reset_rwlock;
	int ss_reset;
	void *pil;
@@ -380,6 +381,7 @@ static void glink_xprt_read_data(struct work_struct *work)
	glink_rx_done(glink_xprtp->ch_hndl, rx_work->iovec, reuse_intent);
	kfree(rx_work);
	up_read(&glink_xprtp->ss_reset_rwlock);
	__pm_relax(&glink_xprtp->notify_rxv_ws);
}

static void glink_xprt_open_event(struct work_struct *work)
@@ -494,6 +496,8 @@ static void glink_xprt_notify_rxv(void *handle, const void *priv,
	rx_work->iovec_size = size;
	rx_work->vbuf_provider = vbuf_provider;
	rx_work->pbuf_provider = pbuf_provider;
	if (!glink_xprtp->dynamic_wakeup_source)
		__pm_stay_awake(&glink_xprtp->notify_rxv_ws);
	INIT_WORK(&rx_work->work, glink_xprt_read_data);
	queue_work(glink_xprtp->xprt_wq, &rx_work->work);
}
@@ -763,6 +767,7 @@ static int ipc_router_glink_config_init(
		return -EFAULT;
	}

	wakeup_source_init(&glink_xprtp->notify_rxv_ws, xprt_wq_name);
	mutex_lock(&glink_xprt_list_lock_lha1);
	list_add(&glink_xprtp->list, &glink_xprt_list);
	mutex_unlock(&glink_xprt_list_lock_lha1);