Module Name: src
Committed By: msaitoh
Date: Fri Jul 6 02:36:35 UTC 2018
Modified Files:
src/sys/dev/pci/ixgbe: ixgbe.c ixgbe_type.h ixgbe_x550.c
Log Message:
Add force_10_100_autonego sysctl. The default vaule is 0(false).
This sysctl is only for 550EM_a with PHY firmware for a while.
To generate a diff of this commit:
cvs rdiff -u -r1.162 -r1.163 src/sys/dev/pci/ixgbe/ixgbe.c
cvs rdiff -u -r1.35 -r1.36 src/sys/dev/pci/ixgbe/ixgbe_type.h
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/pci/ixgbe/ixgbe_x550.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.162 src/sys/dev/pci/ixgbe/ixgbe.c:1.163
--- src/sys/dev/pci/ixgbe/ixgbe.c:1.162 Tue Jul 3 04:02:06 2018
+++ src/sys/dev/pci/ixgbe/ixgbe.c Fri Jul 6 02:36:35 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.162 2018/07/03 04:02:06 msaitoh Exp $ */
+/* $NetBSD: ixgbe.c,v 1.163 2018/07/06 02:36:35 msaitoh Exp $ */
/******************************************************************************
@@ -3317,6 +3317,15 @@ ixgbe_add_device_sysctls(struct adapter
aprint_error_dev(dev, "could not create sysctl\n");
}
+ if ((hw->mac.type == ixgbe_mac_X550EM_a)
+ && (hw->phy.type == ixgbe_phy_fw))
+ if (sysctl_createv(log, 0, &rnode, &cnode, CTLFLAG_READWRITE,
+ CTLTYPE_BOOL, "force_10_100_autonego",
+ SYSCTL_DESCR("Force autonego on 10M and 100M"),
+ NULL, 0, &hw->phy.force_10_100_autonego, 0,
+ CTL_CREATE, CTL_EOL) != 0)
+ aprint_error_dev(dev, "could not create sysctl\n");
+
if (adapter->feat_cap & IXGBE_FEATURE_EEE) {
if (sysctl_createv(log, 0, &rnode, &cnode, CTLFLAG_READWRITE,
CTLTYPE_INT, "eee_state",
Index: src/sys/dev/pci/ixgbe/ixgbe_type.h
diff -u src/sys/dev/pci/ixgbe/ixgbe_type.h:1.35 src/sys/dev/pci/ixgbe/ixgbe_type.h:1.36
--- src/sys/dev/pci/ixgbe/ixgbe_type.h:1.35 Mon Jun 11 10:34:18 2018
+++ src/sys/dev/pci/ixgbe/ixgbe_type.h Fri Jul 6 02:36:35 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe_type.h,v 1.35 2018/06/11 10:34:18 msaitoh Exp $ */
+/* $NetBSD: ixgbe_type.h,v 1.36 2018/07/06 02:36:35 msaitoh Exp $ */
/******************************************************************************
SPDX-License-Identifier: BSD-3-Clause
@@ -4166,6 +4166,7 @@ struct ixgbe_phy_info {
enum ixgbe_media_type media_type;
u32 phy_semaphore_mask;
bool reset_disable;
+ bool force_10_100_autonego;
ixgbe_autoneg_advertised autoneg_advertised;
ixgbe_link_speed speeds_supported;
ixgbe_link_speed eee_speeds_supported;
Index: src/sys/dev/pci/ixgbe/ixgbe_x550.c
diff -u src/sys/dev/pci/ixgbe/ixgbe_x550.c:1.12 src/sys/dev/pci/ixgbe/ixgbe_x550.c:1.13
--- src/sys/dev/pci/ixgbe/ixgbe_x550.c:1.12 Wed Apr 4 08:59:22 2018
+++ src/sys/dev/pci/ixgbe/ixgbe_x550.c Fri Jul 6 02:36:35 2018
@@ -847,9 +847,10 @@ static s32 ixgbe_setup_fw_link(struct ix
setup[0] |= FW_PHY_ACT_SETUP_LINK_EEE;
#ifdef IXGBE_DENVERTON_WA
- /* Don't use auto-nego for 10/100Mbps */
- if ((hw->phy.autoneg_advertised == IXGBE_LINK_SPEED_100_FULL)
- || (hw->phy.autoneg_advertised == IXGBE_LINK_SPEED_10_FULL)) {
+ if ((hw->phy.force_10_100_autonego == false)
+ && ((hw->phy.autoneg_advertised == IXGBE_LINK_SPEED_100_FULL)
+ || (hw->phy.autoneg_advertised == IXGBE_LINK_SPEED_10_FULL))) {
+ /* Don't use auto-nego for 10/100Mbps */
setup[0] &= ~FW_PHY_ACT_SETUP_LINK_AN;
setup[0] &= ~FW_PHY_ACT_SETUP_LINK_EEE;
setup[0] &= ~(FW_PHY_ACT_SETUP_LINK_PAUSE_RXTX
@@ -862,6 +863,9 @@ static s32 ixgbe_setup_fw_link(struct ix
return rc;
#ifdef IXGBE_DENVERTON_WA
+ if (hw->phy.force_10_100_autonego == true)
+ goto out;
+
ret_val = ixgbe_read_phy_reg_x550a(hw, MII_BMCR, 0, &phydata);
if (ret_val != 0)
goto out;