svn commit: r257352 - in projects/ifnet: sys/dev/bxe sys/dev/ixgbe sys/dev/mxge sys/dev/oce sys/dev/qlxgb sys/dev/qlxgbe sys/dev/qlxge sys/dev/virtio/network sys/dev/vmware/vmxnet3 sys/net sys/ofed...

Gleb Smirnoff glebius at FreeBSD.org
Tue Oct 29 18:13:08 UTC 2013


Author: glebius
Date: Tue Oct 29 18:13:04 2013
New Revision: 257352
URL: http://svnweb.freebsd.org/changeset/base/257352

Log:
  - Make all fields of struct if_data fixed machine independent size.
  - Remove the if_baudrate_pf crutch.
  - Give 16 bit for the ifi_datalen field.
  
  Sponsored by:	Netflix
  Sponsored by:	Nginx, Inc.

Modified:
  projects/ifnet/sys/dev/bxe/bxe.c
  projects/ifnet/sys/dev/ixgbe/ixgbe.c
  projects/ifnet/sys/dev/mxge/if_mxge.c
  projects/ifnet/sys/dev/mxge/if_mxge_var.h
  projects/ifnet/sys/dev/oce/oce_if.c
  projects/ifnet/sys/dev/qlxgb/qla_os.c
  projects/ifnet/sys/dev/qlxgbe/ql_os.c
  projects/ifnet/sys/dev/qlxge/qls_os.c
  projects/ifnet/sys/dev/virtio/network/if_vtnet.c
  projects/ifnet/sys/dev/vmware/vmxnet3/if_vmx.c
  projects/ifnet/sys/net/if.h
  projects/ifnet/sys/net/if_epair.c
  projects/ifnet/sys/net/if_var.h
  projects/ifnet/sys/net/rtsock.c
  projects/ifnet/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
  projects/ifnet/tools/tools/ifinfo/ifinfo.c

Modified: projects/ifnet/sys/dev/bxe/bxe.c
==============================================================================
--- projects/ifnet/sys/dev/bxe/bxe.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/bxe/bxe.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -13357,11 +13357,7 @@ bxe_init_ifnet(struct bxe_softc *sc)
 #endif
     ifp->if_capenable = ifp->if_capabilities;
     ifp->if_capenable &= ~IFCAP_WOL_MAGIC; /* XXX not yet... */
-#if __FreeBSD_version < 1000025
-    ifp->if_baudrate = 1000000000;
-#else
-    if_initbaudrate(ifp, IF_Gbps(10));
-#endif
+    ifp->if_baudrate = IF_Gbps(10);
     ifp->if_snd.ifq_drv_maxlen = sc->tx_ring_size;
 
     IFQ_SET_MAXLEN(&ifp->if_snd, ifp->if_snd.ifq_drv_maxlen);

Modified: projects/ifnet/sys/dev/ixgbe/ixgbe.c
==============================================================================
--- projects/ifnet/sys/dev/ixgbe/ixgbe.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/ixgbe/ixgbe.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -2628,11 +2628,7 @@ ixgbe_setup_interface(device_t dev, stru
 		return (-1);
 	}
 	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
-#if __FreeBSD_version < 1000025
-	ifp->if_baudrate = 1000000000;
-#else
-	if_initbaudrate(ifp, IF_Gbps(10));
-#endif
+	ifp->if_baudrate = IF_Gbps(10);
 	ifp->if_init = ixgbe_init;
 	ifp->if_softc = adapter;
 	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;

Modified: projects/ifnet/sys/dev/mxge/if_mxge.c
==============================================================================
--- projects/ifnet/sys/dev/mxge/if_mxge.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/mxge/if_mxge.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -3140,12 +3140,10 @@ mxge_intr(void *arg)
 			sc->link_state = stats->link_up;
 			if (sc->link_state) {
 				if_link_state_change(sc->ifp, LINK_STATE_UP);
-				if_initbaudrate(sc->ifp, IF_Gbps(10));
 				if (mxge_verbose)
 					device_printf(sc->dev, "link up\n");
 			} else {
 				if_link_state_change(sc->ifp, LINK_STATE_DOWN);
-				sc->ifp->if_baudrate = 0;
 				if (mxge_verbose)
 					device_printf(sc->dev, "link down\n");
 			}
