From 8101468dbf4594e6790c79c79d1083081d1d0796 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 6 Jul 2018 16:53:42 -0400 Subject: [PATCH] jmicron2x0: Sync with FreeBSD 11.1. Same Jamfile cleanups as previous commits. This completes the upgrade of wired ethernet drivers to 11.1! :D --- src/add-ons/kernel/drivers/network/Jamfile | 4 +- .../kernel/drivers/network/jmicron2x0/Jamfile | 24 +++++++- .../drivers/network/jmicron2x0/dev/Jamfile | 4 -- .../network/jmicron2x0/dev/jme/Jamfile | 20 ------- .../network/jmicron2x0/dev/jme/if_jme.c | 60 +++++++++---------- .../network/jmicron2x0/dev/jme/if_jmereg.h | 4 +- .../network/jmicron2x0/dev/jme/if_jmevar.h | 4 +- .../network/jmicron2x0/dev/mii/Jamfile | 19 ------ .../network/jmicron2x0/dev/mii/jmphy.c | 19 +----- .../network/jmicron2x0/dev/mii/jmphyreg.h | 2 +- .../network/jmicron2x0/{dev/jme => }/glue.c | 0 11 files changed, 61 insertions(+), 99 deletions(-) delete mode 100644 src/add-ons/kernel/drivers/network/jmicron2x0/dev/Jamfile delete mode 100644 src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/Jamfile delete mode 100644 src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/Jamfile rename src/add-ons/kernel/drivers/network/jmicron2x0/{dev/jme => }/glue.c (100%) diff --git a/src/add-ons/kernel/drivers/network/Jamfile b/src/add-ons/kernel/drivers/network/Jamfile index 0e55c31687..fe77b50793 100644 --- a/src/add-ons/kernel/drivers/network/Jamfile +++ b/src/add-ons/kernel/drivers/network/Jamfile @@ -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 dp83815 -# FreeBSD 9.3 drivers -SubInclude HAIKU_TOP src add-ons kernel drivers network jmicron2x0 ; - # FreeBSD 11.1 drivers SubInclude HAIKU_TOP src add-ons kernel drivers network 3com ; 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 ipro100 ; 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 nforce ; SubInclude HAIKU_TOP src add-ons kernel drivers network pcnet ; diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/Jamfile b/src/add-ons/kernel/drivers/network/jmicron2x0/Jamfile index 47a0b0b8cd..fb721f60d0 100644 --- a/src/add-ons/kernel/drivers/network/jmicron2x0/Jamfile +++ b/src/add-ons/kernel/drivers/network/jmicron2x0/Jamfile @@ -1,3 +1,25 @@ 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 ] : miidevs.h ; diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/Jamfile b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/Jamfile deleted file mode 100644 index 207fba405d..0000000000 --- a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/Jamfile +++ /dev/null @@ -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 ; diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/Jamfile b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/Jamfile deleted file mode 100644 index 028e421954..0000000000 --- a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/Jamfile +++ /dev/null @@ -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 ] - : 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 - ; diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jme.c b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jme.c index 832acef0e5..5adaa3e19b 100644 --- a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jme.c +++ b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jme.c @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD$"); +__FBSDID("$FreeBSD: releng/11.1/sys/dev/jme/if_jme.c 298646 2016-04-26 15:03:15Z pfg $"); #include #include @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -336,8 +337,7 @@ jme_probe(device_t dev) vendor = pci_get_vendor(dev); devid = pci_get_device(dev); sp = jme_devs; - for (i = 0; i < sizeof(jme_devs) / sizeof(jme_devs[0]); - i++, sp++) { + for (i = 0; i < nitems(jme_devs); i++, sp++) { if (vendor == sp->jme_vendorid && devid == sp->jme_deviceid) { device_set_desc(dev, sp->jme_name); @@ -803,7 +803,7 @@ jme_attach(device_t dev) } /* Create coalescing sysctl node. */ jme_sysctl_node(sc); - if ((error = jme_dma_alloc(sc) != 0)) + if ((error = jme_dma_alloc(sc)) != 0) goto fail; ifp = sc->jme_ifp = if_alloc(IFT_ETHER); @@ -877,7 +877,7 @@ jme_attach(device_t dev) ifp->if_capenable = ifp->if_capabilities; /* 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. */ sc->jme_tq = taskqueue_create_fast("jme_taskq", M_WAITOK, @@ -1407,31 +1407,29 @@ jme_dma_free(struct jme_softc *sc) /* Tx ring */ 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, sc->jme_cdata.jme_tx_ring_map); - if (sc->jme_cdata.jme_tx_ring_map && - sc->jme_rdata.jme_tx_ring) + if (sc->jme_rdata.jme_tx_ring) bus_dmamem_free(sc->jme_cdata.jme_tx_ring_tag, sc->jme_rdata.jme_tx_ring, sc->jme_cdata.jme_tx_ring_map); 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); sc->jme_cdata.jme_tx_ring_tag = NULL; } /* Rx ring */ 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, sc->jme_cdata.jme_rx_ring_map); - if (sc->jme_cdata.jme_rx_ring_map && - sc->jme_rdata.jme_rx_ring) + if (sc->jme_rdata.jme_rx_ring) bus_dmamem_free(sc->jme_cdata.jme_rx_ring_tag, sc->jme_rdata.jme_rx_ring, sc->jme_cdata.jme_rx_ring_map); 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); sc->jme_cdata.jme_rx_ring_tag = NULL; } @@ -1469,15 +1467,15 @@ jme_dma_free(struct jme_softc *sc) /* Shared status block. */ 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, 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, sc->jme_rdata.jme_ssb_block, sc->jme_cdata.jme_ssb_map); 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); sc->jme_cdata.jme_ssb_tag = NULL; } @@ -1690,7 +1688,7 @@ jme_encap(struct jme_softc *sc, struct mbuf **m_head) struct mbuf *m; bus_dma_segment_t txsegs[JME_MAXTXSEGS]; int error, i, nsegs, prod; - uint32_t cflags, tso_segsz; + uint32_t cflags, tsosegsz; JME_LOCK_ASSERT(sc); @@ -1808,10 +1806,10 @@ jme_encap(struct jme_softc *sc, struct mbuf **m_head) m = *m_head; cflags = 0; - tso_segsz = 0; + tsosegsz = 0; /* Configure checksum offload and TSO. */ 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; cflags |= JME_TD_TSO; } else { @@ -1830,7 +1828,7 @@ jme_encap(struct jme_softc *sc, struct mbuf **m_head) desc = &sc->jme_rdata.jme_tx_ring[prod]; desc->flags = htole32(cflags); - desc->buflen = htole32(tso_segsz); + desc->buflen = htole32(tsosegsz); desc->addr_hi = htole32(m->m_pkthdr.len); desc->addr_lo = 0; sc->jme_cdata.jme_tx_cnt++; @@ -1948,7 +1946,7 @@ jme_watchdog(struct jme_softc *sc) ifp = sc->jme_ifp; if ((sc->jme_flags & JME_FLAG_LINK) == 0) { 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; jme_init_locked(sc); return; @@ -1963,7 +1961,7 @@ jme_watchdog(struct jme_softc *sc) } 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; jme_init_locked(sc); if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) @@ -2282,7 +2280,7 @@ jme_link_task(void *arg, int pending) m_freem(txd->tx_m); txd->tx_m = NULL; 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; if ((status & (JME_TD_TMOUT | JME_TD_RETRY_EXP)) != 0) - ifp->if_oerrors++; + if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); else { - ifp->if_opackets++; + if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1); if ((status & JME_TD_COLLISION) != 0) - ifp->if_collisions += + if_inc_counter(ifp, IFCOUNTER_COLLISIONS, le32toh(txd->tx_desc->buflen) & - JME_TD_BUF_LEN_MASK; + JME_TD_BUF_LEN_MASK); } /* * Only the first descriptor of multi-descriptor @@ -2527,7 +2525,7 @@ jme_rxeof(struct jme_softc *sc) nsegs = JME_RX_NSEGS(status); sc->jme_cdata.jme_rxlen = JME_RX_BYTES(status) - JME_RX_PAD_BYTES; 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); #ifdef JME_SHOW_ERRORS 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; /* Add a new receive buffer to the ring. */ if (jme_newbuf(sc, rxd) != 0) { - ifp->if_iqdrops++; + if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1); /* Reuse buffer. */ for (; count < nsegs; count++) { jme_discard_rxbuf(sc, cons); @@ -2627,7 +2625,7 @@ jme_rxeof(struct jme_softc *sc) m->m_flags |= M_VLANTAG; } - ifp->if_ipackets++; + if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); /* Pass it on. */ JME_UNLOCK(sc); (*ifp->if_input)(ifp, m); @@ -2666,7 +2664,7 @@ jme_rxintr(struct jme_softc *sc, int count) * sure whether this check is needed. */ pktlen = JME_RX_BYTES(le32toh(desc->buflen)); - if (nsegs != ((pktlen + (MCLBYTES - 1)) / MCLBYTES)) + if (nsegs != howmany(pktlen, MCLBYTES)) break; prog++; /* Received a frame. */ diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jmereg.h b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jmereg.h index f7dfb129e8..592357bb44 100644 --- a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jmereg.h +++ b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jmereg.h @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * 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 @@ -925,7 +925,7 @@ #define TIMER3_TIMEOUT_COUNT_SHIFT 8 #define TIMER3_TIMEOUT_VALUE_SHIFT 1 -/* Aggresive power mode control. */ +/* Aggressive power mode control. */ #define JME_APMC 0x087C #define APMC_PCIE_SDOWN_STAT 0x80000000 #define APMC_PCIE_SDOWN_ENB 0x40000000 diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jmevar.h b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jmevar.h index 1a1e81cc63..765b9233d2 100644 --- a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jmevar.h +++ b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/if_jmevar.h @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * 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 @@ -35,7 +35,7 @@ #include /* - * 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. */ #define JME_TX_RING_CNT 384 diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/Jamfile b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/Jamfile deleted file mode 100644 index 842cc68cee..0000000000 --- a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/Jamfile +++ /dev/null @@ -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 ] : miidevs.h ; diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/jmphy.c b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/jmphy.c index 14fdf7e787..5571a89e91 100644 --- a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/jmphy.c +++ b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/jmphy.c @@ -26,7 +26,7 @@ */ #include -__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. @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include @@ -99,12 +100,10 @@ jmphy_probe(device_t dev) static int jmphy_attach(device_t dev) { - struct mii_attach_args *ma; u_int flags; - ma = device_get_ivars(dev); 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) flags |= MIIF_PHYPRIV0; 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; 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) return (EINVAL); break; case MII_TICK: - /* - * Is the interface even up? - */ - if ((mii->mii_ifp->if_flags & IFF_UP) == 0) - return (0); - /* * Only used for autonegotiation. */ diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/jmphyreg.h b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/jmphyreg.h index ec668ad1cc..4ec10d74c7 100644 --- a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/jmphyreg.h +++ b/src/add-ons/kernel/drivers/network/jmicron2x0/dev/mii/jmphyreg.h @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * 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_ diff --git a/src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/glue.c b/src/add-ons/kernel/drivers/network/jmicron2x0/glue.c similarity index 100% rename from src/add-ons/kernel/drivers/network/jmicron2x0/dev/jme/glue.c rename to src/add-ons/kernel/drivers/network/jmicron2x0/glue.c