I think I've managed to fix the backported driver from vanilla kernel. I forgot to copy phy_start() call from original driver (that's probably why it didn't work, I'm booting from NFS and from port 0, so it was enabled already) and I've added the support for the skb fragments. This seems to greatly increase the TX throughput.
In the addition it seems the DMA burst patch doesn't increase the throughput anymore (TX is probably saturated now, and the code is better), but the driver supports any burst mode now anyway (there was just a problem with buffer alignment). There were ring full events often, so I've increased the number of descriptors from 0x40 to 0xc0 and changed the timeout. Maybe it should work better if the queue is stopped around 50% or something like that. Attached: 0904... - new driver 0905... - descriptor increase run.sh - testing script, various iperf3 modes vanilla... - vanilla openwrt test z4_hyst... - new driver test (measured with previous patches for SMP ICU and burst) Petr
--- a/drivers/net/ethernet/lantiq_xrx200.c 2019-01-30 02:20:35.780993746 +0100 +++ b/drivers/net/ethernet/lantiq_xrx200.c 2019-02-08 12:59:08.067766387 +0100 @@ -36,16 +36,13 @@ #include "lantiq_pce.h" #include "lantiq_xrx200_sw.h" +#include <linux/time.h> //pc2005 time tests + #define SW_POLLING #define SW_ROUTING -#ifdef SW_ROUTING -#define XRX200_MAX_DEV 2 -#else -#define XRX200_MAX_DEV 1 -#endif - #define XRX200_MAX_VLAN 64 + #define XRX200_PCE_ACTVLAN_IDX 0x01 #define XRX200_PCE_VLANMAP_IDX 0x02 @@ -54,7 +51,7 @@ #define XRX200_HEADROOM 4 -#define XRX200_TX_TIMEOUT (10 * HZ) +#define XRX200_TX_TIMEOUT (30 * HZ) /* port type */ #define XRX200_PORT_TYPE_PHY 1 @@ -62,6 +59,8 @@ /* DMA */ #define XRX200_DMA_DATA_LEN 0x600 +#define XRX200_DMA_TX_ALIGN (32 - 1) + #define XRX200_DMA_IRQ INT_NUM_IM2_IRL0 #define XRX200_DMA_RX 0 #define XRX200_DMA_TX 1 @@ -69,6 +68,7 @@ #define XRX200_DMA_IS_TX(x) (x%2) #define XRX200_DMA_IS_RX(x) (!XRX200_DMA_IS_TX(x)) + /* fetch / store dma */ #define FDMA_PCTRL0 0x2A00 #define FDMA_PCTRLx(x) (FDMA_PCTRL0 + (x * 0x18)) @@ -205,48 +205,44 @@ struct xrx200_chan { int idx; int refcount; - int tx_free; - - struct net_device dummy_dev; - struct net_device *devs[XRX200_MAX_DEV]; + volatile int tx_free; struct tasklet_struct tasklet; struct napi_struct napi; struct ltq_dma_channel dma; struct sk_buff *skb[LTQ_DESC_NUM]; + struct xrx200_priv *priv; spinlock_t lock; }; -struct xrx200_hw { - struct clk *clk; - struct mii_bus *mii_bus; - - struct xrx200_chan chan[XRX200_MAX_DMA]; - u16 vlan_vid[XRX200_MAX_VLAN]; - u16 vlan_port_map[XRX200_MAX_VLAN]; - - struct net_device *devs[XRX200_MAX_DEV]; - int num_devs; - - int port_map[XRX200_MAX_PORT]; - unsigned short wan_map; - - struct switch_dev swdev; -}; - struct xrx200_priv { struct net_device_stats stats; int id; + struct clk *clk; + + struct xrx200_chan chan_tx; + struct xrx200_chan chan_rx; + struct net_device *net_dev; + struct device *dev; + struct xrx200_port port[XRX200_MAX_PORT]; int num_port; bool wan; bool sw; - unsigned short port_map; + unsigned short d_port_map; unsigned char mac[6]; - struct xrx200_hw *hw; + struct mii_bus *mii_bus; + + u16 vlan_vid[XRX200_MAX_VLAN]; + u16 vlan_port_map[XRX200_MAX_VLAN]; + + int port_map[XRX200_MAX_PORT]; + unsigned short wan_map; + + struct switch_dev swdev; }; static __iomem void *xrx200_switch_membase; @@ -470,14 +466,14 @@ } // swconfig interface -static void xrx200_hw_init(struct xrx200_hw *hw); +static void xrx200_hw_init(struct xrx200_priv *priv); // global static int xrx200sw_reset_switch(struct switch_dev *dev) { - struct xrx200_hw *hw = container_of(dev, struct xrx200_hw, swdev); + struct xrx200_priv *priv = container_of(dev, struct xrx200_priv, swdev); - xrx200_hw_init(hw); + xrx200_hw_init(priv); return 0; } @@ -523,7 +519,7 @@ static int xrx200sw_set_vlan_vid(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { - struct xrx200_hw *hw = container_of(dev, struct xrx200_hw, swdev); + struct xrx200_priv *priv = container_of(dev, struct xrx200_priv, swdev); int i; struct xrx200_pce_table_entry tev; struct xrx200_pce_table_entry tem; @@ -538,7 +534,7 @@ return -EINVAL; } - hw->vlan_vid[val->port_vlan] = val->value.i; + priv->vlan_vid[val->port_vlan] = val->value.i; tev.index = val->port_vlan; xrx200_pce_table_entry_read(&tev); @@ -571,7 +567,7 @@ static int xrx200sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val) { - struct xrx200_hw *hw = container_of(dev, struct xrx200_hw, swdev); + struct xrx200_priv *priv = container_of(dev, struct xrx200_priv, swdev); int i, portmap, tagmap, untagged; struct xrx200_pce_table_entry tem; @@ -624,7 +620,7 @@ ltq_switch_w32_mask(0, portmap, PCE_PMAP2); ltq_switch_w32_mask(0, portmap, PCE_PMAP3); - hw->vlan_port_map[val->port_vlan] = portmap; + priv->vlan_port_map[val->port_vlan] = portmap; xrx200sw_fixup_pvids(); @@ -722,8 +718,14 @@ link->duplex = xrx200sw_read_x(XRX200_MAC_PSTAT_FDUP, port); - link->rx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0010); - link->tx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0020); + +// TODO "&&" tohle je bug ne? +// link->rx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0010); +// link->tx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0020); + link->rx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & 0x0010); + link->tx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & 0x0020); + + link->aneg = !(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port)); link->speed = SWITCH_PORT_SPEED_10; @@ -834,19 +836,16 @@ // .get_port_stats = xrx200sw_get_port_stats, //TODO }; -static int xrx200sw_init(struct xrx200_hw *hw) +static int xrx200sw_init(struct xrx200_priv *priv) { - int netdev_num; - for (netdev_num = 0; netdev_num < hw->num_devs; netdev_num++) - { struct switch_dev *swdev; - struct net_device *dev = hw->devs[netdev_num]; - struct xrx200_priv *priv = netdev_priv(dev); - if (!priv->sw) - continue; + if (!priv->sw) { + pr_info("!!!! no switch\n"); + return -ENODEV; + } - swdev = &hw->swdev; + swdev = &priv->swdev; swdev->name = "Lantiq XRX200 Switch"; swdev->vlans = XRX200_MAX_VLAN; @@ -854,10 +853,26 @@ swdev->cpu_port = 6; swdev->ops = &xrx200sw_ops; - register_switch(swdev, dev); + register_switch(swdev, priv->net_dev); return 0; // enough switches +} + +/* drop all the packets from the DMA ring */ +static void xrx200_flush_dma(struct xrx200_chan *ch) +{ + int i; + + for (i = 0; i < LTQ_DESC_NUM; i++) { + struct ltq_dma_desc *desc = &ch->dma.desc_base[ch->dma.desc]; + + if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) != LTQ_DMA_C) + break; + + desc->ctl = LTQ_DMA_OWN | LTQ_DMA_RX_OFFSET(NET_IP_ALIGN) | + XRX200_DMA_DATA_LEN; + ch->dma.desc++; + ch->dma.desc %= LTQ_DESC_NUM; } - return 0; } static int xrx200_open(struct net_device *dev) @@ -865,21 +880,29 @@ struct xrx200_priv *priv = netdev_priv(dev); int i; - for (i = 0; i < XRX200_MAX_DMA; i++) { - if (!priv->hw->chan[i].dma.irq) - continue; - spin_lock_bh(&priv->hw->chan[i].lock); - if (!priv->hw->chan[i].refcount) { - if (XRX200_DMA_IS_RX(i)) - napi_enable(&priv->hw->chan[i].napi); - ltq_dma_open(&priv->hw->chan[i].dma); - } - priv->hw->chan[i].refcount++; - spin_unlock_bh(&priv->hw->chan[i].lock); - } +// TODO DMA chan allocation seems to be more complex in openwrt version + + napi_enable(&priv->chan_tx.napi); + ltq_dma_open(&priv->chan_tx.dma); + ltq_dma_enable_irq(&priv->chan_tx.dma); + + napi_enable(&priv->chan_rx.napi); + ltq_dma_open(&priv->chan_rx.dma); + /* The boot loader does not always deactivate the receiving of frames + * on the ports and then some packets queue up in the PPE buffers. + * They already passed the PMAC so they do not have the tags + * configured here. Read the these packets here and drop them. + * The HW should have written them into memory after 10us + */ + usleep_range(20, 40); + xrx200_flush_dma(&priv->chan_rx); + + ltq_dma_enable_irq(&priv->chan_rx.dma); + for (i = 0; i < priv->num_port; i++) if (priv->port[i].phydev) phy_start(priv->port[i].phydev); + netif_wake_queue(dev); return 0; @@ -896,19 +919,11 @@ if (priv->port[i].phydev) phy_stop(priv->port[i].phydev); - for (i = 0; i < XRX200_MAX_DMA; i++) { - if (!priv->hw->chan[i].dma.irq) - continue; + napi_disable(&priv->chan_rx.napi); + ltq_dma_close(&priv->chan_rx.dma); - priv->hw->chan[i].refcount--; - if (!priv->hw->chan[i].refcount) { - if (XRX200_DMA_IS_RX(i)) - napi_disable(&priv->hw->chan[i].napi); - spin_lock_bh(&priv->hw->chan[i].lock); - ltq_dma_close(&priv->hw->chan[XRX200_DMA_RX].dma); - spin_unlock_bh(&priv->hw->chan[i].lock); - } - } + napi_disable(&priv->chan_tx.napi); + ltq_dma_close(&priv->chan_tx.dma); return 0; } @@ -916,12 +931,15 @@ static int xrx200_alloc_skb(struct xrx200_chan *ch) { #define DMA_PAD (NET_IP_ALIGN + NET_SKB_PAD) - ch->skb[ch->dma.desc] = dev_alloc_skb(XRX200_DMA_DATA_LEN + DMA_PAD); + ch->skb[ch->dma.desc] = netdev_alloc_skb(ch->priv->net_dev, XRX200_DMA_DATA_LEN + DMA_PAD); if (!ch->skb[ch->dma.desc]) goto skip; skb_reserve(ch->skb[ch->dma.desc], NET_SKB_PAD); - ch->dma.desc_base[ch->dma.desc].addr = dma_map_single(NULL, + + dma_unmap_single(ch->priv->dev, ch->dma.desc_base[ch->dma.desc].addr, XRX200_DMA_DATA_LEN, DMA_FROM_DEVICE); + + ch->dma.desc_base[ch->dma.desc].addr = dma_map_single(ch->priv->dev, ch->skb[ch->dma.desc]->data, XRX200_DMA_DATA_LEN, DMA_FROM_DEVICE); ch->dma.desc_base[ch->dma.desc].addr = @@ -938,8 +956,8 @@ static void xrx200_hw_receive(struct xrx200_chan *ch, int id) { - struct net_device *dev = ch->devs[id]; - struct xrx200_priv *priv = netdev_priv(dev); + struct xrx200_priv *priv = ch->priv; + struct net_device *dev = priv->net_dev; struct ltq_dma_desc *desc = &ch->dma.desc_base[ch->dma.desc]; struct sk_buff *skb = ch->skb[ch->dma.desc]; int len = (desc->ctl & LTQ_DMA_SIZE_MASK); @@ -960,18 +978,19 @@ #ifdef SW_ROUTING skb_pull(skb, 8); #endif + skb->dev = dev; skb->protocol = eth_type_trans(skb, dev); netif_receive_skb(skb); - priv->stats.rx_packets++; - priv->stats.rx_bytes+=len; + dev->stats.rx_packets++; + dev->stats.rx_bytes+=len; } static int xrx200_poll_rx(struct napi_struct *napi, int budget) { struct xrx200_chan *ch = container_of(napi, struct xrx200_chan, napi); - struct xrx200_priv *priv = netdev_priv(ch->devs[0]); + struct xrx200_priv *priv = ch->priv; int rx = 0; int complete = 0; @@ -982,7 +1001,7 @@ struct sk_buff *skb = ch->skb[ch->dma.desc]; u8 *special_tag = (u8*)skb->data; int port = (special_tag[7] >> SPPID_SHIFT) & SPPID_MASK; - xrx200_hw_receive(ch, priv->hw->port_map[port]); + xrx200_hw_receive(ch, priv->port_map[port]); #else xrx200_hw_receive(ch, 0); #endif @@ -993,95 +1012,130 @@ } if (complete || !rx) { - napi_complete(&ch->napi); + + if (napi_complete_done(&ch->napi,rx)) { +// ltq_dma_ack_irq(&ch->dma); ltq_dma_enable_irq(&ch->dma); + } } return rx; } -static void xrx200_tx_housekeeping(unsigned long ptr) + +static struct net_device_stats *xrx200_get_stats (struct net_device *dev) +{ + struct xrx200_priv *priv = netdev_priv(dev); + + return &priv->stats; +} + +static int xrx200_tx_housekeeping(struct napi_struct *napi, int budget) { - struct xrx200_chan *ch = (struct xrx200_chan *) ptr; + struct xrx200_chan *ch = container_of(napi, + struct xrx200_chan, napi); + struct net_device *net_dev = ch->priv->net_dev; int pkts = 0; - int i; + int bytes = 0; - spin_lock_bh(&ch->lock); - ltq_dma_ack_irq(&ch->dma); - while ((ch->dma.desc_base[ch->tx_free].ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) == LTQ_DMA_C) { - struct sk_buff *skb = ch->skb[ch->tx_free]; + while (pkts < budget) { + struct ltq_dma_desc *desc = &ch->dma.desc_base[ch->tx_free]; - pkts++; - ch->skb[ch->tx_free] = NULL; - dev_kfree_skb(skb); - memset(&ch->dma.desc_base[ch->tx_free], 0, - sizeof(struct ltq_dma_desc)); - ch->tx_free++; - ch->tx_free %= LTQ_DESC_NUM; - } - ltq_dma_enable_irq(&ch->dma); - spin_unlock_bh(&ch->lock); + if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) == LTQ_DMA_C) { + struct sk_buff *skb = ch->skb[ch->tx_free]; - if (!pkts) - return; + bytes += desc->ctl & LTQ_DMA_SIZE_MASK; + ch->skb[ch->tx_free] = NULL; - for (i = 0; i < XRX200_MAX_DEV && ch->devs[i]; i++) - netif_wake_queue(ch->devs[i]); -} +// TODO bad addr source (->addr ignores lowest 0x1f) +// TODO rewrite for frag indexes? (unstable??) + dma_unmap_single(ch->priv->dev, desc->addr & 0x1fffffff, desc->ctl & LTQ_DMA_SIZE_MASK , + DMA_TO_DEVICE); + + /* Consume skb only at last fragment */ + if (desc->ctl & LTQ_DMA_EOP) { + dev_consume_skb_irq(skb); + pkts++; + } -static struct net_device_stats *xrx200_get_stats (struct net_device *dev) -{ - struct xrx200_priv *priv = netdev_priv(dev); + memset(desc, 0, sizeof(struct ltq_dma_desc)); + ch->tx_free = (ch->tx_free + 1) % LTQ_DESC_NUM; + } else { + break; + } + } - return &priv->stats; + // TODO this is legacy + net_dev->stats.tx_packets += pkts; + net_dev->stats.tx_bytes += bytes; + + if (pkts < budget) { + if (napi_complete_done(&ch->napi, pkts)) { + ltq_dma_enable_irq(&ch->dma); + } + } + + if (netif_queue_stopped(net_dev)) { + // TODO hysteresis + if (ch->dma.desc != ch->tx_free) { + netif_wake_queue(net_dev); + } + } + + return pkts; } static void xrx200_tx_timeout(struct net_device *dev) { struct xrx200_priv *priv = netdev_priv(dev); - printk(KERN_ERR "%s: transmit timed out, disable the dma channel irq\n", dev->name); + pr_err("%s: transmit timed out!\n", dev->name); priv->stats.tx_errors++; - netif_wake_queue(dev); + + ltq_dma_enable_irq(&priv->chan_tx.dma); //TODO necessary? + + if (netif_queue_stopped(dev)) { + netif_wake_queue(dev); + } else { + pr_warn("%s: high transmit load\n", dev->name); + } } -static int xrx200_start_xmit(struct sk_buff *skb, struct net_device *dev) +static netdev_tx_t xrx200_start_xmit(struct sk_buff *skb, struct net_device *dev) { struct xrx200_priv *priv = netdev_priv(dev); - struct xrx200_chan *ch; + struct xrx200_chan *ch = &priv->chan_tx; + struct ltq_dma_desc *desc; - u32 byte_offset; int ret = NETDEV_TX_OK; int len; + int i; + dma_addr_t mapping; #ifdef SW_ROUTING u32 special_tag = (SPID_CPU_PORT << SPID_SHIFT) | DPID_ENABLE; #endif - if(priv->id) - ch = &priv->hw->chan[XRX200_DMA_TX_2]; - else - ch = &priv->hw->chan[XRX200_DMA_TX]; - desc = &ch->dma.desc_base[ch->dma.desc]; - - skb->dev = dev; - len = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len; + if (skb_put_padto(skb, ETH_ZLEN)) { + dev->stats.tx_dropped++; + return NETDEV_TX_OK; + } #ifdef SW_ROUTING if (is_multicast_ether_addr(eth_hdr(skb)->h_dest)) { - u16 port_map = priv->port_map; + u16 port_map = priv->d_port_map; if (priv->sw && skb->protocol == htons(ETH_P_8021Q)) { u16 vid; int i; - port_map = 0; + port_map = 0; if (!__vlan_get_tag(skb, &vid)) { for (i = 0; i < XRX200_MAX_VLAN; i++) { - if (priv->hw->vlan_vid[i] != vid) - continue; - port_map = priv->hw->vlan_port_map[i]; - break; + if (priv->vlan_vid[i] == vid) { + port_map = priv->vlan_port_map[i]; + break; + } } } } @@ -1089,108 +1143,193 @@ special_tag |= (port_map << PORT_MAP_SHIFT) | PORT_MAP_SEL | PORT_MAP_EN; } + if(priv->wan) special_tag |= (1 << DPID_SHIFT); + if(skb_headroom(skb) < 4) { struct sk_buff *tmp = skb_realloc_headroom(skb, 4); +pr_info("---slow realloc headroom?\n"); dev_kfree_skb_any(skb); skb = tmp; } + skb_push(skb, 4); memcpy(skb->data, &special_tag, sizeof(u32)); - len += 4; #endif - /* dma needs to start on a 16 byte aligned address */ - byte_offset = CPHYSADDR(skb->data) % 16; +// spin_lock_bh(&ch->lock); //only is multiple xmit queues + + if ((ch->tx_free != ch->dma.desc) && + (((((ch->tx_free - ch->dma.desc + LTQ_DESC_NUM) % LTQ_DESC_NUM)) + - skb_shinfo(skb)->nr_frags - 1) < 0 )) { + netdev_err(dev, "not enough TX ring space for frags\n"); + netif_stop_queue(dev); + ret = NETDEV_TX_BUSY; + goto out; + } - spin_lock_bh(&ch->lock); + desc = &ch->dma.desc_base[ch->dma.desc]; if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) || ch->skb[ch->dma.desc]) { - netdev_err(dev, "tx ring full\n"); + netdev_err(dev, "tx ring full before send\n"); netif_stop_queue(dev); ret = NETDEV_TX_BUSY; goto out; } + + /* Send first fragment */ ch->skb[ch->dma.desc] = skb; + desc = &ch->dma.desc_base[ch->dma.desc]; + + if (skb_shinfo(skb)->nr_frags == 0) { + len = skb->len; + } else { + len = skb_headlen(skb); + } + + mapping = dma_map_single(priv->dev, skb->data, len, DMA_TO_DEVICE); + if (unlikely(dma_mapping_error(priv->dev, mapping))) { + netdev_err(dev, "DMA mapping failed\n"); + dev_kfree_skb(skb); + dev->stats.tx_dropped++; + dev->stats.tx_errors++; + ret = NETDEV_TX_OK; + goto out; + } + + desc->addr = (mapping & 0x1fffffe0) | (1<<31); + + /* Don't set OWN before filling all fragments descriptors */ + desc->ctl = LTQ_DMA_SOP | LTQ_DMA_TX_OFFSET(mapping & XRX200_DMA_TX_ALIGN) + | (len & LTQ_DMA_SIZE_MASK); + + if (!skb_shinfo(skb)->nr_frags) + desc->ctl |= LTQ_DMA_EOP; + + + /* Send rest of fragments */ + for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { + + //TODO saving info for fragments + ch->skb[(ch->dma.desc + i + 1) % LTQ_DESC_NUM ] = skb; + desc = &ch->dma.desc_base[(ch->dma.desc + i + 1) % LTQ_DESC_NUM]; + + len = skb_frag_size(&skb_shinfo(skb)->frags[i]); + + mapping = dma_map_single(priv->dev, skb_frag_address(& skb_shinfo(skb)->frags[i]), len, DMA_TO_DEVICE); + if (unlikely(dma_mapping_error(priv->dev, mapping))) { + netdev_err(dev, "DMA mapping for fragment failed\n"); + dev_kfree_skb(skb); + dev->stats.tx_dropped++; + dev->stats.tx_errors++; + ret = NETDEV_TX_OK; + goto out; + } + + desc->addr = (mapping & 0x1fffffe0) | (1<<31); - netif_trans_update(dev); + desc->ctl = LTQ_DMA_OWN | + LTQ_DMA_TX_OFFSET(mapping & XRX200_DMA_TX_ALIGN) | (len & LTQ_DMA_SIZE_MASK); + + if (i == (skb_shinfo(skb)->nr_frags - 1)) + desc->ctl |= LTQ_DMA_EOP; + } + + desc = &ch->dma.desc_base[ch->dma.desc]; + + /* Increment TX ring index */ + ch->dma.desc = (ch->dma.desc + skb_shinfo(skb)->nr_frags + 1) % LTQ_DESC_NUM; - desc->addr = ((unsigned int) dma_map_single(NULL, skb->data, len, - DMA_TO_DEVICE)) - byte_offset; wmb(); - desc->ctl = LTQ_DMA_OWN | LTQ_DMA_SOP | LTQ_DMA_EOP | - LTQ_DMA_TX_OFFSET(byte_offset) | (len & LTQ_DMA_SIZE_MASK); - ch->dma.desc++; - ch->dma.desc %= LTQ_DESC_NUM; - if (ch->dma.desc == ch->tx_free) - netif_stop_queue(dev); + /* Start TX DMA */ + desc->ctl |= LTQ_DMA_OWN; + +// TODO stop queue sooner? +// if (ch->dma.desc == ch->tx_free) { - priv->stats.tx_packets++; - priv->stats.tx_bytes+=len; +if (((((ch->tx_free - ch->dma.desc + LTQ_DESC_NUM) % LTQ_DESC_NUM)) + - skb_shinfo(skb)->nr_frags - 1 - 32) < 0 ) { +pr_info("tx ring full after send\n"); + netif_stop_queue(dev); + } + + skb_tx_timestamp(skb); out: - spin_unlock_bh(&ch->lock); +// spin_unlock_bh(&ch->lock); return ret; } -static irqreturn_t xrx200_dma_irq(int irq, void *priv) +static irqreturn_t xrx200_dma_irq(int irq, void *ptr) { - struct xrx200_hw *hw = priv; - int chnr = irq - XRX200_DMA_IRQ; - struct xrx200_chan *ch = &hw->chan[chnr]; + struct xrx200_chan *ch = ptr; ltq_dma_disable_irq(&ch->dma); ltq_dma_ack_irq(&ch->dma); - - if (chnr % 2) - tasklet_schedule(&ch->tasklet); - else - napi_schedule(&ch->napi); + napi_schedule(&ch->napi); return IRQ_HANDLED; } -static int xrx200_dma_init(struct xrx200_hw *hw) +static int xrx200_dma_init(struct xrx200_priv *priv) { - int i, err = 0; + int i; + struct xrx200_chan *ch_rx = &priv->chan_rx; + struct xrx200_chan *ch_tx = &priv->chan_tx; + int ret; ltq_dma_init_port(DMA_PORT_ETOP); - for (i = 0; i < 8 && !err; i++) { - int irq = XRX200_DMA_IRQ + i; - struct xrx200_chan *ch = &hw->chan[i]; - - spin_lock_init(&ch->lock); - - ch->idx = ch->dma.nr = i; - - if (i == XRX200_DMA_TX) { - ltq_dma_alloc_tx(&ch->dma); - err = request_irq(irq, xrx200_dma_irq, 0, "vrx200_tx", hw); - } else if (i == XRX200_DMA_TX_2) { - ltq_dma_alloc_tx(&ch->dma); - err = request_irq(irq, xrx200_dma_irq, 0, "vrx200_tx_2", hw); - } else if (i == XRX200_DMA_RX) { - ltq_dma_alloc_rx(&ch->dma); - for (ch->dma.desc = 0; ch->dma.desc < LTQ_DESC_NUM; - ch->dma.desc++) - if (xrx200_alloc_skb(ch)) - err = -ENOMEM; - ch->dma.desc = 0; - err = request_irq(irq, xrx200_dma_irq, 0, "vrx200_rx", hw); - } else - continue; + ch_rx->dma.nr = XRX200_DMA_RX; + ch_rx->priv = priv; - if (!err) - ch->dma.irq = irq; - else - pr_err("net-xrx200: failed to request irq %d\n", irq); + ltq_dma_alloc_rx(&ch_rx->dma); + for (ch_rx->dma.desc = 0; ch_rx->dma.desc < LTQ_DESC_NUM; + ch_rx->dma.desc++) { + ret = xrx200_alloc_skb(ch_rx); + if (ret) + goto rx_free; } + ch_rx->dma.desc = 0; - return err; + ret = devm_request_irq(priv->dev, ch_rx->dma.irq, xrx200_dma_irq, 0, + "vrx200_rx", &priv->chan_rx); + if (ret) { + dev_err(priv->dev, "failed to request RX irq %d\n", + ch_rx->dma.irq); + goto rx_ring_free; + } + + ch_tx->dma.nr = XRX200_DMA_TX; + ch_tx->priv = priv; + + ltq_dma_alloc_tx(&ch_tx->dma); + ret = devm_request_irq(priv->dev, ch_tx->dma.irq, xrx200_dma_irq, 0, + "vrx200_tx", &priv->chan_tx); + if (ret) { + dev_err(priv->dev, "failed to request TX irq %d\n", + ch_tx->dma.irq); + goto tx_free; + } + + return ret; + +tx_free: + ltq_dma_free(&ch_tx->dma); + +rx_ring_free: + /* free the allocated RX ring */ + for (i = 0; i < LTQ_DESC_NUM; i++) { + if (priv->chan_rx.skb[i]) + dev_kfree_skb_any(priv->chan_rx.skb[i]); + } + +rx_free: + ltq_dma_free(&ch_rx->dma); + return ret; } #ifdef SW_POLLING @@ -1328,11 +1467,12 @@ { struct net_device *netdev = phydev->attached_dev; - if (do_carrier) + if (do_carrier) { if (up) netif_carrier_on(netdev); else if (!xrx200_phy_has_link(netdev)) netif_carrier_off(netdev); + } phydev->adjust_link(netdev); } @@ -1343,7 +1483,7 @@ struct phy_device *phydev = NULL; unsigned val; - phydev = mdiobus_get_phy(priv->hw->mii_bus, port->phy_addr); + phydev = mdiobus_get_phy(priv->mii_bus, port->phy_addr); if (!phydev) { netdev_err(dev, "no PHY found\n"); @@ -1376,10 +1516,10 @@ #ifdef SW_POLLING phy_read_status(phydev); - val = xrx200_mdio_rd(priv->hw->mii_bus, MDIO_DEVAD_NONE, MII_CTRL1000); + val = xrx200_mdio_rd(priv->mii_bus, MDIO_DEVAD_NONE, MII_CTRL1000); val |= ADVERTIZE_MPD; - xrx200_mdio_wr(priv->hw->mii_bus, MDIO_DEVAD_NONE, MII_CTRL1000, val); - xrx200_mdio_wr(priv->hw->mii_bus, 0, 0, 0x1040); + xrx200_mdio_wr(priv->mii_bus, MDIO_DEVAD_NONE, MII_CTRL1000, val); + xrx200_mdio_wr(priv->mii_bus, 0, 0, 0x1040); phy_start_aneg(phydev); #endif @@ -1522,12 +1662,12 @@ ltq_switch_w32_mask(0, BIT(3), PCE_GCTRL_REG(0)); } -static void xrx200_hw_init(struct xrx200_hw *hw) +static void xrx200_hw_init(struct xrx200_priv *priv) { int i; /* enable clock gate */ - clk_enable(hw->clk); + clk_enable(priv->clk); ltq_switch_w32(1, 0); mdelay(100); @@ -1595,49 +1735,45 @@ xrx200sw_write_x(1, XRX200_BM_QUEUE_GCTRL_GL_MOD, 0); for (i = 0; i < XRX200_MAX_VLAN; i++) - hw->vlan_vid[i] = i; + priv->vlan_vid[i] = i; } -static void xrx200_hw_cleanup(struct xrx200_hw *hw) +static void xrx200_hw_cleanup(struct xrx200_priv *priv) { int i; /* disable the switch */ ltq_mdio_w32_mask(MDIO_GLOB_ENABLE, 0, MDIO_GLOB); - /* free the channels and IRQs */ - for (i = 0; i < 2; i++) { - ltq_dma_free(&hw->chan[i].dma); - if (hw->chan[i].dma.irq) - free_irq(hw->chan[i].dma.irq, hw); - } + ltq_dma_free(&priv->chan_tx.dma); + ltq_dma_free(&priv->chan_rx.dma); /* free the allocated RX ring */ for (i = 0; i < LTQ_DESC_NUM; i++) - dev_kfree_skb_any(hw->chan[XRX200_DMA_RX].skb[i]); + dev_kfree_skb_any(priv->chan_rx.skb[i]); /* clear the mdio bus */ - mdiobus_unregister(hw->mii_bus); - mdiobus_free(hw->mii_bus); + mdiobus_unregister(priv->mii_bus); + mdiobus_free(priv->mii_bus); /* release the clock */ - clk_disable(hw->clk); - clk_put(hw->clk); + clk_disable(priv->clk); + clk_put(priv->clk); } -static int xrx200_of_mdio(struct xrx200_hw *hw, struct device_node *np) +static int xrx200_of_mdio(struct xrx200_priv *priv, struct device_node *np) { - hw->mii_bus = mdiobus_alloc(); - if (!hw->mii_bus) + priv->mii_bus = mdiobus_alloc(); + if (!priv->mii_bus) return -ENOMEM; - hw->mii_bus->read = xrx200_mdio_rd; - hw->mii_bus->write = xrx200_mdio_wr; - hw->mii_bus->name = "lantiq,xrx200-mdio"; - snprintf(hw->mii_bus->id, MII_BUS_ID_SIZE, "%x", 0); + priv->mii_bus->read = xrx200_mdio_rd; + priv->mii_bus->write = xrx200_mdio_wr; + priv->mii_bus->name = "lantiq,xrx200-mdio"; + snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%x", 0); - if (of_mdiobus_register(hw->mii_bus, np)) { - mdiobus_free(hw->mii_bus); + if (of_mdiobus_register(priv->mii_bus, np)) { + mdiobus_free(priv->mii_bus); return -ENXIO; } @@ -1655,6 +1791,7 @@ memset(p, 0, sizeof(struct xrx200_port)); p->phy_node = of_parse_phandle(port, "phy-handle", 0); addr = of_get_property(p->phy_node, "reg", NULL); + if (!addr) return; @@ -1665,6 +1802,7 @@ p->flags = XRX200_PORT_TYPE_MAC; else p->flags = XRX200_PORT_TYPE_PHY; + priv->num_port++; p->gpio = of_get_gpio_flags(port, 0, &p->gpio_flags); @@ -1677,12 +1815,12 @@ } /* is this port a wan port ? */ if (priv->wan) - priv->hw->wan_map |= BIT(p->num); + priv->wan_map |= BIT(p->num); - priv->port_map |= BIT(p->num); + priv->d_port_map |= BIT(p->num); /* store the port id in the hw struct so we can map ports -> devices */ - priv->hw->port_map[p->num] = priv->hw->num_devs; + priv->port_map[p->num] = 0; } static const struct net_device_ops xrx200_netdev_ops = { @@ -1696,29 +1834,21 @@ .ndo_tx_timeout = xrx200_tx_timeout, }; -static void xrx200_of_iface(struct xrx200_hw *hw, struct device_node *iface, struct device *dev) +static void xrx200_of_iface(struct xrx200_priv *priv, struct device_node *iface, struct device *dev) { - struct xrx200_priv *priv; struct device_node *port; const __be32 *wan; const u8 *mac; - /* alloc the network device */ - hw->devs[hw->num_devs] = alloc_etherdev(sizeof(struct xrx200_priv)); - if (!hw->devs[hw->num_devs]) - return; - /* setup the network device */ - strcpy(hw->devs[hw->num_devs]->name, "eth%d"); - hw->devs[hw->num_devs]->netdev_ops = &xrx200_netdev_ops; - hw->devs[hw->num_devs]->watchdog_timeo = XRX200_TX_TIMEOUT; - hw->devs[hw->num_devs]->needed_headroom = XRX200_HEADROOM; - SET_NETDEV_DEV(hw->devs[hw->num_devs], dev); + strcpy(priv->net_dev->name, "eth%d"); + priv->net_dev->netdev_ops = &xrx200_netdev_ops; + priv->net_dev->watchdog_timeo = XRX200_TX_TIMEOUT; + priv->net_dev->needed_headroom = XRX200_HEADROOM; + SET_NETDEV_DEV(priv->net_dev, dev); /* setup our private data */ - priv = netdev_priv(hw->devs[hw->num_devs]); - priv->hw = hw; - priv->id = hw->num_devs; + priv->id = 0; mac = of_get_mac_address(iface); if (mac) @@ -1738,20 +1868,34 @@ if (of_device_is_compatible(port, "lantiq,xrx200-pdi-port")) xrx200_of_port(priv, port); - /* register the actual device */ - if (!register_netdev(hw->devs[hw->num_devs])) - hw->num_devs++; } -static struct xrx200_hw xrx200_hw; - static int xrx200_probe(struct platform_device *pdev) { + struct device *dev = &pdev->dev; struct resource *res[4]; struct device_node *mdio_np, *iface_np, *phy_np; struct of_phandle_iterator it; int err; int i; + struct xrx200_priv *priv; + struct net_device *net_dev; + + + /* alloc the network device */ +// TODO add multiqueue? devm_alloc_etherdev_mqs + net_dev = devm_alloc_etherdev(dev, sizeof(struct xrx200_priv)); + if (!net_dev) + return -ENOMEM; + + priv = netdev_priv(net_dev); + priv->net_dev = net_dev; + priv->dev = dev; + + net_dev->netdev_ops = &xrx200_netdev_ops; + SET_NETDEV_DEV(net_dev, dev); + net_dev->min_mtu = ETH_ZLEN; + net_dev->max_mtu = XRX200_DMA_DATA_LEN; /* load the memory ranges */ for (i = 0; i < 4; i++) { @@ -1775,91 +1919,100 @@ phy_np = it.node; if (phy_np) { struct platform_device *phy = of_find_device_by_node(phy_np); - + of_node_put(phy_np); if (!platform_get_drvdata(phy)) return -EPROBE_DEFER; } } + priv->chan_rx.dma.irq = XRX200_DMA_IRQ + XRX200_DMA_RX; + priv->chan_tx.dma.irq = XRX200_DMA_IRQ + XRX200_DMA_TX; + priv->chan_rx.priv = priv; + priv->chan_tx.priv = priv; + /* get the clock */ - xrx200_hw.clk = clk_get(&pdev->dev, NULL); - if (IS_ERR(xrx200_hw.clk)) { + priv->clk = clk_get(&pdev->dev, NULL); + if (IS_ERR(priv->clk)) { dev_err(&pdev->dev, "failed to get clock\n"); - return PTR_ERR(xrx200_hw.clk); + return PTR_ERR(priv->clk); } /* bring up the dma engine and IP core */ - xrx200_dma_init(&xrx200_hw); - xrx200_hw_init(&xrx200_hw); - tasklet_init(&xrx200_hw.chan[XRX200_DMA_TX].tasklet, xrx200_tx_housekeeping, (u32) &xrx200_hw.chan[XRX200_DMA_TX]); - tasklet_init(&xrx200_hw.chan[XRX200_DMA_TX_2].tasklet, xrx200_tx_housekeeping, (u32) &xrx200_hw.chan[XRX200_DMA_TX_2]); + err = xrx200_dma_init(priv); + if (err) + return err; + + /* enable clock gate */ + err = clk_prepare_enable(priv->clk); + if (err) + goto err_uninit_dma; + + xrx200_hw_init(priv); /* bring up the mdio bus */ mdio_np = of_find_compatible_node(pdev->dev.of_node, NULL, "lantiq,xrx200-mdio"); if (mdio_np) - if (xrx200_of_mdio(&xrx200_hw, mdio_np)) + if (xrx200_of_mdio(priv, mdio_np)) dev_err(&pdev->dev, "mdio probe failed\n"); /* load the interfaces */ for_each_child_of_node(pdev->dev.of_node, iface_np) - if (of_device_is_compatible(iface_np, "lantiq,xrx200-pdi")) { - if (xrx200_hw.num_devs < XRX200_MAX_DEV) - xrx200_of_iface(&xrx200_hw, iface_np, &pdev->dev); - else - dev_err(&pdev->dev, - "only %d interfaces allowed\n", - XRX200_MAX_DEV); - } - - if (!xrx200_hw.num_devs) { - xrx200_hw_cleanup(&xrx200_hw); - dev_err(&pdev->dev, "failed to load interfaces\n"); - return -ENOENT; - } + if (of_device_is_compatible(iface_np, "lantiq,xrx200-pdi")) { + xrx200_of_iface(priv, iface_np, &pdev->dev); + break; //hack + } - xrx200sw_init(&xrx200_hw); + xrx200sw_init(priv); /* set wan port mask */ - ltq_pmac_w32(xrx200_hw.wan_map, PMAC_EWAN); - - for (i = 0; i < xrx200_hw.num_devs; i++) { - xrx200_hw.chan[XRX200_DMA_RX].devs[i] = xrx200_hw.devs[i]; - xrx200_hw.chan[XRX200_DMA_TX].devs[i] = xrx200_hw.devs[i]; - xrx200_hw.chan[XRX200_DMA_TX_2].devs[i] = xrx200_hw.devs[i]; - } + ltq_pmac_w32(priv->wan_map, PMAC_EWAN); /* setup NAPI */ - init_dummy_netdev(&xrx200_hw.chan[XRX200_DMA_RX].dummy_dev); - netif_napi_add(&xrx200_hw.chan[XRX200_DMA_RX].dummy_dev, - &xrx200_hw.chan[XRX200_DMA_RX].napi, xrx200_poll_rx, 32); + netif_napi_add(net_dev, &priv->chan_rx.napi, xrx200_poll_rx, 32); //32 + netif_tx_napi_add(net_dev, &priv->chan_tx.napi, xrx200_tx_housekeeping, 32); + + net_dev->features |= NETIF_F_SG ; + net_dev->hw_features |= NETIF_F_SG; + net_dev->vlan_features |= NETIF_F_SG; - platform_set_drvdata(pdev, &xrx200_hw); + platform_set_drvdata(pdev, priv); + + err = register_netdev(net_dev); + if (err) + goto err_unprepare_clk; return 0; + +err_unprepare_clk: + clk_disable_unprepare(priv->clk); + +err_uninit_dma: + xrx200_hw_cleanup(priv); + + return err; } static int xrx200_remove(struct platform_device *pdev) { - struct net_device *dev = platform_get_drvdata(pdev); - struct xrx200_priv *priv; - - if (!dev) - return 0; - priv = netdev_priv(dev); + struct xrx200_priv *priv = platform_get_drvdata(pdev); + struct net_device *net_dev = priv->net_dev; /* free stack related instances */ - netif_stop_queue(dev); - netif_napi_del(&xrx200_hw.chan[XRX200_DMA_RX].napi); - - /* shut down hardware */ - xrx200_hw_cleanup(&xrx200_hw); + netif_stop_queue(net_dev); + netif_napi_del(&priv->chan_tx.napi); + netif_napi_del(&priv->chan_rx.napi); /* remove the actual device */ - unregister_netdev(dev); - free_netdev(dev); + unregister_netdev(net_dev); + + /* release the clock */ + clk_disable_unprepare(priv->clk); + + /* shut down hardware */ + xrx200_hw_cleanup(priv); return 0; }
diff -aurN a/arch/mips/include/asm/mach-lantiq/xway/xway_dma.h b/arch/mips/include/asm/mach-lantiq/xway/xway_dma.h --- a/arch/mips/include/asm/mach-lantiq/xway/xway_dma.h 2019-01-26 09:37:07.000000000 +0100 +++ b/arch/mips/include/asm/mach-lantiq/xway/xway_dma.h 2019-02-08 12:55:32.693458936 +0100 @@ -19,7 +19,7 @@ #define LTQ_DMA_H__ #define LTQ_DESC_SIZE 0x08 /* each descriptor is 64bit */ -#define LTQ_DESC_NUM 0x40 /* 64 descriptors / channel */ +#define LTQ_DESC_NUM 0xc0 /* 192 descriptors / channel */ #define LTQ_DMA_OWN BIT(31) /* owner bit */ #define LTQ_DMA_C BIT(30) /* complete bit */
run.sh
Description: application/shellscript
+ : ':::::::[' configuration vanilla ']:::::::' : + iperf3 -c 10.0.0.80 Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 51814 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 21.2 MBytes 178 Mbits/sec 27 72.1 KBytes [ 4] 1.00-2.00 sec 20.6 MBytes 173 Mbits/sec 29 70.7 KBytes [ 4] 2.00-3.00 sec 20.8 MBytes 174 Mbits/sec 35 60.8 KBytes [ 4] 3.00-4.00 sec 20.8 MBytes 174 Mbits/sec 29 73.5 KBytes [ 4] 4.00-5.00 sec 20.8 MBytes 174 Mbits/sec 32 70.7 KBytes [ 4] 5.00-6.00 sec 20.7 MBytes 174 Mbits/sec 35 69.3 KBytes [ 4] 6.00-7.00 sec 20.8 MBytes 174 Mbits/sec 36 60.8 KBytes [ 4] 7.00-8.00 sec 20.8 MBytes 175 Mbits/sec 29 59.4 KBytes [ 4] 8.00-9.00 sec 20.8 MBytes 175 Mbits/sec 41 46.7 KBytes [ 4] 9.00-10.00 sec 20.8 MBytes 175 Mbits/sec 28 50.9 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 208 MBytes 174 Mbits/sec 321 sender [ 4] 0.00-10.00 sec 208 MBytes 174 Mbits/sec receiver iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 51862 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth [ 4] 0.00-1.00 sec 9.63 MBytes 80.7 Mbits/sec [ 4] 1.00-2.00 sec 9.65 MBytes 81.0 Mbits/sec [ 4] 2.00-3.00 sec 9.52 MBytes 79.9 Mbits/sec [ 4] 3.00-4.00 sec 9.69 MBytes 81.3 Mbits/sec [ 4] 4.00-5.00 sec 9.68 MBytes 81.2 Mbits/sec [ 4] 5.00-6.00 sec 9.66 MBytes 81.0 Mbits/sec [ 4] 6.00-7.00 sec 9.68 MBytes 81.2 Mbits/sec [ 4] 7.00-8.00 sec 9.70 MBytes 81.4 Mbits/sec [ 4] 8.00-9.00 sec 9.69 MBytes 81.3 Mbits/sec [ 4] 9.00-10.00 sec 9.79 MBytes 82.1 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 97.0 MBytes 81.4 Mbits/sec 0 sender [ 4] 0.00-10.00 sec 97.0 MBytes 81.4 Mbits/sec receiver iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 150M Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 51957 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 16.4 MBytes 138 Mbits/sec 2101 [ 4] 1.00-2.00 sec 17.9 MBytes 150 Mbits/sec 2288 [ 4] 2.00-3.00 sec 17.9 MBytes 150 Mbits/sec 2285 [ 4] 3.00-4.00 sec 17.9 MBytes 150 Mbits/sec 2292 [ 4] 4.00-5.00 sec 17.9 MBytes 150 Mbits/sec 2287 [ 4] 5.00-6.00 sec 17.9 MBytes 150 Mbits/sec 2291 [ 4] 6.00-7.00 sec 17.9 MBytes 150 Mbits/sec 2288 [ 4] 7.00-8.00 sec 17.9 MBytes 150 Mbits/sec 2291 [ 4] 8.00-9.00 sec 17.8 MBytes 150 Mbits/sec 2282 [ 4] 9.00-10.00 sec 17.9 MBytes 150 Mbits/sec 2292 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 177 MBytes 149 Mbits/sec 136434.385 ms 1349/1417 (95%) [ 4] Sent 1417 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 150M -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 46317 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-1.00 sec 14.7 MBytes 124 Mbits/sec 0.077 ms 0/1885 (0%) [ 4] 1.00-2.00 sec 15.2 MBytes 127 Mbits/sec 0.072 ms 0/1942 (0%) [ 4] 2.00-3.00 sec 15.0 MBytes 126 Mbits/sec 0.074 ms 0/1924 (0%) [ 4] 3.00-4.00 sec 14.3 MBytes 120 Mbits/sec 0.080 ms 0/1825 (0%) [ 4] 4.00-5.00 sec 14.4 MBytes 120 Mbits/sec 0.079 ms 0/1837 (0%) [ 4] 5.00-6.00 sec 14.8 MBytes 124 Mbits/sec 0.065 ms 0/1888 (0%) [ 4] 6.00-7.00 sec 15.3 MBytes 128 Mbits/sec 0.076 ms 0/1956 (0%) [ 4] 7.00-8.00 sec 15.2 MBytes 128 Mbits/sec 0.095 ms 0/1948 (0%) [ 4] 8.00-9.00 sec 15.1 MBytes 127 Mbits/sec 0.092 ms 0/1932 (0%) [ 4] 9.00-10.00 sec 15.1 MBytes 127 Mbits/sec 0.095 ms 0/1938 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 149 MBytes 125 Mbits/sec 0.085 ms 0/19082 (0%) [ 4] Sent 19082 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 500M Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 48172 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 58.5 MBytes 491 Mbits/sec 7494 [ 4] 1.00-2.00 sec 60.6 MBytes 508 Mbits/sec 7756 [ 4] 2.00-3.00 sec 58.7 MBytes 492 Mbits/sec 7508 [ 4] 3.00-4.00 sec 60.2 MBytes 505 Mbits/sec 7710 [ 4] 4.00-5.00 sec 59.0 MBytes 495 Mbits/sec 7556 [ 4] 5.00-6.00 sec 60.5 MBytes 508 Mbits/sec 7744 [ 4] 6.00-7.00 sec 58.7 MBytes 492 Mbits/sec 7508 [ 4] 7.00-8.00 sec 59.1 MBytes 496 Mbits/sec 7565 [ 4] 8.00-9.00 sec 60.4 MBytes 507 Mbits/sec 7730 [ 4] 9.00-10.00 sec 59.9 MBytes 502 Mbits/sec 7664 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 596 MBytes 500 Mbits/sec 2051749.337 ms 64268/64294 (1e+02%) [ 4] Sent 64294 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 500M -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 35361 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-1.00 sec 14.3 MBytes 120 Mbits/sec 0.097 ms 0/1830 (0%) [ 4] 1.00-2.00 sec 14.3 MBytes 120 Mbits/sec 0.101 ms 0/1830 (0%) [ 4] 2.00-3.00 sec 14.3 MBytes 120 Mbits/sec 0.072 ms 0/1827 (0%) [ 4] 3.00-4.00 sec 14.2 MBytes 119 Mbits/sec 0.081 ms 0/1819 (0%) [ 4] 4.00-5.00 sec 14.3 MBytes 120 Mbits/sec 0.070 ms 0/1834 (0%) [ 4] 5.00-6.00 sec 14.3 MBytes 120 Mbits/sec 0.085 ms 0/1833 (0%) [ 4] 6.00-7.00 sec 14.3 MBytes 120 Mbits/sec 0.082 ms 0/1835 (0%) [ 4] 7.00-8.00 sec 14.3 MBytes 120 Mbits/sec 0.109 ms 0/1836 (0%) [ 4] 8.00-9.00 sec 14.2 MBytes 119 Mbits/sec 0.080 ms 0/1822 (0%) [ 4] 9.00-10.00 sec 14.3 MBytes 120 Mbits/sec 0.090 ms 0/1825 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 143 MBytes 120 Mbits/sec 0.104 ms 0/18298 (0%) [ 4] Sent 18298 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 1000M Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 53231 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 107 MBytes 902 Mbits/sec 13759 [ 4] 1.00-2.00 sec 107 MBytes 896 Mbits/sec 13675 [ 4] 2.00-3.00 sec 107 MBytes 901 Mbits/sec 13753 [ 4] 3.00-4.00 sec 107 MBytes 898 Mbits/sec 13700 [ 4] 4.00-5.00 sec 107 MBytes 902 Mbits/sec 13759 [ 4] 5.00-6.00 sec 108 MBytes 902 Mbits/sec 13762 [ 4] 6.00-7.00 sec 107 MBytes 899 Mbits/sec 13719 [ 4] 7.00-8.00 sec 108 MBytes 902 Mbits/sec 13760 [ 4] 8.00-9.00 sec 107 MBytes 901 Mbits/sec 13753 [ 4] 9.00-10.00 sec 107 MBytes 902 Mbits/sec 13756 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 1.05 GBytes 900 Mbits/sec 5762140.265 ms 210/220 (95%) [ 4] Sent 220 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 1000M -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 34296 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-1.00 sec 14.3 MBytes 120 Mbits/sec 0.084 ms 0/1835 (0%) [ 4] 1.00-2.00 sec 14.3 MBytes 120 Mbits/sec 0.075 ms 0/1835 (0%) [ 4] 2.00-3.00 sec 14.5 MBytes 122 Mbits/sec 0.062 ms 0/1858 (0%) [ 4] 3.00-4.00 sec 15.1 MBytes 127 Mbits/sec 0.060 ms 0/1935 (0%) [ 4] 4.00-5.00 sec 15.3 MBytes 128 Mbits/sec 0.076 ms 0/1958 (0%) [ 4] 5.00-6.00 sec 14.5 MBytes 122 Mbits/sec 0.078 ms 0/1861 (0%) [ 4] 6.00-7.00 sec 14.4 MBytes 120 Mbits/sec 0.100 ms 0/1837 (0%) [ 4] 7.00-8.00 sec 14.3 MBytes 120 Mbits/sec 0.098 ms 0/1835 (0%) [ 4] 8.00-9.00 sec 14.2 MBytes 119 Mbits/sec 0.085 ms 0/1821 (0%) [ 4] 9.00-10.00 sec 14.3 MBytes 120 Mbits/sec 0.110 ms 0/1825 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 145 MBytes 122 Mbits/sec 0.101 ms 0/18606 (0%) [ 4] Sent 18606 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -P3 Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 52130 connected to 10.0.0.80 port 5201 [ 6] local 10.0.0.1 port 52132 connected to 10.0.0.80 port 5201 [ 9] local 10.0.0.1 port 52134 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 7.47 MBytes 62.6 Mbits/sec 73 17.0 KBytes [ 6] 0.00-1.00 sec 7.21 MBytes 60.5 Mbits/sec 78 19.8 KBytes [ 9] 0.00-1.00 sec 7.14 MBytes 59.9 Mbits/sec 76 31.1 KBytes [SUM] 0.00-1.00 sec 21.8 MBytes 183 Mbits/sec 227 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 1.00-2.00 sec 7.95 MBytes 66.7 Mbits/sec 61 12.7 KBytes [ 6] 1.00-2.00 sec 5.84 MBytes 49.0 Mbits/sec 99 35.4 KBytes [ 9] 1.00-2.00 sec 7.08 MBytes 59.4 Mbits/sec 78 32.5 KBytes [SUM] 1.00-2.00 sec 20.9 MBytes 175 Mbits/sec 238 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 2.00-3.00 sec 6.09 MBytes 51.1 Mbits/sec 73 31.1 KBytes [ 6] 2.00-3.00 sec 8.95 MBytes 75.1 Mbits/sec 64 22.6 KBytes [ 9] 2.00-3.00 sec 6.09 MBytes 51.1 Mbits/sec 81 18.4 KBytes [SUM] 2.00-3.00 sec 21.1 MBytes 177 Mbits/sec 218 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 3.00-4.00 sec 6.71 MBytes 56.3 Mbits/sec 80 11.3 KBytes [ 6] 3.00-4.00 sec 8.26 MBytes 69.3 Mbits/sec 76 17.0 KBytes [ 9] 3.00-4.00 sec 6.28 MBytes 52.7 Mbits/sec 77 42.4 KBytes [SUM] 3.00-4.00 sec 21.3 MBytes 178 Mbits/sec 233 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 4.00-5.00 sec 6.59 MBytes 55.3 Mbits/sec 94 12.7 KBytes [ 6] 4.00-5.00 sec 7.58 MBytes 63.6 Mbits/sec 63 28.3 KBytes [ 9] 4.00-5.00 sec 6.84 MBytes 57.3 Mbits/sec 62 11.3 KBytes [SUM] 4.00-5.00 sec 21.0 MBytes 176 Mbits/sec 219 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 5.00-6.00 sec 8.76 MBytes 73.5 Mbits/sec 57 22.6 KBytes [ 6] 5.00-6.00 sec 6.28 MBytes 52.6 Mbits/sec 80 38.2 KBytes [ 9] 5.00-6.00 sec 6.28 MBytes 52.6 Mbits/sec 90 7.07 KBytes [SUM] 5.00-6.00 sec 21.3 MBytes 179 Mbits/sec 227 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 6.00-7.00 sec 7.33 MBytes 61.5 Mbits/sec 72 18.4 KBytes [ 6] 6.00-7.00 sec 7.02 MBytes 58.9 Mbits/sec 66 35.4 KBytes [ 9] 6.00-7.00 sec 6.77 MBytes 56.8 Mbits/sec 67 17.0 KBytes [SUM] 6.00-7.00 sec 21.1 MBytes 177 Mbits/sec 205 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 7.00-8.00 sec 8.45 MBytes 70.9 Mbits/sec 72 25.5 KBytes [ 6] 7.00-8.00 sec 6.71 MBytes 56.3 Mbits/sec 82 35.4 KBytes [ 9] 7.00-8.00 sec 5.90 MBytes 49.5 Mbits/sec 74 17.0 KBytes [SUM] 7.00-8.00 sec 21.1 MBytes 177 Mbits/sec 228 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 8.00-9.00 sec 6.46 MBytes 54.2 Mbits/sec 77 36.8 KBytes [ 6] 8.00-9.00 sec 6.90 MBytes 57.9 Mbits/sec 78 11.3 KBytes [ 9] 8.00-9.00 sec 7.89 MBytes 66.2 Mbits/sec 68 11.3 KBytes [SUM] 8.00-9.00 sec 21.3 MBytes 178 Mbits/sec 223 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 9.00-10.00 sec 6.59 MBytes 55.3 Mbits/sec 79 38.2 KBytes [ 6] 9.00-10.00 sec 8.76 MBytes 73.5 Mbits/sec 58 24.0 KBytes [ 9] 9.00-10.00 sec 5.72 MBytes 48.0 Mbits/sec 77 7.07 KBytes [SUM] 9.00-10.00 sec 21.1 MBytes 177 Mbits/sec 214 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 72.4 MBytes 60.7 Mbits/sec 738 sender [ 4] 0.00-10.00 sec 72.0 MBytes 60.4 Mbits/sec receiver [ 6] 0.00-10.00 sec 73.5 MBytes 61.7 Mbits/sec 744 sender [ 6] 0.00-10.00 sec 73.2 MBytes 61.4 Mbits/sec receiver [ 9] 0.00-10.00 sec 66.0 MBytes 55.4 Mbits/sec 750 sender [ 9] 0.00-10.00 sec 65.6 MBytes 55.1 Mbits/sec receiver [SUM] 0.00-10.00 sec 212 MBytes 178 Mbits/sec 2232 sender [SUM] 0.00-10.00 sec 211 MBytes 177 Mbits/sec receiver iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -P3 -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 52178 connected to 10.0.0.80 port 5201 [ 6] local 10.0.0.1 port 52180 connected to 10.0.0.80 port 5201 [ 9] local 10.0.0.1 port 52182 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth [ 4] 0.00-1.00 sec 4.03 MBytes 33.8 Mbits/sec [ 6] 0.00-1.00 sec 2.81 MBytes 23.6 Mbits/sec [ 9] 0.00-1.00 sec 2.79 MBytes 23.4 Mbits/sec [SUM] 0.00-1.00 sec 9.63 MBytes 80.8 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 1.00-2.00 sec 3.25 MBytes 27.3 Mbits/sec [ 6] 1.00-2.00 sec 3.25 MBytes 27.3 Mbits/sec [ 9] 1.00-2.00 sec 3.22 MBytes 27.0 Mbits/sec [SUM] 1.00-2.00 sec 9.72 MBytes 81.5 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 2.00-3.00 sec 3.25 MBytes 27.3 Mbits/sec [ 6] 2.00-3.00 sec 3.25 MBytes 27.3 Mbits/sec [ 9] 2.00-3.00 sec 3.30 MBytes 27.6 Mbits/sec [SUM] 2.00-3.00 sec 9.80 MBytes 82.2 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 3.00-4.00 sec 3.25 MBytes 27.3 Mbits/sec [ 6] 3.00-4.00 sec 3.12 MBytes 26.2 Mbits/sec [ 9] 3.00-4.00 sec 3.19 MBytes 26.8 Mbits/sec [SUM] 3.00-4.00 sec 9.57 MBytes 80.2 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 4.00-5.00 sec 2.22 MBytes 18.6 Mbits/sec [ 6] 4.00-5.00 sec 2.38 MBytes 19.9 Mbits/sec [ 9] 4.00-5.00 sec 2.28 MBytes 19.2 Mbits/sec [SUM] 4.00-5.00 sec 6.88 MBytes 57.7 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 5.00-6.00 sec 3.30 MBytes 27.7 Mbits/sec [ 6] 5.00-6.00 sec 3.37 MBytes 28.3 Mbits/sec [ 9] 5.00-6.00 sec 3.18 MBytes 26.7 Mbits/sec [SUM] 5.00-6.00 sec 9.85 MBytes 82.6 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 6.00-7.00 sec 2.99 MBytes 25.1 Mbits/sec [ 6] 6.00-7.00 sec 2.88 MBytes 24.1 Mbits/sec [ 9] 6.00-7.00 sec 3.00 MBytes 25.2 Mbits/sec [SUM] 6.00-7.00 sec 8.87 MBytes 74.4 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 7.00-8.00 sec 3.14 MBytes 26.3 Mbits/sec [ 6] 7.00-8.00 sec 3.25 MBytes 27.3 Mbits/sec [ 9] 7.00-8.00 sec 3.25 MBytes 27.3 Mbits/sec [SUM] 7.00-8.00 sec 9.64 MBytes 80.9 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 8.00-9.00 sec 3.25 MBytes 27.2 Mbits/sec [ 6] 8.00-9.00 sec 3.25 MBytes 27.3 Mbits/sec [ 9] 8.00-9.00 sec 3.16 MBytes 26.5 Mbits/sec [SUM] 8.00-9.00 sec 9.65 MBytes 81.0 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 9.00-10.00 sec 3.25 MBytes 27.3 Mbits/sec [ 6] 9.00-10.00 sec 3.21 MBytes 26.9 Mbits/sec [ 9] 9.00-10.00 sec 3.22 MBytes 27.0 Mbits/sec [SUM] 9.00-10.00 sec 9.68 MBytes 81.2 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 32.2 MBytes 27.0 Mbits/sec 0 sender [ 4] 0.00-10.00 sec 32.2 MBytes 27.0 Mbits/sec receiver [ 6] 0.00-10.00 sec 31.1 MBytes 26.1 Mbits/sec 0 sender [ 6] 0.00-10.00 sec 31.1 MBytes 26.1 Mbits/sec receiver [ 9] 0.00-10.00 sec 30.9 MBytes 25.9 Mbits/sec 0 sender [ 9] 0.00-10.00 sec 30.9 MBytes 25.9 Mbits/sec receiver [SUM] 0.00-10.00 sec 94.2 MBytes 79.0 Mbits/sec 0 sender [SUM] 0.00-10.00 sec 94.2 MBytes 79.0 Mbits/sec receiver iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -P3 -u -b 800M Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 36791 connected to 10.0.0.80 port 5201 [ 6] local 10.0.0.1 port 51969 connected to 10.0.0.80 port 5201 [ 9] local 10.0.0.1 port 39473 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 38.1 MBytes 319 Mbits/sec 4871 [ 6] 0.00-1.00 sec 38.1 MBytes 319 Mbits/sec 4871 [ 9] 0.00-1.00 sec 38.1 MBytes 319 Mbits/sec 4871 [SUM] 0.00-1.00 sec 114 MBytes 958 Mbits/sec 14613 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 1.00-2.00 sec 38.1 MBytes 319 Mbits/sec 4873 [ 6] 1.00-2.00 sec 38.1 MBytes 319 Mbits/sec 4873 [ 9] 1.00-2.00 sec 38.1 MBytes 319 Mbits/sec 4873 [SUM] 1.00-2.00 sec 114 MBytes 958 Mbits/sec 14619 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 2.00-3.00 sec 38.1 MBytes 319 Mbits/sec 4875 [ 6] 2.00-3.00 sec 38.1 MBytes 319 Mbits/sec 4875 [ 9] 2.00-3.00 sec 38.1 MBytes 319 Mbits/sec 4875 [SUM] 2.00-3.00 sec 114 MBytes 958 Mbits/sec 14625 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 3.00-4.00 sec 38.1 MBytes 319 Mbits/sec 4874 [ 6] 3.00-4.00 sec 38.1 MBytes 319 Mbits/sec 4874 [ 9] 3.00-4.00 sec 38.1 MBytes 319 Mbits/sec 4874 [SUM] 3.00-4.00 sec 114 MBytes 958 Mbits/sec 14622 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 4.00-5.00 sec 38.0 MBytes 319 Mbits/sec 4864 [ 6] 4.00-5.00 sec 38.0 MBytes 319 Mbits/sec 4864 [ 9] 4.00-5.00 sec 38.0 MBytes 319 Mbits/sec 4864 [SUM] 4.00-5.00 sec 114 MBytes 956 Mbits/sec 14592 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 5.00-6.00 sec 38.1 MBytes 319 Mbits/sec 4875 [ 6] 5.00-6.00 sec 38.1 MBytes 319 Mbits/sec 4875 [ 9] 5.00-6.00 sec 38.1 MBytes 319 Mbits/sec 4875 [SUM] 5.00-6.00 sec 114 MBytes 958 Mbits/sec 14625 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 6.00-7.00 sec 38.1 MBytes 319 Mbits/sec 4873 [ 6] 6.00-7.00 sec 38.1 MBytes 319 Mbits/sec 4873 [ 9] 6.00-7.00 sec 38.1 MBytes 319 Mbits/sec 4873 [SUM] 6.00-7.00 sec 114 MBytes 958 Mbits/sec 14619 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 7.00-8.00 sec 38.1 MBytes 319 Mbits/sec 4876 [ 6] 7.00-8.00 sec 38.1 MBytes 319 Mbits/sec 4876 [ 9] 7.00-8.00 sec 38.1 MBytes 319 Mbits/sec 4876 [SUM] 7.00-8.00 sec 114 MBytes 958 Mbits/sec 14628 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 8.00-9.00 sec 38.1 MBytes 319 Mbits/sec 4874 [ 6] 8.00-9.00 sec 38.1 MBytes 319 Mbits/sec 4874 [ 9] 8.00-9.00 sec 38.1 MBytes 319 Mbits/sec 4874 [SUM] 8.00-9.00 sec 114 MBytes 958 Mbits/sec 14622 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 9.00-10.00 sec 37.9 MBytes 318 Mbits/sec 4856 [ 6] 9.00-10.00 sec 37.9 MBytes 318 Mbits/sec 4856 [ 9] 9.00-10.00 sec 37.9 MBytes 318 Mbits/sec 4856 [SUM] 9.00-10.00 sec 114 MBytes 955 Mbits/sec 14568 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 381 MBytes 319 Mbits/sec 9052841.391 ms 0/3 (0%) [ 4] Sent 3 datagrams [ 6] 0.00-10.00 sec 381 MBytes 319 Mbits/sec 9052841.281 ms 0/3 (0%) [ 6] Sent 3 datagrams [ 9] 0.00-10.00 sec 381 MBytes 319 Mbits/sec 9052841.181 ms 0/3 (0%) [ 9] Sent 3 datagrams [SUM] 0.00-10.00 sec 1.11 GBytes 958 Mbits/sec 9052841.285 ms 0/9 (0%) iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -P3 -R -u -b 800M Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 43263 connected to 10.0.0.80 port 5201 [ 6] local 10.0.0.1 port 49331 connected to 10.0.0.80 port 5201 [ 9] local 10.0.0.1 port 60542 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-1.00 sec 4.92 MBytes 41.3 Mbits/sec 0.156 ms 0/630 (0%) [ 6] 0.00-1.00 sec 4.92 MBytes 41.3 Mbits/sec 0.170 ms 0/630 (0%) [ 9] 0.00-1.00 sec 4.91 MBytes 41.2 Mbits/sec 0.237 ms 0/629 (0%) [SUM] 0.00-1.00 sec 14.8 MBytes 124 Mbits/sec 0.188 ms 0/1889 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 1.00-2.00 sec 4.92 MBytes 41.3 Mbits/sec 0.173 ms 0/630 (0%) [ 6] 1.00-2.00 sec 4.91 MBytes 41.2 Mbits/sec 0.191 ms 0/629 (0%) [ 9] 1.00-2.00 sec 4.91 MBytes 41.2 Mbits/sec 0.192 ms 0/629 (0%) [SUM] 1.00-2.00 sec 14.8 MBytes 124 Mbits/sec 0.185 ms 0/1888 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 2.00-3.00 sec 4.96 MBytes 41.6 Mbits/sec 0.246 ms 0/635 (0%) [ 6] 2.00-3.00 sec 4.97 MBytes 41.7 Mbits/sec 0.167 ms 0/636 (0%) [ 9] 2.00-3.00 sec 4.95 MBytes 41.5 Mbits/sec 0.232 ms 0/634 (0%) [SUM] 2.00-3.00 sec 14.9 MBytes 125 Mbits/sec 0.215 ms 0/1905 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 3.00-4.00 sec 4.97 MBytes 41.7 Mbits/sec 0.189 ms 0/636 (0%) [ 6] 3.00-4.00 sec 4.96 MBytes 41.6 Mbits/sec 0.121 ms 0/635 (0%) [ 9] 3.00-4.00 sec 4.97 MBytes 41.7 Mbits/sec 0.195 ms 0/636 (0%) [SUM] 3.00-4.00 sec 14.9 MBytes 125 Mbits/sec 0.168 ms 0/1907 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 4.00-5.00 sec 4.97 MBytes 41.7 Mbits/sec 0.180 ms 0/636 (0%) [ 6] 4.00-5.00 sec 4.97 MBytes 41.7 Mbits/sec 0.185 ms 0/636 (0%) [ 9] 4.00-5.00 sec 4.96 MBytes 41.6 Mbits/sec 0.132 ms 0/635 (0%) [SUM] 4.00-5.00 sec 14.9 MBytes 125 Mbits/sec 0.166 ms 0/1907 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 5.00-6.00 sec 4.97 MBytes 41.7 Mbits/sec 0.178 ms 0/636 (0%) [ 6] 5.00-6.00 sec 4.97 MBytes 41.7 Mbits/sec 0.209 ms 0/636 (0%) [ 9] 5.00-6.00 sec 4.97 MBytes 41.7 Mbits/sec 0.167 ms 0/636 (0%) [SUM] 5.00-6.00 sec 14.9 MBytes 125 Mbits/sec 0.185 ms 0/1908 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 6.00-7.00 sec 4.91 MBytes 41.2 Mbits/sec 0.141 ms 0/628 (0%) [ 6] 6.00-7.00 sec 4.91 MBytes 41.2 Mbits/sec 0.211 ms 0/628 (0%) [ 9] 6.00-7.00 sec 4.91 MBytes 41.2 Mbits/sec 0.152 ms 0/629 (0%) [SUM] 6.00-7.00 sec 14.7 MBytes 124 Mbits/sec 0.168 ms 0/1885 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 7.00-8.00 sec 4.92 MBytes 41.3 Mbits/sec 0.290 ms 0/630 (0%) [ 6] 7.00-8.00 sec 4.91 MBytes 41.2 Mbits/sec 0.167 ms 0/629 (0%) [ 9] 7.00-8.00 sec 4.91 MBytes 41.2 Mbits/sec 0.367 ms 0/629 (0%) [SUM] 7.00-8.00 sec 14.8 MBytes 124 Mbits/sec 0.275 ms 0/1888 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 8.00-9.00 sec 4.93 MBytes 41.4 Mbits/sec 0.147 ms 0/631 (0%) [ 6] 8.00-9.00 sec 4.91 MBytes 41.2 Mbits/sec 0.170 ms 0/628 (0%) [ 9] 8.00-9.00 sec 4.91 MBytes 41.2 Mbits/sec 0.137 ms 0/628 (0%) [SUM] 8.00-9.00 sec 14.7 MBytes 124 Mbits/sec 0.151 ms 0/1887 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 9.00-10.00 sec 4.97 MBytes 41.7 Mbits/sec 0.215 ms 0/636 (0%) [ 6] 9.00-10.00 sec 4.98 MBytes 41.7 Mbits/sec 0.150 ms 0/637 (0%) [ 9] 9.00-10.00 sec 4.96 MBytes 41.6 Mbits/sec 0.272 ms 0/635 (0%) [SUM] 9.00-10.00 sec 14.9 MBytes 125 Mbits/sec 0.212 ms 0/1908 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 49.5 MBytes 41.5 Mbits/sec 0.227 ms 0/6335 (0%) [ 4] Sent 6335 datagrams [ 6] 0.00-10.00 sec 49.5 MBytes 41.5 Mbits/sec 0.183 ms 0/6331 (0%) [ 6] Sent 6331 datagrams [ 9] 0.00-10.00 sec 49.4 MBytes 41.5 Mbits/sec 0.261 ms 0/6327 (0%) [ 9] Sent 6327 datagrams [SUM] 0.00-10.00 sec 148 MBytes 124 Mbits/sec 0.224 ms 0/18993 (0%) iperf Done.
+ : ':::::::[' configuration z4_hyst ']:::::::' : + iperf3 -c 10.0.0.80 Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 46904 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 36.2 MBytes 304 Mbits/sec 4 165 KBytes [ 4] 1.00-2.00 sec 36.8 MBytes 309 Mbits/sec 5 214 KBytes [ 4] 2.00-3.00 sec 37.2 MBytes 312 Mbits/sec 1 214 KBytes [ 4] 3.00-4.00 sec 36.7 MBytes 308 Mbits/sec 6 177 KBytes [ 4] 4.00-5.00 sec 36.3 MBytes 304 Mbits/sec 3 189 KBytes [ 4] 5.00-6.00 sec 37.2 MBytes 312 Mbits/sec 5 148 KBytes [ 4] 6.00-7.00 sec 35.7 MBytes 300 Mbits/sec 5 110 KBytes [ 4] 7.00-8.00 sec 36.6 MBytes 307 Mbits/sec 1 214 KBytes [ 4] 8.00-9.00 sec 35.5 MBytes 298 Mbits/sec 5 158 KBytes [ 4] 9.00-10.00 sec 35.9 MBytes 301 Mbits/sec 2 182 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 364 MBytes 305 Mbits/sec 37 sender [ 4] 0.00-10.00 sec 363 MBytes 304 Mbits/sec receiver iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 46908 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth [ 4] 0.00-1.00 sec 28.5 MBytes 239 Mbits/sec [ 4] 1.00-2.00 sec 28.8 MBytes 241 Mbits/sec [ 4] 2.00-3.00 sec 28.7 MBytes 241 Mbits/sec [ 4] 3.00-4.00 sec 28.6 MBytes 240 Mbits/sec [ 4] 4.00-5.00 sec 28.7 MBytes 241 Mbits/sec [ 4] 5.00-6.00 sec 28.7 MBytes 241 Mbits/sec [ 4] 6.00-7.00 sec 28.7 MBytes 241 Mbits/sec [ 4] 7.00-8.00 sec 28.7 MBytes 241 Mbits/sec [ 4] 8.00-9.00 sec 28.8 MBytes 241 Mbits/sec [ 4] 9.00-10.00 sec 26.7 MBytes 224 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 286 MBytes 240 Mbits/sec 0 sender [ 4] 0.00-10.00 sec 286 MBytes 240 Mbits/sec receiver iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 150M Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 52694 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 16.4 MBytes 138 Mbits/sec 2101 [ 4] 1.00-2.00 sec 17.9 MBytes 150 Mbits/sec 2288 [ 4] 2.00-3.00 sec 17.9 MBytes 150 Mbits/sec 2288 [ 4] 3.00-4.00 sec 17.9 MBytes 150 Mbits/sec 2290 [ 4] 4.00-5.00 sec 17.9 MBytes 150 Mbits/sec 2287 [ 4] 5.00-6.00 sec 17.9 MBytes 150 Mbits/sec 2291 [ 4] 6.00-7.00 sec 17.9 MBytes 150 Mbits/sec 2288 [ 4] 7.00-8.00 sec 17.9 MBytes 150 Mbits/sec 2288 [ 4] 8.00-9.00 sec 17.9 MBytes 150 Mbits/sec 2290 [ 4] 9.00-10.00 sec 17.8 MBytes 150 Mbits/sec 2283 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 177 MBytes 149 Mbits/sec 3.830 ms 834/1087 (77%) [ 4] Sent 1087 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 150M -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 54126 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-1.00 sec 17.9 MBytes 150 Mbits/sec 0.026 ms 0/2287 (0%) [ 4] 1.00-2.00 sec 17.9 MBytes 150 Mbits/sec 0.038 ms 0/2290 (0%) [ 4] 2.00-3.00 sec 17.9 MBytes 150 Mbits/sec 0.026 ms 0/2288 (0%) [ 4] 3.00-4.00 sec 17.9 MBytes 150 Mbits/sec 0.022 ms 0/2289 (0%) [ 4] 4.00-5.00 sec 17.9 MBytes 150 Mbits/sec 0.030 ms 0/2290 (0%) [ 4] 5.00-6.00 sec 17.9 MBytes 150 Mbits/sec 0.023 ms 0/2288 (0%) [ 4] 6.00-7.00 sec 17.9 MBytes 150 Mbits/sec 0.034 ms 0/2288 (0%) [ 4] 7.00-8.00 sec 17.9 MBytes 150 Mbits/sec 0.037 ms 0/2289 (0%) [ 4] 8.00-9.00 sec 17.9 MBytes 150 Mbits/sec 0.033 ms 0/2289 (0%) [ 4] 9.00-10.00 sec 17.9 MBytes 150 Mbits/sec 0.023 ms 0/2289 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 179 MBytes 150 Mbits/sec 0.023 ms 0/22887 (0%) [ 4] Sent 22887 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 500M Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 43630 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 59.4 MBytes 498 Mbits/sec 7601 [ 4] 1.00-2.00 sec 58.0 MBytes 487 Mbits/sec 7427 [ 4] 2.00-3.00 sec 60.2 MBytes 505 Mbits/sec 7703 [ 4] 3.00-4.00 sec 60.2 MBytes 505 Mbits/sec 7709 [ 4] 4.00-5.00 sec 58.7 MBytes 492 Mbits/sec 7508 [ 4] 5.00-6.00 sec 59.6 MBytes 500 Mbits/sec 7628 [ 4] 6.00-7.00 sec 60.9 MBytes 511 Mbits/sec 7800 [ 4] 7.00-8.00 sec 59.5 MBytes 499 Mbits/sec 7617 [ 4] 8.00-9.00 sec 58.9 MBytes 494 Mbits/sec 7542 [ 4] 9.00-10.00 sec 60.2 MBytes 505 Mbits/sec 7704 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 596 MBytes 500 Mbits/sec 2.550 ms 64551/64810 (1e+02%) [ 4] Sent 64810 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 500M -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 57357 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-1.00 sec 22.4 MBytes 188 Mbits/sec 0.028 ms 0/2864 (0%) [ 4] 1.00-2.00 sec 22.5 MBytes 188 Mbits/sec 0.028 ms 0/2876 (0%) [ 4] 2.00-3.00 sec 22.5 MBytes 188 Mbits/sec 0.030 ms 0/2875 (0%) [ 4] 3.00-4.00 sec 22.5 MBytes 188 Mbits/sec 0.019 ms 0/2875 (0%) [ 4] 4.00-5.00 sec 22.4 MBytes 188 Mbits/sec 0.033 ms 0/2870 (0%) [ 4] 5.00-6.00 sec 22.6 MBytes 190 Mbits/sec 0.034 ms 0/2892 (0%) [ 4] 6.00-7.00 sec 22.6 MBytes 190 Mbits/sec 0.021 ms 0/2899 (0%) [ 4] 7.00-8.00 sec 22.5 MBytes 189 Mbits/sec 0.035 ms 0/2880 (0%) [ 4] 8.00-9.00 sec 22.5 MBytes 189 Mbits/sec 0.024 ms 0/2884 (0%) [ 4] 9.00-10.00 sec 22.6 MBytes 190 Mbits/sec 0.028 ms 0/2893 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 225 MBytes 189 Mbits/sec 0.027 ms 0/28809 (0%) [ 4] Sent 28809 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 1000M Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 45243 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 103 MBytes 867 Mbits/sec 13228 [ 4] 1.00-2.00 sec 104 MBytes 874 Mbits/sec 13341 [ 4] 2.00-3.00 sec 104 MBytes 874 Mbits/sec 13338 [ 4] 3.00-4.00 sec 104 MBytes 869 Mbits/sec 13263 [ 4] 4.00-5.00 sec 104 MBytes 873 Mbits/sec 13317 [ 4] 5.00-6.00 sec 104 MBytes 872 Mbits/sec 13313 [ 4] 6.00-7.00 sec 104 MBytes 870 Mbits/sec 13278 [ 4] 7.00-8.00 sec 104 MBytes 873 Mbits/sec 13325 [ 4] 8.00-9.00 sec 104 MBytes 873 Mbits/sec 13326 [ 4] 9.00-10.00 sec 104 MBytes 873 Mbits/sec 13318 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 1.02 GBytes 872 Mbits/sec 1.286 ms 131761/132035 (1e+02%) [ 4] Sent 132035 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -u -b 1000M -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 37281 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-1.00 sec 22.5 MBytes 189 Mbits/sec 0.035 ms 0/2885 (0%) [ 4] 1.00-2.00 sec 22.6 MBytes 190 Mbits/sec 0.019 ms 0/2894 (0%) [ 4] 2.00-3.00 sec 22.6 MBytes 190 Mbits/sec 0.017 ms 0/2893 (0%) [ 4] 3.00-4.00 sec 22.6 MBytes 189 Mbits/sec 0.023 ms 0/2888 (0%) [ 4] 4.00-5.00 sec 22.5 MBytes 189 Mbits/sec 0.016 ms 0/2877 (0%) [ 4] 5.00-6.00 sec 22.6 MBytes 189 Mbits/sec 0.017 ms 0/2888 (0%) [ 4] 6.00-7.00 sec 22.5 MBytes 189 Mbits/sec 0.018 ms 0/2881 (0%) [ 4] 7.00-8.00 sec 22.6 MBytes 190 Mbits/sec 0.019 ms 0/2892 (0%) [ 4] 8.00-9.00 sec 22.6 MBytes 190 Mbits/sec 0.017 ms 0/2895 (0%) [ 4] 9.00-10.00 sec 22.5 MBytes 189 Mbits/sec 0.016 ms 0/2884 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 226 MBytes 189 Mbits/sec 0.016 ms 0/28877 (0%) [ 4] Sent 28877 datagrams iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -P3 Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 46928 connected to 10.0.0.80 port 5201 [ 6] local 10.0.0.1 port 46930 connected to 10.0.0.80 port 5201 [ 9] local 10.0.0.1 port 46932 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 12.8 MBytes 107 Mbits/sec 35 53.7 KBytes [ 6] 0.00-1.00 sec 10.6 MBytes 88.5 Mbits/sec 17 87.7 KBytes [ 9] 0.00-1.00 sec 12.7 MBytes 107 Mbits/sec 10 110 KBytes [SUM] 0.00-1.00 sec 36.1 MBytes 303 Mbits/sec 62 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 1.00-2.00 sec 10.7 MBytes 89.7 Mbits/sec 17 87.7 KBytes [ 6] 1.00-2.00 sec 7.83 MBytes 65.7 Mbits/sec 21 25.5 KBytes [ 9] 1.00-2.00 sec 15.8 MBytes 133 Mbits/sec 23 148 KBytes [SUM] 1.00-2.00 sec 34.4 MBytes 288 Mbits/sec 61 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 2.00-3.00 sec 15.2 MBytes 127 Mbits/sec 23 96.2 KBytes [ 6] 2.00-3.00 sec 5.78 MBytes 48.5 Mbits/sec 32 39.6 KBytes [ 9] 2.00-3.00 sec 17.0 MBytes 143 Mbits/sec 18 55.1 KBytes [SUM] 2.00-3.00 sec 38.0 MBytes 319 Mbits/sec 73 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 3.00-4.00 sec 9.94 MBytes 83.4 Mbits/sec 46 89.1 KBytes [ 6] 3.00-4.00 sec 10.3 MBytes 86.0 Mbits/sec 21 90.5 KBytes [ 9] 3.00-4.00 sec 15.3 MBytes 128 Mbits/sec 12 94.7 KBytes [SUM] 3.00-4.00 sec 35.5 MBytes 298 Mbits/sec 79 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 4.00-5.00 sec 15.0 MBytes 126 Mbits/sec 20 100 KBytes [ 6] 4.00-5.00 sec 6.03 MBytes 50.5 Mbits/sec 33 73.5 KBytes [ 9] 4.00-5.00 sec 13.8 MBytes 116 Mbits/sec 14 67.9 KBytes [SUM] 4.00-5.00 sec 34.8 MBytes 292 Mbits/sec 67 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 5.00-6.00 sec 15.7 MBytes 132 Mbits/sec 10 91.9 KBytes [ 6] 5.00-6.00 sec 12.3 MBytes 103 Mbits/sec 28 72.1 KBytes [ 9] 5.00-6.00 sec 8.14 MBytes 68.3 Mbits/sec 38 76.4 KBytes [SUM] 5.00-6.00 sec 36.2 MBytes 303 Mbits/sec 76 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 6.00-7.00 sec 12.6 MBytes 105 Mbits/sec 32 113 KBytes [ 6] 6.00-7.00 sec 12.2 MBytes 103 Mbits/sec 11 90.5 KBytes [ 9] 6.00-7.00 sec 11.1 MBytes 93.3 Mbits/sec 34 126 KBytes [SUM] 6.00-7.00 sec 35.9 MBytes 301 Mbits/sec 77 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 7.00-8.00 sec 5.97 MBytes 50.0 Mbits/sec 22 63.6 KBytes [ 6] 7.00-8.00 sec 12.9 MBytes 108 Mbits/sec 38 63.6 KBytes [ 9] 7.00-8.00 sec 15.5 MBytes 130 Mbits/sec 39 83.4 KBytes [SUM] 7.00-8.00 sec 34.4 MBytes 289 Mbits/sec 99 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 8.00-9.00 sec 10.1 MBytes 84.5 Mbits/sec 37 32.5 KBytes [ 6] 8.00-9.00 sec 12.8 MBytes 107 Mbits/sec 11 153 KBytes [ 9] 8.00-9.00 sec 12.4 MBytes 104 Mbits/sec 41 46.7 KBytes [SUM] 8.00-9.00 sec 35.2 MBytes 296 Mbits/sec 89 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 9.00-10.00 sec 8.58 MBytes 71.9 Mbits/sec 19 31.1 KBytes [ 6] 9.00-10.00 sec 14.0 MBytes 117 Mbits/sec 11 73.5 KBytes [ 9] 9.00-10.00 sec 12.8 MBytes 107 Mbits/sec 20 116 KBytes [SUM] 9.00-10.00 sec 35.4 MBytes 297 Mbits/sec 50 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 116 MBytes 97.7 Mbits/sec 261 sender [ 4] 0.00-10.00 sec 115 MBytes 96.9 Mbits/sec receiver [ 6] 0.00-10.00 sec 105 MBytes 87.8 Mbits/sec 223 sender [ 6] 0.00-10.00 sec 104 MBytes 87.0 Mbits/sec receiver [ 9] 0.00-10.00 sec 135 MBytes 113 Mbits/sec 249 sender [ 9] 0.00-10.00 sec 134 MBytes 112 Mbits/sec receiver [SUM] 0.00-10.00 sec 356 MBytes 298 Mbits/sec 733 sender [SUM] 0.00-10.00 sec 353 MBytes 296 Mbits/sec receiver iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -P3 -R Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 46936 connected to 10.0.0.80 port 5201 [ 6] local 10.0.0.1 port 46938 connected to 10.0.0.80 port 5201 [ 9] local 10.0.0.1 port 46940 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth [ 4] 0.00-1.00 sec 9.88 MBytes 82.8 Mbits/sec [ 6] 0.00-1.00 sec 9.88 MBytes 82.8 Mbits/sec [ 9] 0.00-1.00 sec 8.50 MBytes 71.3 Mbits/sec [SUM] 0.00-1.00 sec 28.2 MBytes 237 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 1.00-2.00 sec 9.62 MBytes 80.7 Mbits/sec [ 6] 1.00-2.00 sec 9.62 MBytes 80.7 Mbits/sec [ 9] 1.00-2.00 sec 9.62 MBytes 80.7 Mbits/sec [SUM] 1.00-2.00 sec 28.9 MBytes 242 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 2.00-3.00 sec 9.62 MBytes 80.7 Mbits/sec [ 6] 2.00-3.00 sec 9.56 MBytes 80.2 Mbits/sec [ 9] 2.00-3.00 sec 9.62 MBytes 80.7 Mbits/sec [SUM] 2.00-3.00 sec 28.8 MBytes 242 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 3.00-4.00 sec 9.57 MBytes 80.2 Mbits/sec [ 6] 3.00-4.00 sec 9.63 MBytes 80.8 Mbits/sec [ 9] 3.00-4.00 sec 9.63 MBytes 80.8 Mbits/sec [SUM] 3.00-4.00 sec 28.8 MBytes 242 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 4.00-5.00 sec 9.62 MBytes 80.7 Mbits/sec [ 6] 4.00-5.00 sec 9.62 MBytes 80.7 Mbits/sec [ 9] 4.00-5.00 sec 9.62 MBytes 80.7 Mbits/sec [SUM] 4.00-5.00 sec 28.9 MBytes 242 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 5.00-6.00 sec 9.75 MBytes 81.8 Mbits/sec [ 6] 5.00-6.00 sec 9.62 MBytes 80.7 Mbits/sec [ 9] 5.00-6.00 sec 9.69 MBytes 81.3 Mbits/sec [SUM] 5.00-6.00 sec 29.1 MBytes 244 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 6.00-7.00 sec 9.62 MBytes 80.7 Mbits/sec [ 6] 6.00-7.00 sec 9.62 MBytes 80.7 Mbits/sec [ 9] 6.00-7.00 sec 9.62 MBytes 80.7 Mbits/sec [SUM] 6.00-7.00 sec 28.9 MBytes 242 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 7.00-8.00 sec 9.63 MBytes 80.7 Mbits/sec [ 6] 7.00-8.00 sec 9.62 MBytes 80.7 Mbits/sec [ 9] 7.00-8.00 sec 9.62 MBytes 80.7 Mbits/sec [SUM] 7.00-8.00 sec 28.9 MBytes 242 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 8.00-9.00 sec 9.62 MBytes 80.7 Mbits/sec [ 6] 8.00-9.00 sec 9.69 MBytes 81.3 Mbits/sec [ 9] 8.00-9.00 sec 9.62 MBytes 80.7 Mbits/sec [SUM] 8.00-9.00 sec 28.9 MBytes 243 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 9.00-10.00 sec 9.62 MBytes 80.7 Mbits/sec [ 6] 9.00-10.00 sec 9.62 MBytes 80.7 Mbits/sec [ 9] 9.00-10.00 sec 9.62 MBytes 80.7 Mbits/sec [SUM] 9.00-10.00 sec 28.9 MBytes 242 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 97.4 MBytes 81.7 Mbits/sec 0 sender [ 4] 0.00-10.00 sec 97.4 MBytes 81.7 Mbits/sec receiver [ 6] 0.00-10.00 sec 97.4 MBytes 81.7 Mbits/sec 0 sender [ 6] 0.00-10.00 sec 97.4 MBytes 81.7 Mbits/sec receiver [ 9] 0.00-10.00 sec 96.2 MBytes 80.7 Mbits/sec 0 sender [ 9] 0.00-10.00 sec 96.2 MBytes 80.7 Mbits/sec receiver [SUM] 0.00-10.00 sec 291 MBytes 244 Mbits/sec 0 sender [SUM] 0.00-10.00 sec 291 MBytes 244 Mbits/sec receiver iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -P3 -u -b 800M Connecting to host 10.0.0.80, port 5201 [ 4] local 10.0.0.1 port 57193 connected to 10.0.0.80 port 5201 [ 6] local 10.0.0.1 port 43582 connected to 10.0.0.80 port 5201 [ 9] local 10.0.0.1 port 41587 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 37.4 MBytes 314 Mbits/sec 4788 [ 6] 0.00-1.00 sec 37.4 MBytes 314 Mbits/sec 4788 [ 9] 0.00-1.00 sec 37.4 MBytes 314 Mbits/sec 4788 [SUM] 0.00-1.00 sec 112 MBytes 941 Mbits/sec 14364 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 1.00-2.00 sec 37.5 MBytes 314 Mbits/sec 4795 [ 6] 1.00-2.00 sec 37.5 MBytes 314 Mbits/sec 4795 [ 9] 1.00-2.00 sec 37.5 MBytes 314 Mbits/sec 4795 [SUM] 1.00-2.00 sec 112 MBytes 943 Mbits/sec 14385 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 2.00-3.00 sec 37.6 MBytes 316 Mbits/sec 4818 [ 6] 2.00-3.00 sec 37.6 MBytes 316 Mbits/sec 4818 [ 9] 2.00-3.00 sec 37.6 MBytes 316 Mbits/sec 4818 [SUM] 2.00-3.00 sec 113 MBytes 947 Mbits/sec 14454 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 3.00-4.00 sec 37.6 MBytes 316 Mbits/sec 4815 [ 6] 3.00-4.00 sec 37.6 MBytes 316 Mbits/sec 4815 [ 9] 3.00-4.00 sec 37.6 MBytes 316 Mbits/sec 4815 [SUM] 3.00-4.00 sec 113 MBytes 947 Mbits/sec 14445 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 4.00-5.00 sec 37.1 MBytes 311 Mbits/sec 4751 [ 6] 4.00-5.00 sec 37.1 MBytes 311 Mbits/sec 4751 [ 9] 4.00-5.00 sec 37.1 MBytes 311 Mbits/sec 4751 [SUM] 4.00-5.00 sec 111 MBytes 934 Mbits/sec 14253 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 5.00-6.00 sec 37.1 MBytes 312 Mbits/sec 4753 [ 6] 5.00-6.00 sec 37.1 MBytes 312 Mbits/sec 4753 [ 9] 5.00-6.00 sec 37.1 MBytes 312 Mbits/sec 4753 [SUM] 5.00-6.00 sec 111 MBytes 935 Mbits/sec 14259 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 6.00-7.00 sec 37.1 MBytes 311 Mbits/sec 4752 [ 6] 6.00-7.00 sec 37.1 MBytes 311 Mbits/sec 4752 [ 9] 6.00-7.00 sec 37.1 MBytes 311 Mbits/sec 4752 [SUM] 6.00-7.00 sec 111 MBytes 934 Mbits/sec 14256 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 7.00-8.00 sec 37.3 MBytes 313 Mbits/sec 4777 [ 6] 7.00-8.00 sec 37.3 MBytes 313 Mbits/sec 4777 [ 9] 7.00-8.00 sec 37.3 MBytes 313 Mbits/sec 4777 [SUM] 7.00-8.00 sec 112 MBytes 939 Mbits/sec 14331 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 8.00-9.00 sec 37.6 MBytes 316 Mbits/sec 4816 [ 6] 8.00-9.00 sec 37.6 MBytes 316 Mbits/sec 4816 [ 9] 8.00-9.00 sec 37.6 MBytes 316 Mbits/sec 4816 [SUM] 8.00-9.00 sec 113 MBytes 947 Mbits/sec 14448 - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 9.00-10.00 sec 37.6 MBytes 316 Mbits/sec 4817 [ 6] 9.00-10.00 sec 37.6 MBytes 316 Mbits/sec 4817 [ 9] 9.00-10.00 sec 37.6 MBytes 316 Mbits/sec 4817 [SUM] 9.00-10.00 sec 113 MBytes 947 Mbits/sec 14451 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 374 MBytes 314 Mbits/sec 980103.226 ms 43854/43912 (1e+02%) [ 4] Sent 43912 datagrams [ 6] 0.00-10.00 sec 374 MBytes 314 Mbits/sec 1443590.550 ms 43834/43886 (1e+02%) [ 6] Sent 43886 datagrams [ 9] 0.00-10.00 sec 374 MBytes 314 Mbits/sec 1539829.735 ms 43889/43940 (1e+02%) [ 9] Sent 43940 datagrams [SUM] 0.00-10.00 sec 1.10 GBytes 941 Mbits/sec 1321174.504 ms 131577/131738 (1e+02%) iperf Done. + sleep 10 + iperf3 -c 10.0.0.80 -P3 -R -u -b 800M Connecting to host 10.0.0.80, port 5201 Reverse mode, remote host 10.0.0.80 is sending [ 4] local 10.0.0.1 port 35233 connected to 10.0.0.80 port 5201 [ 6] local 10.0.0.1 port 51479 connected to 10.0.0.80 port 5201 [ 9] local 10.0.0.1 port 42663 connected to 10.0.0.80 port 5201 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-1.00 sec 9.94 MBytes 83.4 Mbits/sec 0.050 ms 0/1272 (0%) [ 6] 0.00-1.00 sec 9.94 MBytes 83.4 Mbits/sec 0.122 ms 0/1272 (0%) [ 9] 0.00-1.00 sec 9.92 MBytes 83.2 Mbits/sec 0.085 ms 0/1270 (0%) [SUM] 0.00-1.00 sec 29.8 MBytes 250 Mbits/sec 0.086 ms 0/3814 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 1.00-2.00 sec 9.88 MBytes 82.9 Mbits/sec 0.076 ms 0/1265 (0%) [ 6] 1.00-2.00 sec 9.88 MBytes 82.9 Mbits/sec 0.088 ms 0/1265 (0%) [ 9] 1.00-2.00 sec 9.89 MBytes 83.0 Mbits/sec 0.051 ms 0/1266 (0%) [SUM] 1.00-2.00 sec 29.7 MBytes 249 Mbits/sec 0.071 ms 0/3796 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 2.00-3.00 sec 9.86 MBytes 82.7 Mbits/sec 0.013 ms 0/1262 (0%) [ 6] 2.00-3.00 sec 9.85 MBytes 82.6 Mbits/sec 0.036 ms 0/1261 (0%) [ 9] 2.00-3.00 sec 9.85 MBytes 82.6 Mbits/sec 0.066 ms 0/1261 (0%) [SUM] 2.00-3.00 sec 29.6 MBytes 248 Mbits/sec 0.039 ms 0/3784 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 3.00-4.00 sec 9.88 MBytes 82.8 Mbits/sec 0.063 ms 0/1264 (0%) [ 6] 3.00-4.00 sec 9.88 MBytes 82.8 Mbits/sec 0.072 ms 0/1264 (0%) [ 9] 3.00-4.00 sec 9.88 MBytes 82.8 Mbits/sec 0.041 ms 0/1264 (0%) [SUM] 3.00-4.00 sec 29.6 MBytes 249 Mbits/sec 0.058 ms 0/3792 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 4.00-5.00 sec 9.84 MBytes 82.5 Mbits/sec 0.059 ms 0/1259 (0%) [ 6] 4.00-5.00 sec 9.84 MBytes 82.5 Mbits/sec 0.129 ms 0/1259 (0%) [ 9] 4.00-5.00 sec 9.84 MBytes 82.5 Mbits/sec 0.126 ms 0/1259 (0%) [SUM] 4.00-5.00 sec 29.5 MBytes 248 Mbits/sec 0.105 ms 0/3777 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 5.00-6.00 sec 8.22 MBytes 68.9 Mbits/sec 0.024 ms 0/1052 (0%) [ 6] 5.00-6.00 sec 8.22 MBytes 68.9 Mbits/sec 0.062 ms 0/1052 (0%) [ 9] 5.00-6.00 sec 8.22 MBytes 68.9 Mbits/sec 0.044 ms 0/1052 (0%) [SUM] 5.00-6.00 sec 24.7 MBytes 207 Mbits/sec 0.043 ms 0/3156 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 6.00-7.00 sec 9.29 MBytes 77.9 Mbits/sec 0.030 ms 0/1189 (0%) [ 6] 6.00-7.00 sec 9.28 MBytes 77.9 Mbits/sec 0.081 ms 0/1188 (0%) [ 9] 6.00-7.00 sec 9.28 MBytes 77.9 Mbits/sec 0.071 ms 0/1188 (0%) [SUM] 6.00-7.00 sec 27.9 MBytes 234 Mbits/sec 0.060 ms 0/3565 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 7.00-8.00 sec 8.82 MBytes 74.0 Mbits/sec 0.200 ms 0/1129 (0%) [ 6] 7.00-8.00 sec 8.82 MBytes 74.0 Mbits/sec 0.181 ms 0/1129 (0%) [ 9] 7.00-8.00 sec 8.81 MBytes 73.9 Mbits/sec 0.246 ms 0/1128 (0%) [SUM] 7.00-8.00 sec 26.5 MBytes 222 Mbits/sec 0.209 ms 0/3386 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 8.00-9.00 sec 9.89 MBytes 83.0 Mbits/sec 0.038 ms 0/1266 (0%) [ 6] 8.00-9.00 sec 9.89 MBytes 83.0 Mbits/sec 0.020 ms 0/1266 (0%) [ 9] 8.00-9.00 sec 9.89 MBytes 83.0 Mbits/sec 0.028 ms 0/1266 (0%) [SUM] 8.00-9.00 sec 29.7 MBytes 249 Mbits/sec 0.029 ms 0/3798 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ 4] 9.00-10.00 sec 9.86 MBytes 82.7 Mbits/sec 0.035 ms 0/1262 (0%) [ 6] 9.00-10.00 sec 9.86 MBytes 82.7 Mbits/sec 0.049 ms 0/1262 (0%) [ 9] 9.00-10.00 sec 9.86 MBytes 82.7 Mbits/sec 0.024 ms 0/1262 (0%) [SUM] 9.00-10.00 sec 29.6 MBytes 248 Mbits/sec 0.036 ms 0/3786 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 95.5 MBytes 80.1 Mbits/sec 0.035 ms 0/12220 (0%) [ 4] Sent 12220 datagrams [ 6] 0.00-10.00 sec 95.5 MBytes 80.1 Mbits/sec 0.049 ms 0/12218 (0%) [ 6] Sent 12218 datagrams [ 9] 0.00-10.00 sec 95.4 MBytes 80.1 Mbits/sec 0.029 ms 0/12217 (0%) [ 9] Sent 12217 datagrams [SUM] 0.00-10.00 sec 286 MBytes 240 Mbits/sec 0.038 ms 0/36655 (0%) iperf Done.
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel