broadcom570x: sync with FreeBSD 11.1.

* add a few sysctl definitions, kern_getenv().
This commit is contained in:
Jérôme Duval
2018-05-07 22:05:51 +02:00
parent 57ca9c743d
commit 645dc27d9d
10 changed files with 323 additions and 357 deletions
@@ -28,51 +28,6 @@
#ifndef _BCEREG_H_DEFINED #ifndef _BCEREG_H_DEFINED
#define _BCEREG_H_DEFINED #define _BCEREG_H_DEFINED
#include <sys/param.h>
#include <sys/endian.h>
#include <sys/systm.h>
#include <sys/sockio.h>
#include <sys/mbuf.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <sys/socket.h>
#include <sys/sysctl.h>
#include <sys/queue.h>
#include <net/bpf.h>
#include <net/ethernet.h>
#include <net/if.h>
#include <net/if_arp.h>
#include <net/if_dl.h>
#include <net/if_media.h>
#include <net/if_types.h>
#include <net/if_vlan_var.h>
#include <netinet/in_systm.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
#include <netinet/ip.h>
#include <netinet/ip6.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <machine/bus.h>
#include <machine/resource.h>
#include <sys/bus.h>
#include <sys/rman.h>
#include <dev/mii/mii.h>
#include <dev/mii/miivar.h>
#include "miidevs.h"
#include <dev/mii/brgphyreg.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcivar.h>
#include "miibus_if.h"
/****************************************************************************/ /****************************************************************************/
/* Conversion to FreeBSD type definitions. */ /* Conversion to FreeBSD type definitions. */
/****************************************************************************/ /****************************************************************************/
@@ -281,7 +236,6 @@
* *
* #define BCE_DEBUG * #define BCE_DEBUG
* #define BCE_NVRAM_WRITE_SUPPORT * #define BCE_NVRAM_WRITE_SUPPORT
* #define BCE_JUMBO_HDRSPLIT
*/ */
/****************************************************************************/ /****************************************************************************/
@@ -465,7 +419,7 @@
/* Returns FALSE in "defects" per 2^31 - 1 calls, otherwise returns TRUE. */ /* Returns FALSE in "defects" per 2^31 - 1 calls, otherwise returns TRUE. */
#define DB_RANDOMFALSE(defects) (random() > defects) #define DB_RANDOMFALSE(defects) (random() > defects)
#define DB_OR_RANDOMFALSE(defects) || (random() > defects) #define DB_OR_RANDOMFALSE(defects) || (random() > defects)
#define DB_AND_RANDOMFALSE(defects) && (random() > ddfects) #define DB_AND_RANDOMFALSE(defects) && (random() > defects)
/* Returns TRUE in "defects" per 2^31 - 1 calls, otherwise returns FALSE. */ /* Returns TRUE in "defects" per 2^31 - 1 calls, otherwise returns FALSE. */
#define DB_RANDOMTRUE(defects) (random() < defects) #define DB_RANDOMTRUE(defects) (random() < defects)
@@ -6135,7 +6089,7 @@ struct l2_fhdr {
/****************************************************************************/ /****************************************************************************/
/* The following definitions refer to pre-defined locations in processor */ /* The following definitions refer to pre-defined locations in processor */
/* memory space which allows the driver to enable particular functionality */ /* memory space which allows the driver to enable particular functionality */
/* within the firmware or read specfic information about the running */ /* within the firmware or read specific information about the running */
/* firmware. */ /* firmware. */
/****************************************************************************/ /****************************************************************************/
@@ -6220,7 +6174,7 @@ struct l2_fhdr {
#define RX_IDX(x) ((x) & USABLE_RX_BD_PER_PAGE) #define RX_IDX(x) ((x) & USABLE_RX_BD_PER_PAGE)
/* /*
* To accomodate jumbo frames, the page chain should * To accommodate jumbo frames, the page chain should
* be 4 times larger than the receive chain. * be 4 times larger than the receive chain.
*/ */
#define DEFAULT_PG_PAGES (DEFAULT_RX_PAGES * 4) #define DEFAULT_PG_PAGES (DEFAULT_RX_PAGES * 4)
@@ -6738,6 +6692,7 @@ struct bce_softc
u32 l2fhdr_error_count; u32 l2fhdr_error_count;
u32 dma_map_addr_tx_failed_count; u32 dma_map_addr_tx_failed_count;
u32 dma_map_addr_rx_failed_count; u32 dma_map_addr_rx_failed_count;
u32 watchdog_timeouts;
/* Host coalescing block command register */ /* Host coalescing block command register */
u32 hc_command; u32 hc_command;
@@ -2,7 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers network broadcom570x dev bge ;
UseHeaders [ FDirName $(SUBDIR) .. .. ] : true ; UseHeaders [ FDirName $(SUBDIR) .. .. ] : true ;
UseHeaders [ FDirName $(SUBDIR) .. mii ] : true ; UseHeaders [ FDirName $(SUBDIR) .. mii ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ] : true ; UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd11_network compat ] : true ;
UsePrivateHeaders net system ; UsePrivateHeaders net system ;
UsePrivateKernelHeaders ; UsePrivateKernelHeaders ;
@@ -12,10 +12,10 @@ SubDirCcFlags [ FDefines _KERNEL=1 FBSD_DRIVER=1 _XOPEN_SOURCE ] ;
KernelAddon broadcom570x : KernelAddon broadcom570x :
if_bge.c if_bge.c
glue.c glue.c
: broadcom570x_mii.a libfreebsd_network.a : broadcom570x_mii.a libfreebsd11_network.a
; ;
ObjectHdrs [ FGristFiles if_bge$(SUFOBJ) ] ObjectHdrs [ FGristFiles if_bge$(SUFOBJ) ]
: [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_PACKAGING_ARCH)) libs : [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_PACKAGING_ARCH)) libs
compat freebsd_network ] ; compat freebsd11_network ] ;
Includes [ FGristFiles if_bge.c ] : <src!libs!compat!freebsd_network>miidevs.h ; Includes [ FGristFiles if_bge.c ] : <src!libs!compat!freebsd11_network>miidevs.h ;
File diff suppressed because it is too large Load Diff
@@ -329,6 +329,7 @@
#define BGE_CHIPID_BCM57780_A1 0x57780001 #define BGE_CHIPID_BCM57780_A1 0x57780001
#define BGE_CHIPID_BCM5717_A0 0x05717000 #define BGE_CHIPID_BCM5717_A0 0x05717000
#define BGE_CHIPID_BCM5717_B0 0x05717100 #define BGE_CHIPID_BCM5717_B0 0x05717100
#define BGE_CHIPID_BCM5717_C0 0x05717200
#define BGE_CHIPID_BCM5719_A0 0x05719000 #define BGE_CHIPID_BCM5719_A0 0x05719000
#define BGE_CHIPID_BCM5720_A0 0x05720000 #define BGE_CHIPID_BCM5720_A0 0x05720000
#define BGE_CHIPID_BCM5762_A0 0x05762000 #define BGE_CHIPID_BCM5762_A0 0x05762000
@@ -791,11 +792,11 @@
#define BGE_LEDCTL_10MBPS_LED 0x00000008 #define BGE_LEDCTL_10MBPS_LED 0x00000008
#define BGE_LEDCTL_TRAFLED_OVERRIDE 0x00000010 #define BGE_LEDCTL_TRAFLED_OVERRIDE 0x00000010
#define BGE_LEDCTL_TRAFLED_BLINK 0x00000020 #define BGE_LEDCTL_TRAFLED_BLINK 0x00000020
#define BGE_LEDCTL_TREFLED_BLINK_2 0x00000040 #define BGE_LEDCTL_TRAFLED_BLINK_2 0x00000040
#define BGE_LEDCTL_1000MBPS_STS 0x00000080 #define BGE_LEDCTL_1000MBPS_STS 0x00000080
#define BGE_LEDCTL_100MBPS_STS 0x00000100 #define BGE_LEDCTL_100MBPS_STS 0x00000100
#define BGE_LEDCTL_10MBPS_STS 0x00000200 #define BGE_LEDCTL_10MBPS_STS 0x00000200
#define BGE_LEDCTL_TRADLED_STS 0x00000400 #define BGE_LEDCTL_TRAFLED_STS 0x00000400
#define BGE_LEDCTL_BLINKPERIOD 0x7FF80000 #define BGE_LEDCTL_BLINKPERIOD 0x7FF80000
#define BGE_LEDCTL_BLINKPERIOD_OVERRIDE 0x80000000 #define BGE_LEDCTL_BLINKPERIOD_OVERRIDE 0x80000000
@@ -841,6 +842,7 @@
#define BGE_RXMODE_RX_NO_CRC_CHECK 0x00000200 #define BGE_RXMODE_RX_NO_CRC_CHECK 0x00000200
#define BGE_RXMODE_RX_KEEP_VLAN_DIAG 0x00000400 #define BGE_RXMODE_RX_KEEP_VLAN_DIAG 0x00000400
#define BGE_RXMODE_IPV6_ENABLE 0x01000000 #define BGE_RXMODE_IPV6_ENABLE 0x01000000
#define BGE_RXMODE_IPV4_FRAG_FIX 0x02000000
/* Receive MAC status register */ /* Receive MAC status register */
#define BGE_RXSTAT_REMOTE_XOFFED 0x00000001 #define BGE_RXSTAT_REMOTE_XOFFED 0x00000001
@@ -2451,6 +2453,7 @@ struct bge_status_block {
#define BCOM_DEVICEID_BCM5715 0x1678 #define BCOM_DEVICEID_BCM5715 0x1678
#define BCOM_DEVICEID_BCM5715S 0x1679 #define BCOM_DEVICEID_BCM5715S 0x1679
#define BCOM_DEVICEID_BCM5717 0x1655 #define BCOM_DEVICEID_BCM5717 0x1655
#define BCOM_DEVICEID_BCM5717C 0x1665
#define BCOM_DEVICEID_BCM5718 0x1656 #define BCOM_DEVICEID_BCM5718 0x1656
#define BCOM_DEVICEID_BCM5719 0x1657 #define BCOM_DEVICEID_BCM5719 0x1657
#define BCOM_DEVICEID_BCM5720_PP 0x1658 /* Not released to public. */ #define BCOM_DEVICEID_BCM5720_PP 0x1658 /* Not released to public. */
@@ -2861,16 +2864,6 @@ struct bge_gib {
#define BGE_DMA_MAXADDR 0xFFFFFFFFFF #define BGE_DMA_MAXADDR 0xFFFFFFFFFF
#endif #endif
#ifdef PAE
#define BGE_DMA_BNDRY 0x80000000
#else
#if (BUS_SPACE_MAXADDR > 0xFFFFFFFF)
#define BGE_DMA_BNDRY 0x100000000
#else
#define BGE_DMA_BNDRY 0
#endif
#endif
/* /*
* Ring structures. Most of these reside in host memory and we tell * Ring structures. Most of these reside in host memory and we tell
* the NIC where they are via the ring control blocks. The exceptions * the NIC where they are via the ring control blocks. The exceptions
@@ -1,7 +1,7 @@
SubDir HAIKU_TOP src add-ons kernel drivers network broadcom570x dev mii ; SubDir HAIKU_TOP src add-ons kernel drivers network broadcom570x dev mii ;
UseHeaders [ FDirName $(SUBDIR) .. .. ] : true ; UseHeaders [ FDirName $(SUBDIR) .. .. ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ] : true ; UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd11_network compat ] : true ;
UsePrivateHeaders net system ; UsePrivateHeaders net system ;
UsePrivateKernelHeaders ; UsePrivateKernelHeaders ;
@@ -17,5 +17,5 @@ KernelStaticLibrary broadcom570x_mii.a
ObjectHdrs [ FGristFiles brgphy$(SUFOBJ) ] ObjectHdrs [ FGristFiles brgphy$(SUFOBJ) ]
: [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_PACKAGING_ARCH)) libs : [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_PACKAGING_ARCH)) libs
compat freebsd_network ] ; compat freebsd11_network ] ;
Includes [ FGristFiles brgphy.c ] : <src!libs!compat!freebsd_network>miidevs.h ; Includes [ FGristFiles brgphy.c ] : <src!libs!compat!freebsd11_network>miidevs.h ;
@@ -43,8 +43,10 @@ __FBSDID("$FreeBSD$");
#include <sys/module.h> #include <sys/module.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/bus.h> #include <sys/bus.h>
#include <sys/taskqueue.h>
#include <net/if.h> #include <net/if.h>
#include <net/if_var.h>
#include <net/ethernet.h> #include <net/ethernet.h>
#include <net/if_media.h> #include <net/if_media.h>
@@ -116,7 +118,10 @@ static void brgphy_jumbo_settings(struct mii_softc *, u_long);
static const struct mii_phydesc brgphys[] = { static const struct mii_phydesc brgphys[] = {
MII_PHY_DESC(BROADCOM, BCM5400), MII_PHY_DESC(BROADCOM, BCM5400),
MII_PHY_DESC(BROADCOM, BCM5401), MII_PHY_DESC(BROADCOM, BCM5401),
MII_PHY_DESC(BROADCOM, BCM5402),
MII_PHY_DESC(BROADCOM, BCM5411), MII_PHY_DESC(BROADCOM, BCM5411),
MII_PHY_DESC(BROADCOM, BCM5404),
MII_PHY_DESC(BROADCOM, BCM5424),
MII_PHY_DESC(BROADCOM, BCM54K2), MII_PHY_DESC(BROADCOM, BCM54K2),
MII_PHY_DESC(BROADCOM, BCM5701), MII_PHY_DESC(BROADCOM, BCM5701),
MII_PHY_DESC(BROADCOM, BCM5703), MII_PHY_DESC(BROADCOM, BCM5703),
@@ -129,6 +134,9 @@ static const struct mii_phydesc brgphys[] = {
MII_PHY_DESC(BROADCOM, BCM5752), MII_PHY_DESC(BROADCOM, BCM5752),
MII_PHY_DESC(BROADCOM, BCM5780), MII_PHY_DESC(BROADCOM, BCM5780),
MII_PHY_DESC(BROADCOM, BCM5708C), MII_PHY_DESC(BROADCOM, BCM5708C),
MII_PHY_DESC(BROADCOM, BCM5466),
MII_PHY_DESC(BROADCOM2, BCM5478),
MII_PHY_DESC(BROADCOM2, BCM5488),
MII_PHY_DESC(BROADCOM2, BCM5482), MII_PHY_DESC(BROADCOM2, BCM5482),
MII_PHY_DESC(BROADCOM2, BCM5708S), MII_PHY_DESC(BROADCOM2, BCM5708S),
MII_PHY_DESC(BROADCOM2, BCM5709C), MII_PHY_DESC(BROADCOM2, BCM5709C),
@@ -158,25 +166,33 @@ static const struct mii_phy_funcs brgphy_funcs = {
brgphy_reset brgphy_reset
}; };
#define HS21_PRODUCT_ID "IBM eServer BladeCenter HS21" static const struct hs21_type {
#define HS21_BCM_CHIPID 0x57081021 const uint32_t id;
const char *prod;
} hs21_type_lists[] = {
{ 0x57081021, "IBM eServer BladeCenter HS21" },
{ 0x57081011, "IBM eServer BladeCenter HS21 -[8853PAU]-" },
};
static int static int
detect_hs21(struct bce_softc *bce_sc) detect_hs21(struct bce_softc *bce_sc)
{ {
char *sysenv; char *sysenv;
int found; int found, i;
found = 0; found = 0;
if (bce_sc->bce_chipid == HS21_BCM_CHIPID) { sysenv = kern_getenv("smbios.system.product");
sysenv = getenv("smbios.system.product"); if (sysenv == NULL)
if (sysenv != NULL) { return (found);
if (strncmp(sysenv, HS21_PRODUCT_ID, for (i = 0; i < nitems(hs21_type_lists); i++) {
strlen(HS21_PRODUCT_ID)) == 0) if (bce_sc->bce_chipid == hs21_type_lists[i].id &&
found = 1; strncmp(sysenv, hs21_type_lists[i].prod,
freeenv(sysenv); strlen(hs21_type_lists[i].prod)) == 0) {
found++;
break;
} }
} }
freeenv(sysenv);
return (found); return (found);
} }
@@ -196,7 +212,6 @@ brgphy_attach(device_t dev)
struct bge_softc *bge_sc = NULL; struct bge_softc *bge_sc = NULL;
struct bce_softc *bce_sc = NULL; struct bce_softc *bce_sc = NULL;
struct mii_softc *sc; struct mii_softc *sc;
struct ifnet *ifp;
bsc = device_get_softc(dev); bsc = device_get_softc(dev);
sc = &bsc->mii_sc; sc = &bsc->mii_sc;
@@ -205,13 +220,12 @@ brgphy_attach(device_t dev)
&brgphy_funcs, 0); &brgphy_funcs, 0);
bsc->serdes_flags = 0; bsc->serdes_flags = 0;
ifp = sc->mii_pdata->mii_ifp;
/* Find the MAC driver associated with this PHY. */ /* Find the MAC driver associated with this PHY. */
if (strcmp(ifp->if_dname, "bge") == 0) if (mii_dev_mac_match(dev, "bge"))
bge_sc = ifp->if_softc; bge_sc = mii_dev_mac_softc(dev);
else if (strcmp(ifp->if_dname, "bce") == 0) else if (mii_dev_mac_match(dev, "bce"))
bce_sc = ifp->if_softc; bce_sc = mii_dev_mac_softc(dev);
/* Handle any special cases based on the PHY ID */ /* Handle any special cases based on the PHY ID */
switch (sc->mii_mpd_oui) { switch (sc->mii_mpd_oui) {
@@ -266,20 +280,25 @@ brgphy_attach(device_t dev)
sc->mii_extcapabilities = PHY_READ(sc, MII_EXTSR); sc->mii_extcapabilities = PHY_READ(sc, MII_EXTSR);
device_printf(dev, " "); device_printf(dev, " ");
#define ADD(m, c) ifmedia_add(&sc->mii_pdata->mii_media, (m), (c), NULL)
/* Add the supported media types */ /* Add the supported media types */
if ((sc->mii_flags & MIIF_HAVEFIBER) == 0) { if ((sc->mii_flags & MIIF_HAVEFIBER) == 0) {
mii_phy_add_media(sc); mii_phy_add_media(sc);
printf("\n"); printf("\n");
} else { } else {
sc->mii_anegticks = MII_ANEGTICKS_GIGE; sc->mii_anegticks = MII_ANEGTICKS_GIGE;
ADD(IFM_MAKEWORD(IFM_ETHER, IFM_1000_SX, IFM_FDX, sc->mii_inst), ifmedia_add(&sc->mii_pdata->mii_media,
BRGPHY_S1000 | BRGPHY_BMCR_FDX); IFM_MAKEWORD(IFM_ETHER, IFM_1000_SX, IFM_FDX, sc->mii_inst),
0, NULL);
printf("1000baseSX-FDX, "); printf("1000baseSX-FDX, ");
/* 2.5G support is a software enabled feature on the 5708S and 5709S. */ /*
if (bce_sc && (bce_sc->bce_phy_flags & BCE_PHY_2_5G_CAPABLE_FLAG)) { * 2.5G support is a software enabled feature
ADD(IFM_MAKEWORD(IFM_ETHER, IFM_2500_SX, IFM_FDX, sc->mii_inst), 0); * on the 5708S and 5709S.
*/
if (bce_sc && (bce_sc->bce_phy_flags &
BCE_PHY_2_5G_CAPABLE_FLAG)) {
ifmedia_add(&sc->mii_pdata->mii_media,
IFM_MAKEWORD(IFM_ETHER, IFM_2500_SX, IFM_FDX,
sc->mii_inst), 0, NULL);
printf("2500baseSX-FDX, "); printf("2500baseSX-FDX, ");
} else if ((bsc->serdes_flags & BRGPHY_5708S) && bce_sc && } else if ((bsc->serdes_flags & BRGPHY_5708S) && bce_sc &&
(detect_hs21(bce_sc) != 0)) { (detect_hs21(bce_sc) != 0)) {
@@ -295,11 +314,11 @@ brgphy_attach(device_t dev)
printf("auto-neg workaround, "); printf("auto-neg workaround, ");
bsc->serdes_flags |= BRGPHY_NOANWAIT; bsc->serdes_flags |= BRGPHY_NOANWAIT;
} }
ADD(IFM_MAKEWORD(IFM_ETHER, IFM_AUTO, 0, sc->mii_inst), 0); ifmedia_add(&sc->mii_pdata->mii_media, IFM_MAKEWORD(IFM_ETHER,
IFM_AUTO, 0, sc->mii_inst), 0, NULL);
printf("auto\n"); printf("auto\n");
} }
#undef ADD
MIIBUS_MEDIAINIT(sc->mii_dev); MIIBUS_MEDIAINIT(sc->mii_dev);
return (0); return (0);
} }
@@ -314,10 +333,6 @@ brgphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd)
case MII_POLLSTAT: case MII_POLLSTAT:
break; break;
case MII_MEDIACHG: case MII_MEDIACHG:
/* If the interface is not up, don't do anything. */
if ((mii->mii_ifp->if_flags & IFF_UP) == 0)
break;
/* Todo: Why is this here? Is it really needed? */ /* Todo: Why is this here? Is it really needed? */
PHY_RESET(sc); /* XXX hardware bug work-around */ PHY_RESET(sc); /* XXX hardware bug work-around */
@@ -337,11 +352,6 @@ brgphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd)
} }
break; break;
case MII_TICK: case MII_TICK:
/* Bail if the interface isn't up. */
if ((mii->mii_ifp->if_flags & IFF_UP) == 0)
return (0);
/* Bail if autoneg isn't in process. */ /* Bail if autoneg isn't in process. */
if (IFM_SUBTYPE(ife->ifm_media) != IFM_AUTO) { if (IFM_SUBTYPE(ife->ifm_media) != IFM_AUTO) {
sc->mii_ticks = 0; sc->mii_ticks = 0;
@@ -887,7 +897,7 @@ brgphy_reset(struct mii_softc *sc)
{ {
struct bge_softc *bge_sc = NULL; struct bge_softc *bge_sc = NULL;
struct bce_softc *bce_sc = NULL; struct bce_softc *bce_sc = NULL;
struct ifnet *ifp; if_t ifp;
int i, val; int i, val;
/* /*
@@ -940,11 +950,10 @@ brgphy_reset(struct mii_softc *sc)
ifp = sc->mii_pdata->mii_ifp; ifp = sc->mii_pdata->mii_ifp;
/* Find the driver associated with this PHY. */ /* Find the driver associated with this PHY. */
if (strcmp(ifp->if_dname, "bge") == 0) { if (mii_phy_mac_match(sc, "bge"))
bge_sc = ifp->if_softc; bge_sc = mii_phy_mac_softc(sc);
} else if (strcmp(ifp->if_dname, "bce") == 0) { else if (mii_phy_mac_match(sc, "bce"))
bce_sc = ifp->if_softc; bce_sc = mii_phy_mac_softc(sc);
}
if (bge_sc) { if (bge_sc) {
/* Fix up various bugs */ /* Fix up various bugs */
@@ -962,7 +971,7 @@ brgphy_reset(struct mii_softc *sc)
brgphy_fixup_jitter_bug(sc); brgphy_fixup_jitter_bug(sc);
if (bge_sc->bge_flags & BGE_FLAG_JUMBO) if (bge_sc->bge_flags & BGE_FLAG_JUMBO)
brgphy_jumbo_settings(sc, ifp->if_mtu); brgphy_jumbo_settings(sc, if_getmtu(ifp));
if ((bge_sc->bge_phy_flags & BGE_PHY_NO_WIRESPEED) == 0) if ((bge_sc->bge_phy_flags & BGE_PHY_NO_WIRESPEED) == 0)
brgphy_ethernet_wirespeed(sc); brgphy_ethernet_wirespeed(sc);
@@ -1073,11 +1082,11 @@ brgphy_reset(struct mii_softc *sc)
(BCE_CHIP_REV(bce_sc) == BCE_CHIP_REV_Bx)) (BCE_CHIP_REV(bce_sc) == BCE_CHIP_REV_Bx))
brgphy_fixup_disable_early_dac(sc); brgphy_fixup_disable_early_dac(sc);
brgphy_jumbo_settings(sc, ifp->if_mtu); brgphy_jumbo_settings(sc, if_getmtu(ifp));
brgphy_ethernet_wirespeed(sc); brgphy_ethernet_wirespeed(sc);
} else { } else {
brgphy_fixup_ber_bug(sc); brgphy_fixup_ber_bug(sc);
brgphy_jumbo_settings(sc, ifp->if_mtu); brgphy_jumbo_settings(sc, if_getmtu(ifp));
brgphy_ethernet_wirespeed(sc); brgphy_ethernet_wirespeed(sc);
} }
} }
@@ -140,12 +140,6 @@ ukphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd)
break; break;
case MII_MEDIACHG: case MII_MEDIACHG:
/*
* If the interface is not up, don't do anything.
*/
if ((mii->mii_ifp->if_flags & IFF_UP) == 0)
break;
mii_phy_setmedia(sc); mii_phy_setmedia(sc);
break; break;
@@ -50,8 +50,16 @@ struct sysctl_oid_list {
#define CTLFLAG_SKIP 0x01000000 /* Skip this sysctl when listing */ #define CTLFLAG_SKIP 0x01000000 /* Skip this sysctl when listing */
#define CTLMASK_SECURE 0x00F00000 /* Secure level */ #define CTLMASK_SECURE 0x00F00000 /* Secure level */
#define CTLFLAG_TUN 0x00080000 /* Tunable variable */ #define CTLFLAG_TUN 0x00080000 /* Tunable variable */
#define CTLFLAG_RDTUN (CTLFLAG_RD|CTLFLAG_TUN)
#define CTLFLAG_RWTUN (CTLFLAG_RW|CTLFLAG_TUN)
#define CTLFLAG_MPSAFE 0x00040000 /* Handler is MP safe */ #define CTLFLAG_MPSAFE 0x00040000 /* Handler is MP safe */
#define CTLFLAG_RDTUN (CTLFLAG_RD|CTLFLAG_TUN) #define CTLFLAG_VNET 0x00020000 /* Prisons with vnet can fiddle */
#define CTLFLAG_DYING 0x00010000 /* Oid is being removed */
#define CTLFLAG_CAPRD 0x00008000 /* Can be read in capability mode */
#define CTLFLAG_CAPWR 0x00004000 /* Can be written in capability mode */
#define CTLFLAG_STATS 0x00002000 /* Statistics, not a tuneable */
#define CTLFLAG_NOFETCH 0x00001000 /* Don't fetch tunable from getenv() */
#define CTLFLAG_CAPRW (CTLFLAG_CAPRD|CTLFLAG_CAPWR)
static inline int static inline int
@@ -99,5 +99,6 @@ void free_unr(struct unrhdr *, u_int);
extern char *getenv(const char *name); extern char *getenv(const char *name);
extern void freeenv(char *env); extern void freeenv(char *env);
extern char *kern_getenv(const char *name);
#endif /* _FBSD_COMPAT_SYS_SYSTM_H_ */ #endif /* _FBSD_COMPAT_SYS_SYSTM_H_ */
@@ -18,3 +18,11 @@ getenv(const char *name)
{ {
return NULL; return NULL;
} }
char *
kern_getenv(const char *name)
{
return NULL;
}