diff --git a/src/vnsw/agent/uve/interface.sandesh b/src/vnsw/agent/uve/interface.sandesh index 7f6d818cd40..c205505451b 100644 --- a/src/vnsw/agent/uve/interface.sandesh +++ b/src/vnsw/agent/uve/interface.sandesh @@ -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; } /** diff --git a/src/vnsw/agent/uve/interface_uve_stats_table.cc b/src/vnsw/agent/uve/interface_uve_stats_table.cc index 6433cafaab9..4b7cd08cc94 100644 --- a/src/vnsw/agent/uve/interface_uve_stats_table.cc +++ b/src/vnsw/agent/uve/interface_uve_stats_table.cc @@ -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 */ diff --git a/src/vnsw/agent/uve/stats_manager.cc b/src/vnsw/agent/uve/stats_manager.cc index 3e68cefc3f7..cfa0282af0d 100644 --- a/src/vnsw/agent/uve/stats_manager.cc +++ b/src/vnsw/agent/uve/stats_manager.cc @@ -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() { @@ -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; } diff --git a/src/vnsw/agent/uve/stats_manager.h b/src/vnsw/agent/uve/stats_manager.h index acb38d92e92..c6a6d45ccf1 100644 --- a/src/vnsw/agent/uve/stats_manager.h +++ b/src/vnsw/agent/uve/stats_manager.h @@ -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; @@ -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; diff --git a/src/vnsw/agent/uve/test/test_vrouter_uve.cc b/src/vnsw/agent/uve/test/test_vrouter_uve.cc index 8f39d421197..433247e53bc 100644 --- a/src/vnsw/agent/uve/test/test_vrouter_uve.cc +++ b/src/vnsw/agent/uve/test/test_vrouter_uve.cc @@ -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; } diff --git a/src/vnsw/agent/uve/vrouter.sandesh b/src/vnsw/agent/uve/vrouter.sandesh index 14c9f4ec705..67a6cdc391f 100644 --- a/src/vnsw/agent/uve/vrouter.sandesh +++ b/src/vnsw/agent/uve/vrouter.sandesh @@ -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 } /** @@ -302,8 +308,6 @@ struct AgentIfStats { 6: i32 speed; /** Duplexity of interface */ 7: i32 duplexity; - /** Drop packet count */ - 8: u64 drop_pkts; } /** @@ -318,8 +322,6 @@ struct PhyIfStats { 4: u64 out_pkts; /** Egress bytes count */ 5: u64 out_bytes; - /** Drop packet count */ - 6: u64 drop_pkts; } /** diff --git a/src/vnsw/agent/uve/vrouter_uve_entry.cc b/src/vnsw/agent/uve/vrouter_uve_entry.cc index 56e382d9505..c9f137044f7 100644 --- a/src/vnsw/agent/uve/vrouter_uve_entry.cc +++ b/src/vnsw/agent/uve/vrouter_uve_entry.cc @@ -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); @@ -292,7 +291,6 @@ bool VrouterUveEntry::BuildPhysicalInterfaceList(map &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; diff --git a/src/vnsw/agent/vrouter/stats_collector/agent_stats_sandesh_context.cc b/src/vnsw/agent/vrouter/stats_collector/agent_stats_sandesh_context.cc index cb5cbaa5bb3..8ed7e1f645c 100644 --- a/src/vnsw/agent/vrouter/stats_collector/agent_stats_sandesh_context.cc +++ b/src/vnsw/agent/vrouter/stats_collector/agent_stats_sandesh_context.cc @@ -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(); }