Date: Fri, 23 Jan 2015 19:22:19 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r277600 - in projects/ifnet/sys: dev/virtio/network net Message-ID: <201501231922.t0NJMJ8Z050646@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: glebius Date: Fri Jan 23 19:22:18 2015 New Revision: 277600 URL: https://svnweb.freebsd.org/changeset/base/277600 Log: Revert tiny part of r277456. Looks like we are stuck with 16-bit ifr_flags forever :( Modified: projects/ifnet/sys/dev/virtio/network/if_vtnet.c projects/ifnet/sys/net/if.c projects/ifnet/sys/net/if.h Modified: projects/ifnet/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- projects/ifnet/sys/dev/virtio/network/if_vtnet.c Fri Jan 23 19:19:34 2015 (r277599) +++ projects/ifnet/sys/dev/virtio/network/if_vtnet.c Fri Jan 23 19:22:18 2015 (r277600) @@ -3072,11 +3072,11 @@ vtnet_attach_disable_promisc(struct vtne VTNET_CORE_LOCK(sc); if ((sc->vtnet_flags & VTNET_FLAG_CTRL_RX) == 0) { (void )if_drvioctl(SIOCGIFFLAGS, ifp, &ifr, curthread); - ifr.ifr_flagslow |= IFF_PROMISC; + ifr.ifr_flags |= IFF_PROMISC; (void )if_drvioctl(SIOCSIFFLAGS, ifp, &ifr, curthread); } else if (vtnet_set_promisc(sc, 0) != 0) { (void )if_drvioctl(SIOCGIFFLAGS, ifp, &ifr, curthread); - ifr.ifr_flagslow |= IFF_PROMISC; + ifr.ifr_flags |= IFF_PROMISC; (void )if_drvioctl(SIOCSIFFLAGS, ifp, &ifr, curthread); device_printf(sc->vtnet_dev, "cannot disable default promiscuous mode\n"); Modified: projects/ifnet/sys/net/if.c ============================================================================== --- projects/ifnet/sys/net/if.c Fri Jan 23 19:19:34 2015 (r277599) +++ projects/ifnet/sys/net/if.c Fri Jan 23 19:22:18 2015 (r277600) @@ -2302,8 +2302,14 @@ if_drvioctl(u_long cmd, struct ifnet *if break; case SIOCGIFFLAGS: - ifr->ifr_flagslow = ifp->if_flags & 0xffff; + ifr->ifr_flags = ifp->if_flags & 0xffff; ifr->ifr_flagshigh = ifp->if_flags >> 16; + /* + * Some software may care about IFF_RUNNING, so make + * it happy. + */ + if (ifp->if_flags & IFF_UP) + ifr->ifr_flags |= IFF_RUNNING; break; case SIOCGIFCAP: @@ -2406,7 +2412,7 @@ if_drvioctl(u_long cmd, struct ifnet *if * they come from userland in two parts, that * we need to swap. */ - flags = (ifr->ifr_flagslow & 0xffff) | + flags = (ifr->ifr_flags & 0xffff) | (ifr->ifr_flagshigh << 16); if ((flags & IFF_CANTCHANGE) != (ifp->if_flags & IFF_CANTCHANGE)) @@ -2414,11 +2420,11 @@ if_drvioctl(u_long cmd, struct ifnet *if /* * Pass new flags down to driver and see if it accepts them. */ - ifr->ifr_flags = flags; error = if_ioctl(ifp, cmd, data, td); if (error) return (error); - flags = ifr->ifr_flags; + flags = (ifr->ifr_flags & 0xffff) | + (ifr->ifr_flagshigh << 16); /* * Manage IFF_UP flip. */ Modified: projects/ifnet/sys/net/if.h ============================================================================== --- projects/ifnet/sys/net/if.h Fri Jan 23 19:19:34 2015 (r277599) +++ projects/ifnet/sys/net/if.h Fri Jan 23 19:22:18 2015 (r277600) @@ -382,8 +382,7 @@ struct ifreq { uint32_t ifrucap_curcap; /* current values */ uint64_t ifrucap_hwassist; /* returned hwassist */ } ifru_cap; - u_int ifru_flags; - short ifru_sflags[2]; + short ifru_flags[2]; short ifru_index; int ifru_jid; int ifru_metric; @@ -397,9 +396,8 @@ struct ifreq { #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ #define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ #define ifr_buffer ifr_ifru.ifru_buffer /* user supplied buffer with its length */ -#define ifr_flags ifr_ifru.ifru_flags /* flags (after fixup) */ -#define ifr_flagslow ifr_ifru.ifru_sflags[0] /* flags (low 16 bits) */ -#define ifr_flagshigh ifr_ifru.ifru_sflags[1] /* flags (high 16 bits) */ +#define ifr_flags ifr_ifru.ifru_flags[0] /* flags (low 16 bits) */ +#define ifr_flagshigh ifr_ifru.ifru_flags[1] /* flags (high 16 bits) */ #define ifr_jid ifr_ifru.ifru_jid /* jail/vnet */ #define ifr_metric ifr_ifru.ifru_metric /* metric */ #define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501231922.t0NJMJ8Z050646>