Browse Source

qcacld-3.0: Add stats for Rx gratuitous_arp and multicast_replay drops

Remove logging of Rx drops due to gratuitous_arp and multicast_replay
packets. Add separate stats counter and log it part of periodic stats.

Change-Id: Ib70505bbb8e6b2d363e04493f9e3d2d99e417e8d
CRs-Fixed: 2403211
Manjunathappa Prakash 6 years ago
parent
commit
f39d2374a2

+ 1 - 0
core/hdd/inc/wlan_hdd_main.h

@@ -440,6 +440,7 @@ struct hdd_tx_rx_stats {
 	__u32 rx_dropped[NUM_CPUS];
 	__u32 rx_delivered[NUM_CPUS];
 	__u32 rx_refused[NUM_CPUS];
+	qdf_atomic_t rx_usolict_arp_n_mcast_drp;
 	/* rx gro */
 	__u32 rx_aggregated;
 	__u32 rx_non_aggregated;

+ 4 - 2
core/hdd/src/wlan_hdd_stats.c

@@ -6228,8 +6228,10 @@ void wlan_hdd_display_txrx_stats(struct hdd_context *ctx)
 				  i, stats->rx_packets[i], stats->rx_dropped[i],
 				  stats->rx_delivered[i], stats->rx_refused[i]);
 		}
-		hdd_debug("RX - packets %u, dropped %u, delivered %u, refused %u GRO - agg %u non-agg %u flushes(%u %u) disabled(conc %u low-tput %u)",
-			  total_rx_pkt, total_rx_dropped, total_rx_delv,
+		hdd_debug("RX - packets %u, dropped %u, unsolict_arp_n_mcast_drp %u, delivered %u, refused %u GRO - agg %u non-agg %u flushes(%u %u) disabled(conc %u low-tput %u)",
+			  total_rx_pkt, total_rx_dropped,
+			  qdf_atomic_read(&stats->rx_usolict_arp_n_mcast_drp),
+			  total_rx_delv,
 			  total_rx_refused, stats->rx_aggregated,
 			  stats->rx_non_aggregated, stats->rx_gro_flushes,
 			  stats->rx_gro_force_flushes,

+ 6 - 15
core/hdd/src/wlan_hdd_tx_rx.c

@@ -2042,18 +2042,10 @@ QDF_STATUS hdd_rx_packet_cbk(void *adapter_context,
 		sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter);
 		if ((sta_ctx->conn_info.proxyARPService) &&
 		    hdd_is_gratuitous_arp_unsolicited_na(skb)) {
-			uint32_t rx_dropped;
-
-			rx_dropped = ++adapter->hdd_stats.tx_rx_stats.
-							rx_dropped[cpu_index];
-			/* rate limit error messages to 1/8th */
-			if ((rx_dropped & 0x07) == 0)
-				QDF_TRACE(QDF_MODULE_ID_HDD_DATA,
-					  QDF_TRACE_LEVEL_INFO,
-					  "%s: Dropping HS 2.0 Gratuitous ARP or Unsolicited NA count=%u",
-					  __func__, rx_dropped);
-			/* Remove SKB from internal tracking table before submitting
-			 * it to stack
+			qdf_atomic_inc(&adapter->hdd_stats.tx_rx_stats.
+						rx_usolict_arp_n_mcast_drp);
+			/* Remove SKB from internal tracking table before
+			 * submitting it to stack.
 			 */
 			qdf_nbuf_free(skb);
 			continue;
@@ -2092,9 +2084,8 @@ QDF_STATUS hdd_rx_packet_cbk(void *adapter_context,
 		/* Check & drop replayed mcast packets (for IPV6) */
 		if (hdd_ctx->config->multicast_replay_filter &&
 				hdd_is_mcast_replay(skb)) {
-			++adapter->hdd_stats.tx_rx_stats.rx_dropped[cpu_index];
-			QDF_TRACE(QDF_MODULE_ID_HDD_DATA, QDF_TRACE_LEVEL_DEBUG,
-				"%s: Dropping multicast replay pkt", __func__);
+			qdf_atomic_inc(&adapter->hdd_stats.tx_rx_stats.
+						rx_usolict_arp_n_mcast_drp);
 			qdf_nbuf_free(skb);
 			continue;
 		}

+ 4 - 2
core/hdd/src/wlan_hdd_wext.c

@@ -3108,7 +3108,7 @@ void hdd_wlan_get_stats(struct hdd_adapter *adapter, uint16_t *length,
 			"\n[dropped]    BK %u, BE %u, VI %u, VO %u"
 			"\n[classified] BK %u, BE %u, VI %u, VO %u"
 			"\n\nReceive[%lu] - "
-			"packets %u, dropped %u, delivered %u, refused %u\n"
+			"packets %u, dropped %u, unsolict_arp_n_mcast_drp %u, delivered %u, refused %u\n"
 			"GRO - agg %u non-agg %u flushes(%u %u) disabled(conc %u low-tput %u)\n",
 			qdf_system_ticks(),
 			stats->tx_called,
@@ -3123,7 +3123,9 @@ void hdd_wlan_get_stats(struct hdd_adapter *adapter, uint16_t *length,
 			stats->tx_classified_ac[SME_AC_VI],
 			stats->tx_classified_ac[SME_AC_VO],
 			qdf_system_ticks(),
-			total_rx_pkt, total_rx_dropped, total_rx_delv,
+			total_rx_pkt, total_rx_dropped,
+			qdf_atomic_read(&stats->rx_usolict_arp_n_mcast_drp),
+			total_rx_delv,
 			total_rx_refused,
 			stats->rx_aggregated, stats->rx_non_aggregated,
 			stats->rx_gro_flushes,