diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2014-03-13 03:42:24 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2014-03-13 03:42:24 +0000 |
commit | b245f96c44c5c3b395480706327250c29f8d19cc (patch) | |
tree | 23c54b335bf31cd906e8cf3bad37e838d9a80c2d /sys/dev | |
parent | 3d31c75401c066d17bb3d3baef0a2a7c4ffe7708 (diff) | |
download | src-b245f96c44c5c3b395480706327250c29f8d19cc.tar.gz src-b245f96c44c5c3b395480706327250c29f8d19cc.zip |
Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 Gbit
interface, in the r241616 a crutch was provided. It didn't work well, and
finally we decided that it is time to break ABI and simply make if_baudrate
a 64-bit value. Meanwhile, the entire struct if_data was reviewed.
o Remove the if_baudrate_pf crutch.
o Make all fields of struct if_data fixed machine independent size. The
notion of data (packet counters, etc) are by no means MD. And it is a
bug that on amd64 we've got a 64-bit counters, while on i386 32-bit,
which at modern speeds overflow within a second.
This also removes quite a lot of COMPAT_FREEBSD32 code.
o Give 16 bit for the ifi_datalen field. This field was provided to
make future changes to if_data less ABI breaking. Unfortunately the
8 bit size of it had effectively limited sizeof if_data to 256 bytes.
o Give 32 bits to ifi_mtu and ifi_metric.
o Give 64 bits to the rest of fields, since they are counters.
__FreeBSD_version bumped.
Discussed with: emax
Sponsored by: Netflix
Sponsored by: Nginx, Inc.
Notes
Notes:
svn path=/head/; revision=263102
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/bxe/bxe.c | 6 | ||||
-rw-r--r-- | sys/dev/ixgbe/ixgbe.c | 6 | ||||
-rw-r--r-- | sys/dev/mxge/if_mxge.c | 4 | ||||
-rw-r--r-- | sys/dev/mxge/if_mxge_var.h | 6 | ||||
-rw-r--r-- | sys/dev/oce/oce_if.c | 2 | ||||
-rw-r--r-- | sys/dev/qlxgb/qla_os.c | 2 | ||||
-rw-r--r-- | sys/dev/qlxgbe/ql_os.c | 8 | ||||
-rw-r--r-- | sys/dev/qlxge/qls_os.c | 8 | ||||
-rw-r--r-- | sys/dev/sbni/if_sbni.c | 2 | ||||
-rw-r--r-- | sys/dev/virtio/network/if_vtnet.c | 2 | ||||
-rw-r--r-- | sys/dev/vmware/vmxnet3/if_vmx.c | 6 | ||||
-rw-r--r-- | sys/dev/vxge/vxge.c | 6 |
12 files changed, 14 insertions, 44 deletions
diff --git a/sys/dev/bxe/bxe.c b/sys/dev/bxe/bxe.c index 95acbe5c21bb..eb812d7ef157 100644 --- a/sys/dev/bxe/bxe.c +++ b/sys/dev/bxe/bxe.c @@ -13321,11 +13321,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); diff --git a/sys/dev/ixgbe/ixgbe.c b/sys/dev/ixgbe/ixgbe.c index 6dfec02cc8d9..c3b3fd64af05 100644 --- a/sys/dev/ixgbe/ixgbe.c +++ b/sys/dev/ixgbe/ixgbe.c @@ -2628,11 +2628,7 @@ ixgbe_setup_interface(device_t dev, struct adapter *adapter) 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; diff --git a/sys/dev/mxge/if_mxge.c b/sys/dev/mxge/if_mxge.c index 530b01c716ba..e6cdf234407b 100644 --- a/sys/dev/mxge/if_mxge.c +++ b/sys/dev/mxge/if_mxge.c @@ -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; diff --git a/sys/dev/mxge/if_mxge_var.h b/sys/dev/mxge/if_mxge_var.h index a182a205af8b..a284cdf58625 100644 --- a/sys/dev/mxge/if_mxge_var.h +++ b/sys/dev/mxge/if_mxge_var.h @@ -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 diff --git a/sys/dev/oce/oce_if.c b/sys/dev/oce/oce_if.c index 6749c2ed50e5..42ef2c96be81 100644 --- a/sys/dev/oce/oce_if.c +++ b/sys/dev/oce/oce_if.c @@ -1721,7 +1721,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; diff --git a/sys/dev/qlxgb/qla_os.c b/sys/dev/qlxgb/qla_os.c index 6c57e3dd5f6c..266130826c52 100644 --- a/sys/dev/qlxgb/qla_os.c +++ b/sys/dev/qlxgb/qla_os.c @@ -669,7 +669,7 @@ qla_init_ifnet(device_t dev, qla_host_t *ha) 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; diff --git a/sys/dev/qlxgbe/ql_os.c b/sys/dev/qlxgbe/ql_os.c index 700c4a81381f..e62f6033d571 100644 --- a/sys/dev/qlxgbe/ql_os.c +++ b/sys/dev/qlxgbe/ql_os.c @@ -748,14 +748,8 @@ qla_init_ifnet(device_t dev, qla_host_t *ha) 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; diff --git a/sys/dev/qlxge/qls_os.c b/sys/dev/qlxge/qls_os.c index 509bfe2c5fc9..ae1378be6346 100644 --- a/sys/dev/qlxge/qls_os.c +++ b/sys/dev/qlxge/qls_os.c @@ -736,13 +736,7 @@ qls_init_ifnet(device_t dev, qla_host_t *ha) 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; diff --git a/sys/dev/sbni/if_sbni.c b/sys/dev/sbni/if_sbni.c index e3d0faf79222..8a4ce2ea55ef 100644 --- a/sys/dev/sbni/if_sbni.c +++ b/sys/dev/sbni/if_sbni.c @@ -250,7 +250,7 @@ sbni_attach(struct sbni_softc *sc, int unit, struct sbni_flags flags) ether_ifattach(ifp, sc->enaddr); /* device attach does transition from UNCONFIGURED to IDLE state */ - if_printf(ifp, "speed %ld, rxl ", ifp->if_baudrate); + if_printf(ifp, "speed %ju, rxl ", (uintmax_t)ifp->if_baudrate); if (sc->delta_rxl) printf("auto\n"); else diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c index 15a59f17714d..33576d857ea8 100644 --- a/sys/dev/virtio/network/if_vtnet.c +++ b/sys/dev/virtio/network/if_vtnet.c @@ -913,7 +913,7 @@ vtnet_setup_interface(struct vtnet_softc *sc) } 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; diff --git a/sys/dev/vmware/vmxnet3/if_vmx.c b/sys/dev/vmware/vmxnet3/if_vmx.c index 593d367c7e65..30a604aaca2a 100644 --- a/sys/dev/vmware/vmxnet3/if_vmx.c +++ b/sys/dev/vmware/vmxnet3/if_vmx.c @@ -1471,11 +1471,7 @@ vmxnet3_setup_interface(struct vmxnet3_softc *sc) } 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; diff --git a/sys/dev/vxge/vxge.c b/sys/dev/vxge/vxge.c index 365084359809..20e5e245e0ce 100644 --- a/sys/dev/vxge/vxge.c +++ b/sys/dev/vxge/vxge.c @@ -322,7 +322,7 @@ vxge_init_locked(vxge_dev_t *vdev) status = vxge_hal_device_mtu_check(vpath_handle, ifp->if_mtu); if (status != VXGE_HAL_OK) { device_printf(vdev->ndev, - "invalid mtu size %ld specified\n", ifp->if_mtu); + "invalid mtu size %u specified\n", ifp->if_mtu); goto _exit1; } @@ -2908,7 +2908,7 @@ vxge_change_mtu(vxge_dev_t *vdev, unsigned long new_mtu) goto _exit0; (vdev->ifp)->if_mtu = new_mtu; - device_printf(vdev->ndev, "MTU changed to %ld\n", (vdev->ifp)->if_mtu); + device_printf(vdev->ndev, "MTU changed to %u\n", (vdev->ifp)->if_mtu); if (vdev->is_initialized) { if_down(vdev->ifp); @@ -3241,7 +3241,7 @@ vxge_device_hw_info_print(vxge_dev_t *vdev) snprintf(vdev->config.nic_attr[VXGE_PRINT_MTU_SIZE], sizeof(vdev->config.nic_attr[VXGE_PRINT_MTU_SIZE]), - "%lu", vdev->ifp->if_mtu); + "%u", vdev->ifp->if_mtu); snprintf(vdev->config.nic_attr[VXGE_PRINT_LRO_MODE], sizeof(vdev->config.nic_attr[VXGE_PRINT_LRO_MODE]), |