From patchwork Mon Nov 28 18:40:15 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: chas williams - CONTRACTOR X-Patchwork-Id: 128055 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 38D28B6F82 for ; Tue, 29 Nov 2011 05:41:38 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753751Ab1K1SlX (ORCPT ); Mon, 28 Nov 2011 13:41:23 -0500 Received: from hedwig.cmf.nrl.navy.mil ([134.207.12.162]:36901 "EHLO hedwig.cmf.nrl.navy.mil" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750963Ab1K1SlW (ORCPT ); Mon, 28 Nov 2011 13:41:22 -0500 Received: from thirdoffive.cmf.nrl.navy.mil (thirdoffive.cmf.nrl.navy.mil [134.207.12.180]) by hedwig.cmf.nrl.navy.mil (8.14.2/8.14.2) with ESMTP id pASIeM6O020225 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 28 Nov 2011 13:40:23 -0500 Received: from cmf.nrl.navy.mil (localhost [127.0.0.1]) by thirdoffive.cmf.nrl.navy.mil (8.14.4/8.14.4) with ESMTP id pASIeIPX011687; Mon, 28 Nov 2011 13:40:21 -0500 Received: from thirdoffive.cmf.nrl.navy.mil (chas@localhost) by cmf.nrl.navy.mil (8.14.4/8.14.4/Submit) with ESMTP id pASIeFhI011675; Mon, 28 Nov 2011 13:40:16 -0500 Message-Id: <201111281840.pASIeFhI011675@cmf.nrl.navy.mil> To: netdev@vger.kernel.org, linux-atm-general@lists.sourceforge.net Subject: Subject: [PATCH 1/2] atm: br2684: Make headroom and hard_header_len depend on the payload type Date: Mon, 28 Nov 2011 13:40:15 -0500 From: "chas williams - CONTRACTOR" X-NRLCMF-Spam-Score: () hits=-1.011 X-NRLCMF-Virus-Scanned: No virus found X-Scanned-By: MIMEDefang 2.68 on 134.207.12.162 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Pascal Hambourg Date: Wed, 17 Aug 2011 08:37:18 +0200 Subject: [PATCH 1/2] atm: br2684: Make headroom and hard_header_len depend on the payload type Routed payload requires less headroom than bridged payload. So do not reallocate headroom if not needed. Also, add worst case AAL5 overhead to netdev->hard_header_len. Signed-off-by: Pascal Hambourg Signed-off-by: chas williams - CONTRACTOR --- net/atm/br2684.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/net/atm/br2684.c b/net/atm/br2684.c index 53b0aa1..ed72263 100644 --- a/net/atm/br2684.c +++ b/net/atm/br2684.c @@ -202,7 +202,10 @@ static int br2684_xmit_vcc(struct sk_buff *skb, struct net_device *dev, { struct br2684_dev *brdev = BRPRIV(dev); struct atm_vcc *atmvcc; - int minheadroom = (brvcc->encaps == e_llc) ? 10 : 2; + int minheadroom = (brvcc->encaps == e_llc) ? + ((brdev->payload == p_bridged) ? + sizeof(llc_oui_pid_pad) : sizeof(llc_oui_ipv4)) : + ((brdev->payload == p_bridged) ? BR2684_PAD_LEN : 0); if (skb_headroom(skb) < minheadroom) { struct sk_buff *skb2 = skb_realloc_headroom(skb, minheadroom); @@ -583,6 +586,7 @@ static void br2684_setup(struct net_device *netdev) struct br2684_dev *brdev = BRPRIV(netdev); ether_setup(netdev); + netdev->hard_header_len += sizeof(llc_oui_pid_pad); /* worst case */ brdev->net_dev = netdev; netdev->netdev_ops = &br2684_netdev_ops; @@ -595,7 +599,7 @@ static void br2684_setup_routed(struct net_device *netdev) struct br2684_dev *brdev = BRPRIV(netdev); brdev->net_dev = netdev; - netdev->hard_header_len = 0; + netdev->hard_header_len = sizeof(llc_oui_ipv4); /* worst case */ netdev->netdev_ops = &br2684_netdev_ops_routed; netdev->addr_len = 0; netdev->mtu = 1500;