From patchwork Wed May 10 11:15:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: nickcooper-zhangtonghao X-Patchwork-Id: 760543 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wNDFX56Bhz9rxl for ; Wed, 10 May 2017 21:16:16 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id C1423B2A; Wed, 10 May 2017 11:15:34 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp2.linuxfoundation.org (smtp2.linux-foundation.org [172.17.192.36]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 6EA16B37 for ; Wed, 10 May 2017 11:15:33 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) by smtp2.linuxfoundation.org (Postfix) with ESMTPS id AF7AA1DF17 for ; Wed, 10 May 2017 11:15:31 +0000 (UTC) X-QQ-mid: bizesmtp13t1494414925t7brw0qm Received: from local.opencloud.tech.localdomai (unknown [106.120.127.10]) by esmtp4.qq.com (ESMTP) with id ; Wed, 10 May 2017 19:15:24 +0800 (CST) X-QQ-SSF: 01100000008000F0FG80B00A0000000 X-QQ-FEAT: TvWUXinvzdhHToMAh9dv2E1V3994YK2qe5K6Pvi9ofbQ285UBqJJ0zfWY7yBB J+N9k9KJgjMtJXMqM9q3MDPQAhHPCz+RhCI4qhF+iz9nLA+Pn9+4gCFaLIZNGHI2gp/XrUL or8CbUTNKN8N58JakxxY3uX5RGvWL01vMFCrnoRbF0UVIn5QtMRe+zmQ9B9x2sGFieVFzlU xT+S0Cz5gYj0Q6IRVyaa5Xs2Q52X7XwB4i9n4THUp2XOTHy2f7QRCH6l8zi1OGdGMhxAq5O ExCUuRS9p3QJKV X-QQ-GoodBg: 0 From: nickcooper-zhangtonghao To: dev@openvswitch.org Date: Wed, 10 May 2017 04:15:03 -0700 Message-Id: <1494414906-71269-2-git-send-email-nic@opencloud.tech> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1494414906-71269-1-git-send-email-nic@opencloud.tech> References: <1494414906-71269-1-git-send-email-nic@opencloud.tech> X-QQ-SENDSIZE: 520 X-QQ-Bgrelay: 1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp2.linux-foundation.org Subject: [ovs-dev] [PATCH v2 2/5] rstp: Add rstp port name for human reading. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org This patch is useful to debug rstp subsystem and log the port name instead of port number. This patch will also be used to display rstp info for next patches. Signed-off-by: nickcooper-zhangtonghao Acked-by: Jarno Rajahalme --- lib/rstp-common.h | 1 + lib/rstp.c | 14 +++++++++++++- lib/rstp.h | 3 ++- ofproto/ofproto-dpif.c | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/rstp-common.h b/lib/rstp-common.h index 27e8079..c108232 100644 --- a/lib/rstp-common.h +++ b/lib/rstp-common.h @@ -262,6 +262,7 @@ struct rstp_port { struct rstp *rstp OVS_GUARDED_BY(rstp_mutex); struct hmap_node node OVS_GUARDED_BY(rstp_mutex); /* In rstp->ports. */ void *aux OVS_GUARDED_BY(rstp_mutex); + char *port_name; struct rstp_bpdu received_bpdu_buffer OVS_GUARDED_BY(rstp_mutex); /************************************************************************* * MAC status parameters diff --git a/lib/rstp.c b/lib/rstp.c index 6f1c1e3..b942f6e 100644 --- a/lib/rstp.c +++ b/lib/rstp.c @@ -760,6 +760,14 @@ rstp_port_set_port_number__(struct rstp_port *port, uint16_t port_number) } } +static void +rstp_port_set_port_name__(struct rstp_port *port, const char *name) + OVS_REQUIRES(rstp_mutex) +{ + free(port->port_name); + port->port_name = xstrdup(name); +} + /* Converts the link speed to a port path cost [Table 17-3]. */ uint32_t rstp_convert_speed_to_cost(unsigned int speed) @@ -1173,6 +1181,7 @@ rstp_add_port(struct rstp *rstp) rstp_port_set_priority__(p, RSTP_DEFAULT_PORT_PRIORITY); rstp_port_set_port_number__(p, 0); p->aux = NULL; + p->port_name = NULL; rstp_initialize_port_defaults__(p); VLOG_DBG("%s: RSTP port "RSTP_PORT_ID_FMT" initialized.", rstp->name, p->port_id); @@ -1210,6 +1219,7 @@ rstp_port_unref(struct rstp_port *rp) ovs_mutex_lock(&rstp_mutex); rstp = rp->rstp; rstp_port_set_state__(rp, RSTP_DISABLED); + free(rp->port_name); hmap_remove(&rstp->ports, &rp->node); VLOG_DBG("%s: removed port "RSTP_PORT_ID_FMT"", rstp->name, rp->port_id); @@ -1448,13 +1458,15 @@ void rstp_port_set(struct rstp_port *port, uint16_t port_num, int priority, uint32_t path_cost, bool is_admin_edge, bool is_auto_edge, enum rstp_admin_point_to_point_mac_state admin_p2p_mac_state, - bool admin_port_state, bool do_mcheck, void *aux) + bool admin_port_state, bool do_mcheck, void *aux, + const char *name) OVS_EXCLUDED(rstp_mutex) { ovs_mutex_lock(&rstp_mutex); port->aux = aux; rstp_port_set_priority__(port, priority); rstp_port_set_port_number__(port, port_num); + rstp_port_set_port_name__(port, name); rstp_port_set_path_cost__(port, path_cost); rstp_port_set_admin_edge__(port, is_admin_edge); rstp_port_set_auto_edge__(port, is_auto_edge); diff --git a/lib/rstp.h b/lib/rstp.h index 78e07fb..fa67e3c 100644 --- a/lib/rstp.h +++ b/lib/rstp.h @@ -221,7 +221,8 @@ uint32_t rstp_convert_speed_to_cost(unsigned int speed); void rstp_port_set(struct rstp_port *, uint16_t port_num, int priority, uint32_t path_cost, bool is_admin_edge, bool is_auto_edge, enum rstp_admin_point_to_point_mac_state admin_p2p_mac_state, - bool admin_port_state, bool do_mcheck, void *aux) + bool admin_port_state, bool do_mcheck, void *aux, + const char *name) OVS_EXCLUDED(rstp_mutex); enum rstp_state rstp_port_get_state(const struct rstp_port *) diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index dc5f004..6d3f1fb 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -2722,7 +2722,7 @@ set_rstp_port(struct ofport *ofport_, rstp_port_set(rp, s->port_num, s->priority, s->path_cost, s->admin_edge_port, s->auto_edge, s->admin_p2p_mac_state, s->admin_port_state, s->mcheck, - ofport); + ofport, netdev_get_name(ofport->up.netdev)); update_rstp_port_state(ofport); /* Synchronize operational status. */ rstp_port_set_mac_operational(rp, ofport->may_enable);