Module Name:    src
Committed By:   msaitoh
Date:           Thu Aug 27 04:54:43 UTC 2020

Modified Files:
        src/sys/dev/pci/ixgbe: ixgbe.c

Log Message:
Limit MA10-ST0's quirk only for on-chip devices.


To generate a diff of this commit:
cvs rdiff -u -r1.247 -r1.248 src/sys/dev/pci/ixgbe/ixgbe.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/ixgbe/ixgbe.c
diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.247 src/sys/dev/pci/ixgbe/ixgbe.c:1.248
--- src/sys/dev/pci/ixgbe/ixgbe.c:1.247	Thu Aug 27 04:49:52 2020
+++ src/sys/dev/pci/ixgbe/ixgbe.c	Thu Aug 27 04:54:43 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.247 2020/08/27 04:49:52 msaitoh Exp $ */
+/* $NetBSD: ixgbe.c,v 1.248 2020/08/27 04:54:43 msaitoh Exp $ */
 
 /******************************************************************************
 
@@ -768,19 +768,26 @@ static void
 ixgbe_quirks(struct adapter *adapter)
 {
 	device_t dev = adapter->dev;
+	struct ixgbe_hw *hw = &adapter->hw;
 	const char *vendor, *product;
 
-	/* Quirk for inverted logic of SFP+'s MOD_ABS */
-	vendor = pmf_get_platform("system-vendor");
-	product = pmf_get_platform("system-product");
+	if (hw->device_id == IXGBE_DEV_ID_X550EM_A_SFP_N) {
+		/*
+		 * Quirk for inverted logic of SFP+'s MOD_ABS on GIGABYTE
+		 * MA10-ST0.
+		 */
+		vendor = pmf_get_platform("system-vendor");
+		product = pmf_get_platform("system-product");
 
-	if ((vendor == NULL) || (product == NULL))
-		return;
+		if ((vendor == NULL) || (product == NULL))
+			return;
 
-	if ((strcmp(vendor, "GIGABYTE") == 0) &&
-	    (strcmp(product, "MA10-ST0") == 0)) {
-		aprint_verbose_dev(dev, "Enable SFP+ MOD_ABS inverse quirk\n");
-		adapter->quirks |= IXGBE_QUIRK_MOD_ABS_INVERT;
+		if ((strcmp(vendor, "GIGABYTE") == 0) &&
+		    (strcmp(product, "MA10-ST0") == 0)) {
+			aprint_verbose_dev(dev,
+			    "Enable SFP+ MOD_ABS inverse quirk\n");
+			adapter->quirks |= IXGBE_QUIRK_MOD_ABS_INVERT;
+		}
 	}
 }
 
@@ -831,9 +838,6 @@ ixgbe_attach(device_t parent, device_t d
 	aprint_normal(": %s, Version - %s\n",
 	    ixgbe_strings[ent->index], ixgbe_driver_version);
 
-	/* Set quirk flags */
-	ixgbe_quirks(adapter);
-
 	/* Core Lock Init */
 	IXGBE_CORE_LOCK_INIT(adapter, device_xname(dev));
 
@@ -860,6 +864,9 @@ ixgbe_attach(device_t parent, device_t d
 	hw->subsystem_vendor_id = PCI_SUBSYS_VENDOR(subid);
 	hw->subsystem_device_id = PCI_SUBSYS_ID(subid);
 
+	/* Set quirk flags */
+	ixgbe_quirks(adapter);
+
 	/*
 	 * Make sure BUSMASTER is set
 	 */

Reply via email to