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

Commit 8e10232f authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa3: Add wait queue for the adpl"

parents 1e296239 a1ff843b
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -250,6 +250,7 @@ int ipa3_send_adpl_msg(unsigned long skb_data)
	list_add_tail(&msg->link, &ipa3_odl_ctx->adpl_msg_list);
	atomic_inc(&ipa3_odl_ctx->stats.numer_in_queue);
	mutex_unlock(&ipa3_odl_ctx->adpl_msg_lock);
	wake_up(&ipa3_odl_ctx->adpl_msg_waitq);
	IPA_STATS_INC_CNT(ipa3_odl_ctx->stats.odl_rx_pkt);

	return 0;
@@ -527,7 +528,9 @@ static ssize_t ipa_adpl_read(struct file *filp, char __user *buf, size_t count,
	int ret =  0;
	char __user *start = buf;
	struct ipa3_push_msg_odl *msg;
	DEFINE_WAIT_FUNC(wait, woken_wake_function);

	add_wait_queue(&ipa3_odl_ctx->adpl_msg_waitq, &wait);
	while (1) {
		IPADBG_LOW("Writing message to adpl pipe\n");
		if (!ipa3_odl_ctx->odl_state.odl_open)
@@ -572,9 +575,6 @@ static ssize_t ipa_adpl_read(struct file *filp, char __user *buf, size_t count,
			IPA_STATS_INC_CNT(ipa3_odl_ctx->stats.odl_tx_diag_pkt);
			kfree(msg);
			msg = NULL;
		} else {
			ret = -EAGAIN;
			break;
		}

		ret = -EAGAIN;
@@ -587,9 +587,9 @@ static ssize_t ipa_adpl_read(struct file *filp, char __user *buf, size_t count,

		if (start != buf)
			break;

		wait_woken(&wait, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
	}

	remove_wait_queue(&ipa3_odl_ctx->adpl_msg_waitq, &wait);
	if (start != buf && ret != -EFAULT)
		ret = buf - start;

@@ -665,6 +665,7 @@ int ipa_odl_init(void)

	odl_cdev = ipa3_odl_ctx->odl_cdev;
	INIT_LIST_HEAD(&ipa3_odl_ctx->adpl_msg_list);
	init_waitqueue_head(&ipa3_odl_ctx->adpl_msg_waitq);
	mutex_init(&ipa3_odl_ctx->adpl_msg_lock);
	mutex_init(&ipa3_odl_ctx->pipe_lock);

+1 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ struct ipa_odl_context {
	bool odl_ctl_msg_wq_flag;
	struct ipa3_odlstats stats;
	u32 odl_pm_hdl;
	wait_queue_head_t adpl_msg_waitq;
};

struct ipa3_push_msg_odl {