From patchwork Sat Jul 9 17:17:51 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: 103992 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 EBBF41007E1 for ; Sun, 10 Jul 2011 03:18:09 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754367Ab1GIRR7 (ORCPT ); Sat, 9 Jul 2011 13:17:59 -0400 Received: from rere.qmqm.pl ([89.167.52.164]:51949 "EHLO rere.qmqm.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754177Ab1GIRRz (ORCPT ); Sat, 9 Jul 2011 13:17:55 -0400 Received: by rere.qmqm.pl (Postfix, from userid 1000) id E8D4D13A70; Sat, 9 Jul 2011 19:17:51 +0200 (CEST) Message-Id: <8484cbd5bd425b05b627d94dfd93bc6de7e7cdf4.1310229312.git.mirq-linux@rere.qmqm.pl> In-Reply-To: References: From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Subject: [PATCH 08/21] net: natsemi: use common rx_copybreak handling MIME-Version: 1.0 To: netdev@vger.kernel.org Cc: Tim Hockin Date: Sat, 9 Jul 2011 19:17:51 +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/natsemi.c | 30 +++++------------------------- 1 files changed, 5 insertions(+), 25 deletions(-) diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c index 8f8b65a..b461321 100644 --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c @@ -2340,31 +2340,11 @@ static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do) */ } else { struct sk_buff *skb; - /* Omit CRC size. */ - /* 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 + RX_OFFSET)) != NULL) { - /* 16 byte align the IP header */ - skb_reserve(skb, RX_OFFSET); - pci_dma_sync_single_for_cpu(np->pci_dev, - np->rx_dma[entry], - buflen, - PCI_DMA_FROMDEVICE); - skb_copy_to_linear_data(skb, - np->rx_skbuff[entry]->data, pkt_len); - skb_put(skb, pkt_len); - pci_dma_sync_single_for_device(np->pci_dev, - np->rx_dma[entry], - buflen, - PCI_DMA_FROMDEVICE); - } else { - pci_unmap_single(np->pci_dev, np->rx_dma[entry], - buflen + NATSEMI_PADDING, - PCI_DMA_FROMDEVICE); - 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, np->rx_dma[entry], buflen); + skb->protocol = eth_type_trans(skb, dev); netif_receive_skb(skb); dev->stats.rx_packets++;