summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/libertas/if_spi.c
diff options
context:
space:
mode:
authorAnna Neal <anna@cozybit.com>2009-04-03 01:44:09 +0400
committerJohn W. Linville <linville@tuxdriver.com>2009-04-23 00:54:41 +0400
commitb26ed97c75e1538176c09f29c423a3f8a75868a7 (patch)
tree2a367af946b3cb45ea21d7eb7e5fbf013b137ac7 /drivers/net/wireless/libertas/if_spi.c
parent25e47c18ac4d8ad09c2ed4b99c1dbbcb7e3d2c51 (diff)
downloadlinux-b26ed97c75e1538176c09f29c423a3f8a75868a7.tar.xz
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: Anna Neal <anna@cozybit.com> Signed-off-by: Andrey Yurovsky <andrey@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas/if_spi.c')
-rw-r--r--drivers/net/wireless/libertas/if_spi.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
index 07311e71af92..97493e2f4109 100644
--- a/drivers/net/wireless/libertas/if_spi.c
+++ b/drivers/net/wireless/libertas/if_spi.c
@@ -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) {