Page MenuHomeFreeBSD

D37851.diff
No OneTemporary

D37851.diff

diff --git a/sys/dev/iicbus/if_ic.c b/sys/dev/iicbus/if_ic.c
--- a/sys/dev/iicbus/if_ic.c
+++ b/sys/dev/iicbus/if_ic.c
@@ -72,7 +72,7 @@
#define ICMTU 1500 /* default mtu */
struct ic_softc {
- struct ifnet *ic_ifp;
+ if_t ic_ifp;
device_t ic_dev;
u_char ic_addr; /* peer I2C address */
@@ -99,8 +99,8 @@
static int icprobe(device_t);
static int icattach(device_t);
-static int icioctl(struct ifnet *, u_long, caddr_t);
-static int icoutput(struct ifnet *, struct mbuf *, const struct sockaddr *,
+static int icioctl(if_t, u_long, caddr_t);
+static int icoutput(if_t, struct mbuf *, const struct sockaddr *,
struct route *);
static int icintr(device_t, int, char *);
@@ -141,7 +141,7 @@
free(sc->ic_ifbuf, M_DEVBUF);
sc->ic_obuf = obuf;
sc->ic_ifbuf = ifbuf;
- sc->ic_ifp->if_mtu = mtu;
+ if_setmtu(sc->ic_ifp, mtu);
mtx_unlock(&sc->ic_lock);
}
@@ -161,7 +161,7 @@
icattach(device_t dev)
{
struct ic_softc *sc = (struct ic_softc *)device_get_softc(dev);
- struct ifnet *ifp;
+ if_t ifp;
ifp = sc->ic_ifp = if_alloc(IFT_PARA);
if (ifp == NULL)
@@ -172,14 +172,13 @@
sc->ic_addr = PCF_MASTER_ADDRESS; /* XXX only PCF masters */
sc->ic_dev = dev;
- ifp->if_softc = sc;
+ if_setsoftc(ifp, sc);
if_initname(ifp, device_get_name(dev), device_get_unit(dev));
- ifp->if_flags = IFF_SIMPLEX | IFF_POINTOPOINT | IFF_MULTICAST;
- ifp->if_ioctl = icioctl;
- ifp->if_output = icoutput;
- ifp->if_hdrlen = 0;
- ifp->if_addrlen = 0;
- ifp->if_snd.ifq_maxlen = ifqmaxlen;
+ if_setflags(ifp, IFF_SIMPLEX | IFF_POINTOPOINT | IFF_MULTICAST);
+ if_setioctlfn(ifp, icioctl);
+ if_setoutputfn(ifp, icoutput);
+ if_setifheaderlen(ifp, 0);
+ if_setsendqlen(ifp, ifqmaxlen);
ic_alloc_buffers(sc, ICMTU);
@@ -194,9 +193,9 @@
* iciotcl()
*/
static int
-icioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
+icioctl(if_t ifp, u_long cmd, caddr_t data)
{
- struct ic_softc *sc = ifp->if_softc;
+ struct ic_softc *sc = if_getsoftc(ifp);
device_t icdev = sc->ic_dev;
device_t parent = device_get_parent(icdev);
struct ifaddr *ifa = (struct ifaddr *)data;
@@ -210,31 +209,31 @@
if (ifa->ifa_addr->sa_family != AF_INET)
return (EAFNOSUPPORT);
mtx_lock(&sc->ic_lock);
- ifp->if_flags |= IFF_UP;
+ if_setflagbits(ifp, IFF_UP, 0);
goto locked;
case SIOCSIFFLAGS:
mtx_lock(&sc->ic_lock);
locked:
- if ((!(ifp->if_flags & IFF_UP)) &&
- (ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+ if ((!(if_getflags(ifp) & IFF_UP)) &&
+ (if_getdrvflags(ifp) & IFF_DRV_RUNNING)) {
/* XXX disable PCF */
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
mtx_unlock(&sc->ic_lock);
/* IFF_UP is not set, try to release the bus anyway */
iicbus_release_bus(parent, icdev);
break;
}
- if (((ifp->if_flags & IFF_UP)) &&
- (!(ifp->if_drv_flags & IFF_DRV_RUNNING))) {
+ if (((if_getflags(ifp) & IFF_UP)) &&
+ (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING))) {
mtx_unlock(&sc->ic_lock);
if ((error = iicbus_request_bus(parent, icdev,
IIC_WAIT | IIC_INTR)))
return (error);
mtx_lock(&sc->ic_lock);
iicbus_reset(parent, IIC_FASTEST, 0, NULL);
- ifp->if_drv_flags |= IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
}
mtx_unlock(&sc->ic_lock);
break;
@@ -245,7 +244,7 @@
case SIOCGIFMTU:
mtx_lock(&sc->ic_lock);
- ifr->ifr_mtu = sc->ic_ifp->if_mtu;
+ ifr->ifr_mtu = if_getmtu(sc->ic_ifp);
mtx_unlock(&sc->ic_lock);
break;
@@ -310,7 +309,7 @@
struct epoch_tracker et;
mtx_unlock(&sc->ic_lock);
- M_SETFIB(top, sc->ic_ifp->if_fib);
+ M_SETFIB(top, if_getfib(sc->ic_ifp));
NET_EPOCH_ENTER(et);
netisr_dispatch(NETISR_IP, top);
NET_EPOCH_EXIT(et);
@@ -324,7 +323,7 @@
break;
case INTR_RECEIVE:
- if (sc->ic_xfercnt >= sc->ic_ifp->if_mtu + ICHDRLEN) {
+ if (sc->ic_xfercnt >= if_getmtu(sc->ic_ifp) + ICHDRLEN) {
sc->ic_iferrs++;
} else {
*sc->ic_cp++ = *ptr;
@@ -355,10 +354,10 @@
* icoutput()
*/
static int
-icoutput(struct ifnet *ifp, struct mbuf *m, const struct sockaddr *dst,
+icoutput(if_t ifp, struct mbuf *m, const struct sockaddr *dst,
struct route *ro)
{
- struct ic_softc *sc = ifp->if_softc;
+ struct ic_softc *sc = if_getsoftc(ifp);
device_t icdev = sc->ic_dev;
device_t parent = device_get_parent(icdev);
int len, sent;
@@ -373,7 +372,7 @@
hdr = RO_GET_FAMILY(ro, dst);
mtx_lock(&sc->ic_lock);
- ifp->if_drv_flags |= IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
/* already sending? */
if (sc->ic_flags & IC_SENDING) {
@@ -388,7 +387,7 @@
len = 0;
mm = m;
do {
- if (len + mm->m_len > sc->ic_ifp->if_mtu) {
+ if (len + mm->m_len > if_getmtu(sc->ic_ifp)) {
/* packet too large */
if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
goto error;

File Metadata

Mime Type
text/plain
Expires
Wed, Sep 25, 8:53 AM (28 m, 25 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
12749444
Default Alt Text
D37851.diff (4 KB)

Event Timeline