Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F104195795
D37805.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
D37805.diff
View Options
diff --git a/sys/dev/tsec/if_tsec.h b/sys/dev/tsec/if_tsec.h
--- a/sys/dev/tsec/if_tsec.h
+++ b/sys/dev/tsec/if_tsec.h
@@ -55,7 +55,7 @@
struct tsec_softc {
/* XXX MII bus requires that struct ifnet is first!!! */
- struct ifnet *tsec_ifp;
+ if_t tsec_ifp;
struct mtx transmit_lock; /* transmitter lock */
struct mtx receive_lock; /* receiver lock */
diff --git a/sys/dev/tsec/if_tsec.c b/sys/dev/tsec/if_tsec.c
--- a/sys/dev/tsec/if_tsec.c
+++ b/sys/dev/tsec/if_tsec.c
@@ -73,12 +73,12 @@
bus_dmamap_t *dmap, bus_size_t dsize, void **vaddr, void *raddr,
const char *dname);
static void tsec_dma_ctl(struct tsec_softc *sc, int state);
-static void tsec_encap(struct ifnet *ifp, struct tsec_softc *sc,
+static void tsec_encap(if_t ifp, struct tsec_softc *sc,
struct mbuf *m0, uint16_t fcb_flags, int *start_tx);
static void tsec_free_dma(struct tsec_softc *sc);
static void tsec_free_dma_desc(bus_dma_tag_t dtag, bus_dmamap_t dmap, void *vaddr);
-static int tsec_ifmedia_upd(struct ifnet *ifp);
-static void tsec_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr);
+static int tsec_ifmedia_upd(if_t ifp);
+static void tsec_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr);
static int tsec_new_rxbuf(bus_dma_tag_t tag, bus_dmamap_t map,
struct mbuf **mbufp, uint32_t *paddr);
static void tsec_map_dma_addr(void *arg, bus_dma_segment_t *segs,
@@ -86,12 +86,12 @@
static void tsec_intrs_ctl(struct tsec_softc *sc, int state);
static void tsec_init(void *xsc);
static void tsec_init_locked(struct tsec_softc *sc);
-static int tsec_ioctl(struct ifnet *ifp, u_long command, caddr_t data);
+static int tsec_ioctl(if_t ifp, u_long command, caddr_t data);
static void tsec_reset_mac(struct tsec_softc *sc);
static void tsec_setfilter(struct tsec_softc *sc);
static void tsec_set_mac_address(struct tsec_softc *sc);
-static void tsec_start(struct ifnet *ifp);
-static void tsec_start_locked(struct ifnet *ifp);
+static void tsec_start(if_t ifp);
+static void tsec_start_locked(if_t ifp);
static void tsec_stop(struct tsec_softc *sc);
static void tsec_tick(void *arg);
static void tsec_watchdog(struct tsec_softc *sc);
@@ -119,7 +119,7 @@
tsec_attach(struct tsec_softc *sc)
{
uint8_t hwaddr[ETHER_ADDR_LEN];
- struct ifnet *ifp;
+ if_t ifp;
int error = 0;
int i;
@@ -247,26 +247,25 @@
return (ENOMEM);
}
- ifp->if_softc = sc;
+ if_setsoftc(ifp, sc);
if_initname(ifp, device_get_name(sc->dev), device_get_unit(sc->dev));
- ifp->if_flags = IFF_SIMPLEX | IFF_MULTICAST | IFF_BROADCAST;
- ifp->if_init = tsec_init;
- ifp->if_start = tsec_start;
- ifp->if_ioctl = tsec_ioctl;
+ if_setflags(ifp, IFF_SIMPLEX | IFF_MULTICAST | IFF_BROADCAST);
+ if_setinitfn(ifp, tsec_init);
+ if_setstartfn(ifp, tsec_start);
+ if_setioctlfn(ifp, tsec_ioctl);
- IFQ_SET_MAXLEN(&ifp->if_snd, TSEC_TX_NUM_DESC - 1);
- ifp->if_snd.ifq_drv_maxlen = TSEC_TX_NUM_DESC - 1;
- IFQ_SET_READY(&ifp->if_snd);
+ if_setsendqlen(ifp, TSEC_TX_NUM_DESC - 1);
+ if_setsendqready(ifp);
- ifp->if_capabilities = IFCAP_VLAN_MTU;
+ if_setcapabilities(ifp, IFCAP_VLAN_MTU);
if (sc->is_etsec)
- ifp->if_capabilities |= IFCAP_HWCSUM;
+ if_setcapabilitiesbit(ifp, IFCAP_HWCSUM, 0);
- ifp->if_capenable = ifp->if_capabilities;
+ if_setcapenable(ifp, if_getcapabilities(ifp));
#ifdef DEVICE_POLLING
/* Advertise that polling is supported */
- ifp->if_capabilities |= IFCAP_POLLING;
+ if_setcapabilitiesbit(ifp, IFCAP_POLLING, 0);
#endif
/* Attach PHY(s) */
@@ -295,7 +294,7 @@
if (sc->tsec_ifp != NULL) {
#ifdef DEVICE_POLLING
- if (sc->tsec_ifp->if_capenable & IFCAP_POLLING)
+ if (sc->tsec_if_getcapenable(ifp) & IFCAP_POLLING)
ether_poll_deregister(sc->tsec_ifp);
#endif
@@ -377,11 +376,11 @@
{
struct tsec_desc *tx_desc = sc->tsec_tx_vaddr;
struct tsec_desc *rx_desc = sc->tsec_rx_vaddr;
- struct ifnet *ifp = sc->tsec_ifp;
+ if_t ifp = sc->tsec_ifp;
uint32_t val, i;
int timeout;
- if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
return;
TSEC_GLOBAL_LOCK_ASSERT(sc);
@@ -458,7 +457,7 @@
* ...only if polling is not turned on. Disable interrupts explicitly
* if polling is enabled.
*/
- if (ifp->if_capenable & IFCAP_POLLING )
+ if (if_getcapenable(ifp) & IFCAP_POLLING )
tsec_intrs_ctl(sc, 0);
else
#endif /* DEVICE_POLLING */
@@ -523,7 +522,7 @@
/* Step 19: Configure ethernet frame sizes */
TSEC_WRITE(sc, TSEC_REG_MINFLR, TSEC_MIN_FRAME_SIZE);
- tsec_set_mtu(sc, ifp->if_mtu);
+ tsec_set_mtu(sc, if_getmtu(ifp));
/* Step 20: Enable Rx and RxBD sdata snooping */
TSEC_WRITE(sc, TSEC_REG_ATTR, TSEC_ATTR_RDSEN | TSEC_ATTR_RBDSEN);
@@ -556,9 +555,9 @@
tsec_setup_multicast(sc);
/* Step 27: Activate network interface */
- ifp->if_drv_flags |= IFF_DRV_RUNNING;
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
- sc->tsec_if_flags = ifp->if_flags;
+ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
+ sc->tsec_if_flags = if_getflags(ifp);
sc->tsec_watchdog = 0;
/* Schedule watchdog timeout */
@@ -579,7 +578,7 @@
sizeof(macbuf)));
macbufp = (char *)macbuf;
- curmac = (char *)IF_LLADDR(sc->tsec_ifp);
+ curmac = (char *)if_getlladdr(sc->tsec_ifp);
/* Correct order of MAC address bytes */
for (i = 1; i <= ETHER_ADDR_LEN; i++)
@@ -693,7 +692,7 @@
static void
tsec_watchdog(struct tsec_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
TSEC_GLOBAL_LOCK_ASSERT(sc);
@@ -709,9 +708,9 @@
}
static void
-tsec_start(struct ifnet *ifp)
+tsec_start(if_t ifp)
{
- struct tsec_softc *sc = ifp->if_softc;
+ struct tsec_softc *sc = if_getsoftc(ifp);
TSEC_TRANSMIT_LOCK(sc);
tsec_start_locked(ifp);
@@ -719,7 +718,7 @@
}
static void
-tsec_start_locked(struct ifnet *ifp)
+tsec_start_locked(if_t ifp)
{
struct tsec_softc *sc;
struct mbuf *m0;
@@ -728,7 +727,7 @@
int start_tx;
uint16_t fcb_flags;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
start_tx = 0;
TSEC_TRANSMIT_LOCK_ASSERT(sc);
@@ -742,12 +741,12 @@
for (;;) {
if (TSEC_FREE_TX_DESC(sc) < TSEC_TX_MAX_DMA_SEGS) {
/* No free descriptors */
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
break;
}
/* Get packet from the queue */
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m0);
+ m0 = if_dequeue(ifp);
if (m0 == NULL)
break;
@@ -790,7 +789,7 @@
}
static void
-tsec_encap(struct ifnet *ifp, struct tsec_softc *sc, struct mbuf *m0,
+tsec_encap(if_t ifp, struct tsec_softc *sc, struct mbuf *m0,
uint16_t fcb_flags, int *start_tx)
{
bus_dma_segment_t segs[TSEC_TX_MAX_DMA_SEGS];
@@ -872,14 +871,14 @@
static void
tsec_setfilter(struct tsec_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
uint32_t flags;
ifp = sc->tsec_ifp;
flags = TSEC_READ(sc, TSEC_REG_RCTRL);
/* Promiscuous mode */
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & IFF_PROMISC)
flags |= TSEC_RCTRL_PROM;
else
flags &= ~TSEC_RCTRL_PROM;
@@ -891,16 +890,16 @@
static poll_handler_t tsec_poll;
static int
-tsec_poll(struct ifnet *ifp, enum poll_cmd cmd, int count)
+tsec_poll(if_t ifp, enum poll_cmd cmd, int count)
{
uint32_t ie;
- struct tsec_softc *sc = ifp->if_softc;
+ struct tsec_softc *sc = if_getsoftc(ifp);
int rx_npkts;
rx_npkts = 0;
TSEC_GLOBAL_LOCK(sc);
- if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+ if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) {
TSEC_GLOBAL_UNLOCK(sc);
return (rx_npkts);
}
@@ -926,9 +925,9 @@
#endif /* DEVICE_POLLING */
static int
-tsec_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
+tsec_ioctl(if_t ifp, u_long command, caddr_t data)
{
- struct tsec_softc *sc = ifp->if_softc;
+ struct tsec_softc *sc = if_getsoftc(ifp);
struct ifreq *ifr = (struct ifreq *)data;
int mask, error = 0;
@@ -936,33 +935,33 @@
case SIOCSIFMTU:
TSEC_GLOBAL_LOCK(sc);
if (tsec_set_mtu(sc, ifr->ifr_mtu))
- ifp->if_mtu = ifr->ifr_mtu;
+ if_setmtu(ifp, ifr->ifr_mtu);
else
error = EINVAL;
TSEC_GLOBAL_UNLOCK(sc);
break;
case SIOCSIFFLAGS:
TSEC_GLOBAL_LOCK(sc);
- if (ifp->if_flags & IFF_UP) {
- if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
- if ((sc->tsec_if_flags ^ ifp->if_flags) &
+ if (if_getflags(ifp) & IFF_UP) {
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
+ if ((sc->tsec_if_flags ^ if_getflags(ifp)) &
IFF_PROMISC)
tsec_setfilter(sc);
- if ((sc->tsec_if_flags ^ ifp->if_flags) &
+ if ((sc->tsec_if_flags ^ if_getflags(ifp)) &
IFF_ALLMULTI)
tsec_setup_multicast(sc);
} else
tsec_init_locked(sc);
- } else if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+ } else if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
tsec_stop(sc);
- sc->tsec_if_flags = ifp->if_flags;
+ sc->tsec_if_flags = if_getflags(ifp);
TSEC_GLOBAL_UNLOCK(sc);
break;
case SIOCADDMULTI:
case SIOCDELMULTI:
- if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
TSEC_GLOBAL_LOCK(sc);
tsec_setup_multicast(sc);
TSEC_GLOBAL_UNLOCK(sc);
@@ -973,11 +972,11 @@
command);
break;
case SIOCSIFCAP:
- mask = ifp->if_capenable ^ ifr->ifr_reqcap;
+ mask = if_getcapenable(ifp) ^ ifr->ifr_reqcap;
if ((mask & IFCAP_HWCSUM) && sc->is_etsec) {
TSEC_GLOBAL_LOCK(sc);
- ifp->if_capenable &= ~IFCAP_HWCSUM;
- ifp->if_capenable |= IFCAP_HWCSUM & ifr->ifr_reqcap;
+ if_setcapenablebit(ifp, 0, IFCAP_HWCSUM);
+ if_setcapenablebit(ifp, IFCAP_HWCSUM & ifr->ifr_reqcap, 0);
tsec_offload_setup(sc);
TSEC_GLOBAL_UNLOCK(sc);
}
@@ -991,14 +990,14 @@
TSEC_GLOBAL_LOCK(sc);
/* Disable interrupts */
tsec_intrs_ctl(sc, 0);
- ifp->if_capenable |= IFCAP_POLLING;
+ if_setcapenablebit(ifp, IFCAP_POLLING, 0);
TSEC_GLOBAL_UNLOCK(sc);
} else {
error = ether_poll_deregister(ifp);
TSEC_GLOBAL_LOCK(sc);
/* Enable interrupts */
tsec_intrs_ctl(sc, 1);
- ifp->if_capenable &= ~IFCAP_POLLING;
+ if_setcapenablebit(ifp, 0, IFCAP_POLLING);
TSEC_GLOBAL_UNLOCK(sc);
}
}
@@ -1010,15 +1009,15 @@
}
/* Flush buffers if not empty */
- if (ifp->if_flags & IFF_UP)
+ if (if_getflags(ifp) & IFF_UP)
tsec_start(ifp);
return (error);
}
static int
-tsec_ifmedia_upd(struct ifnet *ifp)
+tsec_ifmedia_upd(if_t ifp)
{
- struct tsec_softc *sc = ifp->if_softc;
+ struct tsec_softc *sc = if_getsoftc(ifp);
struct mii_data *mii;
TSEC_TRANSMIT_LOCK(sc);
@@ -1031,9 +1030,9 @@
}
static void
-tsec_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+tsec_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
{
- struct tsec_softc *sc = ifp->if_softc;
+ struct tsec_softc *sc = if_getsoftc(ifp);
struct mii_data *mii;
TSEC_TRANSMIT_LOCK(sc);
@@ -1213,7 +1212,7 @@
static void
tsec_stop(struct tsec_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
uint32_t tmpval;
TSEC_GLOBAL_LOCK_ASSERT(sc);
@@ -1222,7 +1221,7 @@
/* Disable interface and watchdog timer */
callout_stop(&sc->tsec_callout);
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
sc->tsec_watchdog = 0;
/* Disable all interrupts and stop DMA */
@@ -1252,7 +1251,7 @@
tsec_tick(void *arg)
{
struct tsec_softc *sc = arg;
- struct ifnet *ifp;
+ if_t ifp;
int link;
TSEC_GLOBAL_LOCK(sc);
@@ -1265,7 +1264,7 @@
mii_tick(sc->tsec_mii);
if (link == 0 && sc->tsec_link == 1 &&
- (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)))
+ (!if_sendq_empty(ifp)))
tsec_start_locked(ifp);
/* Schedule another timeout one second from now. */
@@ -1284,7 +1283,7 @@
tsec_receive_intr_locked(struct tsec_softc *sc, int count)
{
struct tsec_desc *rx_desc;
- struct ifnet *ifp;
+ if_t ifp;
struct rx_data_type *rx_data;
struct mbuf *m;
uint32_t i;
@@ -1386,7 +1385,7 @@
tsec_offload_process_frame(sc, m);
TSEC_RECEIVE_UNLOCK(sc);
- (*ifp->if_input)(ifp, m);
+ if_input(ifp, m);
TSEC_RECEIVE_LOCK(sc);
rx_npkts++;
}
@@ -1415,7 +1414,7 @@
TSEC_RECEIVE_LOCK(sc);
#ifdef DEVICE_POLLING
- if (sc->tsec_ifp->if_capenable & IFCAP_POLLING) {
+ if (sc->tsec_if_getcapenable(ifp) & IFCAP_POLLING) {
TSEC_RECEIVE_UNLOCK(sc);
return;
}
@@ -1431,7 +1430,7 @@
static void
tsec_transmit_intr_locked(struct tsec_softc *sc)
{
- struct ifnet *ifp;
+ if_t ifp;
uint32_t tx_idx;
TSEC_TRANSMIT_LOCK_ASSERT(sc);
@@ -1481,7 +1480,7 @@
bus_dmamap_sync(sc->tsec_tx_dtag, sc->tsec_tx_dmap,
BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
tsec_start_locked(ifp);
if (sc->tx_idx_tail == sc->tx_idx_head)
@@ -1496,7 +1495,7 @@
TSEC_TRANSMIT_LOCK(sc);
#ifdef DEVICE_POLLING
- if (sc->tsec_ifp->if_capenable & IFCAP_POLLING) {
+ if (sc->tsec_if_getcapenable(ifp) & IFCAP_POLLING) {
TSEC_TRANSMIT_UNLOCK(sc);
return;
}
@@ -1511,7 +1510,7 @@
static void
tsec_error_intr_locked(struct tsec_softc *sc, int count)
{
- struct ifnet *ifp;
+ if_t ifp;
uint32_t eflags;
TSEC_GLOBAL_LOCK_ASSERT(sc);
@@ -1541,7 +1540,7 @@
if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1);
}
- if (ifp->if_flags & IFF_DEBUG)
+ if (if_getflags(ifp) & IFF_DEBUG)
if_printf(ifp, "tsec_error_intr(): event flags: 0x%x\n",
eflags);
@@ -1817,7 +1816,7 @@
static void
tsec_offload_setup(struct tsec_softc *sc)
{
- struct ifnet *ifp = sc->tsec_ifp;
+ if_t ifp = sc->tsec_ifp;
uint32_t reg;
TSEC_GLOBAL_LOCK_ASSERT(sc);
@@ -1825,10 +1824,10 @@
reg = TSEC_READ(sc, TSEC_REG_TCTRL);
reg |= TSEC_TCTRL_IPCSEN | TSEC_TCTRL_TUCSEN;
- if (ifp->if_capenable & IFCAP_TXCSUM)
- ifp->if_hwassist = TSEC_CHECKSUM_FEATURES;
+ if (if_getcapenable(ifp) & IFCAP_TXCSUM)
+ if_sethwassist(ifp, TSEC_CHECKSUM_FEATURES);
else
- ifp->if_hwassist = 0;
+ if_sethwassist(ifp, 0);
TSEC_WRITE(sc, TSEC_REG_TCTRL, reg);
@@ -1836,7 +1835,7 @@
reg &= ~(TSEC_RCTRL_IPCSEN | TSEC_RCTRL_TUCSEN | TSEC_RCTRL_PRSDEP);
reg |= TSEC_RCTRL_PRSDEP_PARSE_L2 | TSEC_RCTRL_VLEX;
- if (ifp->if_capenable & IFCAP_RXCSUM)
+ if (if_getcapenable(ifp) & IFCAP_RXCSUM)
reg |= TSEC_RCTRL_IPCSEN | TSEC_RCTRL_TUCSEN |
TSEC_RCTRL_PRSDEP_PARSE_L234;
@@ -1895,12 +1894,12 @@
tsec_setup_multicast(struct tsec_softc *sc)
{
uint32_t hashtable[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
- struct ifnet *ifp = sc->tsec_ifp;
+ if_t ifp = sc->tsec_ifp;
int i;
TSEC_GLOBAL_LOCK_ASSERT(sc);
- if (ifp->if_flags & IFF_ALLMULTI) {
+ if (if_getflags(ifp) & IFF_ALLMULTI) {
for (i = 0; i < 8; i++)
TSEC_WRITE(sc, TSEC_REG_GADDR(i), 0xFFFFFFFF);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Dec 5, 2:48 PM (15 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15059976
Default Alt Text
D37805.diff (14 KB)
Attached To
Mode
D37805: Mechanically convert if_tsec(4) to DrvAPI
Attached
Detach File
Event Timeline
Log In to Comment