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

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

Merge "diag: Rectify wait condition while reading over peripherals"

parents a2882ab9 255ac1dd
Loading
Loading
Loading
Loading
+1 −5
Original line number Original line Diff line number Diff line
@@ -354,8 +354,6 @@ static void diagfwd_cntl_read_done(struct diagfwd_info *fwd_info,
		atomic_set(&fwd_info->buf_1->in_busy, 0);
		atomic_set(&fwd_info->buf_1->in_busy, 0);


	diagfwd_queue_read(fwd_info);
	diagfwd_queue_read(fwd_info);
	diagfwd_queue_read(&peripheral_info[TYPE_DATA][fwd_info->peripheral]);
	diagfwd_queue_read(&peripheral_info[TYPE_CMD][fwd_info->peripheral]);
}
}


static void diagfwd_dci_read_done(struct diagfwd_info *fwd_info,
static void diagfwd_dci_read_done(struct diagfwd_info *fwd_info,
@@ -701,8 +699,6 @@ static void __diag_fwd_open(struct diagfwd_info *fwd_info)


	if (fwd_info->p_ops && fwd_info->p_ops->open)
	if (fwd_info->p_ops && fwd_info->p_ops->open)
		fwd_info->p_ops->open(fwd_info->ctxt);
		fwd_info->p_ops->open(fwd_info->ctxt);

	diagfwd_queue_read(fwd_info);
}
}


void diagfwd_early_open(uint8_t peripheral)
void diagfwd_early_open(uint8_t peripheral)
@@ -781,7 +777,7 @@ int diagfwd_channel_open(struct diagfwd_info *fwd_info)
	diagfwd_buffers_init(fwd_info);
	diagfwd_buffers_init(fwd_info);
	if (fwd_info && fwd_info->c_ops && fwd_info->c_ops->open)
	if (fwd_info && fwd_info->c_ops && fwd_info->c_ops->open)
		fwd_info->c_ops->open(fwd_info);
		fwd_info->c_ops->open(fwd_info);
	diagfwd_queue_read(fwd_info);

	DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "p: %d t: %d considered opened\n",
	DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "p: %d t: %d considered opened\n",
		 fwd_info->peripheral, fwd_info->type);
		 fwd_info->peripheral, fwd_info->type);


+3 −4
Original line number Original line Diff line number Diff line
@@ -752,18 +752,17 @@ static int diag_smd_read(void *ctxt, unsigned char *buf, int buf_len)
			read_len = smd_read_avail(smd_info->hdl);
			read_len = smd_read_avail(smd_info->hdl);
			if (!read_len) {
			if (!read_len) {
				wait_event(smd_info->read_wait_q,
				wait_event(smd_info->read_wait_q,
					   (!(atomic_read(&smd_info->opened)) ||
					   ((atomic_read(&smd_info->opened)) &&
					    smd_read_avail(smd_info->hdl)));
					    smd_read_avail(smd_info->hdl)));


				if (smd_info->hdl ||
				if (!smd_info->hdl ||
				    !atomic_read(&smd_info->opened)) {
				    !atomic_read(&smd_info->opened)) {
					DIAG_LOG(DIAG_DEBUG_PERIPHERALS,
					DIAG_LOG(DIAG_DEBUG_PERIPHERALS,
						"%s exiting from wait",
						"%s exiting from wait",
						smd_info->name);
						smd_info->name);
					continue;
				} else
					goto fail_return;
					goto fail_return;
				}
				}
			}


			if (pkt_len < read_len)
			if (pkt_len < read_len)
				goto fail_return;
				goto fail_return;