jmicron2x0: Sync with FreeBSD 11.1.

Same Jamfile cleanups as previous commits.

This completes the upgrade of wired ethernet drivers to 11.1! :D
This commit is contained in:
Augustin Cavalier 2018-07-06 16:53:42 -04:00
parent 081fecc2f1
commit 8101468dbf
11 changed files with 61 additions and 99 deletions

View File

@ -18,9 +18,6 @@ SubInclude HAIKU_TOP src add-ons kernel drivers network vlance ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wb840 ; SubInclude HAIKU_TOP src add-ons kernel drivers network wb840 ;
#SubInclude HAIKU_TOP src add-ons kernel drivers network dp83815 #SubInclude HAIKU_TOP src add-ons kernel drivers network dp83815
# FreeBSD 9.3 drivers
SubInclude HAIKU_TOP src add-ons kernel drivers network jmicron2x0 ;
# FreeBSD 11.1 drivers # FreeBSD 11.1 drivers
SubInclude HAIKU_TOP src add-ons kernel drivers network 3com ; SubInclude HAIKU_TOP src add-ons kernel drivers network 3com ;
SubInclude HAIKU_TOP src add-ons kernel drivers network ar81xx ; SubInclude HAIKU_TOP src add-ons kernel drivers network ar81xx ;
@ -32,6 +29,7 @@ SubInclude HAIKU_TOP src add-ons kernel drivers network broadcom570x ;
SubInclude HAIKU_TOP src add-ons kernel drivers network dec21xxx ; SubInclude HAIKU_TOP src add-ons kernel drivers network dec21xxx ;
SubInclude HAIKU_TOP src add-ons kernel drivers network ipro100 ; SubInclude HAIKU_TOP src add-ons kernel drivers network ipro100 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network ipro1000 ; SubInclude HAIKU_TOP src add-ons kernel drivers network ipro1000 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network jmicron2x0 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network marvell_yukon ; SubInclude HAIKU_TOP src add-ons kernel drivers network marvell_yukon ;
SubInclude HAIKU_TOP src add-ons kernel drivers network nforce ; SubInclude HAIKU_TOP src add-ons kernel drivers network nforce ;
SubInclude HAIKU_TOP src add-ons kernel drivers network pcnet ; SubInclude HAIKU_TOP src add-ons kernel drivers network pcnet ;

View File

@ -1,3 +1,25 @@
SubDir HAIKU_TOP src add-ons kernel drivers network jmicron2x0 ; SubDir HAIKU_TOP src add-ons kernel drivers network jmicron2x0 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network jmicron2x0 dev ; UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd11_network compat ]
: true ;
UsePrivateHeaders net system ;
UsePrivateKernelHeaders ;
SubDirCcFlags [ FDefines _KERNEL=1 FBSD_DRIVER=1 ] ;
UseHeaders [ FDirName $(SUBDIR) ] : true ;
SEARCH_SOURCE += [ FDirName $(SUBDIR) dev mii ] ;
SEARCH_SOURCE += [ FDirName $(SUBDIR) dev jme ] ;
KernelAddon jmicron2x0 :
glue.c
if_jme.c
jmphy.c
: libfreebsd11_network.a
;
ObjectHdrs [ FGristFiles jmphy$(SUFOBJ) ]
: [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_PACKAGING_ARCH)) libs
compat freebsd11_network ] ;
Includes [ FGristFiles jmphy.c ] : <src!libs!compat!freebsd11_network>miidevs.h ;

View File

@ -1,4 +0,0 @@
SubDir HAIKU_TOP src add-ons kernel drivers network jmicron2x0 dev ;
SubInclude HAIKU_TOP src add-ons kernel drivers network jmicron2x0 dev jme ;
SubInclude HAIKU_TOP src add-ons kernel drivers network jmicron2x0 dev mii ;

View File

