Page MenuHomeFreeBSD

D37788.id115546.diff
No OneTemporary

D37788.id115546.diff

diff --git a/sys/arm/allwinner/if_emac.c b/sys/arm/allwinner/if_emac.c
--- a/sys/arm/allwinner/if_emac.c
+++ b/sys/arm/allwinner/if_emac.c
@@ -89,7 +89,7 @@
#include "a10_sramc.h"
struct emac_softc {
- struct ifnet *emac_ifp;
+ if_t emac_ifp;
device_t emac_dev;
device_t emac_miibus;
bus_space_handle_t emac_handle;
@@ -118,11 +118,11 @@
static void emac_reset(struct emac_softc *);
static void emac_init_locked(struct emac_softc *);
-static void emac_start_locked(struct ifnet *);
+static void emac_start_locked(if_t);
static void emac_init(void *);
static void emac_stop_locked(struct emac_softc *);
static void emac_intr(void *);
-static int emac_ioctl(struct ifnet *, u_long, caddr_t);
+static int emac_ioctl(if_t, u_long, caddr_t);
static void emac_rxeof(struct emac_softc *, int);
static void emac_txeof(struct emac_softc *, uint32_t);
@@ -131,8 +131,8 @@
static int emac_miibus_writereg(device_t, int, int, int);
static void emac_miibus_statchg(device_t);
-static int emac_ifmedia_upd(struct ifnet *);
-static void emac_ifmedia_sts(struct ifnet *, struct ifmediareq *);
+static int emac_ifmedia_upd(if_t);
+static void emac_ifmedia_sts(if_t, struct ifmediareq *);
static int sysctl_int_range(SYSCTL_HANDLER_ARGS, int, int);
static int sysctl_hw_emac_proc_limit(SYSCTL_HANDLER_ARGS);
@@ -232,7 +232,7 @@
static void
emac_set_rx_mode(struct emac_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
uint32_t hashes[2];
uint32_t rcr = 0;
@@ -248,7 +248,7 @@
hashes[0] = 0;
hashes[1] = 0;
- if (ifp->if_flags & IFF_ALLMULTI) {
+ if (if_getflags(ifp) & IFF_ALLMULTI) {
hashes[0] = 0xffffffff;
hashes[1] = 0xffffffff;
} else
@@ -258,12 +258,12 @@
EMAC_WRITE_REG(sc, EMAC_RX_HASH0, hashes[0]);
EMAC_WRITE_REG(sc, EMAC_RX_HASH1, hashes[1]);
- if (ifp->if_flags & IFF_BROADCAST) {
+ if (if_getflags(ifp) & IFF_BROADCAST) {
rcr |= EMAC_RX_BCO;
rcr |= EMAC_RX_MCO;
}
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & IFF_PROMISC)
rcr |= EMAC_RX_PA;
else
rcr |= EMAC_RX_UCAD;
@@ -292,7 +292,7 @@
static void
emac_txeof(struct emac_softc *sc, uint32_t status)
{
- struct ifnet *ifp;
+ if_t ifp;
EMAC_ASSERT_LOCKED(sc);
@@ -303,7 +303,7 @@
if_inc_counter(ifp, IFCOUNTER_OPACKETS, 2);
else
if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
/* Unarm watchdog timer if no TX */
sc->emac_watchdog_timer = 0;
@@ -312,7 +312,7 @@
static void
emac_rxeof(struct emac_softc *sc, int count)
{
- struct ifnet *ifp;
+ if_t ifp;
struct mbuf *m, *m0;
uint32_t reg_val, rxcount;
int16_t len;
@@ -321,7 +321,7 @@
ifp = sc->emac_ifp;
for (; count > 0 &&
- (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0; count--) {
+ (if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0; count--) {
/*
* Race warning: The first packet might arrive with
* the interrupts disabled, but the second will fix
@@ -443,7 +443,7 @@
}
if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
EMAC_UNLOCK(sc);
- (*ifp->if_input)(ifp, m);
+ if_input(ifp, m);
EMAC_LOCK(sc);
}
}
@@ -451,7 +451,7 @@
static void
emac_watchdog(struct emac_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
EMAC_ASSERT_LOCKED(sc);
@@ -468,9 +468,9 @@
if_printf(sc->emac_ifp, "watchdog timeout -- resetting\n");
if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
emac_init_locked(sc);
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ if (!if_sendq_empty(ifp))
emac_start_locked(ifp);
}
@@ -502,7 +502,7 @@
static void
emac_init_locked(struct emac_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
struct mii_data *mii;
uint32_t reg_val;
uint8_t *eaddr;
@@ -510,7 +510,7 @@
EMAC_ASSERT_LOCKED(sc);
ifp = sc->emac_ifp;
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
return;
/* Flush RX FIFO */
@@ -575,7 +575,7 @@
EMAC_WRITE_REG(sc, EMAC_MAC_MAXF, EMAC_MAC_MFL);
/* Setup ethernet address */
- eaddr = IF_LLADDR(ifp);
+ eaddr = if_getlladdr(ifp);
EMAC_WRITE_REG(sc, EMAC_MAC_A1, eaddr[0] << 16 |
eaddr[1] << 8 | eaddr[2]);
EMAC_WRITE_REG(sc, EMAC_MAC_A0, eaddr[3] << 16 |
@@ -589,8 +589,8 @@
reg_val |= EMAC_INT_EN;
EMAC_WRITE_REG(sc, EMAC_INT_CTL, reg_val);
- ifp->if_drv_flags |= IFF_DRV_RUNNING;
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
sc->emac_link = 0;
@@ -602,31 +602,31 @@
}
static void
-emac_start(struct ifnet *ifp)
+emac_start(if_t ifp)
{
struct emac_softc *sc;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
EMAC_LOCK(sc);
emac_start_locked(ifp);
EMAC_UNLOCK(sc);
}
static void
-emac_start_locked(struct ifnet *ifp)
+emac_start_locked(if_t ifp)
{
struct emac_softc *sc;
struct mbuf *m, *m0;
uint32_t fifo, reg;
- sc = ifp->if_softc;
- if (ifp->if_drv_flags & IFF_DRV_OACTIVE)
+ sc = if_getsoftc(ifp);
+ if (if_getdrvflags(ifp) & IFF_DRV_OACTIVE)
return;
if (sc->emac_fifo_mask == (EMAC_TX_FIFO0 | EMAC_TX_FIFO1))
return;
if (sc->emac_link == 0)
return;
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
+ m = if_dequeue(ifp);
if (m == NULL)
return;
@@ -637,7 +637,7 @@
fifo = 0;
sc->emac_fifo_mask |= (1 << fifo);
if (sc->emac_fifo_mask == (EMAC_TX_FIFO0 | EMAC_TX_FIFO1))
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
EMAC_WRITE_REG(sc, EMAC_TX_INS, fifo);
/*
@@ -677,13 +677,13 @@
static void
emac_stop_locked(struct emac_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
uint32_t reg_val;
EMAC_ASSERT_LOCKED(sc);
ifp = sc->emac_ifp;
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
sc->emac_link = 0;
/* Disable all interrupt and clear interrupt status */
@@ -703,7 +703,7 @@
emac_intr(void *arg)
{
struct emac_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
uint32_t reg_val;
sc = (struct emac_softc *)arg;
@@ -724,7 +724,7 @@
if (reg_val & EMAC_INT_STA_TX) {
emac_txeof(sc, reg_val);
ifp = sc->emac_ifp;
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ if (!if_sendq_empty(ifp))
emac_start_locked(ifp);
}
@@ -736,37 +736,37 @@
}
static int
-emac_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
+emac_ioctl(if_t ifp, u_long command, caddr_t data)
{
struct emac_softc *sc;
struct mii_data *mii;
struct ifreq *ifr;
int error = 0;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
ifr = (struct ifreq *)data;
switch (command) {
case SIOCSIFFLAGS:
EMAC_LOCK(sc);
- if (ifp->if_flags & IFF_UP) {
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) {
- if ((ifp->if_flags ^ sc->emac_if_flags) &
+ if (if_getflags(ifp) & IFF_UP) {
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) {
+ if ((if_getflags(ifp) ^ sc->emac_if_flags) &
(IFF_PROMISC | IFF_ALLMULTI))
emac_set_rx_mode(sc);
} else
emac_init_locked(sc);
} else {
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
emac_stop_locked(sc);
}
- sc->emac_if_flags = ifp->if_flags;
+ sc->emac_if_flags = if_getflags(ifp);
EMAC_UNLOCK(sc);
break;
case SIOCADDMULTI:
case SIOCDELMULTI:
EMAC_LOCK(sc);
- if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
emac_set_rx_mode(sc);
}
EMAC_UNLOCK(sc);
@@ -803,7 +803,7 @@
struct emac_softc *sc;
sc = device_get_softc(dev);
- sc->emac_ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(sc->emac_ifp, 0, IFF_DRV_RUNNING);
if (device_is_attached(dev)) {
ether_ifdetach(sc->emac_ifp);
EMAC_LOCK(sc);
@@ -850,13 +850,13 @@
emac_suspend(device_t dev)
{
struct emac_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
sc = device_get_softc(dev);
EMAC_LOCK(sc);
ifp = sc->emac_ifp;
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
emac_stop_locked(sc);
EMAC_UNLOCK(sc);
@@ -867,14 +867,14 @@
emac_resume(device_t dev)
{
struct emac_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
sc = device_get_softc(dev);
EMAC_LOCK(sc);
ifp = sc->emac_ifp;
- if ((ifp->if_flags & IFF_UP) != 0) {
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if ((if_getflags(ifp) & IFF_UP) != 0) {
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
emac_init_locked(sc);
}
EMAC_UNLOCK(sc);
@@ -886,7 +886,7 @@
emac_attach(device_t dev)
{
struct emac_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
int error, rid;
uint8_t eaddr[ETHER_ADDR_LEN];
@@ -950,7 +950,7 @@
error = ENOSPC;
goto fail;
}
- ifp->if_softc = sc;
+ if_setsoftc(ifp, sc);
/* Setup MII */
error = mii_attach(dev, &sc->emac_miibus, ifp, emac_ifmedia_upd,
@@ -961,21 +961,21 @@
}
if_initname(ifp, device_get_name(dev), device_get_unit(dev));
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_start = emac_start;
- ifp->if_ioctl = emac_ioctl;
- ifp->if_init = emac_init;
- IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN);
+ if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+ if_setstartfn(ifp, emac_start);
+ if_setioctlfn(ifp, emac_ioctl);
+ if_setinitfn(ifp, emac_init);
+ if_setsendqlen(ifp, IFQ_MAXLEN);
/* Get MAC address */
emac_get_hwaddr(sc, eaddr);
ether_ifattach(ifp, eaddr);
/* VLAN capability setup. */
- ifp->if_capabilities |= IFCAP_VLAN_MTU;
- ifp->if_capenable = ifp->if_capabilities;
+ if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU, 0);
+ if_setcapenable(ifp, if_getcapabilities(ifp));
/* Tell the upper layer we support VLAN over-sized frames. */
- ifp->if_hdrlen = sizeof(struct ether_vlan_header);
+ if_setifheaderlen(ifp, sizeof(struct ether_vlan_header));
error = bus_setup_intr(dev, sc->emac_irq, INTR_TYPE_NET | INTR_MPSAFE,
NULL, emac_intr, sc, &sc->emac_intrhand);
@@ -1060,7 +1060,7 @@
{
struct emac_softc *sc;
struct mii_data *mii;
- struct ifnet *ifp;
+ if_t ifp;
uint32_t reg_val;
sc = device_get_softc(dev);
@@ -1068,7 +1068,7 @@
mii = device_get_softc(sc->emac_miibus);
ifp = sc->emac_ifp;
if (mii == NULL || ifp == NULL ||
- (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
return;
sc->emac_link = 0;
@@ -1107,14 +1107,14 @@
}
static int
-emac_ifmedia_upd(struct ifnet *ifp)
+emac_ifmedia_upd(if_t ifp)
{
struct emac_softc *sc;
struct mii_data *mii;
struct mii_softc *miisc;
int error;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
mii = device_get_softc(sc->emac_miibus);
EMAC_LOCK(sc);
LIST_FOREACH(miisc, &mii->mii_phys, mii_list)
@@ -1126,12 +1126,12 @@
}
static void
-emac_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+emac_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
{
struct emac_softc *sc;
struct mii_data *mii;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
mii = device_get_softc(sc->emac_miibus);
EMAC_LOCK(sc);

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 4, 7:39 AM (12 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16965227
Default Alt Text
D37788.id115546.diff (10 KB)

Event Timeline