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