Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F111400194
D37793.id116139.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
14 KB
Referenced Files
None
Subscribers
None
D37793.id116139.diff
View Options
diff --git a/sys/dev/cas/if_cas.c b/sys/dev/cas/if_cas.c
--- a/sys/dev/cas/if_cas.c
+++ b/sys/dev/cas/if_cas.c
@@ -141,10 +141,10 @@
static void cas_init_regs(struct cas_softc *sc);
static int cas_intr(void *v);
static void cas_intr_task(void *arg, int pending __unused);
-static int cas_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data);
+static int cas_ioctl(if_t ifp, u_long cmd, caddr_t data);
static int cas_load_txmbuf(struct cas_softc *sc, struct mbuf **m_head);
-static int cas_mediachange(struct ifnet *ifp);
-static void cas_mediastatus(struct ifnet *ifp, struct ifmediareq *ifmr);
+static int cas_mediachange(if_t ifp);
+static void cas_mediastatus(if_t ifp, struct ifmediareq *ifmr);
static void cas_meminit(struct cas_softc *sc);
static void cas_mifinit(struct cas_softc *sc);
static int cas_mii_readreg(device_t dev, int phy, int reg);
@@ -163,8 +163,8 @@
static void cas_rxdma_callback(void *xsc, bus_dma_segment_t *segs,
int nsegs, int error);
static void cas_setladrf(struct cas_softc *sc);
-static void cas_start(struct ifnet *ifp);
-static void cas_stop(struct ifnet *ifp);
+static void cas_start(if_t ifp);
+static void cas_stop(if_t ifp);
static void cas_suspend(struct cas_softc *sc);
static void cas_tick(void *arg);
static void cas_tint(struct cas_softc *sc);
@@ -184,7 +184,7 @@
cas_attach(struct cas_softc *sc)
{
struct cas_txsoft *txs;
- struct ifnet *ifp;
+ if_t ifp;
int error, i;
uint32_t v;
@@ -192,16 +192,15 @@
ifp = sc->sc_ifp = if_alloc(IFT_ETHER);
if (ifp == NULL)
return (ENOSPC);
- ifp->if_softc = sc;
+ if_setsoftc(ifp, sc);
if_initname(ifp, device_get_name(sc->sc_dev),
device_get_unit(sc->sc_dev));
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_start = cas_start;
- ifp->if_ioctl = cas_ioctl;
- ifp->if_init = cas_init;
- IFQ_SET_MAXLEN(&ifp->if_snd, CAS_TXQUEUELEN);
- ifp->if_snd.ifq_drv_maxlen = CAS_TXQUEUELEN;
- IFQ_SET_READY(&ifp->if_snd);
+ if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+ if_setstartfn(ifp, cas_start);
+ if_setioctlfn(ifp, cas_ioctl);
+ if_setinitfn(ifp, cas_init);
+ if_setsendqlen(ifp, CAS_TXQUEUELEN);
+ if_setsendqready(ifp);
callout_init_mtx(&sc->sc_tick_ch, &sc->sc_mtx, 0);
callout_init_mtx(&sc->sc_rx_ch, &sc->sc_mtx, 0);
@@ -423,13 +422,13 @@
/*
* Tell the upper layer(s) we support long frames/checksum offloads.
*/
- ifp->if_hdrlen = sizeof(struct ether_vlan_header);
- ifp->if_capabilities = IFCAP_VLAN_MTU;
+ if_setifheaderlen(ifp, sizeof(struct ether_vlan_header));
+ if_setcapabilities(ifp, IFCAP_VLAN_MTU);
if ((sc->sc_flags & CAS_NO_CSUM) == 0) {
- ifp->if_capabilities |= IFCAP_HWCSUM;
- ifp->if_hwassist = CAS_CSUM_FEATURES;
+ if_setcapabilitiesbit(ifp, IFCAP_HWCSUM, 0);
+ if_sethwassist(ifp, CAS_CSUM_FEATURES);
}
- ifp->if_capenable = ifp->if_capabilities;
+ if_setcapenable(ifp, if_getcapabilities(ifp));
return (0);
@@ -475,7 +474,7 @@
static void
cas_detach(struct cas_softc *sc)
{
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
int i;
ether_ifdetach(ifp);
@@ -521,7 +520,7 @@
static void
cas_suspend(struct cas_softc *sc)
{
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
CAS_LOCK(sc);
cas_stop(ifp);
@@ -531,7 +530,7 @@
static void
cas_resume(struct cas_softc *sc)
{
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
CAS_LOCK(sc);
/*
@@ -539,7 +538,7 @@
* after power-on.
*/
sc->sc_flags &= ~CAS_INITED;
- if (ifp->if_flags & IFF_UP)
+ if (if_getflags(ifp) & IFF_UP)
cas_init_locked(sc);
CAS_UNLOCK(sc);
}
@@ -634,7 +633,7 @@
cas_tick(void *arg)
{
struct cas_softc *sc = arg;
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
uint32_t v;
CAS_LOCK_ASSERT(sc, MA_OWNED);
@@ -718,9 +717,9 @@
}
static void
-cas_stop(struct ifnet *ifp)
+cas_stop(if_t ifp)
{
- struct cas_softc *sc = ifp->if_softc;
+ struct cas_softc *sc = if_getsoftc(ifp);
struct cas_txsoft *txs;
#ifdef CAS_DEBUG
@@ -756,7 +755,7 @@
/*
* Mark the interface down and cancel the watchdog timer.
*/
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
sc->sc_flags &= ~CAS_LINK;
sc->sc_wdog_timer = 0;
}
@@ -967,12 +966,12 @@
static void
cas_init_locked(struct cas_softc *sc)
{
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
uint32_t v;
CAS_LOCK_ASSERT(sc, MA_OWNED);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
return;
#ifdef CAS_DEBUG
@@ -1170,8 +1169,8 @@
if ((sc->sc_flags & CAS_REG_PLUS) != 0)
CAS_WRITE_4(sc, CAS_RX_KICK2, CAS_NRXDESC2 - 4);
- 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);
mii_mediachg(sc->sc_mii);
@@ -1326,7 +1325,7 @@
cas_init_regs(struct cas_softc *sc)
{
int i;
- const u_char *laddr = IF_LLADDR(sc->sc_ifp);
+ const u_char *laddr = if_getlladdr(sc->sc_ifp);
CAS_LOCK_ASSERT(sc, MA_OWNED);
@@ -1408,9 +1407,9 @@
static void
cas_tx_task(void *arg, int pending __unused)
{
- struct ifnet *ifp;
+ if_t ifp;
- ifp = (struct ifnet *)arg;
+ ifp = (if_t)arg;
cas_start(ifp);
}
@@ -1433,15 +1432,15 @@
}
static void
-cas_start(struct ifnet *ifp)
+cas_start(if_t ifp)
{
- struct cas_softc *sc = ifp->if_softc;
+ struct cas_softc *sc = if_getsoftc(ifp);
struct mbuf *m;
int kicked, ntx;
CAS_LOCK(sc);
- if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
+ if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
IFF_DRV_RUNNING || (sc->sc_flags & CAS_LINK) == 0) {
CAS_UNLOCK(sc);
return;
@@ -1457,15 +1456,15 @@
#endif
ntx = 0;
kicked = 0;
- for (; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) && sc->sc_txfree > 1;) {
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
+ for (; !if_sendq_empty(ifp) && sc->sc_txfree > 1;) {
+ m = if_dequeue(ifp);
if (m == NULL)
break;
if (cas_load_txmbuf(sc, &m) != 0) {
if (m == NULL)
break;
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
- IFQ_DRV_PREPEND(&ifp->if_snd, m);
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
+ if_sendq_prepend(ifp, m);
break;
}
if ((sc->sc_txnext % 4) == 0) {
@@ -1500,7 +1499,7 @@
static void
cas_tint(struct cas_softc *sc)
{
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
struct cas_txsoft *txs;
int progress;
uint32_t txlast;
@@ -1520,7 +1519,7 @@
CAS_CDSYNC(sc, BUS_DMASYNC_POSTREAD);
while ((txs = STAILQ_FIRST(&sc->sc_txdirtyq)) != NULL) {
#ifdef CAS_DEBUG
- if ((ifp->if_flags & IFF_DEBUG) != 0) {
+ if ((if_getflags(ifp) & IFF_DEBUG) != 0) {
printf(" txsoft %p transmit chain:\n", txs);
for (i = txs->txs_firstdesc;; i = CAS_NEXTTX(i)) {
printf("descriptor %d: ", i);
@@ -1592,7 +1591,7 @@
if (progress) {
/* We freed some descriptors, so reset IFF_DRV_OACTIVE. */
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
if (STAILQ_EMPTY(&sc->sc_txdirtyq))
sc->sc_wdog_timer = 0;
}
@@ -1620,7 +1619,7 @@
cas_rint(struct cas_softc *sc)
{
struct cas_rxdsoft *rxds, *rxds2;
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
struct mbuf *m, *m2;
uint64_t word1, word2, word3 __unused, word4;
uint32_t rxhead;
@@ -1672,7 +1671,7 @@
WORDTOH(4);
#ifdef CAS_DEBUG
- if ((ifp->if_flags & IFF_DEBUG) != 0) {
+ if ((if_getflags(ifp) & IFF_DEBUG) != 0) {
printf(" completion %d: ", sc->sc_rxcptr);
PRINTWORD(1, '\t');
PRINTWORD(2, '\t');
@@ -1744,12 +1743,12 @@
m->m_pkthdr.rcvif = ifp;
m->m_pkthdr.len = m->m_len = len;
if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
- if ((ifp->if_capenable & IFCAP_RXCSUM) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0)
cas_rxcksum(m, CAS_GET(word4,
CAS_RC4_TCP_CSUM));
/* Pass it on. */
CAS_UNLOCK(sc);
- (*ifp->if_input)(ifp, m);
+ if_input(ifp, m);
CAS_LOCK(sc);
} else
if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1);
@@ -1828,12 +1827,12 @@
m->m_pkthdr.rcvif = ifp;
m->m_pkthdr.len = len;
if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
- if ((ifp->if_capenable & IFCAP_RXCSUM) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0)
cas_rxcksum(m, CAS_GET(word4,
CAS_RC4_TCP_CSUM));
/* Pass it on. */
CAS_UNLOCK(sc);
- (*ifp->if_input)(ifp, m);
+ if_input(ifp, m);
CAS_LOCK(sc);
} else
if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1);
@@ -1850,7 +1849,7 @@
skip:
cas_rxcompinit(&sc->sc_rxcomps[sc->sc_rxcptr]);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
break;
}
CAS_CDSYNC(sc, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
@@ -1918,7 +1917,7 @@
static void
cas_eint(struct cas_softc *sc, u_int status)
{
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
CAS_LOCK_ASSERT(sc, MA_OWNED);
@@ -1936,9 +1935,9 @@
}
printf("\n");
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
cas_init_locked(sc);
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ if (!if_sendq_empty(ifp))
taskqueue_enqueue(sc->sc_tq, &sc->sc_tx_task);
}
@@ -1962,12 +1961,12 @@
cas_intr_task(void *arg, int pending __unused)
{
struct cas_softc *sc = arg;
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
uint32_t status, status2;
CAS_LOCK_ASSERT(sc, MA_NOTOWNED);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
return;
status = CAS_READ_4(sc, CAS_STATUS);
@@ -2054,10 +2053,10 @@
(CAS_INTR_TX_INT_ME | CAS_INTR_TX_ALL | CAS_INTR_TX_DONE)) != 0)
cas_tint(sc);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) {
CAS_UNLOCK(sc);
return;
- } else if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ } else if (!if_sendq_empty(ifp))
taskqueue_enqueue(sc->sc_tq, &sc->sc_tx_task);
CAS_UNLOCK(sc);
@@ -2084,7 +2083,7 @@
static void
cas_watchdog(struct cas_softc *sc)
{
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
CAS_LOCK_ASSERT(sc, MA_OWNED);
@@ -2111,9 +2110,9 @@
if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
/* Try to get more packets going. */
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
cas_init_locked(sc);
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ if (!if_sendq_empty(ifp))
taskqueue_enqueue(sc->sc_tq, &sc->sc_tx_task);
}
@@ -2283,7 +2282,7 @@
cas_mii_statchg(device_t dev)
{
struct cas_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
int gigabit;
uint32_t rxcfg, txcfg, v;
@@ -2293,7 +2292,7 @@
CAS_LOCK_ASSERT(sc, MA_OWNED);
#ifdef CAS_DEBUG
- if ((ifp->if_flags & IFF_DEBUG) != 0)
+ if ((if_getflags(ifp) & IFF_DEBUG) != 0)
device_printf(sc->sc_dev, "%s: status changen", __func__);
#endif
@@ -2355,11 +2354,11 @@
* hardware checksumming in half-duplex mode though.
*/
if ((IFM_OPTIONS(sc->sc_mii->mii_media_active) & IFM_FDX) == 0) {
- ifp->if_capenable &= ~IFCAP_HWCSUM;
- ifp->if_hwassist = 0;
+ if_setcapenablebit(ifp, 0, IFCAP_HWCSUM);
+ if_sethwassist(ifp, 0);
} else if ((sc->sc_flags & CAS_NO_CSUM) == 0) {
- ifp->if_capenable = ifp->if_capabilities;
- ifp->if_hwassist = CAS_CSUM_FEATURES;
+ if_setcapenable(ifp, if_getcapabilities(ifp));
+ if_sethwassist(ifp, CAS_CSUM_FEATURES);
}
if (sc->sc_variant == CAS_SATURN) {
@@ -2392,7 +2391,7 @@
CAS_WRITE_4(sc, CAS_MAC_XIF_CONF, v);
sc->sc_mac_rxcfg = rxcfg;
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0 &&
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0 &&
(sc->sc_flags & CAS_LINK) != 0) {
CAS_WRITE_4(sc, CAS_MAC_TX_CONF,
txcfg | CAS_MAC_TX_CONF_EN);
@@ -2402,9 +2401,9 @@
}
static int
-cas_mediachange(struct ifnet *ifp)
+cas_mediachange(if_t ifp)
{
- struct cas_softc *sc = ifp->if_softc;
+ struct cas_softc *sc = if_getsoftc(ifp);
int error;
/* XXX add support for serial media. */
@@ -2416,12 +2415,12 @@
}
static void
-cas_mediastatus(struct ifnet *ifp, struct ifmediareq *ifmr)
+cas_mediastatus(if_t ifp, struct ifmediareq *ifmr)
{
- struct cas_softc *sc = ifp->if_softc;
+ struct cas_softc *sc = if_getsoftc(ifp);
CAS_LOCK(sc);
- if ((ifp->if_flags & IFF_UP) == 0) {
+ if ((if_getflags(ifp) & IFF_UP) == 0) {
CAS_UNLOCK(sc);
return;
}
@@ -2433,9 +2432,9 @@
}
static int
-cas_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
+cas_ioctl(if_t ifp, u_long cmd, caddr_t data)
{
- struct cas_softc *sc = ifp->if_softc;
+ struct cas_softc *sc = if_getsoftc(ifp);
struct ifreq *ifr = (struct ifreq *)data;
int error;
@@ -2443,16 +2442,16 @@
switch (cmd) {
case SIOCSIFFLAGS:
CAS_LOCK(sc);
- if ((ifp->if_flags & IFF_UP) != 0) {
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0 &&
- ((ifp->if_flags ^ sc->sc_ifflags) &
+ if ((if_getflags(ifp) & IFF_UP) != 0) {
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0 &&
+ ((if_getflags(ifp) ^ sc->sc_ifflags) &
(IFF_ALLMULTI | IFF_PROMISC)) != 0)
cas_setladrf(sc);
else
cas_init_locked(sc);
- } else if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ } else if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
cas_stop(ifp);
- sc->sc_ifflags = ifp->if_flags;
+ sc->sc_ifflags = if_getflags(ifp);
CAS_UNLOCK(sc);
break;
case SIOCSIFCAP:
@@ -2462,17 +2461,17 @@
CAS_UNLOCK(sc);
break;
}
- ifp->if_capenable = ifr->ifr_reqcap;
- if ((ifp->if_capenable & IFCAP_TXCSUM) != 0)
- ifp->if_hwassist = CAS_CSUM_FEATURES;
+ if_setcapenable(ifp, ifr->ifr_reqcap);
+ if ((if_getcapenable(ifp) & IFCAP_TXCSUM) != 0)
+ if_sethwassist(ifp, CAS_CSUM_FEATURES);
else
- ifp->if_hwassist = 0;
+ if_sethwassist(ifp, 0);
CAS_UNLOCK(sc);
break;
case SIOCADDMULTI:
case SIOCDELMULTI:
CAS_LOCK(sc);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
cas_setladrf(sc);
CAS_UNLOCK(sc);
break;
@@ -2481,7 +2480,7 @@
(ifr->ifr_mtu > ETHERMTU_JUMBO))
error = EINVAL;
else
- ifp->if_mtu = ifr->ifr_mtu;
+ if_setmtu(ifp, ifr->ifr_mtu);
break;
case SIOCGIFMEDIA:
case SIOCSIFMEDIA:
@@ -2512,7 +2511,7 @@
static void
cas_setladrf(struct cas_softc *sc)
{
- struct ifnet *ifp = sc->sc_ifp;
+ if_t ifp = sc->sc_ifp;
int i;
uint32_t hash[16];
uint32_t v;
@@ -2534,11 +2533,11 @@
"cannot disable RX MAC or hash filter\n");
v &= ~(CAS_MAC_RX_CONF_PROMISC | CAS_MAC_RX_CONF_PGRP);
- if ((ifp->if_flags & IFF_PROMISC) != 0) {
+ if ((if_getflags(ifp) & IFF_PROMISC) != 0) {
v |= CAS_MAC_RX_CONF_PROMISC;
goto chipit;
}
- if ((ifp->if_flags & IFF_ALLMULTI) != 0) {
+ if ((if_getflags(ifp) & IFF_ALLMULTI) != 0) {
v |= CAS_MAC_RX_CONF_PGRP;
goto chipit;
}
diff --git a/sys/dev/cas/if_casvar.h b/sys/dev/cas/if_casvar.h
--- a/sys/dev/cas/if_casvar.h
+++ b/sys/dev/cas/if_casvar.h
@@ -128,7 +128,7 @@
* software state per device
*/
struct cas_softc {
- struct ifnet *sc_ifp;
+ if_t sc_ifp;
struct mtx sc_mtx;
device_t sc_miibus;
struct mii_data *sc_mii; /* MII media control */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Mar 4, 7:33 AM (15 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16965103
Default Alt Text
D37793.id116139.diff (14 KB)
Attached To
Mode
D37793: Mechanically convert if_cas(4) to DrvAPI
Attached
Detach File
Event Timeline
Log In to Comment