summaryrefslogtreecommitdiff
path: root/drivers/net/ivshmem-net.c
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2016-11-27 15:15:51 +0100
committerLeonard Crestez <leonard.crestez@nxp.com>2018-08-24 12:41:33 +0300
commit2e2950936c45525f8e8f322aa67373afc7c8740f (patch)
tree1ced336b2bfe708f8ee1a202afb71ed50f64ab46 /drivers/net/ivshmem-net.c
parent81e02fd8d71298322791e823bc2750a9cf249b7c (diff)
ivshmem-net: Enable INTx
Activate INTx notification when it has to be used instead of MSI-X, disable it after use. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> (cherry picked from commit 3188f843e812973aff8c0ec5415c106f284c6c96)
Diffstat (limited to 'drivers/net/ivshmem-net.c')
-rw-r--r--drivers/net/ivshmem-net.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
index ccef65d0f038..591d04195e57 100644
--- a/drivers/net/ivshmem-net.c
+++ b/drivers/net/ivshmem-net.c
@@ -31,6 +31,8 @@
#define JAILHOUSE_CFG_SHMEM_PTR 0x40
#define JAILHOUSE_CFG_SHMEM_SZ 0x48
+#define IVSHMEM_INTX_ENABLE 0x1
+
#define IVSHM_NET_STATE_RESET 0
#define IVSHM_NET_STATE_INIT 1
#define IVSHM_NET_STATE_READY 2
@@ -47,7 +49,7 @@
#define IVSHM_NET_VQ_ALIGN 64
struct ivshmem_regs {
- u32 imask;
+ u32 intxctrl;
u32 istat;
u32 ivpos;
u32 doorbell;
@@ -869,6 +871,8 @@ static int ivshm_net_probe(struct pci_dev *pdev,
goto err_int;
pci_set_master(pdev);
+ if (!in->using_msix)
+ writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
@@ -895,6 +899,7 @@ static void ivshm_net_remove(struct pci_dev *pdev)
free_irq(in->msix.vector, ndev);
pci_disable_msix(pdev);
} else {
+ writel(0, &in->ivshm_regs->intxctrl);
free_irq(pdev->irq, ndev);
}