diff options
author | Vladimir Kondratiev <QCA_vkondrat@QCA.qualcomm.com> | 2015-07-30 06:52:02 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2015-08-06 02:43:37 -0400 |
commit | bd2d18b50631c027af7674c3f328913c3b87d422 (patch) | |
tree | 6bc435805458157a52d4064b34ce25b6ae52f75c /drivers/net/wireless/ath/wil6210/interrupt.c | |
parent | 91a8edcc3173958fd8102343a8a7919a7b703ef0 (diff) |
wil6210: remove 3-MSI support
In the recent kernel versions, multiple MSI is not well supported.
In particular, it is not supported on x86 and ARM architectures.
Also, internal interrupt handling logic is simpler and
more effective when using single interrupt.
Remove support for 3 MSI, convert module parameter
"use_msi" from int with range [0,1,3] to boolean.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/wil6210/interrupt.c')
-rw-r--r-- | drivers/net/wireless/ath/wil6210/interrupt.c | 55 |
1 files changed, 6 insertions, 49 deletions
diff --git a/drivers/net/wireless/ath/wil6210/interrupt.c b/drivers/net/wireless/ath/wil6210/interrupt.c index 28ffc18466c4..596d09b8c60a 100644 --- a/drivers/net/wireless/ath/wil6210/interrupt.c +++ b/drivers/net/wireless/ath/wil6210/interrupt.c | |||
@@ -541,42 +541,6 @@ static irqreturn_t wil6210_hardirq(int irq, void *cookie) | |||
541 | return rc; | 541 | return rc; |
542 | } | 542 | } |
543 | 543 | ||
544 | static int wil6210_request_3msi(struct wil6210_priv *wil, int irq) | ||
545 | { | ||
546 | int rc; | ||
547 | /* | ||
548 | * IRQ's are in the following order: | ||
549 | * - Tx | ||
550 | * - Rx | ||
551 | * - Misc | ||
552 | */ | ||
553 | |||
554 | rc = request_irq(irq, wil6210_irq_tx, IRQF_SHARED, | ||
555 | WIL_NAME"_tx", wil); | ||
556 | if (rc) | ||
557 | return rc; | ||
558 | |||
559 | rc = request_irq(irq + 1, wil6210_irq_rx, IRQF_SHARED, | ||
560 | WIL_NAME"_rx", wil); | ||
561 | if (rc) | ||
562 | goto free0; | ||
563 | |||
564 | rc = request_threaded_irq(irq + 2, wil6210_irq_misc, | ||
565 | wil6210_irq_misc_thread, | ||
566 | IRQF_SHARED, WIL_NAME"_misc", wil); | ||
567 | if (rc) | ||
568 | goto free1; | ||
569 | |||
570 | return 0; | ||
571 | /* error branch */ | ||
572 | free1: | ||
573 | free_irq(irq + 1, wil); | ||
574 | free0: | ||
575 | free_irq(irq, wil); | ||
576 | |||
577 | return rc; | ||
578 | } | ||
579 | |||
580 | /* can't use wil_ioread32_and_clear because ICC value is not set yet */ | 544 | /* can't use wil_ioread32_and_clear because ICC value is not set yet */ |
581 | static inline void wil_clear32(void __iomem *addr) | 545 | static inline void wil_clear32(void __iomem *addr) |
582 | { | 546 | { |
@@ -596,19 +560,16 @@ void wil6210_clear_irq(struct wil6210_priv *wil) | |||
596 | wmb(); /* make sure write completed */ | 560 | wmb(); /* make sure write completed */ |
597 | } | 561 | } |
598 | 562 | ||
599 | int wil6210_init_irq(struct wil6210_priv *wil, int irq) | 563 | int wil6210_init_irq(struct wil6210_priv *wil, int irq, bool use_msi) |
600 | { | 564 | { |
601 | int rc; | 565 | int rc; |
602 | 566 | ||
603 | wil_dbg_misc(wil, "%s() n_msi=%d\n", __func__, wil->n_msi); | 567 | wil_dbg_misc(wil, "%s(%s)\n", __func__, use_msi ? "MSI" : "INTx"); |
604 | 568 | ||
605 | if (wil->n_msi == 3) | 569 | rc = request_threaded_irq(irq, wil6210_hardirq, |
606 | rc = wil6210_request_3msi(wil, irq); | 570 | wil6210_thread_irq, |
607 | else | 571 | use_msi ? 0 : IRQF_SHARED, |
608 | rc = request_threaded_irq(irq, wil6210_hardirq, | 572 | WIL_NAME, wil); |
609 | wil6210_thread_irq, | ||
610 | wil->n_msi ? 0 : IRQF_SHARED, | ||
611 | WIL_NAME, wil); | ||
612 | return rc; | 573 | return rc; |
613 | } | 574 | } |
614 | 575 | ||
@@ -618,8 +579,4 @@ void wil6210_fini_irq(struct wil6210_priv *wil, int irq) | |||
618 | 579 | ||
619 | wil_mask_irq(wil); | 580 | wil_mask_irq(wil); |
620 | free_irq(irq, wil); | 581 | free_irq(irq, wil); |
621 | if (wil->n_msi == 3) { | ||
622 | free_irq(irq + 1, wil); | ||
623 | free_irq(irq + 2, wil); | ||
624 | } | ||
625 | } | 582 | } |