@ -1,20 +0,0 @@
SubDir HAIKU_TOP src add-ons kernel drivers network jmicron2x0 dev jme ;
UseHeaders [ FDirName $(SUBDIR) .. .. ] : true ;
UseHeaders [ FDirName $(SUBDIR) .. mii ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ] : true ;
UsePrivateHeaders net ;
UsePrivateKernelHeaders ;
# Enabling C++ structures in C only code
Includes [ FGristFiles kernel_c++_structs.h ]
: <src!system!kernel>kernel_c++_struct_sizes.h ;
SubDirCcFlags [ FDefines _KERNEL=1 FBSD_DRIVER=1 ] ;
KernelAddon jmicron2x0 :
if_jme.c
glue.c
: libfreebsd_network.a jmicron2x0_mii.a
;

View File

@ -26,7 +26,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$FreeBSD$"); __FBSDID("$FreeBSD: releng/11.1/sys/dev/jme/if_jme.c 298646 2016-04-26 15:03:15Z pfg $");
#include <sys/param.h> #include <sys/param.h>
#include <sys/systm.h> #include <sys/systm.h>
@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
#include <net/bpf.h> #include <net/bpf.h>
#include <net/if.h> #include <net/if.h>
#include <net/if_var.h>
#include <net/if_arp.h> #include <net/if_arp.h>
#include <net/ethernet.h> #include <net/ethernet.h>
#include <net/if_dl.h> #include <net/if_dl.h>
@ -336,8 +337,7 @@ jme_probe(device_t dev)
vendor = pci_get_vendor(dev); vendor = pci_get_vendor(dev);
devid = pci_get_device(dev); devid = pci_get_device(dev);
sp = jme_devs; sp = jme_devs;
for (i = 0; i < sizeof(jme_devs) / sizeof(jme_devs[0]); for (i = 0; i < nitems(jme_devs); i++, sp++) {
i++, sp++) {
if (vendor == sp->jme_vendorid && if (vendor == sp->jme_vendorid &&
devid == sp->jme_deviceid) { devid == sp->jme_deviceid) {
device_set_desc(dev, sp->jme_name); device_set_desc(dev, sp->jme_name);
@ -803,7 +803,7 @@ jme_attach(device_t dev)
} }
/* Create coalescing sysctl node. */ /* Create coalescing sysctl node. */
jme_sysctl_node(sc); jme_sysctl_node(sc);
if ((error = jme_dma_alloc(sc) != 0)) if ((error = jme_dma_alloc(sc)) != 0)
goto fail; goto fail;
ifp = sc->jme_ifp = if_alloc(IFT_ETHER); ifp = sc->jme_ifp = if_alloc(IFT_ETHER);
@ -877,7 +877,7 @@ jme_attach(device_t dev)
ifp->if_capenable = ifp->if_capabilities; ifp->if_capenable = ifp->if_capabilities;
/* Tell the upper layer(s) we support long frames. */ /* Tell the upper layer(s) we support long frames. */
ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header); ifp->if_hdrlen = sizeof(struct ether_vlan_header);
/* Create local taskq. */ /* Create local taskq. */
sc->jme_tq = taskqueue_create_fast("jme_taskq", M_WAITOK, sc->jme_tq = taskqueue_create_fast("jme_taskq", M_WAITOK,
@ -1407,31 +1407,29 @@ jme_dma_free(struct jme_softc *sc)
/* Tx ring */ /* Tx ring */
if (sc->jme_cdata.jme_tx_ring_tag != NULL) { if (sc->jme_cdata.jme_tx_ring_tag != NULL) {
if (sc->jme_cdata.jme_tx_ring_map) if (sc->jme_rdata.jme_tx_ring_paddr)
bus_dmamap_unload(sc->jme_cdata.jme_tx_ring_tag, bus_dmamap_unload(sc->jme_cdata.jme_tx_ring_tag,
sc->jme_cdata.jme_tx_ring_map); sc->jme_cdata.jme_tx_ring_map);
if (sc->jme_cdata.jme_tx_ring_map && if (sc->jme_rdata.jme_tx_ring)
sc->jme_rdata.jme_tx_ring)
bus_dmamem_free(sc->jme_cdata.jme_tx_ring_tag, bus_dmamem_free(sc->jme_cdata.jme_tx_ring_tag,
sc->jme_rdata.jme_tx_ring, sc->jme_rdata.jme_tx_ring,
sc->jme_cdata.jme_tx_ring_map); sc->jme_cdata.jme_tx_ring_map);
sc->jme_rdata.jme_tx_ring = NULL; sc->jme_rdata.jme_tx_ring = NULL;
sc->jme_cdata.jme_tx_ring_map = NULL; sc->jme_rdata.jme_tx_ring_paddr = 0;
bus_dma_tag_destroy(sc->jme_cdata.jme_tx_ring_tag); bus_dma_tag_destroy(sc->jme_cdata.jme_tx_ring_tag);
sc->jme_cdata.jme_tx_ring_tag = NULL; sc->jme_cdata.jme_tx_ring_tag = NULL;
} }
/* Rx ring */ /* Rx ring */
if (sc->jme_cdata.jme_rx_ring_tag != NULL) { if (sc->jme_cdata.jme_rx_ring_tag != NULL) {
if (sc->jme_cdata.jme_rx_ring_map) if (sc->jme_rdata.jme_rx_ring_paddr)
bus_dmamap_unload(sc->jme_cdata.jme_rx_ring_tag, bus_dmamap_unload(sc->jme_cdata.jme_rx_ring_tag,
sc->jme_cdata.jme_rx_ring_map); sc->jme_cdata.jme_rx_ring_map);
if (sc->jme_cdata.jme_rx_ring_map && if (sc->jme_rdata.jme_rx_ring)
sc->jme_rdata.jme_rx_ring)
bus_dmamem_free(sc->jme_cdata.jme_rx_ring_tag, bus_dmamem_free(sc->jme_cdata.jme_rx_ring_tag,
sc->jme_rdata.jme_rx_ring, sc->jme_rdata.jme_rx_ring,
sc->jme_cdata.jme_rx_ring_map); sc->jme_cdata.jme_rx_ring_map);
sc->jme_rdata.jme_rx_ring = NULL; sc->jme_rdata.jme_rx_ring = NULL;
sc->jme_cdata.jme_rx_ring_map = NULL; sc->jme_rdata.jme_rx_ring_paddr = 0;
bus_dma_tag_destroy(sc->jme_cdata.jme_rx_ring_tag); bus_dma_tag_destroy(sc->jme_cdata.jme_rx_ring_tag);
sc->jme_cdata.jme_rx_ring_tag = NULL; sc->jme_cdata.jme_rx_ring_tag = NULL;
} }
@ -1469,15 +1467,15 @@ jme_dma_free(struct jme_softc *sc)
/* Shared status block. */ /* Shared status block. */
if (sc->jme_cdata.jme_ssb_tag != NULL) { if (sc->jme_cdata.jme_ssb_tag != NULL) {
if (sc->jme_cdata.jme_ssb_map) if (sc->jme_rdata.jme_ssb_block_paddr)
bus_dmamap_unload(sc->jme_cdata.jme_ssb_tag, bus_dmamap_unload(sc->jme_cdata.jme_ssb_tag,
sc->jme_cdata.jme_ssb_map); sc->jme_cdata.jme_ssb_map);
if (sc->jme_cdata.jme_ssb_map && sc->jme_rdata.jme_ssb_block) if (sc->jme_rdata.jme_ssb_block)
bus_dmamem_free(sc->jme_cdata.jme_ssb_tag, bus_dmamem_free(sc->jme_cdata.jme_ssb_tag,
sc->jme_rdata.jme_ssb_block, sc->jme_rdata.jme_ssb_block,
sc->jme_cdata.jme_ssb_map); sc->jme_cdata.jme_ssb_map);
sc->jme_rdata.jme_ssb_block = NULL; sc->jme_rdata.jme_ssb_block = NULL;
sc->jme_cdata.jme_ssb_map = NULL; sc->jme_rdata.jme_ssb_block_paddr = 0;
bus_dma_tag_destroy(sc->jme_cdata.jme_ssb_tag); bus_dma_tag_destroy(sc->jme_cdata.jme_ssb_tag);
sc->jme_cdata.jme_ssb_tag = NULL; sc->jme_cdata.jme_ssb_tag = NULL;
} }
@ -1690,7 +1688,7 @@ jme_encap(struct jme_softc *sc, struct mbuf **m_head)
struct mbuf *m; struct mbuf *m;
bus_dma_segment_t txsegs[JME_MAXTXSEGS]; bus_dma_segment_t txsegs[JME_MAXTXSEGS];
int error, i, nsegs, prod; int error, i, nsegs, prod;
uint32_t cflags, tso_segsz; uint32_t cflags, tsosegsz;
JME_LOCK_ASSERT(sc); JME_LOCK_ASSERT(sc);
@ -1808,10 +1806,10 @@ jme_encap(struct jme_softc *sc, struct mbuf **m_head)
m = *m_head; m = *m_head;
cflags = 0; cflags = 0;
tso_segsz = 0; tsosegsz = 0;
/* Configure checksum offload and TSO. */ /* Configure checksum offload and TSO. */
if ((m->m_pkthdr.csum_flags & CSUM_TSO) != 0) { if ((m->m_pkthdr.csum_flags & CSUM_TSO) != 0) {
tso_segsz = (uint32_t)m->m_pkthdr.tso_segsz << tsosegsz = (uint32_t)m->m_pkthdr.tso_segsz <<
JME_TD_MSS_SHIFT; JME_TD_MSS_SHIFT;
cflags |= JME_TD_TSO; cflags |= JME_TD_TSO;
} else { } else {
@ -1830,7 +1828,7 @@ jme_encap(struct jme_softc *sc, struct mbuf **m_head)
desc = &sc->jme_rdata.jme_tx_ring[prod]; desc = &sc->jme_rdata.jme_tx_ring[prod];
desc->flags = htole32(cflags); desc->flags = htole32(cflags);
desc->buflen = htole32(tso_segsz); desc->buflen = htole32(tsosegsz);
desc->addr_hi = htole32(m->m_pkthdr.len); desc->addr_hi = htole32(m->m_pkthdr.len);
desc->addr_lo = 0; desc->addr_lo = 0;
sc->jme_cdata.jme_tx_cnt++; sc->jme_cdata.jme_tx_cnt++;
@ -1948,7 +1946,7 @@ jme_watchdog(struct jme_softc *sc)
ifp = sc->jme_ifp; ifp = sc->jme_ifp;
if ((sc->jme_flags & JME_FLAG_LINK) == 0) { if ((sc->jme_flags & JME_FLAG_LINK) == 0) {
if_printf(sc->jme_ifp, "watchdog timeout (missed link)\n"); if_printf(sc->jme_ifp, "watchdog timeout (missed link)\n");
ifp->if_oerrors++; if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
ifp->if_drv_flags &= ~IFF_DRV_RUNNING; ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
jme_init_locked(sc); jme_init_locked(sc);
return; return;
@ -1963,7 +1961,7 @@ jme_watchdog(struct jme_softc *sc)
} }
if_printf(sc->jme_ifp, "watchdog timeout\n"); if_printf(sc->jme_ifp, "watchdog timeout\n");
ifp->if_oerrors++; if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
ifp->if_drv_flags &= ~IFF_DRV_RUNNING; ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
jme_init_locked(sc); jme_init_locked(sc);
if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
@ -2282,7 +2280,7 @@ jme_link_task(void *arg, int pending)
m_freem(txd->tx_m); m_freem(txd->tx_m);
txd->tx_m = NULL; txd->tx_m = NULL;
txd->tx_ndesc = 0; txd->tx_ndesc = 0;
ifp->if_oerrors++; if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
} }
} }
} }
@ -2450,13 +2448,13 @@ jme_txeof(struct jme_softc *sc)
break; break;
if ((status & (JME_TD_TMOUT | JME_TD_RETRY_EXP)) != 0) if ((status & (JME_TD_TMOUT | JME_TD_RETRY_EXP)) != 0)
ifp->if_oerrors++; if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
else { else {
ifp->if_opackets++; if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
if ((status & JME_TD_COLLISION) != 0) if ((status & JME_TD_COLLISION) != 0)
ifp->if_collisions += if_inc_counter(ifp, IFCOUNTER_COLLISIONS,
le32toh(txd->tx_desc->buflen) & le32toh(txd->tx_desc->buflen) &
JME_TD_BUF_LEN_MASK; JME_TD_BUF_LEN_MASK);
} }
/* /*
* Only the first descriptor of multi-descriptor * Only the first descriptor of multi-descriptor
@ -2527,7 +2525,7 @@ jme_rxeof(struct jme_softc *sc)
nsegs = JME_RX_NSEGS(status); nsegs = JME_RX_NSEGS(status);
sc->jme_cdata.jme_rxlen = JME_RX_BYTES(status) - JME_RX_PAD_BYTES; sc->jme_cdata.jme_rxlen = JME_RX_BYTES(status) - JME_RX_PAD_BYTES;
if ((status & JME_RX_ERR_STAT) != 0) { if ((status & JME_RX_ERR_STAT) != 0) {
ifp->if_ierrors++; if_inc_counter(ifp, IFCOUNTER_IERRORS, 1);
jme_discard_rxbuf(sc, sc->jme_cdata.jme_rx_cons); jme_discard_rxbuf(sc, sc->jme_cdata.jme_rx_cons);
#ifdef JME_SHOW_ERRORS #ifdef JME_SHOW_ERRORS
device_printf(sc->jme_dev, "%s : receive error = 0x%b\n", device_printf(sc->jme_dev, "%s : receive error = 0x%b\n",
@ -2544,7 +2542,7 @@ jme_rxeof(struct jme_softc *sc)
mp = rxd->rx_m; mp = rxd->rx_m;
/* Add a new receive buffer to the ring. */ /* Add a new receive buffer to the ring. */
if (jme_newbuf(sc, rxd) != 0) { if (jme_newbuf(sc, rxd) != 0) {
ifp->if_iqdrops++; if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1);
/* Reuse buffer. */ /* Reuse buffer. */
for (; count < nsegs; count++) { for (; count < nsegs; count++) {
jme_discard_rxbuf(sc, cons); jme_discard_rxbuf(sc, cons);
@ -2627,7 +2625,7 @@ jme_rxeof(struct jme_softc *sc)
m->m_flags |= M_VLANTAG; m->m_flags |= M_VLANTAG;
} }
ifp->if_ipackets++; if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
/* Pass it on. */ /* Pass it on. */
JME_UNLOCK(sc); JME_UNLOCK(sc);
(*ifp->if_input)(ifp, m); (*ifp->if_input)(ifp, m);
@ -2666,7 +2664,7 @@ jme_rxintr(struct jme_softc *sc, int count)
* sure whether this check is needed. * sure whether this check is needed.
*/ */
pktlen = JME_RX_BYTES(le32toh(desc->buflen)); pktlen = JME_RX_BYTES(le32toh(desc->buflen));
if (nsegs != ((pktlen + (MCLBYTES - 1)) / MCLBYTES)) if (nsegs != howmany(pktlen, MCLBYTES))
break; break;
prog++; prog++;
/* Received a frame. */ /* Received a frame. */

View File

@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $FreeBSD$ * $FreeBSD: releng/11.1/sys/dev/jme/if_jmereg.h 298955 2016-05-03 03:41:25Z pfg $
*/ */
#ifndef _IF_JMEREG_H #ifndef _IF_JMEREG_H
@ -925,7 +925,7 @@
#define TIMER3_TIMEOUT_COUNT_SHIFT 8 #define TIMER3_TIMEOUT_COUNT_SHIFT 8
#define TIMER3_TIMEOUT_VALUE_SHIFT 1 #define TIMER3_TIMEOUT_VALUE_SHIFT 1
/* Aggresive power mode control. */ /* Aggressive power mode control. */
#define JME_APMC 0x087C #define JME_APMC 0x087C
#define APMC_PCIE_SDOWN_STAT 0x80000000 #define APMC_PCIE_SDOWN_STAT 0x80000000
#define APMC_PCIE_SDOWN_ENB 0x40000000 #define APMC_PCIE_SDOWN_ENB 0x40000000

View File

@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $FreeBSD$ * $FreeBSD: releng/11.1/sys/dev/jme/if_jmevar.h 298955 2016-05-03 03:41:25Z pfg $
*/ */
#ifndef _IF_JMEVAR_H #ifndef _IF_JMEVAR_H
@ -35,7 +35,7 @@
#include <sys/taskqueue.h> #include <sys/taskqueue.h>
/* /*
* JMC250 supports upto 1024 descriptors and the number of * JMC250 supports up to 1024 descriptors and the number of
* descriptors should be multiple of 16. * descriptors should be multiple of 16.
*/ */
#define JME_TX_RING_CNT 384 #define JME_TX_RING_CNT 384

View File

@ -1,19 +0,0 @@
SubDir HAIKU_TOP src add-ons kernel drivers network jmicron2x0 dev mii ;
UseHeaders [ FDirName $(SUBDIR) .. .. ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ] : true ;
UsePrivateHeaders net ;
UsePrivateKernelHeaders ;
SubDirCcFlags [ FDefines _KERNEL=1 FBSD_DRIVER=1 ] ;
KernelStaticLibrary jmicron2x0_mii.a
:
jmphy.c
;
ObjectHdrs [ FGristFiles jmphy$(SUFOBJ) ]
: [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_PACKAGING_ARCH)) libs
compat freebsd_network ] ;
Includes [ FGristFiles jmphy.c ] : <src!libs!compat!freebsd_network>miidevs.h ;

