Stephen Hemminger writes: > > On 11/20/05, Unai Uribarri <unaiur@xxxxxxxxx> wrote: > > > I'm trying to run a gigabit linux-based bridge at full duplex, full > > > line rate. That means receiving and sending 3 Million Packets Per > > > Second: quite ambitious, I known. > > > > 3.125Mpps, actually, assuming all minimum length 40 byte packets. > > > > > My first problem is to get the appropiate hardware: I've evaluated > > > several PCI-X nics (Intel & Broadcom) but I can't achieve more than 800 > > > kpps. I've read that this is the PCI-X bus limit, so I'm going to buy a > > > pair of PCI Express x4 NICs. Yes PCI-X boards is sending around ~800 kpps. With some ugly patches about 300 kpps more. Intel w. e1000 82546GB @ 133 MHz 60 748406 124 693133 252 452951 508 234982 1020 119742 1496 82242 The BCM PCI-X *inside* the serverworks H2000 is faster. BCM w. tg3 60 1421959 124 844572 252 452918 508 234970 1020 119735 1496 82239 Fastest and most intresing sofar is the Intel 82571 Server PCI-E dual server adapter. 60 1488305 124 844635 252 452835 508 234973 1020 119737 1496 82240 IO latency is worse with PCI-E but the Intel 82571 can handle four concurrent RX/TX transactions. Also PCI-E is FX this seems to well handle the PCI-E extra latency. Stephen I've heard some good things about the Syskonnect PCI-E adapters any chance you could run a test similar to the tests above? > Robert Olsson had a patch to count packets sent to discard port in the > receive path for for measuring packet rate. Yes if are just to drop pktgen pkts in e1000 driver. You can use the patch below. It can be done a little bit better. See skb reuse discussion on netdev. In that case we reuse the skb in e1000 driver as well and saves kmalloc/kfree's. Cheers. --ro --- drivers/net/e1000/e1000_main.c~ 2003-10-16 11:25:23.000000000 +0200 +++ drivers/net/e1000/e1000_main.c 2003-10-16 13:24:46.000000000 +0200 @@ -2609,6 +2609,23 @@ continue; } } +#define DMA_TEST +#ifdef DMA_TEST + { + __u8 *data = (__u8 *) skb->data + 34; /* 14+20 */ + + /* src and dst port 9 --> pktgen */ + + if(data[0] == 0 && + data[1] == 9 && + data[2] == 0 && + data[3] == 9) { + dev_kfree_skb(skb); + adapter->net_stats.rx_compressed++; + goto gone; + } + } +#endif /* Good Receive */ skb_put(skb, length - ETHERNET_FCS_SIZE); @@ -2634,6 +2651,10 @@ netif_rx(skb); } #endif /* CONFIG_E1000_NAPI */ + +#ifdef DMA_TEST +gone: +#endif netdev->last_rx = jiffies; rx_desc->status = 0; - : send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html