[Xenial][PATCH v2] UBUNTU: SAUCE: mwifiex: Use PCI ID instead of DMI ID to identify Edge Gateways

jesse.sung at canonical.com jesse.sung at canonical.com
Mon Nov 14 14:38:55 UTC 2016


From: Wen-chien Jesse Sung <jesse.sung at canonical.com>

BugLink: https://launchpad.net/bugs/1640418

The DMI ID string may be changed in some models. Use PCI ID as an
indentification instead.

Signed-off-by: Wen-chien Jesse Sung <jesse.sung at canonical.com>
---
 drivers/net/wireless/mwifiex/pcie.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c
index 0dbb528..8922593 100644
--- a/drivers/net/wireless/mwifiex/pcie.c
+++ b/drivers/net/wireless/mwifiex/pcie.c
@@ -191,6 +191,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev,
 {
 	struct pcie_service_card *card;
 	struct mwifiex_private *priv;
+	struct pci_dev *pdev_host;
 
 	pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n",
 		 pdev->vendor, pdev->device, pdev->revision);
@@ -219,9 +220,13 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev,
 	}
 
 	priv = mwifiex_get_priv(card->adapter, MWIFIEX_BSS_ROLE_STA);
-	if (dmi_match(DMI_PRODUCT_NAME, "Edge Gateway 5000") ||
-		dmi_match(DMI_PRODUCT_NAME, "Edge Gateway 5100"))
+	pdev_host = pci_get_subsys(PCI_ANY_ID, PCI_ANY_ID, 0x1028, 0x0720, NULL);
+	if (!pdev_host)
+		pdev_host = pci_get_subsys(PCI_ANY_ID, PCI_ANY_ID, 0x1028, 0x0733, NULL);
+	if (pdev_host) {
 		priv->is_edge_gateway = true;
+		pci_dev_put(pdev_host);
+	}
 	return 0;
 }
 
-- 
2.7.4





More information about the kernel-team mailing list