Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F96548210
D37826.id114452.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
17 KB
Referenced Files
None
Subscribers
None
D37826.id114452.diff
View Options
diff --git a/sys/dev/sis/if_sis.c b/sys/dev/sis/if_sis.c
--- a/sys/dev/sis/if_sis.c
+++ b/sys/dev/sis/if_sis.c
@@ -146,12 +146,12 @@
#ifndef __NO_STRICT_ALIGNMENT
static __inline void sis_fixup_rx(struct mbuf *);
#endif
-static void sis_ifmedia_sts(struct ifnet *, struct ifmediareq *);
-static int sis_ifmedia_upd(struct ifnet *);
+static void sis_ifmedia_sts(if_t, struct ifmediareq *);
+static int sis_ifmedia_upd(if_t );
static void sis_init(void *);
static void sis_initl(struct sis_softc *);
static void sis_intr(void *);
-static int sis_ioctl(struct ifnet *, u_long, caddr_t);
+static int sis_ioctl(if_t, u_long, caddr_t);
static uint32_t sis_mii_bitbang_read(device_t);
static void sis_mii_bitbang_write(device_t, uint32_t);
static int sis_newbuf(struct sis_softc *, struct sis_rxdesc *);
@@ -160,8 +160,8 @@
static void sis_rxfilter(struct sis_softc *);
static void sis_rxfilter_ns(struct sis_softc *);
static void sis_rxfilter_sis(struct sis_softc *);
-static void sis_start(struct ifnet *);
-static void sis_startl(struct ifnet *);
+static void sis_start(if_t );
+static void sis_startl(if_t );
static void sis_stop(struct sis_softc *);
static int sis_suspend(device_t);
static void sis_add_sysctls(struct sis_softc *);
@@ -578,7 +578,7 @@
{
struct sis_softc *sc;
struct mii_data *mii;
- struct ifnet *ifp;
+ if_t ifp;
uint32_t reg;
sc = device_get_softc(dev);
@@ -587,7 +587,7 @@
mii = device_get_softc(sc->sis_miibus);
ifp = sc->sis_ifp;
if (mii == NULL || ifp == NULL ||
- (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
return;
sc->sis_flags &= ~SIS_FLAG_LINK;
@@ -715,7 +715,7 @@
static void
sis_rxfilter_ns(struct sis_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
uint32_t i, filter;
ifp = sc->sis_ifp;
@@ -731,7 +731,7 @@
NS_RXFILTCTL_MCHASH | SIS_RXFILTCTL_ALLPHYS | SIS_RXFILTCTL_BROAD |
SIS_RXFILTCTL_ALLMULTI);
- if (ifp->if_flags & IFF_BROADCAST)
+ if (if_getflags(ifp) & IFF_BROADCAST)
filter |= SIS_RXFILTCTL_BROAD;
/*
* For the NatSemi chip, we have to explicitly enable the
@@ -741,9 +741,9 @@
*/
filter |= NS_RXFILTCTL_ARP | NS_RXFILTCTL_PERFECT;
- if (ifp->if_flags & (IFF_ALLMULTI | IFF_PROMISC)) {
+ if (if_getflags(ifp) & (IFF_ALLMULTI | IFF_PROMISC)) {
filter |= SIS_RXFILTCTL_ALLMULTI;
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & IFF_PROMISC)
filter |= SIS_RXFILTCTL_ALLPHYS;
} else {
/*
@@ -787,7 +787,7 @@
static void
sis_rxfilter_sis(struct sis_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
struct sis_hash_maddr_ctx ctx;
uint32_t filter, i, n;
@@ -806,12 +806,12 @@
}
filter &= ~(SIS_RXFILTCTL_ALLPHYS | SIS_RXFILTCTL_BROAD |
SIS_RXFILTCTL_ALLMULTI);
- if (ifp->if_flags & IFF_BROADCAST)
+ if (if_getflags(ifp) & IFF_BROADCAST)
filter |= SIS_RXFILTCTL_BROAD;
- if (ifp->if_flags & (IFF_ALLMULTI | IFF_PROMISC)) {
+ if (if_getflags(ifp) & (IFF_ALLMULTI | IFF_PROMISC)) {
filter |= SIS_RXFILTCTL_ALLMULTI;
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & IFF_PROMISC)
filter |= SIS_RXFILTCTL_ALLPHYS;
for (i = 0; i < n; i++)
ctx.hashes[i] = ~0;
@@ -899,7 +899,7 @@
{
u_char eaddr[ETHER_ADDR_LEN];
struct sis_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
int error = 0, pmc;
sc = device_get_softc(dev);
@@ -1064,22 +1064,21 @@
error = ENOSPC;
goto fail;
}
- ifp->if_softc = sc;
+ if_setsoftc(ifp, sc);
if_initname(ifp, device_get_name(dev), device_get_unit(dev));
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_ioctl = sis_ioctl;
- ifp->if_start = sis_start;
- ifp->if_init = sis_init;
- IFQ_SET_MAXLEN(&ifp->if_snd, SIS_TX_LIST_CNT - 1);
- ifp->if_snd.ifq_drv_maxlen = SIS_TX_LIST_CNT - 1;
- IFQ_SET_READY(&ifp->if_snd);
+ if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+ if_setioctlfn(ifp, sis_ioctl);
+ if_setstartfn(ifp, sis_start);
+ if_setinitfn(ifp, sis_init);
+ if_setsendqlen(ifp, SIS_TX_LIST_CNT - 1);
+ if_setsendqready(ifp);
if (pci_find_cap(sc->sis_dev, PCIY_PMG, &pmc) == 0) {
if (sc->sis_type == SIS_TYPE_83815)
- ifp->if_capabilities |= IFCAP_WOL;
+ if_setcapabilitiesbit(ifp, IFCAP_WOL, 0);
else
- 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));
}
/*
@@ -1100,11 +1099,11 @@
/*
* Tell the upper layer(s) we support long frames.
*/
- ifp->if_hdrlen = sizeof(struct ether_vlan_header);
- ifp->if_capabilities |= IFCAP_VLAN_MTU;
- ifp->if_capenable = ifp->if_capabilities;
+ if_setifheaderlen(ifp, sizeof(struct ether_vlan_header));
+ if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU, 0);
+ if_setcapenable(ifp, if_getcapabilities(ifp));
#ifdef DEVICE_POLLING
- ifp->if_capabilities |= IFCAP_POLLING;
+ if_setcapabilitiesbit(ifp, IFCAP_POLLING, 0);
#endif
/* Hook interrupt last to avoid having to lock softc */
@@ -1135,14 +1134,14 @@
sis_detach(device_t dev)
{
struct sis_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
sc = device_get_softc(dev);
KASSERT(mtx_initialized(&sc->sis_mtx), ("sis mutex not initialized"));
ifp = sc->sis_ifp;
#ifdef DEVICE_POLLING
- if (ifp->if_capenable & IFCAP_POLLING)
+ if (if_getcapenable(ifp) & IFCAP_POLLING)
ether_poll_deregister(ifp);
#endif
@@ -1485,7 +1484,7 @@
sis_rxeof(struct sis_softc *sc)
{
struct mbuf *m;
- struct ifnet *ifp;
+ if_t ifp;
struct sis_rxdesc *rxd;
struct sis_desc *cur_rx;
int prog, rx_cons, rx_npkts = 0, total_len;
@@ -1499,10 +1498,10 @@
rx_cons = sc->sis_rx_cons;
ifp = sc->sis_ifp;
- for (prog = 0; (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0;
+ for (prog = 0; (if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0;
SIS_INC(rx_cons, SIS_RX_LIST_CNT), prog++) {
#ifdef DEVICE_POLLING
- if (ifp->if_capenable & IFCAP_POLLING) {
+ if (if_getcapenable(ifp) & IFCAP_POLLING) {
if (sc->rxcycles <= 0)
break;
sc->rxcycles--;
@@ -1515,7 +1514,7 @@
rxd = &sc->sis_rxdesc[rx_cons];
total_len = (rxstat & SIS_CMDSTS_BUFLEN) - ETHER_CRC_LEN;
- if ((ifp->if_capenable & IFCAP_VLAN_MTU) != 0 &&
+ if ((if_getcapenable(ifp) & IFCAP_VLAN_MTU) != 0 &&
total_len <= (ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN -
ETHER_CRC_LEN))
rxstat &= ~SIS_RXSTAT_GIANT;
@@ -1550,7 +1549,7 @@
m->m_pkthdr.rcvif = ifp;
SIS_UNLOCK(sc);
- (*ifp->if_input)(ifp, m);
+ if_input(ifp, m);
SIS_LOCK(sc);
rx_npkts++;
}
@@ -1572,7 +1571,7 @@
static void
sis_txeof(struct sis_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
struct sis_desc *cur_tx;
struct sis_txdesc *txd;
uint32_t cons, txstat;
@@ -1616,7 +1615,7 @@
}
}
sc->sis_tx_cnt--;
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
}
sc->sis_tx_cons = cons;
if (sc->sis_tx_cnt == 0)
@@ -1644,13 +1643,13 @@
static poll_handler_t sis_poll;
static int
-sis_poll(struct ifnet *ifp, enum poll_cmd cmd, int count)
+sis_poll(if_t ifp, enum poll_cmd cmd, int count)
{
- struct sis_softc *sc = ifp->if_softc;
+ struct sis_softc *sc = if_getsoftc(ifp);
int rx_npkts = 0;
SIS_LOCK(sc);
- if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+ if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) {
SIS_UNLOCK(sc);
return (rx_npkts);
}
@@ -1665,7 +1664,7 @@
sc->rxcycles = count;
rx_npkts = sis_rxeof(sc);
sis_txeof(sc);
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ if (!if_sendq_empty(ifp))
sis_startl(ifp);
if (sc->rxcycles > 0 || cmd == POLL_AND_CHECK_STATUS) {
@@ -1681,7 +1680,7 @@
SIS_SETBIT(sc, SIS_CSR, SIS_CSR_RX_ENABLE);
if (status & SIS_ISR_SYSERR) {
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
sis_initl(sc);
}
}
@@ -1695,7 +1694,7 @@
sis_intr(void *arg)
{
struct sis_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
uint32_t status;
sc = arg;
@@ -1703,7 +1702,7 @@
SIS_LOCK(sc);
#ifdef DEVICE_POLLING
- if (ifp->if_capenable & IFCAP_POLLING) {
+ if (if_getcapenable(ifp) & IFCAP_POLLING) {
SIS_UNLOCK(sc);
return;
}
@@ -1721,7 +1720,7 @@
CSR_WRITE_4(sc, SIS_IER, 0);
for (;(status & SIS_INTRS) != 0;) {
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
break;
if (status &
(SIS_ISR_TX_DESC_OK | SIS_ISR_TX_ERR |
@@ -1739,7 +1738,7 @@
SIS_SETBIT(sc, SIS_CSR, SIS_CSR_RX_ENABLE);
if (status & SIS_ISR_SYSERR) {
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
sis_initl(sc);
SIS_UNLOCK(sc);
return;
@@ -1747,11 +1746,11 @@
status = CSR_READ_4(sc, SIS_ISR);
}
- if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
/* Re-enable interrupts. */
CSR_WRITE_4(sc, SIS_IER, 1);
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ if (!if_sendq_empty(ifp))
sis_startl(ifp);
}
@@ -1870,42 +1869,42 @@
}
static void
-sis_start(struct ifnet *ifp)
+sis_start(if_t ifp)
{
struct sis_softc *sc;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
SIS_LOCK(sc);
sis_startl(ifp);
SIS_UNLOCK(sc);
}
static void
-sis_startl(struct ifnet *ifp)
+sis_startl(if_t ifp)
{
struct sis_softc *sc;
struct mbuf *m_head;
int queued;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
SIS_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->sis_flags & SIS_FLAG_LINK) == 0)
return;
- for (queued = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) &&
+ for (queued = 0; !if_sendq_empty(ifp) &&
sc->sis_tx_cnt < SIS_TX_LIST_CNT - 4;) {
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
+ m_head = if_dequeue(ifp);
if (m_head == NULL)
break;
if (sis_encap(sc, &m_head) != 0) {
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;
}
@@ -1944,13 +1943,13 @@
static void
sis_initl(struct sis_softc *sc)
{
- struct ifnet *ifp = sc->sis_ifp;
+ if_t ifp = sc->sis_ifp;
struct mii_data *mii;
uint8_t *eaddr;
SIS_LOCK_ASSERT(sc);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
return;
/*
@@ -1974,7 +1973,7 @@
mii = device_get_softc(sc->sis_miibus);
/* Set MAC address */
- eaddr = IF_LLADDR(sc->sis_ifp);
+ eaddr = if_getlladdr(sc->sis_ifp);
if (sc->sis_type == SIS_TYPE_83815) {
CSR_WRITE_4(sc, SIS_RXFILT_CTL, NS_FILTADDR_PAR0);
CSR_WRITE_4(sc, SIS_RXFILT_DATA, eaddr[0] | eaddr[1] << 8);
@@ -2061,7 +2060,7 @@
* ... only enable interrupts if we are not polling, make sure
* they are off otherwise.
*/
- if (ifp->if_capenable & IFCAP_POLLING)
+ if (if_getcapenable(ifp) & IFCAP_POLLING)
CSR_WRITE_4(sc, SIS_IER, 0);
else
#endif
@@ -2073,8 +2072,8 @@
sc->sis_flags &= ~SIS_FLAG_LINK;
mii_mediachg(mii);
- 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->sis_stat_ch, hz, sis_tick, sc);
}
@@ -2083,14 +2082,14 @@
* Set media options.
*/
static int
-sis_ifmedia_upd(struct ifnet *ifp)
+sis_ifmedia_upd(if_t ifp)
{
struct sis_softc *sc;
struct mii_data *mii;
struct mii_softc *miisc;
int error;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
SIS_LOCK(sc);
mii = device_get_softc(sc->sis_miibus);
@@ -2106,12 +2105,12 @@
* Report current media status.
*/
static void
-sis_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+sis_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
{
struct sis_softc *sc;
struct mii_data *mii;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
SIS_LOCK(sc);
mii = device_get_softc(sc->sis_miibus);
@@ -2122,9 +2121,9 @@
}
static int
-sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
+sis_ioctl(if_t ifp, u_long command, caddr_t data)
{
- struct sis_softc *sc = ifp->if_softc;
+ struct sis_softc *sc = if_getsoftc(ifp);
struct ifreq *ifr = (struct ifreq *) data;
struct mii_data *mii;
int error = 0, mask;
@@ -2132,22 +2131,22 @@
switch (command) {
case SIOCSIFFLAGS:
SIS_LOCK(sc);
- if (ifp->if_flags & IFF_UP) {
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0 &&
- ((ifp->if_flags ^ sc->sis_if_flags) &
+ if (if_getflags(ifp) & IFF_UP) {
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0 &&
+ ((if_getflags(ifp) ^ sc->sis_if_flags) &
(IFF_PROMISC | IFF_ALLMULTI)) != 0)
sis_rxfilter(sc);
else
sis_initl(sc);
- } else if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ } else if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
sis_stop(sc);
- sc->sis_if_flags = ifp->if_flags;
+ sc->sis_if_flags = if_getflags(ifp);
SIS_UNLOCK(sc);
break;
case SIOCADDMULTI:
case SIOCDELMULTI:
SIS_LOCK(sc);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
sis_rxfilter(sc);
SIS_UNLOCK(sc);
break;
@@ -2158,12 +2157,12 @@
break;
case SIOCSIFCAP:
SIS_LOCK(sc);
- mask = ifr->ifr_reqcap ^ ifp->if_capenable;
+ mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
#ifdef DEVICE_POLLING
if ((mask & IFCAP_POLLING) != 0 &&
- (IFCAP_POLLING & ifp->if_capabilities) != 0) {
- ifp->if_capenable ^= IFCAP_POLLING;
- if ((IFCAP_POLLING & ifp->if_capenable) != 0) {
+ (IFCAP_POLLING & if_getcapabilities(ifp)) != 0) {
+ if_togglecapenable(ifp, IFCAP_POLLING);
+ if ((IFCAP_POLLING & if_getcapenable(ifp)) != 0) {
error = ether_poll_register(sis_poll, ifp);
if (error != 0) {
SIS_UNLOCK(sc);
@@ -2179,13 +2178,13 @@
}
#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);
}
SIS_UNLOCK(sc);
break;
@@ -2209,10 +2208,10 @@
device_printf(sc->sis_dev, "watchdog timeout\n");
if_inc_counter(sc->sis_ifp, IFCOUNTER_OERRORS, 1);
- sc->sis_ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(sc->sis_ifp, 0, IFF_DRV_RUNNING);
sis_initl(sc);
- if (!IFQ_DRV_IS_EMPTY(&sc->sis_ifp->if_snd))
+ if (!if_sendq_empty(sc->sis_ifp))
sis_startl(sc->sis_ifp);
}
@@ -2223,7 +2222,7 @@
static void
sis_stop(struct sis_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
struct sis_rxdesc *rxd;
struct sis_txdesc *txd;
int i;
@@ -2235,7 +2234,7 @@
callout_stop(&sc->sis_stat_ch);
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
CSR_WRITE_4(sc, SIS_IER, 0);
CSR_WRITE_4(sc, SIS_IMR, 0);
CSR_READ_4(sc, SIS_ISR); /* clear any interrupts already pending */
@@ -2303,13 +2302,13 @@
sis_resume(device_t dev)
{
struct sis_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
sc = device_get_softc(dev);
SIS_LOCK(sc);
ifp = sc->sis_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);
sis_initl(sc);
}
SIS_UNLOCK(sc);
@@ -2319,13 +2318,13 @@
static void
sis_wol(struct sis_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
uint32_t val;
uint16_t pmstat;
int pmc;
ifp = sc->sis_ifp;
- if ((ifp->if_capenable & IFCAP_WOL) == 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL) == 0)
return;
if (sc->sis_type == SIS_TYPE_83815) {
@@ -2335,11 +2334,11 @@
/* Configure WOL events. */
CSR_READ_4(sc, NS_WCSR);
val = 0;
- if ((ifp->if_capenable & IFCAP_WOL_UCAST) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_UCAST) != 0)
val |= NS_WCSR_WAKE_UCAST;
- if ((ifp->if_capenable & IFCAP_WOL_MCAST) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_MCAST) != 0)
val |= NS_WCSR_WAKE_MCAST;
- if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
val |= NS_WCSR_WAKE_MAGIC;
CSR_WRITE_4(sc, NS_WCSR, val);
/* Enable PME and clear PMESTS. */
@@ -2352,14 +2351,14 @@
if (pci_find_cap(sc->sis_dev, PCIY_PMG, &pmc) != 0)
return;
val = 0;
- if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
val |= SIS_PWRMAN_WOL_MAGIC;
CSR_WRITE_4(sc, SIS_PWRMAN_CTL, val);
/* Request PME. */
pmstat = pci_read_config(sc->sis_dev,
pmc + PCIR_POWER_STATUS, 2);
pmstat &= ~(PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE);
- if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
pmstat |= PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE;
pci_write_config(sc->sis_dev,
pmc + PCIR_POWER_STATUS, pmstat, 2);
diff --git a/sys/dev/sis/if_sisreg.h b/sys/dev/sis/if_sisreg.h
--- a/sys/dev/sis/if_sisreg.h
+++ b/sys/dev/sis/if_sisreg.h
@@ -454,7 +454,7 @@
};
struct sis_softc {
- struct ifnet *sis_ifp; /* interface info */
+ if_t sis_ifp; /* interface info */
struct resource *sis_res[2];
void *sis_intrhand;
device_t sis_dev;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Sep 26, 11:02 AM (20 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
12783546
Default Alt Text
D37826.id114452.diff (17 KB)
Attached To
Mode
D37826: Mechanically convert sis(4) to DrvAPI
Attached
Detach File
Event Timeline
Log In to Comment