From patchwork Tue Dec 23 22:01:09 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: holger@eitzenberger.org X-Patchwork-Id: 15487 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.176.167]) by ozlabs.org (Postfix) with ESMTP id E1812DDF44 for ; Wed, 24 Dec 2008 09:06:32 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752530AbYLWWG0 (ORCPT ); Tue, 23 Dec 2008 17:06:26 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752465AbYLWWGV (ORCPT ); Tue, 23 Dec 2008 17:06:21 -0500 Received: from moutng.kundenserver.de ([212.227.126.187]:50274 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751952AbYLWWGG (ORCPT ); Tue, 23 Dec 2008 17:06:06 -0500 Received: from kruemel.eitzenberger.org (p54AD34A1.dip0.t-ipconnect.de [84.173.52.161]) by mrelayeu.kundenserver.de (node=mrelayeu8) with ESMTP (Nemesis) id 0ML31I-1LFFO63vXQ-00062b; Tue, 23 Dec 2008 23:06:03 +0100 Received: from [192.168.11.10] (helo=jonathan.eitzenberger.org ident=holger) by kruemel.eitzenberger.org with smtp (Exim 4.50) id 1LFFO5-0005S6-8r; Tue, 23 Dec 2008 23:06:02 +0100 Received: by jonathan.eitzenberger.org (sSMTP sendmail emulation); Tue, 23 Dec 2008 23:06:00 +0100 Message-Id: <20081223220600.479443201@jonathan.eitzenberger.org> References: <20081223220101.747816175@jonathan.eitzenberger.org> User-Agent: quilt/0.46-1 Date: Tue, 23 Dec 2008 23:01:09 +0100 From: Holger Eitzenberger To: David Miller Cc: Jay Vosburgh , netdev@vger.kernel.org Subject: [patch 08/10] 802.3ad: remove public lacpdu_header Content-Disposition: inline; filename=bonding-3ad-remove-lacpdu_header.diff X-Provags-ID: V01U2FsdGVkX1/EfWAdmwCc0PvV0eQXKHhjrOyMjSHCTtIxAy2 dB3zYUbPCyJpOxplttI9SBkg9tUGEBzXccGCWOZSfgtizEFeV2 4u38+HncJ4dEOqu5a3sjeuFwJzZWomTDrlOjxu1iiw= Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org It's strictly not necessary to define lacpdu_header in an include file because it's only used in ad_lacpdu_send(). Remove that definition and use an unnamed structure instead just for our purpose. Which also gives a chance to use shorter names which are still descriptive. As the port is left unmodified it's now const. Also cleanup that function a bit by removing useless braces around one-liners and turn C++ style comments into C comments. Signed-off-by: Holger Eitzenberger Index: bonding-2.6/drivers/net/bonding/bond_3ad.c =================================================================== --- bonding-2.6.orig/drivers/net/bonding/bond_3ad.c +++ bonding-2.6/drivers/net/bonding/bond_3ad.c @@ -98,7 +98,6 @@ static const int ad_delta_in_ticks = (AD static const u8 lacpdu_mcast_addr[ETH_ALEN] = MULTICAST_LACPDU_ADDR; // ================= main 802.3ad protocol functions ================== -static int ad_lacpdu_send(struct port *port); static int ad_marker_send(struct port *port, struct bond_marker *marker); static void ad_mux_machine(struct port *port); static void ad_rx_machine(struct lacpdu *lacpdu, struct port *port); @@ -820,17 +819,19 @@ static inline void __update_lacpdu_from_ * Returns: 0 on success * < 0 on error */ -static int ad_lacpdu_send(struct port *port) +static int ad_lacpdu_send(const struct port *port) { struct slave *slave = port->slave; struct sk_buff *skb; - struct lacpdu_header *lacpdu_header; - int length = sizeof(struct lacpdu_header); + struct { + struct ethhdr hdr; + struct lacpdu lacpdu; + } __packed *pdu; + int len = sizeof(*pdu); - skb = dev_alloc_skb(length); - if (!skb) { + skb = dev_alloc_skb(len); + if (skb == NULL) return -ENOMEM; - } skb->dev = slave->dev; skb_reset_mac_header(skb); @@ -838,15 +839,15 @@ static int ad_lacpdu_send(struct port *p skb->protocol = PKT_TYPE_LACPDU; skb->priority = TC_PRIO_CONTROL; - lacpdu_header = (struct lacpdu_header *)skb_put(skb, length); + pdu = (void *)skb_put(skb, len); - memcpy(lacpdu_header->hdr.h_dest, lacpdu_mcast_addr, ETH_ALEN); + memcpy(pdu->hdr.h_dest, lacpdu_mcast_addr, ETH_ALEN); /* Note: source addres is set to be the member's PERMANENT address, because we use it to identify loopback lacpdus in receive. */ - memcpy(lacpdu_header->hdr.h_source, slave->perm_hwaddr, ETH_ALEN); - lacpdu_header->hdr.h_proto = PKT_TYPE_LACPDU; + memcpy(pdu->hdr.h_source, slave->perm_hwaddr, ETH_ALEN); + pdu->hdr.h_proto = PKT_TYPE_LACPDU; - lacpdu_header->lacpdu = port->lacpdu; // struct copy + memcpy(&pdu->lacpdu, &port->lacpdu, sizeof(pdu->lacpdu)); dev_queue_xmit(skb); Index: bonding-2.6/drivers/net/bonding/bond_3ad.h =================================================================== --- bonding-2.6.orig/drivers/net/bonding/bond_3ad.h +++ bonding-2.6/drivers/net/bonding/bond_3ad.h @@ -136,11 +136,6 @@ typedef struct lacpdu { u8 reserved_50[50]; // = 0 } lacpdu_t; -typedef struct lacpdu_header { - struct ethhdr hdr; - struct lacpdu lacpdu; -} lacpdu_header_t; - // Marker Protocol Data Unit(PDU) structure(43.5.3.2 in the 802.3ad standard) typedef struct bond_marker { u8 subtype; // = 0x02 (marker PDU)