Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F111522941
D37785.id114411.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
20 KB
Referenced Files
None
Subscribers
None
D37785.id114411.diff
View Options
diff --git a/sys/dev/xl/if_xl.c b/sys/dev/xl/if_xl.c
--- a/sys/dev/xl/if_xl.c
+++ b/sys/dev/xl/if_xl.c
@@ -240,10 +240,10 @@
static void xl_txeof_90xB(struct xl_softc *);
static void xl_txeoc(struct xl_softc *);
static void xl_intr(void *);
-static void xl_start(struct ifnet *);
-static void xl_start_locked(struct ifnet *);
-static void xl_start_90xB_locked(struct ifnet *);
-static int xl_ioctl(struct ifnet *, u_long, caddr_t);
+static void xl_start(if_t );
+static void xl_start_locked(if_t );
+static void xl_start_90xB_locked(if_t );
+static int xl_ioctl(if_t , u_long, caddr_t);
static void xl_init(void *);
static void xl_init_locked(struct xl_softc *);
static void xl_stop(struct xl_softc *);
@@ -254,12 +254,12 @@
static void xl_setwol(struct xl_softc *);
#ifdef DEVICE_POLLING
-static int xl_poll(struct ifnet *ifp, enum poll_cmd cmd, int count);
-static int xl_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count);
+static int xl_poll(if_t ifp, enum poll_cmd cmd, int count);
+static int xl_poll_locked(if_t ifp, enum poll_cmd cmd, int count);
#endif
-static int xl_ifmedia_upd(struct ifnet *);
-static void xl_ifmedia_sts(struct ifnet *, struct ifmediareq *);
+static int xl_ifmedia_upd(if_t );
+static void xl_ifmedia_sts(if_t , struct ifmediareq *);
static int xl_eeprom_wait(struct xl_softc *);
static int xl_read_eeprom(struct xl_softc *, caddr_t, int, int, int);
@@ -616,7 +616,7 @@
static void
xl_rxfilter_90x(struct xl_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
u_int8_t rxfilt;
XL_LOCK_ASSERT(sc);
@@ -631,14 +631,14 @@
/* Set the individual bit to receive frames for this host only. */
rxfilt |= XL_RXFILTER_INDIVIDUAL;
/* Set capture broadcast bit to capture broadcast frames. */
- if (ifp->if_flags & IFF_BROADCAST)
+ if (if_getflags(ifp) & IFF_BROADCAST)
rxfilt |= XL_RXFILTER_BROADCAST;
/* If we want promiscuous mode, set the allframes bit. */
- if (ifp->if_flags & (IFF_PROMISC | IFF_ALLMULTI)) {
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & (IFF_PROMISC | IFF_ALLMULTI)) {
+ if (if_getflags(ifp) & IFF_PROMISC)
rxfilt |= XL_RXFILTER_ALLFRAMES;
- if (ifp->if_flags & IFF_ALLMULTI)
+ if (if_getflags(ifp) & IFF_ALLMULTI)
rxfilt |= XL_RXFILTER_ALLMULTI;
} else
if_foreach_llmaddr(sc->xl_ifp, xl_check_maddr_90x, &rxfilt);
@@ -675,7 +675,7 @@
static void
xl_rxfilter_90xB(struct xl_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
int i;
u_int8_t rxfilt;
@@ -692,14 +692,14 @@
/* Set the individual bit to receive frames for this host only. */
rxfilt |= XL_RXFILTER_INDIVIDUAL;
/* Set capture broadcast bit to capture broadcast frames. */
- if (ifp->if_flags & IFF_BROADCAST)
+ if (if_getflags(ifp) & IFF_BROADCAST)
rxfilt |= XL_RXFILTER_BROADCAST;
/* If we want promiscuous mode, set the allframes bit. */
- if (ifp->if_flags & (IFF_PROMISC | IFF_ALLMULTI)) {
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & (IFF_PROMISC | IFF_ALLMULTI)) {
+ if (if_getflags(ifp) & IFF_PROMISC)
rxfilt |= XL_RXFILTER_ALLFRAMES;
- if (ifp->if_flags & IFF_ALLMULTI)
+ if (if_getflags(ifp) & IFF_ALLMULTI)
rxfilt |= XL_RXFILTER_ALLMULTI;
} else {
/* First, zot all the existing hash bits. */
@@ -1064,7 +1064,7 @@
u_char eaddr[ETHER_ADDR_LEN];
u_int16_t sinfo2, xcvr[2];
struct xl_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
int media, pmcap;
int error = 0, phy, rid, res;
uint16_t did;
@@ -1195,7 +1195,7 @@
error = ENOSPC;
goto fail;
}
- ifp->if_softc = sc;
+ if_setsoftc(ifp, sc);
if_initname(ifp, device_get_name(dev), device_get_unit(dev));
/* Reset the adapter. */
@@ -1335,28 +1335,27 @@
/* Set the TX start threshold for best performance. */
sc->xl_tx_thresh = XL_MIN_FRAMELEN;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_ioctl = xl_ioctl;
- ifp->if_capabilities = IFCAP_VLAN_MTU;
+ if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+ if_setioctlfn(ifp, xl_ioctl);
+ if_setcapabilities(ifp, IFCAP_VLAN_MTU);
if (sc->xl_type == XL_TYPE_905B) {
- ifp->if_hwassist = XL905B_CSUM_FEATURES;
+ if_sethwassist(ifp, XL905B_CSUM_FEATURES);
#ifdef XL905B_TXCSUM_BROKEN
- ifp->if_capabilities |= IFCAP_RXCSUM;
+ if_setcapabilitiesbit(ifp, IFCAP_RXCSUM, 0);
#else
- ifp->if_capabilities |= IFCAP_HWCSUM;
+ if_setcapabilitiesbit(ifp, IFCAP_HWCSUM, 0);
#endif
}
if ((sc->xl_flags & XL_FLAG_WOL) != 0)
- ifp->if_capabilities |= IFCAP_WOL_MAGIC;
- ifp->if_capenable = ifp->if_capabilities;
+ if_setcapabilitiesbit(ifp, IFCAP_WOL_MAGIC, 0);
+ if_setcapenable(ifp, if_getcapabilities(ifp));
#ifdef DEVICE_POLLING
- ifp->if_capabilities |= IFCAP_POLLING;
+ if_setcapabilitiesbit(ifp, IFCAP_POLLING, 0);
#endif
- ifp->if_start = xl_start;
- ifp->if_init = xl_init;
- IFQ_SET_MAXLEN(&ifp->if_snd, XL_TX_LIST_CNT - 1);
- ifp->if_snd.ifq_drv_maxlen = XL_TX_LIST_CNT - 1;
- IFQ_SET_READY(&ifp->if_snd);
+ if_setstartfn(ifp, xl_start);
+ if_setinitfn(ifp, xl_init);
+ if_setsendqlen(ifp, XL_TX_LIST_CNT - 1);
+ if_setsendqready(ifp);
/*
* Now we have to see what sort of media we have.
@@ -1550,7 +1549,7 @@
xl_detach(device_t dev)
{
struct xl_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
int rid, res;
sc = device_get_softc(dev);
@@ -1559,7 +1558,7 @@
KASSERT(mtx_initialized(&sc->xl_mtx), ("xl mutex not initialized"));
#ifdef DEVICE_POLLING
- if (ifp && ifp->if_capenable & IFCAP_POLLING)
+ if (ifp && if_getcapenable(ifp) & IFCAP_POLLING)
ether_poll_deregister(ifp);
#endif
@@ -1824,7 +1823,7 @@
xl_rxeof(struct xl_softc *sc)
{
struct mbuf *m;
- struct ifnet *ifp = sc->xl_ifp;
+ if_t ifp = sc->xl_ifp;
struct xl_chain_onefrag *cur_rx;
int total_len;
int rx_npkts = 0;
@@ -1836,7 +1835,7 @@
BUS_DMASYNC_POSTREAD);
while ((rxstat = le32toh(sc->xl_cdata.xl_rx_head->xl_ptr->xl_status))) {
#ifdef DEVICE_POLLING
- if (ifp->if_capenable & IFCAP_POLLING) {
+ if (if_getcapenable(ifp) & IFCAP_POLLING) {
if (sc->rxcycles <= 0)
break;
sc->rxcycles--;
@@ -1911,7 +1910,7 @@
m->m_pkthdr.rcvif = ifp;
m->m_pkthdr.len = m->m_len = total_len;
- if (ifp->if_capenable & IFCAP_RXCSUM) {
+ if (if_getcapenable(ifp) & IFCAP_RXCSUM) {
/* Do IP checksum checking. */
if (rxstat & XL_RXSTAT_IPCKOK)
m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED;
@@ -1928,7 +1927,7 @@
}
XL_UNLOCK(sc);
- (*ifp->if_input)(ifp, m);
+ if_input(ifp, m);
XL_LOCK(sc);
/*
@@ -1936,7 +1935,7 @@
* might have been stopped while we were passing the last
* packet up the network stack.
*/
- if (!(ifp->if_drv_flags & IFF_DRV_RUNNING))
+ if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING))
return (rx_npkts);
}
@@ -1973,7 +1972,7 @@
struct xl_softc *sc = (struct xl_softc *)arg;
XL_LOCK(sc);
- if (sc->xl_ifp->if_drv_flags & IFF_DRV_RUNNING)
+ if (if_getdrvflags(sc->xl_ifp) & IFF_DRV_RUNNING)
xl_rxeof(sc);
XL_UNLOCK(sc);
}
@@ -1986,7 +1985,7 @@
xl_txeof(struct xl_softc *sc)
{
struct xl_chain *cur_tx;
- struct ifnet *ifp = sc->xl_ifp;
+ if_t ifp = sc->xl_ifp;
XL_LOCK_ASSERT(sc);
@@ -2012,7 +2011,7 @@
m_freem(cur_tx->xl_mbuf);
cur_tx->xl_mbuf = NULL;
if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
cur_tx->xl_next = sc->xl_cdata.xl_tx_free;
sc->xl_cdata.xl_tx_free = cur_tx;
@@ -2035,7 +2034,7 @@
xl_txeof_90xB(struct xl_softc *sc)
{
struct xl_chain *cur_tx = NULL;
- struct ifnet *ifp = sc->xl_ifp;
+ if_t ifp = sc->xl_ifp;
int idx;
XL_LOCK_ASSERT(sc);
@@ -2069,7 +2068,7 @@
sc->xl_cdata.xl_tx_cons = idx;
if (cur_tx != NULL)
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
}
/*
@@ -2146,13 +2145,13 @@
xl_intr(void *arg)
{
struct xl_softc *sc = arg;
- struct ifnet *ifp = sc->xl_ifp;
+ if_t ifp = sc->xl_ifp;
u_int16_t status;
XL_LOCK(sc);
#ifdef DEVICE_POLLING
- if (ifp->if_capenable & IFCAP_POLLING) {
+ if (if_getcapenable(ifp) & IFCAP_POLLING) {
XL_UNLOCK(sc);
return;
}
@@ -2164,7 +2163,7 @@
break;
CSR_WRITE_2(sc, XL_COMMAND,
XL_CMD_INTR_ACK|(status & XL_INTRS));
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
break;
if (status & XL_STAT_UP_COMPLETE) {
@@ -2187,7 +2186,7 @@
}
if (status & XL_STAT_ADFAIL) {
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
xl_init_locked(sc);
break;
}
@@ -2196,8 +2195,8 @@
xl_stats_update(sc);
}
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd) &&
- ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ if (!if_sendq_empty(ifp) &&
+ if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
if (sc->xl_type == XL_TYPE_905B)
xl_start_90xB_locked(ifp);
else
@@ -2209,22 +2208,22 @@
#ifdef DEVICE_POLLING
static int
-xl_poll(struct ifnet *ifp, enum poll_cmd cmd, int count)
+xl_poll(if_t ifp, enum poll_cmd cmd, int count)
{
- struct xl_softc *sc = ifp->if_softc;
+ struct xl_softc *sc = if_getsoftc(ifp);
int rx_npkts = 0;
XL_LOCK(sc);
- if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
rx_npkts = xl_poll_locked(ifp, cmd, count);
XL_UNLOCK(sc);
return (rx_npkts);
}
static int
-xl_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count)
+xl_poll_locked(if_t ifp, enum poll_cmd cmd, int count)
{
- struct xl_softc *sc = ifp->if_softc;
+ struct xl_softc *sc = if_getsoftc(ifp);
int rx_npkts;
XL_LOCK_ASSERT(sc);
@@ -2236,7 +2235,7 @@
else
xl_txeof(sc);
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+ if (!if_sendq_empty(ifp)) {
if (sc->xl_type == XL_TYPE_905B)
xl_start_90xB_locked(ifp);
else
@@ -2257,7 +2256,7 @@
}
if (status & XL_STAT_ADFAIL) {
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
xl_init_locked(sc);
}
@@ -2292,7 +2291,7 @@
static void
xl_stats_update(struct xl_softc *sc)
{
- struct ifnet *ifp = sc->xl_ifp;
+ if_t ifp = sc->xl_ifp;
struct xl_stats xl_stats;
u_int8_t *p;
int i;
@@ -2335,7 +2334,7 @@
xl_encap(struct xl_softc *sc, struct xl_chain *c, struct mbuf **m_head)
{
struct mbuf *m_new;
- struct ifnet *ifp = sc->xl_ifp;
+ if_t ifp = sc->xl_ifp;
int error, i, nseg, total_len;
u_int32_t status;
@@ -2427,9 +2426,9 @@
*/
static void
-xl_start(struct ifnet *ifp)
+xl_start(if_t ifp)
{
- struct xl_softc *sc = ifp->if_softc;
+ struct xl_softc *sc = if_getsoftc(ifp);
XL_LOCK(sc);
@@ -2442,9 +2441,9 @@
}
static void
-xl_start_locked(struct ifnet *ifp)
+xl_start_locked(if_t ifp)
{
- struct xl_softc *sc = ifp->if_softc;
+ struct xl_softc *sc = if_getsoftc(ifp);
struct mbuf *m_head;
struct xl_chain *prev = NULL, *cur_tx = NULL, *start_tx;
struct xl_chain *prev_tx;
@@ -2452,7 +2451,7 @@
XL_LOCK_ASSERT(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)
return;
/*
@@ -2463,16 +2462,16 @@
xl_txeoc(sc);
xl_txeof(sc);
if (sc->xl_cdata.xl_tx_free == NULL) {
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
return;
}
}
start_tx = sc->xl_cdata.xl_tx_free;
- for (; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) &&
+ for (; !if_sendq_empty(ifp) &&
sc->xl_cdata.xl_tx_free != NULL;) {
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
+ m_head = if_dequeue(ifp);
if (m_head == NULL)
break;
@@ -2486,8 +2485,8 @@
cur_tx = prev_tx;
if (m_head == NULL)
break;
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
- IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
+ if_sendq_prepend(ifp, m_head);
break;
}
@@ -2574,9 +2573,9 @@
}
static void
-xl_start_90xB_locked(struct ifnet *ifp)
+xl_start_90xB_locked(if_t ifp)
{
- struct xl_softc *sc = ifp->if_softc;
+ struct xl_softc *sc = if_getsoftc(ifp);
struct mbuf *m_head;
struct xl_chain *prev = NULL, *cur_tx = NULL, *start_tx;
struct xl_chain *prev_tx;
@@ -2584,21 +2583,21 @@
XL_LOCK_ASSERT(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)
return;
idx = sc->xl_cdata.xl_tx_prod;
start_tx = &sc->xl_cdata.xl_tx_chain[idx];
- for (; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) &&
+ for (; !if_sendq_empty(ifp) &&
sc->xl_cdata.xl_tx_chain[idx].xl_mbuf == NULL;) {
if ((XL_TX_LIST_CNT - sc->xl_cdata.xl_tx_cnt) < 3) {
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
break;
}
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
+ m_head = if_dequeue(ifp);
if (m_head == NULL)
break;
@@ -2611,8 +2610,8 @@
cur_tx = prev_tx;
if (m_head == NULL)
break;
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
- IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
+ if_sendq_prepend(ifp, m_head);
break;
}
@@ -2671,13 +2670,13 @@
static void
xl_init_locked(struct xl_softc *sc)
{
- struct ifnet *ifp = sc->xl_ifp;
+ if_t ifp = sc->xl_ifp;
int error, i;
struct mii_data *mii = NULL;
XL_LOCK_ASSERT(sc);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
return;
/*
* Cancel pending I/O and free all RX/TX buffers.
@@ -2711,7 +2710,7 @@
XL_SEL_WIN(2);
for (i = 0; i < ETHER_ADDR_LEN; i++) {
CSR_WRITE_1(sc, XL_W2_STATION_ADDR_LO + i,
- IF_LLADDR(sc->xl_ifp)[i]);
+ if_getlladdr(sc->xl_ifp)[i]);
}
/* Clear the station mask. */
@@ -2841,7 +2840,7 @@
CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_STAT_ENB|XL_INTRS);
#ifdef DEVICE_POLLING
/* Disable interrupts if we are polling. */
- if (ifp->if_capenable & IFCAP_POLLING)
+ if (if_getcapenable(ifp) & IFCAP_POLLING)
CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_INTR_ENB|0);
else
#endif
@@ -2866,8 +2865,8 @@
/* Select window 7 for normal operations. */
XL_SEL_WIN(7);
- 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->xl_wdog_timer = 0;
callout_reset(&sc->xl_tick_callout, hz, xl_tick, sc);
@@ -2877,9 +2876,9 @@
* Set media options.
*/
static int
-xl_ifmedia_upd(struct ifnet *ifp)
+xl_ifmedia_upd(if_t ifp)
{
- struct xl_softc *sc = ifp->if_softc;
+ struct xl_softc *sc = if_getsoftc(ifp);
struct ifmedia *ifm = NULL;
struct mii_data *mii = NULL;
@@ -2905,7 +2904,7 @@
if (sc->xl_media & XL_MEDIAOPT_MII ||
sc->xl_media & XL_MEDIAOPT_BTX ||
sc->xl_media & XL_MEDIAOPT_BT4) {
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
xl_init_locked(sc);
} else {
xl_setmode(sc, ifm->ifm_media);
@@ -2920,9 +2919,9 @@
* Report current media status.
*/
static void
-xl_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+xl_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
{
- struct xl_softc *sc = ifp->if_softc;
+ struct xl_softc *sc = if_getsoftc(ifp);
u_int32_t icfg;
u_int16_t status = 0;
struct mii_data *mii = NULL;
@@ -2992,9 +2991,9 @@
}
static int
-xl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
+xl_ioctl(if_t ifp, u_long command, caddr_t data)
{
- struct xl_softc *sc = ifp->if_softc;
+ struct xl_softc *sc = if_getsoftc(ifp);
struct ifreq *ifr = (struct ifreq *) data;
int error = 0, mask;
struct mii_data *mii = NULL;
@@ -3002,25 +3001,25 @@
switch (command) {
case SIOCSIFFLAGS:
XL_LOCK(sc);
- if (ifp->if_flags & IFF_UP) {
- if (ifp->if_drv_flags & IFF_DRV_RUNNING &&
- (ifp->if_flags ^ sc->xl_if_flags) &
+ if (if_getflags(ifp) & IFF_UP) {
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING &&
+ (if_getflags(ifp) ^ sc->xl_if_flags) &
(IFF_PROMISC | IFF_ALLMULTI))
xl_rxfilter(sc);
else
xl_init_locked(sc);
} else {
- if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
xl_stop(sc);
}
- sc->xl_if_flags = ifp->if_flags;
+ sc->xl_if_flags = if_getflags(ifp);
XL_UNLOCK(sc);
break;
case SIOCADDMULTI:
case SIOCDELMULTI:
/* XXX Downcall from if_addmulti() possibly with locks held. */
XL_LOCK(sc);
- if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
xl_rxfilter(sc);
XL_UNLOCK(sc);
break;
@@ -3036,19 +3035,19 @@
&mii->mii_media, command);
break;
case SIOCSIFCAP:
- mask = ifr->ifr_reqcap ^ ifp->if_capenable;
+ mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
#ifdef DEVICE_POLLING
if ((mask & IFCAP_POLLING) != 0 &&
- (ifp->if_capabilities & IFCAP_POLLING) != 0) {
- ifp->if_capenable ^= IFCAP_POLLING;
- if ((ifp->if_capenable & IFCAP_POLLING) != 0) {
+ (if_getcapabilities(ifp) & IFCAP_POLLING) != 0) {
+ if_togglecapenable(ifp, IFCAP_POLLING);
+ if ((if_getcapenable(ifp) & IFCAP_POLLING) != 0) {
error = ether_poll_register(xl_poll, ifp);
if (error)
break;
XL_LOCK(sc);
/* Disable interrupts */
CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_INTR_ENB|0);
- ifp->if_capenable |= IFCAP_POLLING;
+ if_setcapenablebit(ifp, IFCAP_POLLING, 0);
XL_UNLOCK(sc);
} else {
error = ether_poll_deregister(ifp);
@@ -3067,19 +3066,19 @@
#endif /* DEVICE_POLLING */
XL_LOCK(sc);
if ((mask & IFCAP_TXCSUM) != 0 &&
- (ifp->if_capabilities & IFCAP_TXCSUM) != 0) {
- ifp->if_capenable ^= IFCAP_TXCSUM;
- if ((ifp->if_capenable & IFCAP_TXCSUM) != 0)
- ifp->if_hwassist |= XL905B_CSUM_FEATURES;
+ (if_getcapabilities(ifp) & IFCAP_TXCSUM) != 0) {
+ if_togglecapenable(ifp, IFCAP_TXCSUM);
+ if ((if_getcapenable(ifp) & IFCAP_TXCSUM) != 0)
+ if_sethwassistbits(ifp, XL905B_CSUM_FEATURES, 0);
else
- ifp->if_hwassist &= ~XL905B_CSUM_FEATURES;
+ if_sethwassistbits(ifp, 0, XL905B_CSUM_FEATURES);
}
if ((mask & IFCAP_RXCSUM) != 0 &&
- (ifp->if_capabilities & IFCAP_RXCSUM) != 0)
- ifp->if_capenable ^= IFCAP_RXCSUM;
+ (if_getcapabilities(ifp) & IFCAP_RXCSUM) != 0)
+ if_togglecapenable(ifp, IFCAP_RXCSUM);
if ((mask & IFCAP_WOL_MAGIC) != 0 &&
- (ifp->if_capabilities & IFCAP_WOL_MAGIC) != 0)
- ifp->if_capenable ^= IFCAP_WOL_MAGIC;
+ (if_getcapabilities(ifp) & IFCAP_WOL_MAGIC) != 0)
+ if_togglecapenable(ifp, IFCAP_WOL_MAGIC);
XL_UNLOCK(sc);
break;
default:
@@ -3093,7 +3092,7 @@
static int
xl_watchdog(struct xl_softc *sc)
{
- struct ifnet *ifp = sc->xl_ifp;
+ if_t ifp = sc->xl_ifp;
u_int16_t status = 0;
int misintr;
@@ -3129,10 +3128,10 @@
device_printf(sc->xl_dev,
"no carrier - transceiver cable problem?\n");
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
xl_init_locked(sc);
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+ if (!if_sendq_empty(ifp)) {
if (sc->xl_type == XL_TYPE_905B)
xl_start_90xB_locked(ifp);
else
@@ -3150,7 +3149,7 @@
xl_stop(struct xl_softc *sc)
{
int i;
- struct ifnet *ifp = sc->xl_ifp;
+ if_t ifp = sc->xl_ifp;
XL_LOCK_ASSERT(sc);
@@ -3212,7 +3211,7 @@
if (sc->xl_ldata.xl_tx_list != NULL)
bzero(sc->xl_ldata.xl_tx_list, XL_TX_LIST_SZ);
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
}
/*
@@ -3245,15 +3244,15 @@
xl_resume(device_t dev)
{
struct xl_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
sc = device_get_softc(dev);
ifp = sc->xl_ifp;
XL_LOCK(sc);
- if (ifp->if_flags & IFF_UP) {
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if (if_getflags(ifp) & IFF_UP) {
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
xl_init_locked(sc);
}
@@ -3265,7 +3264,7 @@
static void
xl_setwol(struct xl_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
u_int16_t cfg, pmstat;
if ((sc->xl_flags & XL_FLAG_WOL) == 0)
@@ -3276,16 +3275,16 @@
/* Clear any pending PME events. */
CSR_READ_2(sc, XL_W7_BM_PME);
cfg = 0;
- if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
cfg |= XL_BM_PME_MAGIC;
CSR_WRITE_2(sc, XL_W7_BM_PME, cfg);
/* Enable RX. */
- if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_RX_ENABLE);
/* Request PME. */
pmstat = pci_read_config(sc->xl_dev,
sc->xl_pmcap + PCIR_POWER_STATUS, 2);
- if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
pmstat |= PCIM_PSTAT_PMEENABLE;
else
pmstat &= ~PCIM_PSTAT_PMEENABLE;
diff --git a/sys/dev/xl/if_xlreg.h b/sys/dev/xl/if_xlreg.h
--- a/sys/dev/xl/if_xlreg.h
+++ b/sys/dev/xl/if_xlreg.h
@@ -588,7 +588,7 @@
#define XL_NO_XCVR_PWR_MAGICBITS 0x0900
struct xl_softc {
- struct ifnet *xl_ifp; /* interface info */
+ if_t xl_ifp; /* interface info */
device_t xl_dev; /* device info */
struct ifmedia ifmedia; /* media info */
bus_space_handle_t xl_bhandle;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Mar 5, 7:33 PM (17 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17000221
Default Alt Text
D37785.id114411.diff (20 KB)
Attached To
Mode
D37785: Convert xl(4) to drvapi
Attached
Detach File
Event Timeline
Log In to Comment