Skip to content

Commit

Permalink
Merge "Update drop_pkts count sent from agent."
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Dec 13, 2016
2 parents d836d5a + 4f601ee commit 23f7275
Show file tree
Hide file tree
Showing 8 changed files with 115 additions and 34 deletions.
2 changes: 0 additions & 2 deletions src/vnsw/agent/uve/interface.sandesh
Expand Up @@ -50,8 +50,6 @@ struct VmInterfaceStats {
3: u64 out_pkts;
/** Count of outgoing bytes */
4: u64 out_bytes;
/** Drop packet count */
5: u64 drop_pkts;
}

/**
Expand Down
1 change: 0 additions & 1 deletion src/vnsw/agent/uve/interface_uve_stats_table.cc
Expand Up @@ -47,7 +47,6 @@ bool InterfaceUveStatsTable::FrameInterfaceStatsMsg(UveInterfaceEntry* entry,
if_stats.set_in_bytes(s->in_bytes);
if_stats.set_out_pkts(s->out_pkts);
if_stats.set_out_bytes(s->out_bytes);
if_stats.set_drop_pkts(s->drop_pkts);
uve->set_raw_if_stats(if_stats);

/* Compute bandwidth only if there is change in statistics */
Expand Down
101 changes: 95 additions & 6 deletions src/vnsw/agent/uve/stats_manager.cc
Expand Up @@ -203,19 +203,17 @@ void StatsManager::Shutdown(void) {

StatsManager::InterfaceStats::InterfaceStats()
: name(""), speed(0), duplexity(0), in_pkts(0), in_bytes(0),
out_pkts(0), out_bytes(0), drop_pkts(0), prev_in_bytes(0), prev_out_bytes(0)
out_pkts(0), out_bytes(0), prev_in_bytes(0), prev_out_bytes(0)
, prev_5min_in_bytes(0), prev_5min_out_bytes(0), stats_time(0), flow_info(),
added(), deleted(), drop_stats_received(false) {
}

void StatsManager::InterfaceStats::UpdateStats
(uint64_t in_b, uint64_t in_p, uint64_t out_b, uint64_t out_p,
uint64_t drop_p) {
(uint64_t in_b, uint64_t in_p, uint64_t out_b, uint64_t out_p) {
in_bytes = in_b;
in_pkts = in_p;
out_bytes = out_b;
out_pkts = out_p;
drop_pkts = drop_p;
}

void StatsManager::InterfaceStats::UpdatePrevStats() {
Expand Down Expand Up @@ -397,43 +395,134 @@ void StatsManager::InitDone() {
void StatsManager::BuildDropStats(const vr_drop_stats_req &req,
VrouterDropStats &ds) const {
ds.discard = req.get_vds_discard();
ds.drop_pkts = ds.discard;

ds.pull = req.get_vds_pull();
ds.drop_pkts += ds.pull;

ds.invalid_if = req.get_vds_invalid_if();
ds.drop_pkts += ds.invalid_if;

ds.invalid_arp =req.get_vds_invalid_arp();
ds.drop_pkts += ds.invalid_arp;

ds.trap_no_if = req.get_vds_trap_no_if();
ds.drop_pkts += ds.trap_no_if;

ds.nowhere_to_go = req.get_vds_nowhere_to_go();
ds.drop_pkts += ds.nowhere_to_go;

ds.flow_queue_limit_exceeded = req.get_vds_flow_queue_limit_exceeded();
ds.drop_pkts += ds.flow_queue_limit_exceeded;

ds.flow_no_memory = req.get_vds_flow_no_memory();
ds.drop_pkts += ds.flow_no_memory;

ds.flow_invalid_protocol = req.get_vds_flow_invalid_protocol();
ds.drop_pkts += ds.flow_invalid_protocol;

ds.flow_nat_no_rflow = req.get_vds_flow_nat_no_rflow();
ds.drop_pkts += ds.flow_nat_no_rflow ;

ds.flow_action_drop = req.get_vds_flow_action_drop();
ds.drop_pkts += ds.flow_action_drop;

ds.flow_action_invalid = req.get_vds_flow_action_invalid();
ds.drop_pkts += ds.flow_action_invalid;

ds.flow_unusable = req.get_vds_flow_unusable();
ds.drop_pkts += ds.flow_unusable;

ds.flow_table_full = req.get_vds_flow_table_full();
ds.drop_pkts += ds.flow_table_full;

ds.interface_tx_discard = req.get_vds_interface_tx_discard();
ds.drop_pkts += ds.interface_tx_discard;

ds.interface_drop = req.get_vds_interface_drop();
ds.drop_pkts += ds.interface_drop;

ds.duplicated = req.get_vds_duplicated();
ds.drop_pkts += ds.duplicated;

ds.push = req.get_vds_push();
ds.drop_pkts += ds.push;

ds.ttl_exceeded = req.get_vds_ttl_exceeded();
ds.drop_pkts += ds.ttl_exceeded;

ds.invalid_nh = req.get_vds_invalid_nh();
ds.drop_pkts += ds.invalid_nh;

ds.invalid_label = req.get_vds_invalid_label();
ds.drop_pkts += ds.invalid_label;

ds.invalid_protocol = req.get_vds_invalid_protocol();
ds.drop_pkts += ds.invalid_protocol;

ds.interface_rx_discard = req.get_vds_interface_rx_discard();
ds.drop_pkts += ds.interface_rx_discard;

ds.invalid_mcast_source = req.get_vds_invalid_mcast_source();
ds.drop_pkts += ds.invalid_mcast_source;

ds.head_alloc_fail = req.get_vds_head_alloc_fail();
ds.drop_pkts += ds.head_alloc_fail;

ds.pcow_fail = req.get_vds_pcow_fail();
ds.drop_pkts += ds.pcow_fail;

ds.mcast_clone_fail = req.get_vds_mcast_clone_fail();
ds.drop_pkts += ds.mcast_clone_fail;

ds.mcast_df_bit = req.get_vds_mcast_df_bit();
ds.drop_pkts += ds.mcast_df_bit;

ds.no_memory = req.get_vds_no_memory();
ds.drop_pkts += ds.no_memory;

ds.rewrite_fail = req.get_vds_rewrite_fail();
ds.drop_pkts += ds.rewrite_fail;

ds.misc = req.get_vds_misc();
ds.drop_pkts += ds.misc;

ds.invalid_packet = req.get_vds_invalid_packet();
ds.drop_pkts += ds.invalid_packet;

ds.cksum_err = req.get_vds_cksum_err();
ds.drop_pkts += ds.cksum_err;

ds.no_fmd = req.get_vds_no_fmd();
ds.cloned_original = req.get_vds_cloned_original();
ds.drop_pkts += ds.no_fmd;

ds.invalid_vnid = req.get_vds_invalid_vnid();
ds.drop_pkts += ds.invalid_vnid;

ds.frag_err = req.get_vds_frag_err();
ds.drop_pkts += ds.frag_err;

ds.invalid_source = req.get_vds_invalid_source();
ds.mcast_df_bit = req.get_vds_mcast_df_bit();
ds.drop_pkts += ds.invalid_source;

ds.l2_no_route = req.get_vds_l2_no_route();
ds.drop_pkts += ds.l2_no_route;

ds.fragment_queue_fail = req.get_vds_fragment_queue_fail();
ds.drop_pkts += ds.fragment_queue_fail;

ds.vlan_fwd_tx = req.get_vds_vlan_fwd_tx();
ds.drop_pkts += ds.vlan_fwd_tx;

ds.vlan_fwd_enq = req.get_vds_vlan_fwd_enq();
ds.drop_pkts += ds.vlan_fwd_enq;

ds.drop_new_flow = req.get_vds_drop_new_flow();
ds.drop_pkts += ds.drop_new_flow;

ds.flow_evict = req.get_vds_flow_evict();
ds.drop_pkts += ds.flow_evict;

ds.trap_original = req.get_vds_trap_original();
ds.drop_pkts += ds.trap_original;
}
3 changes: 1 addition & 2 deletions src/vnsw/agent/uve/stats_manager.h
Expand Up @@ -35,7 +35,7 @@ class StatsManager {
struct InterfaceStats {
InterfaceStats();
void UpdateStats(uint64_t in_b, uint64_t in_p, uint64_t out_b,
uint64_t out_p, uint64_t drop_p);
uint64_t out_p);
void UpdatePrevStats();
void GetDiffStats(uint64_t *in_b, uint64_t *out_b) const;

Expand All @@ -46,7 +46,6 @@ class StatsManager {
uint64_t in_bytes;
uint64_t out_pkts;
uint64_t out_bytes;
uint64_t drop_pkts;
uint64_t prev_in_bytes;
uint64_t prev_out_bytes;
uint64_t prev_5min_in_bytes;
Expand Down
3 changes: 0 additions & 3 deletions src/vnsw/agent/uve/test/test_vrouter_uve.cc
Expand Up @@ -287,9 +287,6 @@ class UveVrouterUveTest : public ::testing::Test {
if (d1.no_fmd != (uint64_t)d2.get_vds_no_fmd()) {
return false;
}
if (d1.cloned_original != (uint64_t)d2.get_vds_cloned_original()) {
return false;
}
if (d1.invalid_vnid != (uint64_t)d2.get_vds_invalid_vnid()) {
return false;
}
Expand Down
34 changes: 18 additions & 16 deletions src/vnsw/agent/uve/vrouter.sandesh
Expand Up @@ -269,19 +269,25 @@ struct VrouterDropStats {
25: optional u64 head_alloc_fail
26: optional u64 pcow_fail
27: optional u64 mcast_clone_fail
28: optional u64 rewrite_fail
29: optional u64 misc
30: optional u64 invalid_packet
31: optional u64 cksum_err
32: optional u64 no_fmd
33: optional u64 cloned_original
34: optional u64 invalid_vnid
35: optional u64 frag_err
36: optional u64 invalid_source
37: optional u64 mcast_df_bit
28: optional u64 mcast_df_bit
29: optional u64 no_memory
30: optional u64 rewrite_fail
31: optional u64 misc
32: optional u64 invalid_packet
33: optional u64 cksum_err
34: optional u64 no_fmd
35: optional u64 invalid_vnid
36: optional u64 frag_err
37: optional u64 invalid_source
38: optional u64 l2_no_route
39: optional u64 vlan_fwd_tx
40: optional u64 vlan_fwd_enq
39: optional u64 fragment_queue_fail
40: optional u64 vlan_fwd_tx
41: optional u64 vlan_fwd_enq
42: optional u64 drop_new_flow
43: optional u64 flow_evict
44: optional u64 trap_original
/** Drop packet count */
45: optional u64 drop_pkts
}

/**
Expand All @@ -302,8 +308,6 @@ struct AgentIfStats {
6: i32 speed;
/** Duplexity of interface */
7: i32 duplexity;
/** Drop packet count */
8: u64 drop_pkts;
}

/**
Expand All @@ -318,8 +322,6 @@ struct PhyIfStats {
4: u64 out_pkts;
/** Egress bytes count */
5: u64 out_bytes;
/** Drop packet count */
6: u64 drop_pkts;
}

/**
Expand Down
2 changes: 0 additions & 2 deletions src/vnsw/agent/uve/vrouter_uve_entry.cc
Expand Up @@ -181,7 +181,6 @@ bool VrouterUveEntry::SendVrouterMsg() {
vhost_stats.set_out_bytes(s->out_bytes);
vhost_stats.set_speed(s->speed);
vhost_stats.set_duplexity(s->duplexity);
vhost_stats.set_drop_pkts(s->drop_pkts);
uve->stats_manager()->BuildDropStats(s->drop_stats, vhost_ds);
stats.set_raw_vhost_stats(vhost_stats);
stats.set_raw_vhost_drop_stats(vhost_ds);
Expand Down Expand Up @@ -292,7 +291,6 @@ bool VrouterUveEntry::BuildPhysicalInterfaceList(map<string, PhyIfStats> &list,
phy_stat_entry.set_in_bytes(s->in_bytes);
phy_stat_entry.set_out_pkts(s->out_pkts);
phy_stat_entry.set_out_bytes(s->out_bytes);
phy_stat_entry.set_drop_pkts(s->drop_pkts);
list.insert(make_pair(intf->name(), phy_stat_entry));

PhyIfInfo phy_if_info;
Expand Down
Expand Up @@ -81,8 +81,7 @@ void AgentStatsSandeshContext::IfMsgHandler(vr_interface_req *req) {

stats->drop_stats_received = false;
stats->UpdateStats(req->get_vifr_ibytes(), req->get_vifr_ipackets(),
req->get_vifr_obytes(), req->get_vifr_opackets(),
req->get_vifr_dpackets());
req->get_vifr_obytes(), req->get_vifr_opackets());
stats->speed = req->get_vifr_speed();
stats->duplexity = req->get_vifr_duplex();
}
Expand Down

0 comments on commit 23f7275

Please sign in to comment.