From patchwork Fri Mar 1 10:26:05 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 224282 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 941DE2C02A4 for ; Fri, 1 Mar 2013 21:26:19 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751179Ab3CAK0Q (ORCPT ); Fri, 1 Mar 2013 05:26:16 -0500 Received: from mail-ee0-f53.google.com ([74.125.83.53]:55276 "EHLO mail-ee0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751847Ab3CAK0P (ORCPT ); Fri, 1 Mar 2013 05:26:15 -0500 Received: by mail-ee0-f53.google.com with SMTP id e53so2284061eek.40 for ; Fri, 01 Mar 2013 02:26:13 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references:x-gm-message-state; bh=QJdX1XNkowdMFgJkWA7rvNWC9bMn80hOHvoflhMVcqA=; b=ks/05PjHOJ8nneEOc7SXk7REEREo28JI9tfQHIhdG8Pbn4U4/+rJP2eBkT0Q+kpHEa 3uz7yOojMt22QOamFaXTbz7tYAq7sbjSJzculw/j4o/Kd5A+ngpLC5FC7DuQgZ9qQrcH Jjne2s1ldcQ0udAtRB/p+VDcm4kp3CnRB+OgUXrdVYxYxYKTZw3tdDEw6PD52Nl+6uJu KyMWoMAg83sGc1j2i+VtpsU0e24OJqT6OJca0o3S4f5gXap0HCtk06d8Pt95PU3pWPVR OtfB9hV1mr7Vp8yJdMXWEg5XrqZXtpXf0pc85cNj+WApcHxaiKObbjRs4phJHUgvmrXs NvCg== X-Received: by 10.14.4.69 with SMTP id 45mr26925985eei.0.1362133573673; Fri, 01 Mar 2013 02:26:13 -0800 (PST) Received: from localhost (ip-89-103-91-114.net.upcbroadband.cz. [89.103.91.114]) by mx.google.com with ESMTPS id q42sm16392396eem.14.2013.03.01.02.26.12 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 01 Mar 2013 02:26:12 -0800 (PST) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, fbl@redhat.com Subject: [patch net-next 1/2] team: introduce two default team_modeop functions and use them in modes Date: Fri, 1 Mar 2013 11:26:05 +0100 Message-Id: <1362133566-1382-2-git-send-email-jiri@resnulli.us> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1362133566-1382-1-git-send-email-jiri@resnulli.us> References: <1362133566-1382-1-git-send-email-jiri@resnulli.us> X-Gm-Message-State: ALoCoQkJkv4awCxKNUlXPWXrrvNI6HPtlQwfUiEZXw/p2QXV6Dy0NY25Th5RH5lsi8Ke/d0RN6F8 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org No need to duplicate code for this. Signed-off-by: Jiri Pirko --- drivers/net/team/team.c | 19 ++++++++++++++++--- drivers/net/team/team_mode_broadcast.c | 14 ++------------ drivers/net/team/team_mode_roundrobin.c | 14 ++------------ include/linux/if_team.h | 5 ++++- 4 files changed, 24 insertions(+), 28 deletions(-) diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c index 05c5efe..ece70a4 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c @@ -73,11 +73,24 @@ static int team_port_set_orig_dev_addr(struct team_port *port) return __set_port_dev_addr(port->dev, port->orig.dev_addr); } -int team_port_set_team_dev_addr(struct team_port *port) +static int team_port_set_team_dev_addr(struct team *team, + struct team_port *port) +{ + return __set_port_dev_addr(port->dev, team->dev->dev_addr); +} + +int team_modeop_port_enter(struct team *team, struct team_port *port) +{ + return team_port_set_team_dev_addr(team, port); +} +EXPORT_SYMBOL(team_modeop_port_enter); + +void team_modeop_port_change_dev_addr(struct team *team, + struct team_port *port) { - return __set_port_dev_addr(port->dev, port->team->dev->dev_addr); + team_port_set_team_dev_addr(team, port); } -EXPORT_SYMBOL(team_port_set_team_dev_addr); +EXPORT_SYMBOL(team_modeop_port_change_dev_addr); static void team_refresh_port_linkup(struct team_port *port) { diff --git a/drivers/net/team/team_mode_broadcast.c b/drivers/net/team/team_mode_broadcast.c index c5db428..c366cd2 100644 --- a/drivers/net/team/team_mode_broadcast.c +++ b/drivers/net/team/team_mode_broadcast.c @@ -46,20 +46,10 @@ static bool bc_transmit(struct team *team, struct sk_buff *skb) return sum_ret; } -static int bc_port_enter(struct team *team, struct team_port *port) -{ - return team_port_set_team_dev_addr(port); -} - -static void bc_port_change_dev_addr(struct team *team, struct team_port *port) -{ - team_port_set_team_dev_addr(port); -} - static const struct team_mode_ops bc_mode_ops = { .transmit = bc_transmit, - .port_enter = bc_port_enter, - .port_change_dev_addr = bc_port_change_dev_addr, + .port_enter = team_modeop_port_enter, + .port_change_dev_addr = team_modeop_port_change_dev_addr, }; static const struct team_mode bc_mode = { diff --git a/drivers/net/team/team_mode_roundrobin.c b/drivers/net/team/team_mode_roundrobin.c index 105135a..ed63a6b 100644 --- a/drivers/net/team/team_mode_roundrobin.c +++ b/drivers/net/team/team_mode_roundrobin.c @@ -64,20 +64,10 @@ drop: return false; } -static int rr_port_enter(struct team *team, struct team_port *port) -{ - return team_port_set_team_dev_addr(port); -} - -static void rr_port_change_dev_addr(struct team *team, struct team_port *port) -{ - team_port_set_team_dev_addr(port); -} - static const struct team_mode_ops rr_mode_ops = { .transmit = rr_transmit, - .port_enter = rr_port_enter, - .port_change_dev_addr = rr_port_change_dev_addr, + .port_enter = team_modeop_port_enter, + .port_change_dev_addr = team_modeop_port_change_dev_addr, }; static const struct team_mode rr_mode = { diff --git a/include/linux/if_team.h b/include/linux/if_team.h index 4648d80..622fe43 100644 --- a/include/linux/if_team.h +++ b/include/linux/if_team.h @@ -112,6 +112,10 @@ struct team_mode_ops { void (*port_disabled)(struct team *team, struct team_port *port); }; +extern int team_modeop_port_enter(struct team *team, struct team_port *port); +extern void team_modeop_port_change_dev_addr(struct team *team, + struct team_port *port); + enum team_option_type { TEAM_OPTION_TYPE_U32, TEAM_OPTION_TYPE_STRING, @@ -238,7 +242,6 @@ static inline struct team_port *team_get_port_by_index_rcu(struct team *team, return NULL; } -extern int team_port_set_team_dev_addr(struct team_port *port); extern int team_options_register(struct team *team, const struct team_option *option, size_t option_count);