Page MenuHomeFreeBSD

D811.id.diff
No OneTemporary

D811.id.diff

Index: sys/dev/ixgbe/ixgbe.c
===================================================================
--- sys/dev/ixgbe/ixgbe.c
+++ sys/dev/ixgbe/ixgbe.c
@@ -1698,6 +1698,7 @@
ixgbe_media_status(struct ifnet * ifp, struct ifmediareq * ifmr)
{
struct adapter *adapter = ifp->if_softc;
+ struct ixgbe_hw *hw = &adapter->hw;
INIT_DEBUGOUT("ixgbe_media_status: begin");
IXGBE_CORE_LOCK(adapter);
@@ -1713,17 +1714,29 @@
ifmr->ifm_status |= IFM_ACTIVE;
- switch (adapter->link_speed) {
- case IXGBE_LINK_SPEED_100_FULL:
- ifmr->ifm_active |= IFM_100_TX | IFM_FDX;
- break;
- case IXGBE_LINK_SPEED_1GB_FULL:
- ifmr->ifm_active |= IFM_1000_SX | IFM_FDX;
- break;
- case IXGBE_LINK_SPEED_10GB_FULL:
- ifmr->ifm_active |= adapter->optics | IFM_FDX;
- break;
- }
+ /*
+ * Not all NIC are 1000baseSX as an example X540T.
+ * We must set properly the media based on NIC model.
+ */
+ switch (hw->device_id) {
+ case IXGBE_DEV_ID_X540T:
+ if (adapter->link_speed == IXGBE_LINK_SPEED_100_FULL)
+ ifmr->ifm_active |= IFM_100_TX | IFM_FDX;
+ else if (adapter->link_speed == IXGBE_LINK_SPEED_1GB_FULL)
+ ifmr->ifm_active |= IFM_1000_T | IFM_FDX;
+ else if (adapter->link_speed == IXGBE_LINK_SPEED_10GB_FULL)
+ ifmr->ifm_active |= adapter->optics | IFM_FDX;
+ break;
+ default:
+ if (adapter->link_speed == IXGBE_LINK_SPEED_100_FULL)
+ ifmr->ifm_active |= IFM_100_TX | IFM_FDX;
+ else if (adapter->link_speed == IXGBE_LINK_SPEED_1GB_FULL)
+ ifmr->ifm_active |= IFM_1000_SX | IFM_FDX;
+ else if (adapter->link_speed == IXGBE_LINK_SPEED_10GB_FULL)
+ ifmr->ifm_active |= adapter->optics | IFM_FDX;
+ break;
+ }
+
IXGBE_CORE_UNLOCK(adapter);

File Metadata

Mime Type
text/plain
Expires
Thu, Dec 4, 8:45 PM (11 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26622134
Default Alt Text
D811.id.diff (1 KB)

Event Timeline