From patchwork Sat Jul 9 17:17:52 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= X-Patchwork-Id: 104003 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 6F53E1007D1 for ; Sun, 10 Jul 2011 03:18:37 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754587Ab1GIRS2 (ORCPT ); Sat, 9 Jul 2011 13:18:28 -0400 Received: from rere.qmqm.pl ([89.167.52.164]:51955 "EHLO rere.qmqm.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754221Ab1GIRRz (ORCPT ); Sat, 9 Jul 2011 13:17:55 -0400 Received: by rere.qmqm.pl (Postfix, from userid 1000) id 32CA413A7D; Sat, 9 Jul 2011 19:17:52 +0200 (CEST) Message-Id: In-Reply-To: References: From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Subject: [PATCH 13/21] net: sundance: use common rx_copybreak handling MIME-Version: 1.0 To: netdev@vger.kernel.org Date: Sat, 9 Jul 2011 19:17:52 +0200 (CEST) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Michał Mirosław --- drivers/net/sundance.c | 26 ++++++-------------------- 1 files changed, 6 insertions(+), 20 deletions(-) diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c index 4793df8..0a16798 100644 --- a/drivers/net/sundance.c +++ b/drivers/net/sundance.c @@ -1355,26 +1355,12 @@ static void rx_poll(unsigned long data) ", bogus_cnt %d.\n", pkt_len, boguscnt); #endif - /* Check if the packet is long enough to accept without copying - to a minimally-sized skbuff. */ - if (pkt_len < rx_copybreak && - (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { - skb_reserve(skb, 2); /* 16 byte align the IP header */ - dma_sync_single_for_cpu(&np->pci_dev->dev, - le32_to_cpu(desc->frag[0].addr), - np->rx_buf_sz, DMA_FROM_DEVICE); - skb_copy_to_linear_data(skb, np->rx_skbuff[entry]->data, pkt_len); - dma_sync_single_for_device(&np->pci_dev->dev, - le32_to_cpu(desc->frag[0].addr), - np->rx_buf_sz, DMA_FROM_DEVICE); - skb_put(skb, pkt_len); - } else { - dma_unmap_single(&np->pci_dev->dev, - le32_to_cpu(desc->frag[0].addr), - np->rx_buf_sz, DMA_FROM_DEVICE); - skb_put(skb = np->rx_skbuff[entry], pkt_len); - np->rx_skbuff[entry] = NULL; - } + skb = dev_skb_finish_rx_dma(&np->rx_skbuff[entry], + pkt_len, rx_copybreak, + &np->pci_dev->dev, + le32_to_cpu(desc->frag[0].addr), + np->rx_buf_sz); + skb->protocol = eth_type_trans(skb, dev); /* Note: checksum -> skb->ip_summed = CHECKSUM_UNNECESSARY; */ netif_rx(skb);