IFXF_MPSAFE is a hint for the network stack. When it is set, the kernel
knows that it doesn't need to grab the KERNEL_LOCK() to call the start()
routine of an interface.
Exposing this flag to users in ifconfig(8) does not make sense. This is
a side effect of having re-used the IFXF_TXREADY bit.
I don't even think we should export this bit to userland, developers
should not write different code for MPSAFE and !MPSAFE interfaces.
ok?
Index: sys/net/if.c
===================================================================
RCS file: /cvs/src/sys/net/if.c,v
retrieving revision 1.430
diff -u -p -r1.430 if.c
--- sys/net/if.c 3 May 2016 14:52:39 -0000 1.430
+++ sys/net/if.c 7 May 2016 14:45:11 -0000
@@ -1668,7 +1668,7 @@ ifioctl(struct socket *so, u_long cmd, c
break;
case SIOCGIFXFLAGS:
- ifr->ifr_flags = ifp->if_xflags;
+ ifr->ifr_flags = ifp->if_xflags & ~IFXF_MPSAFE;
break;
case SIOCGIFMETRIC:
Index: sbin/ifconfig/brconfig.h
===================================================================
RCS file: /cvs/src/sbin/ifconfig/brconfig.h,v
retrieving revision 1.9
diff -u -p -r1.9 brconfig.h
--- sbin/ifconfig/brconfig.h 7 Jan 2016 15:33:56 -0000 1.9
+++ sbin/ifconfig/brconfig.h 7 May 2016 14:35:29 -0000
@@ -68,7 +68,7 @@ int bridge_rule(int, char **, int);
#define IFFBITS
\
"\024\1UP\2BROADCAST\3DEBUG\4LOOPBACK\5POINTOPOINT\6NOTRAILERS" \
"\7RUNNING\10NOARP\11PROMISC\12ALLMULTI\13OACTIVE\14SIMPLEX" \
- "\15LINK0\16LINK1\17LINK2\20MULTICAST\21MPSAFE" \
+ "\15LINK0\16LINK1\17LINK2\20MULTICAST" \
"\23INET6_NOPRIVACY\24MPLS\25WOL\26AUTOCONF6"
void printb(char *, unsigned int, unsigned char *);