summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2014-03-13 03:42:24 +0000
committerglebius <glebius@FreeBSD.org>2014-03-13 03:42:24 +0000
commitb38edcd355dfe9c2ac4080b8837687b0dba7dd41 (patch)
tree23c54b335bf31cd906e8cf3bad37e838d9a80c2d /sys/dev
parent2720ac2544ae02bf5f480a96cc1f9ba096803879 (diff)
downloadFreeBSD-src-b38edcd355dfe9c2ac4080b8837687b0dba7dd41.zip
FreeBSD-src-b38edcd355dfe9c2ac4080b8837687b0dba7dd41.tar.gz
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.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/bxe/bxe.c6
-rw-r--r--sys/dev/ixgbe/ixgbe.c6
-rw-r--r--sys/dev/mxge/if_mxge.c4
-rw-r--r--sys/dev/mxge/if_mxge_var.h6
-rw-r--r--sys/dev/oce/oce_if.c2
-rw-r--r--sys/dev/qlxgb/qla_os.c2
-rw-r--r--sys/dev/qlxgbe/ql_os.c8
-rw-r--r--sys/dev/qlxge/qls_os.c8
-rw-r--r--sys/dev/sbni/if_sbni.c2
-rw-r--r--sys/dev/virtio/network/if_vtnet.c2
-rw-r--r--sys/dev/vmware/vmxnet3/if_vmx.c6
-rw-r--r--sys/dev/vxge/vxge.c6
12 files changed, 14 insertions, 44 deletions
diff --git a/sys/dev/bxe/bxe.c b/sys/dev/bxe/bxe.c
index 95acbe5..eb812d7 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 6dfec02..c3b3fd6 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 530b01c..e6cdf23 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 a182a20..a284cdf 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 6749c2e..42ef2c9 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 6c57e3d..2661308 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 700c4a8..e62f6033 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 509bfe2..ae1378b 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 e3d0faf..8a4ce2e 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 15a59f1..33576d8 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 593d367..30a604a 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 3650843..20e5e24 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]),
OpenPOWER on IntegriCloud