From 173c228dc0c4a57d12f15c82a3e5c48fd01372eb Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Thu, 25 May 2006 13:24:21 -0700 Subject: [PATCH] --- yaml --- r: 27366 b: refs/heads/master c: 6b900bb4bcb6095339f8d404babd9d779bfa1ea4 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/ixgb/ixgb_main.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d341443b509a..08a754d6c478 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1dfdd7df21309e57867962020a5ccb83d00e5432 +refs/heads/master: 6b900bb4bcb6095339f8d404babd9d779bfa1ea4 diff --git a/trunk/drivers/net/ixgb/ixgb_main.c b/trunk/drivers/net/ixgb/ixgb_main.c index 27034b3ba80b..0e23994a6a76 100644 --- a/trunk/drivers/net/ixgb/ixgb_main.c +++ b/trunk/drivers/net/ixgb/ixgb_main.c @@ -1990,6 +1990,26 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter) goto rxdesc_done; } + /* code added for copybreak, this should improve + * performance for small packets with large amounts + * of reassembly being done in the stack */ +#define IXGB_CB_LENGTH 256 + if (length < IXGB_CB_LENGTH) { + struct sk_buff *new_skb = + dev_alloc_skb(length + NET_IP_ALIGN); + if (new_skb) { + skb_reserve(new_skb, NET_IP_ALIGN); + new_skb->dev = netdev; + memcpy(new_skb->data - NET_IP_ALIGN, + skb->data - NET_IP_ALIGN, + length + NET_IP_ALIGN); + /* save the skb in buffer_info as good */ + buffer_info->skb = skb; + skb = new_skb; + } + } + /* end copybreak code */ + /* Good Receive */ skb_put(skb, length);