From patchwork Thu Jun 1 03:38:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: nickcooper-zhangtonghao X-Patchwork-Id: 769478 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 3wdY543C9Zz9s7M for ; Thu, 1 Jun 2017 13:40:08 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 9ADD1BEB; Thu, 1 Jun 2017 03:38:49 +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 BB34E87A for ; Thu, 1 Jun 2017 03:38:46 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by smtp2.linuxfoundation.org (Postfix) with ESMTPS id 814B41DD24 for ; Thu, 1 Jun 2017 03:38:44 +0000 (UTC) X-QQ-mid: bizesmtp16t1496288316tpozuxc6 Received: from local.opencloud.tech.localdomai (unknown [106.120.127.10]) by esmtp4.qq.com (ESMTP) with id ; Thu, 01 Jun 2017 11:38:24 +0800 (CST) X-QQ-SSF: 01100000002000F0FG90B00A0000000 X-QQ-FEAT: uLC2yWZT8bHOonI6FVByi+SVUjhfmw2rY31ySbZRP/dOq0pOGaEC7H38mkyXL tKVrnVvksphkO9aWeMHqA3EpKYTSeh+QuLldQMqf6q2hc2DKlEu21GdWXJYu/V51TGYMD9X oiXhlZrunAHYgga+VyLhsHFBn6fV/9E1dL9KpQbDFVeqVZQ+HYd4NGPuxn42HgoqWejpio1 KJZsW43U0/W8Gq0CEiTKTW6lKl0Di1AM9J4847qoxPp70pYKiwBigSYpmdp7CFkgxiQkf9/ bDxw== X-QQ-GoodBg: 0 From: nickcooper-zhangtonghao To: dev@openvswitch.org Date: Wed, 31 May 2017 20:38:14 -0700 Message-Id: <1496288296-2755-1-git-send-email-nic@opencloud.tech> X-Mailer: git-send-email 1.8.3.1 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 v4 1/3] 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 907a907..67e6912 100644 --- a/lib/rstp.c +++ b/lib/rstp.c @@ -751,6 +751,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) @@ -1164,6 +1172,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); @@ -1201,6 +1210,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); @@ -1439,13 +1449,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 4942d59..5213f98 100644 --- a/lib/rstp.h +++ b/lib/rstp.h @@ -227,7 +227,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 5d247e3..231b5b0 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -2761,7 +2761,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);