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:
parent
081fecc2f1
commit
8101468dbf
|
@ -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 ;
|
||||
|
|
|
@ -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 ] : <src!libs!compat!freebsd11_network>miidevs.h ;
|
||||
|
|
|
@ -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 ;
|
|
@ -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
|
||||
;
|
|
@ -26,7 +26,7 @@
|
|||
*/
|
||||
|
||||
#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/systm.h>
|
||||
|
@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
|
|||
|
||||
#include <net/bpf.h>
|
||||
#include <net/if.h>
|
||||
#include <net/if_var.h>
|
||||
#include <net/if_arp.h>
|
||||
#include <net/ethernet.h>
|
||||
#include <net/if_dl.h>
|
||||
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 <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.
|
||||
*/
|
||||
#define JME_TX_RING_CNT 384
|
||||
|
|
|
@ -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 ;
|
|
@ -26,7 +26,7 @@
|
|||
*/
|
||||
|
||||
#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.
|
||||
|
@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
|
|||
#include <sys/bus.h>
|
||||
|
||||
#include <net/if.h>
|
||||
#include <net/if_var.h>
|
||||
#include <net/if_media.h>
|
||||
|
||||
#include <dev/mii/mii.h>
|
||||
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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_
|
||||
|
|
Loading…
Reference in New Issue