Page MenuHomeFreeBSD

D19946.id56315.diff
No OneTemporary

D19946.id56315.diff

Index: sys/net/iflib.h
===================================================================
--- sys/net/iflib.h
+++ sys/net/iflib.h
@@ -228,6 +228,7 @@
pci_vendor_info_t isc_vendor_info; /* set by iflib prior to attach_pre */
int isc_disable_msix;
if_txrx_t isc_txrx;
+ struct ifmedia *isc_media;
} *if_softc_ctx_t;
/*
Index: sys/net/iflib.c
===================================================================
--- sys/net/iflib.c
+++ sys/net/iflib.c
@@ -184,6 +184,7 @@
struct grouptask ifc_vflr_task;
struct iflib_filter_info ifc_filter_info;
struct ifmedia ifc_media;
+ struct ifmedia *ifc_mediap;
struct sysctl_oid *ifc_sysctl_node;
uint16_t ifc_sysctl_ntxqs;
@@ -237,7 +238,7 @@
iflib_get_media(if_ctx_t ctx)
{
- return (&ctx->ifc_media);
+ return (ctx->ifc_mediap);
}
uint32_t
@@ -4143,7 +4144,7 @@
/* falls thru */
case SIOCGIFMEDIA:
case SIOCGIFXMEDIA:
- err = ifmedia_ioctl(ifp, ifr, &ctx->ifc_media, command);
+ err = ifmedia_ioctl(ifp, ifr, ctx->ifc_mediap, command);
break;
case SIOCGI2C:
{
@@ -4443,6 +4444,14 @@
_iflib_pre_assert(scctx);
ctx->ifc_txrx = *scctx->isc_txrx;
+ if (scctx->isc_media)
+ ctx->ifc_mediap = scctx->isc_media;
+ else {
+ ctx->ifc_mediap = &ctx->ifc_media;
+ ifmedia_init(ctx->ifc_mediap, IFM_IMASK,
+ iflib_media_change, iflib_media_status);
+ }
+
#ifdef INVARIANTS
MPASS(scctx->isc_capabilities);
if (scctx->isc_capabilities & IFCAP_TXCSUM)
@@ -4674,9 +4683,9 @@
device_printf(dev, "IFDI_CLONEATTACH failed %d\n", err);
goto fail_ctx_free;
}
- ifmedia_add(&ctx->ifc_media, IFM_ETHER | IFM_1000_T | IFM_FDX, 0, NULL);
- ifmedia_add(&ctx->ifc_media, IFM_ETHER | IFM_AUTO, 0, NULL);
- ifmedia_set(&ctx->ifc_media, IFM_ETHER | IFM_AUTO);
+ ifmedia_add(ctx->ifc_mediap, IFM_ETHER | IFM_1000_T | IFM_FDX, 0, NULL);
+ ifmedia_add(ctx->ifc_mediap, IFM_ETHER | IFM_AUTO, 0, NULL);
+ ifmedia_set(ctx->ifc_mediap, IFM_ETHER | IFM_AUTO);
#ifdef INVARIANTS
MPASS(scctx->isc_capabilities);
@@ -5202,9 +5211,6 @@
EVENTHANDLER_REGISTER(vlan_unconfig, iflib_vlan_unregister, ctx,
EVENTHANDLER_PRI_FIRST);
- ifmedia_init(&ctx->ifc_media, IFM_IMASK,
- iflib_media_change, iflib_media_status);
-
return (0);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 9, 1:10 AM (7 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31125794
Default Alt Text
D19946.id56315.diff (2 KB)

Event Timeline