diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index d60169523848..e80292b8d1d9 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/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; diff --git a/core/hdd/src/wlan_hdd_stats.c b/core/hdd/src/wlan_hdd_stats.c index e0c102114a19..d457bc6d3b63 100644 --- a/core/hdd/src/wlan_hdd_stats.c +++ b/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, diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 4f9201762c56..cfebb7f54b9c 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/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; } diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c index b23ab1a7805d..0358d2ea00eb 100644 --- a/core/hdd/src/wlan_hdd_wext.c +++ b/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,