Skip to content

Commit

Permalink
bridge: Split the column updates of rstp statistics and status.
Browse files Browse the repository at this point in the history
Split the update of rstp_statistics column and rstp_status column in
Port table into two different functions.  This helps in controlling the
number of times the rstp_statistics column is updated with the key
"stats-update_interval" in Open_vSwitch table.

Signed-off-by: Krishna Kolakaluri <[email protected]>
Signed-off-by: Ben Pfaff <[email protected]>
  • Loading branch information
KrishnaKolakaluri authored and blp committed Jan 6, 2020
1 parent 161773c commit 1a008eb
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 3 deletions.
3 changes: 3 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ Post-v2.12.0
* DPDK ring ports (dpdkr) are deprecated and will be removed in next
releases.
* Add support for DPDK 19.11.
- RSTP:
* The rstp_statistics column in Port table will only be updated every
stats-update-interval configured in Open_vSwtich table.

v2.12.0 - 03 Sep 2019
---------------------
Expand Down
34 changes: 31 additions & 3 deletions vswitchd/bridge.c
Original file line number Diff line number Diff line change
Expand Up @@ -2863,8 +2863,6 @@ port_refresh_rstp_status(struct port *port)
struct ofproto *ofproto = port->bridge->ofproto;
struct iface *iface;
struct ofproto_port_rstp_status status;
const char *keys[4];
int64_t int_values[4];
struct smap smap;

if (port_is_synthetic(port)) {
Expand All @@ -2884,7 +2882,6 @@ port_refresh_rstp_status(struct port *port)

if (!status.enabled) {
ovsrec_port_set_rstp_status(port->cfg, NULL);
ovsrec_port_set_rstp_statistics(port->cfg, NULL, NULL, 0);
return;
}
/* Set Status column. */
Expand All @@ -2905,6 +2902,36 @@ port_refresh_rstp_status(struct port *port)

ovsrec_port_set_rstp_status(port->cfg, &smap);
smap_destroy(&smap);
}

static void
port_refresh_rstp_stats(struct port *port)
{
struct ofproto *ofproto = port->bridge->ofproto;
struct iface *iface;
struct ofproto_port_rstp_status status;
const char *keys[4];
int64_t int_values[4];

if (port_is_synthetic(port)) {
return;
}

/* RSTP doesn't currently support bonds. */
if (!ovs_list_is_singleton(&port->ifaces)) {
ovsrec_port_set_rstp_statistics(port->cfg, NULL, NULL, 0);
return;
}

iface = CONTAINER_OF(ovs_list_front(&port->ifaces), struct iface, port_elem);
if (ofproto_port_get_rstp_status(ofproto, iface->ofp_port, &status)) {
return;
}

if (!status.enabled) {
ovsrec_port_set_rstp_statistics(port->cfg, NULL, NULL, 0);
return;
}

/* Set Statistics column. */
keys[0] = "rstp_tx_count";
Expand Down Expand Up @@ -3073,6 +3100,7 @@ run_stats_update(void)
iface_refresh_stats(iface);
}
port_refresh_stp_stats(port);
port_refresh_rstp_stats(port);
}
HMAP_FOR_EACH (m, hmap_node, &br->mirrors) {
mirror_refresh_stats(m);
Expand Down

0 comments on commit 1a008eb

Please sign in to comment.