Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F105080977
D37803.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
18 KB
Referenced Files
None
Subscribers
None
D37803.diff
View Options
diff --git a/sys/dev/rl/if_rl.c b/sys/dev/rl/if_rl.c
--- a/sys/dev/rl/if_rl.c
+++ b/sys/dev/rl/if_rl.c
@@ -185,9 +185,9 @@
static int rl_encap(struct rl_softc *, struct mbuf **);
static int rl_list_tx_init(struct rl_softc *);
static int rl_list_rx_init(struct rl_softc *);
-static int rl_ifmedia_upd(struct ifnet *);
-static void rl_ifmedia_sts(struct ifnet *, struct ifmediareq *);
-static int rl_ioctl(struct ifnet *, u_long, caddr_t);
+static int rl_ifmedia_upd(if_t);
+static void rl_ifmedia_sts(if_t, struct ifmediareq *);
+static int rl_ioctl(if_t, u_long, caddr_t);
static void rl_intr(void *);
static void rl_init(void *);
static void rl_init_locked(struct rl_softc *sc);
@@ -195,8 +195,8 @@
static void rl_miibus_statchg(device_t);
static int rl_miibus_writereg(device_t, int, int, int);
#ifdef DEVICE_POLLING
-static int rl_poll(struct ifnet *ifp, enum poll_cmd cmd, int count);
-static int rl_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count);
+static int rl_poll(if_t ifp, enum poll_cmd cmd, int count);
+static int rl_poll_locked(if_t ifp, enum poll_cmd cmd, int count);
#endif
static int rl_probe(device_t);
static void rl_read_eeprom(struct rl_softc *, uint8_t *, int, int, int);
@@ -205,8 +205,8 @@
static int rl_rxeof(struct rl_softc *);
static void rl_rxfilter(struct rl_softc *);
static int rl_shutdown(device_t);
-static void rl_start(struct ifnet *);
-static void rl_start_locked(struct ifnet *);
+static void rl_start(if_t);
+static void rl_start_locked(if_t);
static void rl_stop(struct rl_softc *);
static int rl_suspend(device_t);
static void rl_tick(void *);
@@ -478,14 +478,14 @@
rl_miibus_statchg(device_t dev)
{
struct rl_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
struct mii_data *mii;
sc = device_get_softc(dev);
mii = device_get_softc(sc->rl_miibus);
ifp = sc->rl_ifp;
if (mii == NULL || ifp == NULL ||
- (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
return;
sc->rl_flags &= ~RL_FLAG_LINK;
@@ -528,7 +528,7 @@
static void
rl_rxfilter(struct rl_softc *sc)
{
- struct ifnet *ifp = sc->rl_ifp;
+ if_t ifp = sc->rl_ifp;
uint32_t hashes[2] = { 0, 0 };
uint32_t rxfilt;
@@ -540,11 +540,11 @@
/* Always accept frames destined for this host. */
rxfilt |= RL_RXCFG_RX_INDIV;
/* Set capture broadcast bit to capture broadcast frames. */
- if (ifp->if_flags & IFF_BROADCAST)
+ if (if_getflags(ifp) & IFF_BROADCAST)
rxfilt |= RL_RXCFG_RX_BROAD;
- if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) {
+ if (if_getflags(ifp) & IFF_ALLMULTI || if_getflags(ifp) & IFF_PROMISC) {
rxfilt |= RL_RXCFG_RX_MULTI;
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & IFF_PROMISC)
rxfilt |= RL_RXCFG_RX_ALLPHYS;
hashes[0] = 0xFFFFFFFF;
hashes[1] = 0xFFFFFFFF;
@@ -637,7 +637,7 @@
{
uint8_t eaddr[ETHER_ADDR_LEN];
uint16_t as[3];
- struct ifnet *ifp;
+ if_t ifp;
struct rl_softc *sc;
const struct rl_type *t;
struct sysctl_ctx_list *ctx;
@@ -801,14 +801,14 @@
goto fail;
}
- ifp->if_softc = sc;
+ if_setsoftc(ifp, sc);
if_initname(ifp, device_get_name(dev), device_get_unit(dev));
- ifp->if_mtu = ETHERMTU;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_ioctl = rl_ioctl;
- ifp->if_start = rl_start;
- ifp->if_init = rl_init;
- ifp->if_capabilities = IFCAP_VLAN_MTU;
+ if_setmtu(ifp, ETHERMTU);
+ if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+ if_setioctlfn(ifp, rl_ioctl);
+ if_setstartfn(ifp, rl_start);
+ if_setinitfn(ifp, rl_init);
+ if_setcapabilities(ifp, IFCAP_VLAN_MTU);
/* Check WOL for RTL8139B or newer controllers. */
if (sc->rl_type == RL_8139 &&
pci_find_cap(sc->rl_dev, PCIY_PMG, &pmc) == 0) {
@@ -820,7 +820,7 @@
case RL_HWREV_8139D:
case RL_HWREV_8101:
case RL_HWREV_8100:
- ifp->if_capabilities |= IFCAP_WOL;
+ if_setcapabilitiesbit(ifp, IFCAP_WOL, 0);
/* Disable WOL. */
rl_clrwol(sc);
break;
@@ -828,14 +828,13 @@
break;
}
}
- ifp->if_capenable = ifp->if_capabilities;
- ifp->if_capenable &= ~(IFCAP_WOL_UCAST | IFCAP_WOL_MCAST);
+ if_setcapenable(ifp, if_getcapabilities(ifp));
+ if_setcapenablebit(ifp, 0, (IFCAP_WOL_UCAST | IFCAP_WOL_MCAST));
#ifdef DEVICE_POLLING
- ifp->if_capabilities |= IFCAP_POLLING;
+ if_setcapabilitiesbit(ifp, IFCAP_POLLING, 0);
#endif
- IFQ_SET_MAXLEN(&ifp->if_snd, ifqmaxlen);
- ifp->if_snd.ifq_drv_maxlen = ifqmaxlen;
- IFQ_SET_READY(&ifp->if_snd);
+ if_setsendqlen(ifp, ifqmaxlen);
+ if_setsendqready(ifp);
/*
* Call MI attach routine.
@@ -868,7 +867,7 @@
rl_detach(device_t dev)
{
struct rl_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
sc = device_get_softc(dev);
ifp = sc->rl_ifp;
@@ -876,7 +875,7 @@
KASSERT(mtx_initialized(&sc->rl_mtx), ("rl mutex not initialized"));
#ifdef DEVICE_POLLING
- if (ifp->if_capenable & IFCAP_POLLING)
+ if (if_getcapenable(ifp) & IFCAP_POLLING)
ether_poll_deregister(ifp);
#endif
/* These should only be active if attach succeeded */
@@ -1116,7 +1115,7 @@
rl_rxeof(struct rl_softc *sc)
{
struct mbuf *m;
- struct ifnet *ifp = sc->rl_ifp;
+ if_t ifp = sc->rl_ifp;
uint8_t *rxbufpos;
int total_len = 0;
int wrap = 0;
@@ -1143,7 +1142,7 @@
while((CSR_READ_1(sc, RL_COMMAND) & RL_CMD_EMPTY_RXBUF) == 0) {
#ifdef DEVICE_POLLING
- if (ifp->if_capenable & IFCAP_POLLING) {
+ if (if_getcapenable(ifp) & IFCAP_POLLING) {
if (sc->rxcycles <= 0)
break;
sc->rxcycles--;
@@ -1168,7 +1167,7 @@
total_len < ETHER_MIN_LEN ||
total_len > ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN) {
if_inc_counter(ifp, IFCOUNTER_IERRORS, 1);
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
rl_init_locked(sc);
return (rx_npkts);
}
@@ -1222,7 +1221,7 @@
if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
RL_UNLOCK(sc);
- (*ifp->if_input)(ifp, m);
+ if_input(ifp, m);
RL_LOCK(sc);
rx_npkts++;
}
@@ -1238,7 +1237,7 @@
static void
rl_txeof(struct rl_softc *sc)
{
- struct ifnet *ifp = sc->rl_ifp;
+ if_t ifp = sc->rl_ifp;
uint32_t txstat;
RL_LOCK_ASSERT(sc);
@@ -1280,14 +1279,14 @@
CSR_WRITE_4(sc, RL_TXCFG, RL_TXCFG_CONFIG);
oldthresh = sc->rl_txthresh;
/* error recovery */
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
rl_init_locked(sc);
/* restore original threshold */
sc->rl_txthresh = oldthresh;
return;
}
RL_INC(sc->rl_cdata.last_tx);
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
} while (sc->rl_cdata.last_tx != sc->rl_cdata.cur_tx);
if (RL_LAST_TXMBUF(sc) == NULL)
@@ -1435,22 +1434,22 @@
#ifdef DEVICE_POLLING
static int
-rl_poll(struct ifnet *ifp, enum poll_cmd cmd, int count)
+rl_poll(if_t ifp, enum poll_cmd cmd, int count)
{
- struct rl_softc *sc = ifp->if_softc;
+ struct rl_softc *sc = if_getsoftc(ifp);
int rx_npkts = 0;
RL_LOCK(sc);
- if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
rx_npkts = rl_poll_locked(ifp, cmd, count);
RL_UNLOCK(sc);
return (rx_npkts);
}
static int
-rl_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count)
+rl_poll_locked(if_t ifp, enum poll_cmd cmd, int count)
{
- struct rl_softc *sc = ifp->if_softc;
+ struct rl_softc *sc = if_getsoftc(ifp);
int rx_npkts;
RL_LOCK_ASSERT(sc);
@@ -1459,7 +1458,7 @@
rx_npkts = rl_rxeof(sc);
rl_txeof(sc);
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ if (!if_sendq_empty(ifp))
rl_start_locked(ifp);
if (cmd == POLL_AND_CHECK_STATUS) {
@@ -1475,7 +1474,7 @@
/* XXX We should check behaviour on receiver stalls. */
if (status & RL_ISR_SYSTEM_ERR) {
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
rl_init_locked(sc);
}
}
@@ -1487,7 +1486,7 @@
rl_intr(void *arg)
{
struct rl_softc *sc = arg;
- struct ifnet *ifp = sc->rl_ifp;
+ if_t ifp = sc->rl_ifp;
uint16_t status;
int count;
@@ -1497,11 +1496,11 @@
goto done_locked;
#ifdef DEVICE_POLLING
- if (ifp->if_capenable & IFCAP_POLLING)
+ if (if_getcapenable(ifp) & IFCAP_POLLING)
goto done_locked;
#endif
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
goto done_locked2;
status = CSR_READ_2(sc, RL_ISR);
if (status == 0xffff || (status & RL_INTRS) == 0)
@@ -1512,13 +1511,13 @@
CSR_WRITE_2(sc, RL_IMR, 0);
for (count = 16; count > 0; count--) {
CSR_WRITE_2(sc, RL_ISR, status);
- if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
if (status & (RL_ISR_RX_OK | RL_ISR_RX_ERR))
rl_rxeof(sc);
if (status & (RL_ISR_TX_OK | RL_ISR_TX_ERR))
rl_txeof(sc);
if (status & RL_ISR_SYSTEM_ERR) {
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
rl_init_locked(sc);
RL_UNLOCK(sc);
return;
@@ -1530,11 +1529,11 @@
break;
}
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ if (!if_sendq_empty(ifp))
rl_start_locked(ifp);
done_locked2:
- if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
CSR_WRITE_2(sc, RL_IMR, RL_INTRS);
done_locked:
RL_UNLOCK(sc);
@@ -1611,9 +1610,9 @@
* Main transmit routine.
*/
static void
-rl_start(struct ifnet *ifp)
+rl_start(if_t ifp)
{
- struct rl_softc *sc = ifp->if_softc;
+ struct rl_softc *sc = if_getsoftc(ifp);
RL_LOCK(sc);
rl_start_locked(ifp);
@@ -1621,19 +1620,19 @@
}
static void
-rl_start_locked(struct ifnet *ifp)
+rl_start_locked(if_t ifp)
{
- struct rl_softc *sc = ifp->if_softc;
+ struct rl_softc *sc = if_getsoftc(ifp);
struct mbuf *m_head = NULL;
RL_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 || (sc->rl_flags & RL_FLAG_LINK) == 0)
return;
while (RL_CUR_TXMBUF(sc) == NULL) {
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
+ m_head = if_dequeue(ifp);
if (m_head == NULL)
break;
@@ -1641,8 +1640,8 @@
if (rl_encap(sc, &m_head)) {
if (m_head == NULL)
break;
- IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ if_sendq_prepend(ifp, m_head);
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
break;
}
@@ -1666,7 +1665,7 @@
* packets from the queue.
*/
if (RL_CUR_TXMBUF(sc) != NULL)
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
}
static void
@@ -1682,7 +1681,7 @@
static void
rl_init_locked(struct rl_softc *sc)
{
- struct ifnet *ifp = sc->rl_ifp;
+ if_t ifp = sc->rl_ifp;
struct mii_data *mii;
uint32_t eaddr[2];
@@ -1690,7 +1689,7 @@
mii = device_get_softc(sc->rl_miibus);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
return;
/*
@@ -1716,7 +1715,7 @@
*/
CSR_WRITE_1(sc, RL_EECMD, RL_EEMODE_WRITECFG);
bzero(eaddr, sizeof(eaddr));
- bcopy(IF_LLADDR(sc->rl_ifp), eaddr, ETHER_ADDR_LEN);
+ bcopy(if_getlladdr(sc->rl_ifp), eaddr, ETHER_ADDR_LEN);
CSR_WRITE_STREAM_4(sc, RL_IDR0, eaddr[0]);
CSR_WRITE_STREAM_4(sc, RL_IDR4, eaddr[1]);
CSR_WRITE_1(sc, RL_EECMD, RL_EEMODE_OFF);
@@ -1745,7 +1744,7 @@
#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, RL_IMR, 0);
else
#endif
@@ -1766,8 +1765,8 @@
CSR_WRITE_1(sc, sc->rl_cfg1, RL_CFG1_DRVLOAD|RL_CFG1_FULLDUPLEX);
- 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);
callout_reset(&sc->rl_stat_callout, hz, rl_tick, sc);
}
@@ -1776,9 +1775,9 @@
* Set media options.
*/
static int
-rl_ifmedia_upd(struct ifnet *ifp)
+rl_ifmedia_upd(if_t ifp)
{
- struct rl_softc *sc = ifp->if_softc;
+ struct rl_softc *sc = if_getsoftc(ifp);
struct mii_data *mii;
mii = device_get_softc(sc->rl_miibus);
@@ -1794,9 +1793,9 @@
* Report current media status.
*/
static void
-rl_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+rl_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
{
- struct rl_softc *sc = ifp->if_softc;
+ struct rl_softc *sc = if_getsoftc(ifp);
struct mii_data *mii;
mii = device_get_softc(sc->rl_miibus);
@@ -1809,26 +1808,26 @@
}
static int
-rl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
+rl_ioctl(if_t ifp, u_long command, caddr_t data)
{
struct ifreq *ifr = (struct ifreq *)data;
struct mii_data *mii;
- struct rl_softc *sc = ifp->if_softc;
+ struct rl_softc *sc = if_getsoftc(ifp);
int error = 0, mask;
switch (command) {
case SIOCSIFFLAGS:
RL_LOCK(sc);
- if (ifp->if_flags & IFF_UP) {
- if (ifp->if_drv_flags & IFF_DRV_RUNNING &&
- ((ifp->if_flags ^ sc->rl_if_flags) &
+ if (if_getflags(ifp) & IFF_UP) {
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING &&
+ ((if_getflags(ifp) ^ sc->rl_if_flags) &
(IFF_PROMISC | IFF_ALLMULTI)))
rl_rxfilter(sc);
else
rl_init_locked(sc);
- } else if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ } else if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
rl_stop(sc);
- sc->rl_if_flags = ifp->if_flags;
+ sc->rl_if_flags = if_getflags(ifp);
RL_UNLOCK(sc);
break;
case SIOCADDMULTI:
@@ -1843,40 +1842,40 @@
error = ifmedia_ioctl(ifp, ifr, &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 (ifr->ifr_reqcap & IFCAP_POLLING &&
- !(ifp->if_capenable & IFCAP_POLLING)) {
+ !(if_getcapenable(ifp) & IFCAP_POLLING)) {
error = ether_poll_register(rl_poll, ifp);
if (error)
return(error);
RL_LOCK(sc);
/* Disable interrupts */
CSR_WRITE_2(sc, RL_IMR, 0x0000);
- ifp->if_capenable |= IFCAP_POLLING;
+ if_setcapenablebit(ifp, IFCAP_POLLING, 0);
RL_UNLOCK(sc);
return (error);
}
if (!(ifr->ifr_reqcap & IFCAP_POLLING) &&
- ifp->if_capenable & IFCAP_POLLING) {
+ if_getcapenable(ifp) & IFCAP_POLLING) {
error = ether_poll_deregister(ifp);
/* Enable interrupts. */
RL_LOCK(sc);
CSR_WRITE_2(sc, RL_IMR, RL_INTRS);
- ifp->if_capenable &= ~IFCAP_POLLING;
+ if_setcapenablebit(ifp, 0, IFCAP_POLLING);
RL_UNLOCK(sc);
return (error);
}
#endif /* DEVICE_POLLING */
if ((mask & IFCAP_WOL) != 0 &&
- (ifp->if_capabilities & IFCAP_WOL) != 0) {
+ (if_getcapabilities(ifp) & IFCAP_WOL) != 0) {
if ((mask & IFCAP_WOL_UCAST) != 0)
- ifp->if_capenable ^= IFCAP_WOL_UCAST;
+ if_togglecapenable(ifp, IFCAP_WOL_UCAST);
if ((mask & IFCAP_WOL_MCAST) != 0)
- ifp->if_capenable ^= IFCAP_WOL_MCAST;
+ if_togglecapenable(ifp, IFCAP_WOL_MCAST);
if ((mask & IFCAP_WOL_MAGIC) != 0)
- ifp->if_capenable ^= IFCAP_WOL_MAGIC;
+ if_togglecapenable(ifp, IFCAP_WOL_MAGIC);
}
break;
default:
@@ -1901,7 +1900,7 @@
rl_txeof(sc);
rl_rxeof(sc);
- sc->rl_ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(sc->rl_ifp, 0, IFF_DRV_RUNNING);
rl_init_locked(sc);
}
@@ -1913,13 +1912,13 @@
rl_stop(struct rl_softc *sc)
{
int i;
- struct ifnet *ifp = sc->rl_ifp;
+ if_t ifp = sc->rl_ifp;
RL_LOCK_ASSERT(sc);
sc->rl_watchdog_timer = 0;
callout_stop(&sc->rl_stat_callout);
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
sc->rl_flags &= ~RL_FLAG_LINK;
CSR_WRITE_1(sc, RL_COMMAND, 0x00);
@@ -1981,7 +1980,7 @@
rl_resume(device_t dev)
{
struct rl_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
int pmc;
uint16_t pmstat;
@@ -1990,7 +1989,7 @@
RL_LOCK(sc);
- if ((ifp->if_capabilities & IFCAP_WOL) != 0 &&
+ if ((if_getcapabilities(ifp) & IFCAP_WOL) != 0 &&
pci_find_cap(sc->rl_dev, PCIY_PMG, &pmc) == 0) {
/* Disable PME and clear PME status. */
pmstat = pci_read_config(sc->rl_dev,
@@ -2008,7 +2007,7 @@
}
/* reinitialize interface if necessary */
- if (ifp->if_flags & IFF_UP)
+ if (if_getflags(ifp) & IFF_UP)
rl_init_locked(sc);
sc->suspended = 0;
@@ -2036,7 +2035,7 @@
* interrupt comes in later on, which can happen in some
* cases.
*/
- sc->rl_ifp->if_flags &= ~IFF_UP;
+ if_setflagbits(sc->rl_ifp, 0, IFF_UP);
rl_setwol(sc);
RL_UNLOCK(sc);
@@ -2046,7 +2045,7 @@
static void
rl_setwol(struct rl_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
int pmc;
uint16_t pmstat;
uint8_t v;
@@ -2054,7 +2053,7 @@
RL_LOCK_ASSERT(sc);
ifp = sc->rl_ifp;
- if ((ifp->if_capabilities & IFCAP_WOL) == 0)
+ if ((if_getcapabilities(ifp) & IFCAP_WOL) == 0)
return;
if (pci_find_cap(sc->rl_dev, PCIY_PMG, &pmc) != 0)
return;
@@ -2065,24 +2064,24 @@
/* Enable PME. */
v = CSR_READ_1(sc, sc->rl_cfg1);
v &= ~RL_CFG1_PME;
- if ((ifp->if_capenable & IFCAP_WOL) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL) != 0)
v |= RL_CFG1_PME;
CSR_WRITE_1(sc, sc->rl_cfg1, v);
v = CSR_READ_1(sc, sc->rl_cfg3);
v &= ~(RL_CFG3_WOL_LINK | RL_CFG3_WOL_MAGIC);
- if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
v |= RL_CFG3_WOL_MAGIC;
CSR_WRITE_1(sc, sc->rl_cfg3, v);
v = CSR_READ_1(sc, sc->rl_cfg5);
v &= ~(RL_CFG5_WOL_BCAST | RL_CFG5_WOL_MCAST | RL_CFG5_WOL_UCAST);
v &= ~RL_CFG5_WOL_LANWAKE;
- if ((ifp->if_capenable & IFCAP_WOL_UCAST) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_UCAST) != 0)
v |= RL_CFG5_WOL_UCAST;
- if ((ifp->if_capenable & IFCAP_WOL_MCAST) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_MCAST) != 0)
v |= RL_CFG5_WOL_MCAST | RL_CFG5_WOL_BCAST;
- if ((ifp->if_capenable & IFCAP_WOL) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL) != 0)
v |= RL_CFG5_WOL_LANWAKE;
CSR_WRITE_1(sc, sc->rl_cfg5, v);
@@ -2092,7 +2091,7 @@
/* Request PME if WOL is requested. */
pmstat = pci_read_config(sc->rl_dev, pmc + PCIR_POWER_STATUS, 2);
pmstat &= ~(PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE);
- if ((ifp->if_capenable & IFCAP_WOL) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL) != 0)
pmstat |= PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE;
pci_write_config(sc->rl_dev, pmc + PCIR_POWER_STATUS, pmstat, 2);
}
@@ -2100,11 +2099,11 @@
static void
rl_clrwol(struct rl_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
uint8_t v;
ifp = sc->rl_ifp;
- if ((ifp->if_capabilities & IFCAP_WOL) == 0)
+ if ((if_getcapabilities(ifp) & IFCAP_WOL) == 0)
return;
/* Enable config register write. */
diff --git a/sys/dev/rl/if_rlreg.h b/sys/dev/rl/if_rlreg.h
--- a/sys/dev/rl/if_rlreg.h
+++ b/sys/dev/rl/if_rlreg.h
@@ -863,7 +863,7 @@
enum rl_twist { DONE, CHK_LINK, FIND_ROW, SET_PARAM, RECHK_LONG, RETUNE };
struct rl_softc {
- struct ifnet *rl_ifp; /* interface info */
+ if_t rl_ifp; /* interface info */
bus_space_handle_t rl_bhandle; /* bus space handle */
bus_space_tag_t rl_btag; /* bus space tag */
device_t rl_dev;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Dec 13, 5:22 AM (19 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15348614
Default Alt Text
D37803.diff (18 KB)
Attached To
Mode
D37803: Mechanically convert if_rl(4) to DrvAPI
Attached
Detach File
Event Timeline
Log In to Comment