Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Jul 2023 16:19:34 GMT
From:      Piotr Kubaj <pkubaj@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: a0302c923150 - main - ix, ixv: Update link status with autonegotiated baudrate value
Message-ID:  <202307111619.36BGJYdv023721@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by pkubaj:

URL: https://cgit.FreeBSD.org/src/commit/?id=a0302c9231502bae8f43edbd5fb8d73132eb8da7

commit a0302c9231502bae8f43edbd5fb8d73132eb8da7
Author:     Piotr Pietruszewski <piotr.pietruszewski@intel.com>
AuthorDate: 2023-07-11 16:14:26 +0000
Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
CommitDate: 2023-07-11 16:14:26 +0000

    ix, ixv: Update link status with autonegotiated baudrate value
    
    Use autonegotiated link speed value while updating link status
    to iflib.
    
    This patch is part of change made in NetBSD kernel
    by Masanobu Saitoh, NetBSD maintainer.
    
    Differential Revision:  https://reviews.freebsd.org/D19176
    Approved by:    erj
---
 sys/dev/ixgbe/if_ix.c       |  3 ++-
 sys/dev/ixgbe/if_ixv.c      |  2 +-
 sys/dev/ixgbe/ixgbe.h       |  2 ++
 sys/dev/ixgbe/ixgbe_osdep.c | 33 +++++++++++++++++++++++++++++++++
 4 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c
index 0179c6456de8..09c0a82279ed 100644
--- a/sys/dev/ixgbe/if_ix.c
+++ b/sys/dev/ixgbe/if_ix.c
@@ -3679,7 +3679,8 @@ ixgbe_if_update_admin_status(if_ctx_t ctx)
 			/* Update DMA coalescing config */
 			ixgbe_config_dmac(sc);
 			/* should actually be negotiated value */
-			iflib_link_state_change(ctx, LINK_STATE_UP, IF_Gbps(10));
+			iflib_link_state_change(ctx, LINK_STATE_UP,
+			    ixgbe_link_speed_to_baudrate(adapter->link_speed));
 
 			if (sc->feat_en & IXGBE_FEATURE_SRIOV)
 				ixgbe_ping_all_vfs(sc);
diff --git a/sys/dev/ixgbe/if_ixv.c b/sys/dev/ixgbe/if_ixv.c
index 848c15fe3b99..13f48a6fd3ec 100644
--- a/sys/dev/ixgbe/if_ixv.c
+++ b/sys/dev/ixgbe/if_ixv.c
@@ -937,7 +937,7 @@ ixv_if_update_admin_status(if_ctx_t ctx)
 				    "Full Duplex");
 			sc->link_active = true;
 			iflib_link_state_change(ctx, LINK_STATE_UP,
-			    IF_Gbps(10));
+			    ixgbe_link_speed_to_baudrate(adapter->link_speed));
 		}
 	} else { /* Link down */
 		if (sc->link_active == true) {
diff --git a/sys/dev/ixgbe/ixgbe.h b/sys/dev/ixgbe/ixgbe.h
index 83a51b4d15e7..a704a6ebbc8c 100644
--- a/sys/dev/ixgbe/ixgbe.h
+++ b/sys/dev/ixgbe/ixgbe.h
@@ -530,6 +530,8 @@ ixv_check_ether_addr(u8 *addr)
 	return (status);
 }
 
+uint64_t ixgbe_link_speed_to_baudrate(ixgbe_link_speed speed);
+
 /* Shared Prototypes */
 
 int  ixgbe_allocate_queues(struct ixgbe_softc *);
diff --git a/sys/dev/ixgbe/ixgbe_osdep.c b/sys/dev/ixgbe/ixgbe_osdep.c
index 49ae5e27f46e..a35ff0ef7889 100644
--- a/sys/dev/ixgbe/ixgbe_osdep.c
+++ b/sys/dev/ixgbe/ixgbe_osdep.c
@@ -76,3 +76,36 @@ ixgbe_write_reg_array(struct ixgbe_hw *hw, u32 reg, u32 offset, u32 val)
 	    ((struct ixgbe_softc *)hw->back)->osdep.mem_bus_space_handle,
 	    reg + (offset << 2), val);
 }
+
+uint64_t
+ixgbe_link_speed_to_baudrate(ixgbe_link_speed speed)
+{
+	uint64_t baudrate;
+
+	switch (speed) {
+	case IXGBE_LINK_SPEED_10GB_FULL:
+		baudrate = IF_Gbps(10);
+		break;
+	case IXGBE_LINK_SPEED_5GB_FULL:
+		baudrate = IF_Gbps(5);
+		break;
+	case IXGBE_LINK_SPEED_2_5GB_FULL:
+		baudrate = IF_Mbps(2500);
+		break;
+	case IXGBE_LINK_SPEED_1GB_FULL:
+		baudrate = IF_Gbps(1);
+		break;
+	case IXGBE_LINK_SPEED_100_FULL:
+		baudrate = IF_Mbps(100);
+		break;
+	case IXGBE_LINK_SPEED_10_FULL:
+		baudrate = IF_Mbps(10);
+		break;
+	case IXGBE_LINK_SPEED_UNKNOWN:
+	default:
+		baudrate = 0;
+		break;
+	}
+
+	return baudrate;
+}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202307111619.36BGJYdv023721>