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
This commit is contained in:
Manjunathappa Prakash 2019-02-25 18:18:57 -08:00 • committed by nshrivas
commit f39d2374a2
4 changed files with 15 additions and 19 deletions

View file

@ -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;

View file

@ -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,

View file

@ -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;
}

View file

@ -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,