Mechanically convert vtbe(4) to IfAPI

Reviewed by:	zlei
Sponsored by:	Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D37844
This commit is contained in:
Justin Hibbits 2022-08-19 15:47:32 -04:00
parent 37d22ce087
commit b34a60c54f

View File

@ -114,7 +114,7 @@ struct vtbe_softc {
bus_space_tag_t bst; bus_space_tag_t bst;
bus_space_handle_t bsh; bus_space_handle_t bsh;
device_t dev; device_t dev;
struct ifnet *ifp; if_t ifp;
int if_flags; int if_flags;
struct mtx mtx; struct mtx mtx;
boolean_t is_attached; boolean_t is_attached;
@ -146,7 +146,7 @@ vtbe_txstart_locked(struct vtbe_softc *sc)
struct virtio_net_hdr *vnh; struct virtio_net_hdr *vnh;
struct vqueue_info *vq; struct vqueue_info *vq;
struct iovec *tiov; struct iovec *tiov;
struct ifnet *ifp; if_t ifp;
struct mbuf *m; struct mbuf *m;
struct uio uio; struct uio uio;
int enqueued; int enqueued;
@ -165,7 +165,7 @@ vtbe_txstart_locked(struct vtbe_softc *sc)
} }
ifp = sc->ifp; ifp = sc->ifp;
if (ifp->if_drv_flags & IFF_DRV_OACTIVE) { if (if_getdrvflags(ifp) & IFF_DRV_OACTIVE) {
return; return;
} }
@ -178,11 +178,11 @@ vtbe_txstart_locked(struct vtbe_softc *sc)
for (;;) { for (;;) {
if (!vq_has_descs(vq)) { if (!vq_has_descs(vq)) {
ifp->if_drv_flags |= IFF_DRV_OACTIVE; if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
break; break;
} }
IFQ_DRV_DEQUEUE(&ifp->if_snd, m); m = if_dequeue(ifp);
if (m == NULL) { if (m == NULL) {
break; break;
} }
@ -230,9 +230,9 @@ vtbe_txstart_locked(struct vtbe_softc *sc)
} }
static void static void
vtbe_txstart(struct ifnet *ifp) vtbe_txstart(if_t ifp)
{ {
struct vtbe_softc *sc = ifp->if_softc; struct vtbe_softc *sc = if_getsoftc(ifp);
VTBE_LOCK(sc); VTBE_LOCK(sc);
vtbe_txstart_locked(sc); vtbe_txstart_locked(sc);
@ -242,25 +242,25 @@ vtbe_txstart(struct ifnet *ifp)
static void static void
vtbe_stop_locked(struct vtbe_softc *sc) vtbe_stop_locked(struct vtbe_softc *sc)
{ {
struct ifnet *ifp; if_t ifp;
VTBE_ASSERT_LOCKED(sc); VTBE_ASSERT_LOCKED(sc);
ifp = sc->ifp; ifp = sc->ifp;
ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
} }
static void static void
vtbe_init_locked(struct vtbe_softc *sc) vtbe_init_locked(struct vtbe_softc *sc)
{ {
struct ifnet *ifp = sc->ifp; if_t ifp = sc->ifp;
VTBE_ASSERT_LOCKED(sc); VTBE_ASSERT_LOCKED(sc);
if (ifp->if_drv_flags & IFF_DRV_RUNNING) if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
return; return;
ifp->if_drv_flags |= IFF_DRV_RUNNING; if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
} }
static void static void
@ -274,34 +274,34 @@ vtbe_init(void *if_softc)
} }
static int static int
vtbe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) vtbe_ioctl(if_t ifp, u_long cmd, caddr_t data)
{ {
struct ifmediareq *ifmr; struct ifmediareq *ifmr;
struct vtbe_softc *sc; struct vtbe_softc *sc;
struct ifreq *ifr; struct ifreq *ifr;
int mask, error; int mask, error;
sc = ifp->if_softc; sc = if_getsoftc(ifp);
ifr = (struct ifreq *)data; ifr = (struct ifreq *)data;
error = 0; error = 0;
switch (cmd) { switch (cmd) {
case SIOCSIFFLAGS: case SIOCSIFFLAGS:
VTBE_LOCK(sc); VTBE_LOCK(sc);
if (ifp->if_flags & IFF_UP) { if (if_getflags(ifp) & IFF_UP) {
pio_enable_irq(sc, 1); pio_enable_irq(sc, 1);
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) {
vtbe_init_locked(sc); vtbe_init_locked(sc);
} }
} else { } else {
pio_enable_irq(sc, 0); pio_enable_irq(sc, 0);
if (ifp->if_drv_flags & IFF_DRV_RUNNING) { if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
vtbe_stop_locked(sc); vtbe_stop_locked(sc);
} }
} }
sc->if_flags = ifp->if_flags; sc->if_flags = if_getflags(ifp);
VTBE_UNLOCK(sc); VTBE_UNLOCK(sc);
break; break;
case SIOCADDMULTI: case SIOCADDMULTI:
@ -316,9 +316,9 @@ vtbe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
ifmr->ifm_current = ifmr->ifm_active; ifmr->ifm_current = ifmr->ifm_active;
break; break;
case SIOCSIFCAP: case SIOCSIFCAP:
mask = ifp->if_capenable ^ ifr->ifr_reqcap; mask = if_getcapenable(ifp) ^ ifr->ifr_reqcap;
if (mask & IFCAP_VLAN_MTU) { if (mask & IFCAP_VLAN_MTU) {
ifp->if_capenable ^= IFCAP_VLAN_MTU; if_togglecapenable(ifp, IFCAP_VLAN_MTU);
} }
break; break;
@ -335,7 +335,7 @@ vtbe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
static void static void
vtbe_txfinish_locked(struct vtbe_softc *sc) vtbe_txfinish_locked(struct vtbe_softc *sc)
{ {
struct ifnet *ifp; if_t ifp;
VTBE_ASSERT_LOCKED(sc); VTBE_ASSERT_LOCKED(sc);
@ -388,7 +388,7 @@ vtbe_proc_rx(struct vtbe_softc *sc, struct vqueue_info *vq)
{ {
struct iovec iov[DESC_COUNT]; struct iovec iov[DESC_COUNT];
struct iovec *tiov; struct iovec *tiov;
struct ifnet *ifp; if_t ifp;
struct uio uio; struct uio uio;
struct mbuf *m; struct mbuf *m;
int iolen; int iolen;
@ -426,9 +426,9 @@ vtbe_proc_rx(struct vtbe_softc *sc, struct vqueue_info *vq)
if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
CURVNET_SET(ifp->if_vnet); CURVNET_SET(if_getvnet(ifp));
VTBE_UNLOCK(sc); VTBE_UNLOCK(sc);
(*ifp->if_input)(ifp, m); if_input(ifp, m);
VTBE_LOCK(sc); VTBE_LOCK(sc);
CURVNET_RESTORE(); CURVNET_RESTORE();
@ -563,7 +563,7 @@ vtbe_attach(device_t dev)
{ {
uint8_t macaddr[ETHER_ADDR_LEN]; uint8_t macaddr[ETHER_ADDR_LEN];
struct vtbe_softc *sc; struct vtbe_softc *sc;
struct ifnet *ifp; if_t ifp;
int reg; int reg;
sc = device_get_softc(dev); sc = device_get_softc(dev);
@ -613,20 +613,19 @@ vtbe_attach(device_t dev)
/* Set up the ethernet interface. */ /* Set up the ethernet interface. */
sc->ifp = ifp = if_alloc(IFT_ETHER); sc->ifp = ifp = if_alloc(IFT_ETHER);
ifp->if_baudrate = IF_Gbps(10); if_setbaudrate(ifp, IF_Gbps(10));
ifp->if_softc = sc; if_setsoftc(ifp, sc);
if_initname(ifp, device_get_name(dev), device_get_unit(dev)); if_initname(ifp, device_get_name(dev), device_get_unit(dev));
ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX | if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX |
IFF_MULTICAST | IFF_PROMISC); IFF_MULTICAST | IFF_PROMISC);
ifp->if_capabilities = IFCAP_VLAN_MTU; if_setcapabilities(ifp, IFCAP_VLAN_MTU);
ifp->if_capenable = ifp->if_capabilities; if_setcapenable(ifp, if_getcapabilities(ifp));
ifp->if_start = vtbe_txstart; if_setstartfn(ifp, vtbe_txstart);
ifp->if_ioctl = vtbe_ioctl; if_setioctlfn(ifp, vtbe_ioctl);
ifp->if_init = vtbe_init; if_setinitfn(ifp, vtbe_init);
IFQ_SET_MAXLEN(&ifp->if_snd, DESC_COUNT - 1); if_setsendqlen(ifp, DESC_COUNT - 1);
ifp->if_snd.ifq_drv_maxlen = DESC_COUNT - 1; if_setsendqready(ifp);
IFQ_SET_READY(&ifp->if_snd); if_setifheaderlen(ifp, sizeof(struct ether_vlan_header));
ifp->if_hdrlen = sizeof(struct ether_vlan_header);
/* All ready to run, attach the ethernet interface. */ /* All ready to run, attach the ethernet interface. */
ether_ifattach(ifp, macaddr); ether_ifattach(ifp, macaddr);