View File

@ -26,7 +26,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$FreeBSD$"); __FBSDID("$FreeBSD: releng/11.1/sys/dev/mii/jmphy.c 277108 2015-01-13 06:56:04Z glebius $");
/* /*
* Driver for the JMicron JMP211 10/100/1000, JMP202 10/100 PHY. * Driver for the JMicron JMP211 10/100/1000, JMP202 10/100 PHY.
@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <sys/bus.h> #include <sys/bus.h>
#include <net/if.h> #include <net/if.h>
#include <net/if_var.h>
#include <net/if_media.h> #include <net/if_media.h>
#include <dev/mii/mii.h> #include <dev/mii/mii.h>
@ -99,12 +100,10 @@ jmphy_probe(device_t dev)
static int static int
jmphy_attach(device_t dev) jmphy_attach(device_t dev)
{ {
struct mii_attach_args *ma;
u_int flags; u_int flags;
ma = device_get_ivars(dev);
flags = 0; flags = 0;
if (strcmp(ma->mii_data->mii_ifp->if_dname, "jme") == 0 && if (mii_dev_mac_match(dev, "jme") &&
(miibus_get_flags(dev) & MIIF_MACPRIV0) != 0) (miibus_get_flags(dev) & MIIF_MACPRIV0) != 0)
flags |= MIIF_PHYPRIV0; flags |= MIIF_PHYPRIV0;
mii_phy_dev_attach(dev, flags, &jmphy_funcs, 1); mii_phy_dev_attach(dev, flags, &jmphy_funcs, 1);
@ -121,23 +120,11 @@ jmphy_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;
if (jmphy_setmedia(sc, ife) != EJUSTRETURN) if (jmphy_setmedia(sc, ife) != EJUSTRETURN)
return (EINVAL); return (EINVAL);
break; break;
case MII_TICK: case MII_TICK:
/*
* Is the interface even up?
*/
if ((mii->mii_ifp->if_flags & IFF_UP) == 0)
return (0);
/* /*
* Only used for autonegotiation. * Only used for autonegotiation.
*/ */

View File

@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $FreeBSD$ * $FreeBSD: releng/11.1/sys/dev/mii/jmphyreg.h 216551 2010-12-18 23:52:50Z yongari $
*/ */
#ifndef _DEV_MII_JMPHYREG_H_ #ifndef _DEV_MII_JMPHYREG_H_