@@ -4887,7 +4885,7 @@ mxge_attach(device_t dev)
 		goto abort_with_rings;
 	}
 
-	if_initbaudrate(ifp, IF_Gbps(10));
+	ifp->if_baudrate = IF_Gbps(10);
 	ifp->if_capabilities = IFCAP_RXCSUM | IFCAP_TXCSUM | IFCAP_TSO4 |
 		IFCAP_VLAN_MTU | IFCAP_LINKSTATE | IFCAP_TXCSUM_IPV6 |
 		IFCAP_RXCSUM_IPV6;

Modified: projects/ifnet/sys/dev/mxge/if_mxge_var.h
==============================================================================
--- projects/ifnet/sys/dev/mxge/if_mxge_var.h	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/mxge/if_mxge_var.h	Tue Oct 29 18:13:04 2013	(r257352)
@@ -57,12 +57,8 @@ $FreeBSD$
 #define	IF_Kbps(x)	((uintmax_t)(x) * 1000)	/* kilobits/sec. */
 #define	IF_Mbps(x)	(IF_Kbps((x) * 1000))	/* megabits/sec. */
 #define	IF_Gbps(x)	(IF_Mbps((x) * 1000))	/* gigabits/sec. */
-static __inline void
-if_initbaudrate(struct ifnet *ifp, uintmax_t baud)
-{
-	ifp->if_baudrate = baud;
-}
 #endif
+
 #ifndef VLAN_CAPABILITIES
 #define VLAN_CAPABILITIES(ifp)
 #define mxge_vlans_active(sc) (sc)->ifp->if_nvlans

Modified: projects/ifnet/sys/dev/oce/oce_if.c
==============================================================================
--- projects/ifnet/sys/dev/oce/oce_if.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/oce/oce_if.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -1729,7 +1729,7 @@ oce_attach_ifp(POCE_SOFTC sc)
 #endif
 	
 	sc->ifp->if_capenable = sc->ifp->if_capabilities;
-	if_initbaudrate(sc->ifp, IF_Gbps(10));
+	sc->ifp->if_baudrate = IF_Gbps(10);
 
 #if __FreeBSD_version >= 1000000
 	sc->ifp->if_hw_tsomax = OCE_MAX_TSO_SIZE;

