Date: Tue, 29 Oct 2013 18:13:05 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: 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... Message-ID: <201310291813.r9TID5q8075759@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201310291813.r9TID5q8075759>