aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/cxgbe/t4_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/cxgbe/t4_main.c')
-rw-r--r--sys/dev/cxgbe/t4_main.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c
index 4c141de4a5da..8089eb4cf053 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -1590,7 +1590,9 @@ cxgbe_media_status(struct ifnet *ifp, struct ifmediareq *ifmr)
struct ifmedia *media = NULL;
struct ifmedia_entry *cur;
int speed = pi->link_cfg.speed;
+#ifdef INVARIANTS
int data = (pi->port_type << 8) | pi->mod_type;
+#endif
if (ifp == pi->ifp)
media = &pi->media;
@@ -1601,10 +1603,7 @@ cxgbe_media_status(struct ifnet *ifp, struct ifmediareq *ifmr)
MPASS(media != NULL);
cur = media->ifm_cur;
- if (cur->ifm_data != data) {
- build_medialist(pi, media);
- cur = media->ifm_cur;
- }
+ MPASS(cur->ifm_data == data);
ifmr->ifm_status = IFM_AVALID;
if (!pi->link_cfg.link_ok)
@@ -8005,6 +8004,11 @@ t4_os_portmod_changed(const struct adapter *sc, int idx)
NULL, "LR", "SR", "ER", "TWINAX", "active TWINAX", "LRM"
};
+ build_medialist(pi, &pi->media);
+#ifdef DEV_NETMAP
+ build_medialist(pi, &pi->nm_media);
+#endif
+
if (pi->mod_type == FW_PORT_MOD_TYPE_NONE)
if_printf(pi->ifp, "transceiver unplugged.\n");
else if (pi->mod_type == FW_PORT_MOD_TYPE_UNKNOWN)