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

Commit b26ed97c authored by Anna Neal's avatar Anna Neal Committed by John W. Linville
Browse files

libertas: increase spi driver thread priority



Currently, the libertas main thread contends with the spi driver thread
in the TX path.  To improve throughput, ensure that the driver thread
has higher scheduling priority than the libertas main thread.  Do this
by making the libertas spi driver thread a low priority real time
thread.

We measured an average throughput improvement of 13%.

Signed-off-by: default avatarAnna Neal <anna@cozybit.com>
Signed-off-by: default avatarAndrey Yurovsky <andrey@cozybit.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 25e47c18
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1020,6 +1020,7 @@ static int __devinit if_spi_probe(struct spi_device *spi)
	struct libertas_spi_platform_data *pdata = spi->dev.platform_data;
	int err = 0;
	u32 scratch;
	struct sched_param param = { .sched_priority = 1 };

	lbs_deb_enter(LBS_DEB_SPI);

@@ -1123,6 +1124,9 @@ static int __devinit if_spi_probe(struct spi_device *spi)
		lbs_pr_err("error creating SPI thread: err=%d\n", err);
		goto remove_card;
	}
	if (sched_setscheduler(card->spi_thread, SCHED_FIFO, &param))
		lbs_pr_err("Error setting scheduler, using default.\n");

	err = request_irq(spi->irq, if_spi_host_interrupt,
			IRQF_TRIGGER_FALLING, "libertas_spi", card);
	if (err) {