From 039daca12e4311d4a7243d8711b5dbe467754509 Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Thu, 15 May 2014 12:39:38 -0500 Subject: [PATCH] wctc4xxp: Make sure we call the pci_enable_mwi() function. I've not seen this directly tied to any issue, but it's enabled on the voicebus cards and so brings the wctc4xxp driver in line. Signed-off-by: Shaun Ruffell Signed-off-by: Russ Meyerriecks --- drivers/dahdi/wctc4xxp/base.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/dahdi/wctc4xxp/base.c b/drivers/dahdi/wctc4xxp/base.c index 6c4cd07..83a2674 100644 --- a/drivers/dahdi/wctc4xxp/base.c +++ b/drivers/dahdi/wctc4xxp/base.c @@ -3462,6 +3462,7 @@ wctc4xxp_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) pci_resource_len(wc->pdev, 1)); if (wc->iobase) pci_iounmap(wc->pdev, wc->iobase); + pci_clear_mwi(wc->pdev); dev_warn(&wc->pdev->dev, "No suitable DMA available.\n"); return -EIO; } @@ -3564,6 +3565,11 @@ wctc4xxp_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) dev_err(&wc->pdev->dev, "Failed to enable device.\n"); goto error_exit_swinit;; } + res = pci_set_mwi(wc->pdev); + if (res) { + dev_warn(&wc->pdev->dev, + "Failed to set Memory-Write Invalidate Command Bit..\n"); + } pci_set_master(pdev); pci_set_drvdata(pdev, wc); res = request_irq(pdev->irq, wctc4xxp_interrupt, @@ -3635,6 +3641,7 @@ error_exit_swinit: pci_resource_len(wc->pdev, 1)); if (wc->iobase) pci_iounmap(wc->pdev, wc->iobase); + pci_clear_mwi(wc->pdev); wctc4xxp_remove_from_device_list(wc); kfree(wc); return res; @@ -3693,6 +3700,7 @@ static void __devexit wctc4xxp_remove_one(struct pci_dev *pdev) pci_resource_len(wc->pdev, 1)); if (wc->iobase) pci_iounmap(wc->pdev, wc->iobase); + pci_clear_mwi(wc->pdev); wctc4xxp_cleanup_descriptor_ring(wc->txd); kfree(wc->txd); wctc4xxp_cleanup_descriptor_ring(wc->rxd);