Modified: projects/ifnet/sys/dev/qlxgb/qla_os.c
==============================================================================
--- projects/ifnet/sys/dev/qlxgb/qla_os.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/qlxgb/qla_os.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -669,7 +669,7 @@ qla_init_ifnet(device_t dev, qla_host_t 
 
 	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
 
-	if_initbaudrate(ifp, IF_Gbps(10));
+	ifp->if_baudrate = IF_Gbps(10);
 	ifp->if_init = qla_init;
 	ifp->if_softc = ha;
 	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;

Modified: projects/ifnet/sys/dev/qlxgbe/ql_os.c
==============================================================================
--- projects/ifnet/sys/dev/qlxgbe/ql_os.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/qlxgbe/ql_os.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -748,14 +748,8 @@ qla_init_ifnet(device_t dev, qla_host_t 
 
 	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
 
-#if __FreeBSD_version >= 1000000
-	if_initbaudrate(ifp, IF_Gbps(10));
+	ifp->if_baudrate = IF_Gbps(10);
 	ifp->if_capabilities = IFCAP_LINKSTATE;
-#else
-	ifp->if_mtu = ETHERMTU;
-	ifp->if_baudrate = (1 * 1000 * 1000 *1000);
-
-#endif /* #if __FreeBSD_version >= 1000000 */
 
 	ifp->if_init = qla_init;
 	ifp->if_softc = ha;

Modified: projects/ifnet/sys/dev/qlxge/qls_os.c
==============================================================================
--- projects/ifnet/sys/dev/qlxge/qls_os.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/qlxge/qls_os.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -736,13 +736,7 @@ qls_init_ifnet(device_t dev, qla_host_t 
 		panic("%s: cannot if_alloc()\n", device_get_nameunit(dev));
 
 	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
-
-#if __FreeBSD_version >= 1000000
-	if_initbaudrate(ifp, IF_Gbps(10));
-#else
-	ifp->if_baudrate = 1 * 1000 * 1000 * 1000;
-#endif /* #if (__FreeBSD_version > 1000000) */
-
+	ifp->if_baudrate = IF_Gbps(10);
 	ifp->if_init = qls_init;
 	ifp->if_softc = ha;
 	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;

Modified: projects/ifnet/sys/dev/virtio/network/if_vtnet.c
==============================================================================
--- projects/ifnet/sys/dev/virtio/network/if_vtnet.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/virtio/network/if_vtnet.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -893,7 +893,7 @@ vtnet_setup_interface(struct vtnet_softc
 	}
 
 	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
-	if_initbaudrate(ifp, IF_Gbps(10));	/* Approx. */
+	ifp->if_baudrate = IF_Gbps(10);	/* Approx. */
 	ifp->if_softc = sc;
 	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
 	ifp->if_init = vtnet_init;

Modified: projects/ifnet/sys/dev/vmware/vmxnet3/if_vmx.c
==============================================================================
--- projects/ifnet/sys/dev/vmware/vmxnet3/if_vmx.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/dev/vmware/vmxnet3/if_vmx.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -1471,11 +1471,7 @@ vmxnet3_setup_interface(struct vmxnet3_s
 	}
 
 	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
-#if __FreeBSD_version < 1000025
-	ifp->if_baudrate = 1000000000;
-#else
-	if_initbaudrate(ifp, IF_Gbps(10));
-#endif
+	ifp->if_baudrate = IF_Gbps(10);
 	ifp->if_softc = sc;
 	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
 	ifp->if_init = vmxnet3_init;

Modified: projects/ifnet/sys/net/if.h
==============================================================================
--- projects/ifnet/sys/net/if.h	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/net/if.h	Tue Oct 29 18:13:04 2013	(r257352)
@@ -74,32 +74,45 @@ struct if_clonereq {
  */
 struct if_data {
 	/* generic interface information */
-	u_char	ifi_type;		/* ethernet, tokenring, etc */
-	u_char	ifi_physical;		/* e.g., AUI, Thinnet, 10base-T, etc */
-	u_char	ifi_addrlen;		/* media address length */
-	u_char	ifi_hdrlen;		/* media header length */
-	u_char	ifi_link_state;		/* current link state */
-	u_char	ifi_vhid;		/* carp vhid */
-	u_char	ifi_baudrate_pf;	/* baudrate power factor */
-	u_char	ifi_datalen;		/* length of this data struct */
-	u_long	ifi_mtu;		/* maximum transmission unit */
-	u_long	ifi_metric;		/* routing metric (external only) */
-	u_long	ifi_baudrate;		/* linespeed */
+	uint8_t	ifi_type;		/* ethernet, tokenring, etc */
+	uint8_t	ifi_physical;		/* e.g., AUI, Thinnet, 10base-T, etc */
+	uint8_t	ifi_addrlen;		/* media address length */
+	uint8_t	ifi_hdrlen;		/* media header length */
+	uint8_t	ifi_link_state;		/* current link state */
+	uint8_t	ifi_vhid;		/* carp vhid */
+	uint16_t	ifi_datalen;	/* length of this data struct */
+	uint64_t	ifi_mtu;	/* maximum transmission unit */
+	uint64_t	ifi_metric;	/* routing metric (external only) */
+	uint64_t	ifi_baudrate;	/* linespeed */
 	/* volatile statistics */
-	u_long	ifi_ipackets;		/* packets received on interface */
-	u_long	ifi_ierrors;		/* input errors on interface */
-	u_long	ifi_opackets;		/* packets sent on interface */
-	u_long	ifi_oerrors;		/* output errors on interface */
-	u_long	ifi_collisions;		/* collisions on csma interfaces */
-	u_long	ifi_ibytes;		/* total number of octets received */
-	u_long	ifi_obytes;		/* total number of octets sent */
-	u_long	ifi_imcasts;		/* packets received via multicast */
-	u_long	ifi_omcasts;		/* packets sent via multicast */
-	u_long	ifi_iqdrops;		/* dropped on input, this interface */
-	u_long	ifi_noproto;		/* destined for unsupported protocol */
-	uint64_t ifi_hwassist;		/* HW offload capabilities, see IFCAP */
-	time_t	ifi_epoch;		/* uptime at attach or stat reset */
-	struct	timeval ifi_lastchange;	/* time of last administrative change */
+	uint64_t	ifi_ipackets;	/* packets received on interface */
+	uint64_t	ifi_ierrors;	/* input errors on interface */
+	uint64_t	ifi_opackets;	/* packets sent on interface */
+	uint64_t	ifi_oerrors;	/* output errors on interface */
+	uint64_t	ifi_collisions;	/* collisions on csma interfaces */
+	uint64_t	ifi_ibytes;	/* total number of octets received */
+	uint64_t	ifi_obytes;	/* total number of octets sent */
+	uint64_t	ifi_imcasts;	/* packets received via multicast */
+	uint64_t	ifi_omcasts;	/* packets sent via multicast */
+	uint64_t	ifi_iqdrops;	/* dropped on input */
+	uint64_t	ifi_oqdrops;	/* dropped on output */
+	uint64_t	ifi_noproto;	/* destined for unsupported protocol */
+	uint64_t	ifi_hwassist;	/* HW offload capabilities, see IFCAP */
+
+	/* Unions are here to make sizes MI. */
+	union {				/* uptime at attach or stat reset */
+		time_t		tt;
+		uint64_t	ph;
+	} __ifi_epoch;
+#define	ifi_epoch	__ifi_epoch.tt
+	union {				/* time of last administrative change */
+		struct timeval	tv;
+		struct {
+			uint64_t ph1;
+			uint64_t ph2;
+		} ph;
+	} __ifi_lastchange;
+#define	ifi_lastchange	__ifi_lastchange.tv
 };
 
 /*-

Modified: projects/ifnet/sys/net/if_epair.c
==============================================================================
--- projects/ifnet/sys/net/if_epair.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/net/if_epair.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -824,7 +824,7 @@ epair_clone_create(struct if_clone *ifc,
 	sca->if_qflush = ifp->if_qflush;
 	ifp->if_qflush = epair_qflush;
 	ifp->if_transmit = epair_transmit;
-	if_initbaudrate(ifp, IF_Gbps(10));	/* arbitrary maximum */
+	ifp->if_baudrate = IF_Gbps(10);	/* arbitrary maximum */
 
 	/* Swap the name and finish initialization of interface <n>b. */
 	*dp = 'b';
@@ -850,7 +850,7 @@ epair_clone_create(struct if_clone *ifc,
 	scb->if_qflush = ifp->if_qflush;
 	ifp->if_qflush = epair_qflush;
 	ifp->if_transmit = epair_transmit;
-	if_initbaudrate(ifp, IF_Gbps(10));	/* arbitrary maximum */
+	ifp->if_baudrate = IF_Gbps(10);	/* arbitrary maximum */
 
 	/*
 	 * Restore name to <n>a as the ifp for this will go into the

Modified: projects/ifnet/sys/net/if_var.h
==============================================================================
--- projects/ifnet/sys/net/if_var.h	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/net/if_var.h	Tue Oct 29 18:13:04 2013	(r257352)
@@ -220,7 +220,6 @@ struct ifnet {
 #define	if_metric	if_data.ifi_metric
 #define	if_link_state	if_data.ifi_link_state
 #define	if_baudrate	if_data.ifi_baudrate
-#define	if_baudrate_pf	if_data.ifi_baudrate_pf
 #define	if_hwassist	if_data.ifi_hwassist
 #define	if_ipackets	if_data.ifi_ipackets
 #define	if_ierrors	if_data.ifi_ierrors
@@ -587,18 +586,6 @@ do {									\
 } while (0)
 
 #ifdef _KERNEL
-static __inline void
-if_initbaudrate(struct ifnet *ifp, uintmax_t baud)
-{
-
-	ifp->if_baudrate_pf = 0;
-	while (baud > (u_long)(~0UL)) {
-		baud /= 10;
-		ifp->if_baudrate_pf++;
-	}
-	ifp->if_baudrate = baud;
-}
-
 static __inline int
 drbr_enqueue(struct ifnet *ifp, struct buf_ring *br, struct mbuf *m)
 {	

Modified: projects/ifnet/sys/net/rtsock.c
==============================================================================
--- projects/ifnet/sys/net/rtsock.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/net/rtsock.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -80,34 +80,6 @@ extern void sctp_addr_change(struct ifad
 #include <sys/mount.h>
 #include <compat/freebsd32/freebsd32.h>
 
-struct if_data32 {
-	uint8_t	ifi_type;
-	uint8_t	ifi_physical;
-	uint8_t	ifi_addrlen;
-	uint8_t	ifi_hdrlen;
-	uint8_t	ifi_link_state;
-	uint8_t	ifi_vhid;
-	uint8_t	ifi_baudrate_pf;
-	uint8_t	ifi_datalen;
-	uint32_t ifi_mtu;
-	uint32_t ifi_metric;
-	uint32_t ifi_baudrate;
-	uint32_t ifi_ipackets;
-	uint32_t ifi_ierrors;
-	uint32_t ifi_opackets;
-	uint32_t ifi_oerrors;
-	uint32_t ifi_collisions;
-	uint32_t ifi_ibytes;
-	uint32_t ifi_obytes;
-	uint32_t ifi_imcasts;
-	uint32_t ifi_omcasts;
-	uint32_t ifi_iqdrops;
-	uint32_t ifi_noproto;
-	uint32_t ifi_hwassist;
-	int32_t	ifi_epoch;
-	struct	timeval32 ifi_lastchange;
-};
-
 struct if_msghdr32 {
 	uint16_t ifm_msglen;
 	uint8_t	ifm_version;
@@ -115,7 +87,7 @@ struct if_msghdr32 {
 	int32_t	ifm_addrs;
 	int32_t	ifm_flags;
 	uint16_t ifm_index;
-	struct	if_data32 ifm_data;
+	struct	if_data ifm_data;
 };
 
 struct if_msghdrl32 {
@@ -128,7 +100,7 @@ struct if_msghdrl32 {
 	uint16_t _ifm_spare1;
 	uint16_t ifm_len;
 	uint16_t ifm_data_off;
-	struct	if_data32 ifm_data;
+	struct	if_data ifm_data;
 };
 
 struct ifa_msghdrl32 {
@@ -142,7 +114,7 @@ struct ifa_msghdrl32 {
 	uint16_t ifam_len;
 	uint16_t ifam_data_off;
 	int32_t	ifam_metric;
-	struct	if_data32 ifam_data;
+	struct	if_data ifam_data;
 };
 #endif /* COMPAT_FREEBSD32 */
 
@@ -1618,79 +1590,44 @@ sysctl_dumpentry(struct radix_node *rn, 
 	return (error);
 }
 
-#ifdef COMPAT_FREEBSD32
-static void
-copy_ifdata32(struct if_data *src, struct if_data32 *dst)
-{
-
-	bzero(dst, sizeof(*dst));
-	CP(*src, *dst, ifi_type);
-	CP(*src, *dst, ifi_physical);
-	CP(*src, *dst, ifi_addrlen);
-	CP(*src, *dst, ifi_hdrlen);
-	CP(*src, *dst, ifi_link_state);
-	CP(*src, *dst, ifi_vhid);
-	CP(*src, *dst, ifi_baudrate_pf);
-	dst->ifi_datalen = sizeof(struct if_data32);
-	CP(*src, *dst, ifi_mtu);
-	CP(*src, *dst, ifi_metric);
-	CP(*src, *dst, ifi_baudrate);
-	CP(*src, *dst, ifi_ipackets);
-	CP(*src, *dst, ifi_ierrors);
-	CP(*src, *dst, ifi_opackets);
-	CP(*src, *dst, ifi_oerrors);
-	CP(*src, *dst, ifi_collisions);
-	CP(*src, *dst, ifi_ibytes);
-	CP(*src, *dst, ifi_obytes);
-	CP(*src, *dst, ifi_imcasts);
-	CP(*src, *dst, ifi_omcasts);
-	CP(*src, *dst, ifi_iqdrops);
-	CP(*src, *dst, ifi_noproto);
-	CP(*src, *dst, ifi_hwassist);
-	CP(*src, *dst, ifi_epoch);
-	TV_CP(*src, *dst, ifi_lastchange);
-}
-#endif
-
 static int
 sysctl_iflist_ifml(struct ifnet *ifp, struct rt_addrinfo *info,
     struct walkarg *w, int len)
 {
 	struct if_msghdrl *ifm;
+	struct if_data *ifd;
+
+	ifm = (struct if_msghdrl *)w->w_tmem;
 
 #ifdef COMPAT_FREEBSD32
 	if (w->w_req->flags & SCTL_MASK32) {
 		struct if_msghdrl32 *ifm32;
 
-		ifm32 = (struct if_msghdrl32 *)w->w_tmem;
+		ifm32 = (struct if_msghdrl32 *)ifm;
 		ifm32->ifm_addrs = info->rti_addrs;
 		ifm32->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
 		ifm32->ifm_index = ifp->if_index;
 		ifm32->_ifm_spare1 = 0;
 		ifm32->ifm_len = sizeof(*ifm32);
 		ifm32->ifm_data_off = offsetof(struct if_msghdrl32, ifm_data);
-
-		copy_ifdata32(&ifp->if_data, &ifm32->ifm_data);
-		/* Fixup if_data carp(4) vhid. */
-		if (carp_get_vhid_p != NULL)
-			ifm32->ifm_data.ifi_vhid =
-			    (*carp_get_vhid_p)(ifp->if_addr);
-
-		return (SYSCTL_OUT(w->w_req, (caddr_t)ifm32, len));
-	}
+		ifd = &ifm32->ifm_data;
+	} else
 #endif
-	ifm = (struct if_msghdrl *)w->w_tmem;
-	ifm->ifm_addrs = info->rti_addrs;
-	ifm->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
-	ifm->ifm_index = ifp->if_index;
-	ifm->_ifm_spare1 = 0;
-	ifm->ifm_len = sizeof(*ifm);
-	ifm->ifm_data_off = offsetof(struct if_msghdrl, ifm_data);
+	{
+		ifm->ifm_addrs = info->rti_addrs;
+		ifm->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
+		ifm->ifm_index = ifp->if_index;
+		ifm->_ifm_spare1 = 0;
+		ifm->ifm_len = sizeof(*ifm);
+		ifm->ifm_data_off = offsetof(struct if_msghdrl, ifm_data);
+		ifd = &ifm->ifm_data;
+	}
+
+	*ifd = ifp->if_data;
 
-	ifm->ifm_data = ifp->if_data;
 	/* Fixup if_data carp(4) vhid. */
 	if (carp_get_vhid_p != NULL)
-		ifm->ifm_data.ifi_vhid = (*carp_get_vhid_p)(ifp->if_addr);
+		ifd->ifi_vhid = (*carp_get_vhid_p)(ifp->if_addr);
 
 	return (SYSCTL_OUT(w->w_req, (caddr_t)ifm, len));
 }
@@ -1700,34 +1637,32 @@ sysctl_iflist_ifm(struct ifnet *ifp, str
     struct walkarg *w, int len)
 {
 	struct if_msghdr *ifm;
+	struct if_data *ifd;
+
+	ifm = (struct if_msghdr *)w->w_tmem;
 
 #ifdef COMPAT_FREEBSD32
 	if (w->w_req->flags & SCTL_MASK32) {
 		struct if_msghdr32 *ifm32;
 
-		ifm32 = (struct if_msghdr32 *)w->w_tmem;
+		ifm32 = (struct if_msghdr32 *)ifm;
 		ifm32->ifm_addrs = info->rti_addrs;
 		ifm32->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
 		ifm32->ifm_index = ifp->if_index;
-
-		copy_ifdata32(&ifp->if_data, &ifm32->ifm_data);
-		/* Fixup if_data carp(4) vhid. */
-		if (carp_get_vhid_p != NULL)
-			ifm32->ifm_data.ifi_vhid =
-			    (*carp_get_vhid_p)(ifp->if_addr);
-
-		return (SYSCTL_OUT(w->w_req, (caddr_t)ifm32, len));
-	}
+		ifd = &ifm32->ifm_data;
+	} else
 #endif
-	ifm = (struct if_msghdr *)w->w_tmem;
-	ifm->ifm_addrs = info->rti_addrs;
-	ifm->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
-	ifm->ifm_index = ifp->if_index;
+	{
+		ifm->ifm_addrs = info->rti_addrs;
+		ifm->ifm_flags = ifp->if_flags | ifp->if_drv_flags;
+		ifm->ifm_index = ifp->if_index;
+		ifd = &ifm->ifm_data;
+	}
 
-	ifm->ifm_data = ifp->if_data;
+	*ifd = ifp->if_data;
 	/* Fixup if_data carp(4) vhid. */
 	if (carp_get_vhid_p != NULL)
-		ifm->ifm_data.ifi_vhid = (*carp_get_vhid_p)(ifp->if_addr);
+		ifd->ifi_vhid = (*carp_get_vhid_p)(ifp->if_addr);
 
 	return (SYSCTL_OUT(w->w_req, (caddr_t)ifm, len));
 }
@@ -1737,12 +1672,15 @@ sysctl_iflist_ifaml(struct ifaddr *ifa, 
     struct walkarg *w, int len)
 {
 	struct ifa_msghdrl *ifam;
+	struct if_data *ifd;
+
+	ifam = (struct ifa_msghdrl *)w->w_tmem;
 
 #ifdef COMPAT_FREEBSD32
 	if (w->w_req->flags & SCTL_MASK32) {
 		struct ifa_msghdrl32 *ifam32;
 
-		ifam32 = (struct ifa_msghdrl32 *)w->w_tmem;
+		ifam32 = (struct ifa_msghdrl32 *)ifam;
 		ifam32->ifam_addrs = info->rti_addrs;
 		ifam32->ifam_flags = ifa->ifa_flags;
 		ifam32->ifam_index = ifa->ifa_ifp->if_index;
@@ -1751,45 +1689,30 @@ sysctl_iflist_ifaml(struct ifaddr *ifa, 
 		ifam32->ifam_data_off =
 		    offsetof(struct ifa_msghdrl32, ifam_data);
 		ifam32->ifam_metric = ifa->ifa_metric;
-
-		bzero(&ifam32->ifam_data, sizeof(ifam32->ifam_data));
-		ifam32->ifam_data.ifi_datalen = sizeof(struct if_data32);
-		ifam32->ifam_data.ifi_ipackets =
-		    counter_u64_fetch(ifa->ifa_ipackets);
-		ifam32->ifam_data.ifi_opackets =
-		    counter_u64_fetch(ifa->ifa_opackets);
-		ifam32->ifam_data.ifi_ibytes =
-		    counter_u64_fetch(ifa->ifa_ibytes);
-		ifam32->ifam_data.ifi_obytes =
-		    counter_u64_fetch(ifa->ifa_obytes);
-
-		/* Fixup if_data carp(4) vhid. */
-		if (carp_get_vhid_p != NULL)
-			ifam32->ifam_data.ifi_vhid = (*carp_get_vhid_p)(ifa);
-
-		return (SYSCTL_OUT(w->w_req, (caddr_t)ifam32, len));
-	}
+		ifd = &ifam32->ifam_data;
+	} else
 #endif
-
-	ifam = (struct ifa_msghdrl *)w->w_tmem;
-	ifam->ifam_addrs = info->rti_addrs;
-	ifam->ifam_flags = ifa->ifa_flags;
-	ifam->ifam_index = ifa->ifa_ifp->if_index;
-	ifam->_ifam_spare1 = 0;
-	ifam->ifam_len = sizeof(*ifam);
-	ifam->ifam_data_off = offsetof(struct ifa_msghdrl, ifam_data);
-	ifam->ifam_metric = ifa->ifa_metric;
-
-	bzero(&ifam->ifam_data, sizeof(ifam->ifam_data));
-	ifam->ifam_data.ifi_datalen = sizeof(struct if_data);
-	ifam->ifam_data.ifi_ipackets = counter_u64_fetch(ifa->ifa_ipackets);
-	ifam->ifam_data.ifi_opackets = counter_u64_fetch(ifa->ifa_opackets);
-	ifam->ifam_data.ifi_ibytes = counter_u64_fetch(ifa->ifa_ibytes);
-	ifam->ifam_data.ifi_obytes = counter_u64_fetch(ifa->ifa_obytes);
+	{
+		ifam->ifam_addrs = info->rti_addrs;
+		ifam->ifam_flags = ifa->ifa_flags;
+		ifam->ifam_index = ifa->ifa_ifp->if_index;
+		ifam->_ifam_spare1 = 0;
+		ifam->ifam_len = sizeof(*ifam);
+		ifam->ifam_data_off = offsetof(struct ifa_msghdrl, ifam_data);
+		ifam->ifam_metric = ifa->ifa_metric;
+		ifd = &ifam->ifam_data;
+	}
+
+	bzero(ifd, sizeof(*ifd));
+	ifd->ifi_datalen = sizeof(struct if_data);
+	ifd->ifi_ipackets = counter_u64_fetch(ifa->ifa_ipackets);
+	ifd->ifi_opackets = counter_u64_fetch(ifa->ifa_opackets);
+	ifd->ifi_ibytes = counter_u64_fetch(ifa->ifa_ibytes);
+	ifd->ifi_obytes = counter_u64_fetch(ifa->ifa_obytes);
 
 	/* Fixup if_data carp(4) vhid. */
 	if (carp_get_vhid_p != NULL)
-		ifam->ifam_data.ifi_vhid = (*carp_get_vhid_p)(ifa);
+		ifd->ifi_vhid = (*carp_get_vhid_p)(ifa);
 
 	return (SYSCTL_OUT(w->w_req, w->w_tmem, len));
 }

Modified: projects/ifnet/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
==============================================================================
--- projects/ifnet/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -876,7 +876,7 @@ ipoib_intf_alloc(const char *name)
 	dev->if_output = ipoib_output;
 	dev->if_input = ipoib_input;
 	dev->if_resolvemulti = ipoib_resolvemulti;
-	if_initbaudrate(dev, IF_Gbps(10));
+	dev->if_baudrate = IF_Gbps(10);
 	dev->if_broadcastaddr = priv->broadcastaddr;
 	dev->if_snd.ifq_maxlen = ipoib_sendq_size * 2;
 	sdl = (struct sockaddr_dl *)dev->if_addr->ifa_addr;

Modified: projects/ifnet/tools/tools/ifinfo/ifinfo.c
==============================================================================
--- projects/ifnet/tools/tools/ifinfo/ifinfo.c	Tue Oct 29 17:48:08 2013	(r257351)
+++ projects/ifnet/tools/tools/ifinfo/ifinfo.c	Tue Oct 29 18:13:04 2013	(r257352)
@@ -171,8 +171,6 @@ printit(const struct ifmibdata *ifmd, co
 	printf("\theader length: %d\n", ifmd->ifmd_data.ifi_hdrlen);
 	printf("\tlink state: %u\n", ifmd->ifmd_data.ifi_link_state);
 	printf("\tvhid: %u\n", ifmd->ifmd_data.ifi_vhid);
-	printf("\tbaudrate power factor: %u\n",
-	    ifmd->ifmd_data.ifi_baudrate_pf);
 	printf("\tdatalen: %u\n", ifmd->ifmd_data.ifi_datalen);
 	printf("\tmtu: %lu\n", ifmd->ifmd_data.ifi_mtu);
 	printf("\tmetric: %lu\n", ifmd->ifmd_data.ifi_metric);


More information about the svn-src-projects mailing list