Loading drivers/platform/msm/ipa/ipa_v3/ipa_hw_stats.c +41 −16 Original line number Diff line number Diff line Loading @@ -39,6 +39,25 @@ int ipa_hw_stats_init(void) return -ENOMEM; } /* enable prod mask */ if (ipa3_ctx->platform_type == IPA_PLAT_TYPE_APQ) { teth_stats_init->prod_mask = ( IPA_CLIENT_BIT_32(IPA_CLIENT_MHI_PRIME_TETH_PROD) | IPA_CLIENT_BIT_32(IPA_CLIENT_USB_PROD) | IPA_CLIENT_BIT_32(IPA_CLIENT_WLAN1_PROD)); if (IPA_CLIENT_BIT_32(IPA_CLIENT_MHI_PRIME_TETH_PROD)) { ep_index = ipa3_get_ep_mapping( IPA_CLIENT_MHI_PRIME_TETH_PROD); if (ep_index == -1) { IPAERR("Invalid client.\n"); kfree(teth_stats_init); return -EINVAL; } teth_stats_init->dst_ep_mask[ep_index] = (IPA_CLIENT_BIT_32(IPA_CLIENT_WLAN1_CONS) | IPA_CLIENT_BIT_32(IPA_CLIENT_USB_CONS)); } } else { teth_stats_init->prod_mask = ( IPA_CLIENT_BIT_32(IPA_CLIENT_Q6_WAN_PROD) | IPA_CLIENT_BIT_32(IPA_CLIENT_USB_PROD) | Loading @@ -55,6 +74,7 @@ int ipa_hw_stats_init(void) (IPA_CLIENT_BIT_32(IPA_CLIENT_WLAN1_CONS) | IPA_CLIENT_BIT_32(IPA_CLIENT_USB_CONS)); } } if (IPA_CLIENT_BIT_32(IPA_CLIENT_USB_PROD)) { ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB_PROD); Loading @@ -64,9 +84,12 @@ int ipa_hw_stats_init(void) return -EINVAL; } /* enable addtional pipe monitoring for pcie modem */ if (ipa3_ctx->ipa_hw_type == IPA_HW_v4_1) if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_1) teth_stats_init->dst_ep_mask[ep_index] = (IPA_CLIENT_BIT_32(IPA_CLIENT_Q6_WAN_CONS) | (IPA_CLIENT_BIT_32( IPA_CLIENT_Q6_WAN_CONS) | IPA_CLIENT_BIT_32( IPA_CLIENT_MHI_PRIME_TETH_CONS) | IPA_CLIENT_BIT_32( IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS)); else Loading @@ -82,9 +105,11 @@ int ipa_hw_stats_init(void) return -EINVAL; } /* enable addtional pipe monitoring for pcie modem*/ if (ipa3_ctx->ipa_hw_type == IPA_HW_v4_1) if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_1) teth_stats_init->dst_ep_mask[ep_index] = (IPA_CLIENT_BIT_32(IPA_CLIENT_Q6_WAN_CONS) | IPA_CLIENT_BIT_32( IPA_CLIENT_MHI_PRIME_TETH_CONS) | IPA_CLIENT_BIT_32( IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS)); else Loading drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +48 −26 Original line number Diff line number Diff line Loading @@ -3625,7 +3625,7 @@ static int rmnet_ipa3_query_tethering_stats_modem( static int rmnet_ipa3_query_tethering_stats_hw( struct wan_ioctl_query_tether_stats *data, bool reset) { int rc = 0; int rc = 0, index = 0; struct ipa_quota_stats_all *con_stats; struct ipa_quota_stats *client; Loading @@ -3643,12 +3643,24 @@ static int rmnet_ipa3_query_tethering_stats_hw( IPAWANERR("no memory\n"); return -ENOMEM; } rc = ipa_query_teth_stats(IPA_CLIENT_Q6_WAN_PROD, con_stats, reset); if (rmnet_ipa3_ctx->ipa_config_is_apq) { rc = ipa_query_teth_stats(IPA_CLIENT_MHI_PRIME_TETH_PROD, con_stats, reset); if (rc) { IPAERR("MHI_PRIME_TETH_PROD query failed %d,\n", rc); kfree(con_stats); return rc; } } else { rc = ipa_query_teth_stats(IPA_CLIENT_Q6_WAN_PROD, con_stats, reset); if (rc) { IPAERR("IPA_CLIENT_Q6_WAN_PROD query failed %d,\n", rc); kfree(con_stats); return rc; } } IPAWANDBG("wlan: v4_rx_p(%d) b(%lld) v6_rx_p(%d) b(%lld)\n", con_stats->client[IPA_CLIENT_WLAN1_CONS].num_ipv4_pkts, con_stats->client[IPA_CLIENT_WLAN1_CONS].num_ipv4_bytes, Loading Loading @@ -3690,21 +3702,26 @@ static int rmnet_ipa3_query_tethering_stats_hw( return rc; } if (rmnet_ipa3_ctx->ipa_config_is_apq) index = IPA_CLIENT_MHI_PRIME_TETH_CONS; else index = IPA_CLIENT_Q6_WAN_CONS; IPAWANDBG("usb: v4_tx_p(%d) b(%lld) v6_tx_p(%d) b(%lld)\n", con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_pkts, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_bytes, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_pkts, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_bytes); con_stats->client[index].num_ipv4_pkts, con_stats->client[index].num_ipv4_bytes, con_stats->client[index].num_ipv6_pkts, con_stats->client[index].num_ipv6_bytes); /* update the USB UL stats */ data->ipv4_tx_packets = con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_pkts; con_stats->client[index].num_ipv4_pkts; data->ipv6_tx_packets = con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_pkts; con_stats->client[index].num_ipv6_pkts; data->ipv4_tx_bytes = con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_bytes; con_stats->client[index].num_ipv4_bytes; data->ipv6_tx_bytes = con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_bytes; con_stats->client[index].num_ipv6_bytes; /* usb UL stats on cv2 */ client = &con_stats->client[IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS]; Loading Loading @@ -3733,21 +3750,26 @@ static int rmnet_ipa3_query_tethering_stats_hw( return rc; } if (rmnet_ipa3_ctx->ipa_config_is_apq) index = IPA_CLIENT_MHI_PRIME_TETH_CONS; else index = IPA_CLIENT_Q6_WAN_CONS; IPAWANDBG("wlan: v4_tx_p(%d) b(%lld) v6_tx_p(%d) b(%lld)\n", con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_pkts, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_bytes, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_pkts, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_bytes); con_stats->client[index].num_ipv4_pkts, con_stats->client[index].num_ipv4_bytes, con_stats->client[index].num_ipv6_pkts, con_stats->client[index].num_ipv6_bytes); /* update the wlan UL stats */ data->ipv4_tx_packets += con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_pkts; data->ipv6_tx_packets += con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_pkts; data->ipv4_tx_bytes += con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_bytes; data->ipv6_tx_bytes += con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_bytes; data->ipv4_tx_packets = con_stats->client[index].num_ipv4_pkts; data->ipv6_tx_packets = con_stats->client[index].num_ipv6_pkts; data->ipv4_tx_bytes = con_stats->client[index].num_ipv4_bytes; data->ipv6_tx_bytes = con_stats->client[index].num_ipv6_bytes; /* wlan UL stats on cv2 */ IPAWANDBG("wlan (cv2): v4_tx_p(%d) b(%lld) v6_tx_p(%d) b(%lld)\n", Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_hw_stats.c +41 −16 Original line number Diff line number Diff line Loading @@ -39,6 +39,25 @@ int ipa_hw_stats_init(void) return -ENOMEM; } /* enable prod mask */ if (ipa3_ctx->platform_type == IPA_PLAT_TYPE_APQ) { teth_stats_init->prod_mask = ( IPA_CLIENT_BIT_32(IPA_CLIENT_MHI_PRIME_TETH_PROD) | IPA_CLIENT_BIT_32(IPA_CLIENT_USB_PROD) | IPA_CLIENT_BIT_32(IPA_CLIENT_WLAN1_PROD)); if (IPA_CLIENT_BIT_32(IPA_CLIENT_MHI_PRIME_TETH_PROD)) { ep_index = ipa3_get_ep_mapping( IPA_CLIENT_MHI_PRIME_TETH_PROD); if (ep_index == -1) { IPAERR("Invalid client.\n"); kfree(teth_stats_init); return -EINVAL; } teth_stats_init->dst_ep_mask[ep_index] = (IPA_CLIENT_BIT_32(IPA_CLIENT_WLAN1_CONS) | IPA_CLIENT_BIT_32(IPA_CLIENT_USB_CONS)); } } else { teth_stats_init->prod_mask = ( IPA_CLIENT_BIT_32(IPA_CLIENT_Q6_WAN_PROD) | IPA_CLIENT_BIT_32(IPA_CLIENT_USB_PROD) | Loading @@ -55,6 +74,7 @@ int ipa_hw_stats_init(void) (IPA_CLIENT_BIT_32(IPA_CLIENT_WLAN1_CONS) | IPA_CLIENT_BIT_32(IPA_CLIENT_USB_CONS)); } } if (IPA_CLIENT_BIT_32(IPA_CLIENT_USB_PROD)) { ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB_PROD); Loading @@ -64,9 +84,12 @@ int ipa_hw_stats_init(void) return -EINVAL; } /* enable addtional pipe monitoring for pcie modem */ if (ipa3_ctx->ipa_hw_type == IPA_HW_v4_1) if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_1) teth_stats_init->dst_ep_mask[ep_index] = (IPA_CLIENT_BIT_32(IPA_CLIENT_Q6_WAN_CONS) | (IPA_CLIENT_BIT_32( IPA_CLIENT_Q6_WAN_CONS) | IPA_CLIENT_BIT_32( IPA_CLIENT_MHI_PRIME_TETH_CONS) | IPA_CLIENT_BIT_32( IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS)); else Loading @@ -82,9 +105,11 @@ int ipa_hw_stats_init(void) return -EINVAL; } /* enable addtional pipe monitoring for pcie modem*/ if (ipa3_ctx->ipa_hw_type == IPA_HW_v4_1) if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_1) teth_stats_init->dst_ep_mask[ep_index] = (IPA_CLIENT_BIT_32(IPA_CLIENT_Q6_WAN_CONS) | IPA_CLIENT_BIT_32( IPA_CLIENT_MHI_PRIME_TETH_CONS) | IPA_CLIENT_BIT_32( IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS)); else Loading
drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +48 −26 Original line number Diff line number Diff line Loading @@ -3625,7 +3625,7 @@ static int rmnet_ipa3_query_tethering_stats_modem( static int rmnet_ipa3_query_tethering_stats_hw( struct wan_ioctl_query_tether_stats *data, bool reset) { int rc = 0; int rc = 0, index = 0; struct ipa_quota_stats_all *con_stats; struct ipa_quota_stats *client; Loading @@ -3643,12 +3643,24 @@ static int rmnet_ipa3_query_tethering_stats_hw( IPAWANERR("no memory\n"); return -ENOMEM; } rc = ipa_query_teth_stats(IPA_CLIENT_Q6_WAN_PROD, con_stats, reset); if (rmnet_ipa3_ctx->ipa_config_is_apq) { rc = ipa_query_teth_stats(IPA_CLIENT_MHI_PRIME_TETH_PROD, con_stats, reset); if (rc) { IPAERR("MHI_PRIME_TETH_PROD query failed %d,\n", rc); kfree(con_stats); return rc; } } else { rc = ipa_query_teth_stats(IPA_CLIENT_Q6_WAN_PROD, con_stats, reset); if (rc) { IPAERR("IPA_CLIENT_Q6_WAN_PROD query failed %d,\n", rc); kfree(con_stats); return rc; } } IPAWANDBG("wlan: v4_rx_p(%d) b(%lld) v6_rx_p(%d) b(%lld)\n", con_stats->client[IPA_CLIENT_WLAN1_CONS].num_ipv4_pkts, con_stats->client[IPA_CLIENT_WLAN1_CONS].num_ipv4_bytes, Loading Loading @@ -3690,21 +3702,26 @@ static int rmnet_ipa3_query_tethering_stats_hw( return rc; } if (rmnet_ipa3_ctx->ipa_config_is_apq) index = IPA_CLIENT_MHI_PRIME_TETH_CONS; else index = IPA_CLIENT_Q6_WAN_CONS; IPAWANDBG("usb: v4_tx_p(%d) b(%lld) v6_tx_p(%d) b(%lld)\n", con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_pkts, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_bytes, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_pkts, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_bytes); con_stats->client[index].num_ipv4_pkts, con_stats->client[index].num_ipv4_bytes, con_stats->client[index].num_ipv6_pkts, con_stats->client[index].num_ipv6_bytes); /* update the USB UL stats */ data->ipv4_tx_packets = con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_pkts; con_stats->client[index].num_ipv4_pkts; data->ipv6_tx_packets = con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_pkts; con_stats->client[index].num_ipv6_pkts; data->ipv4_tx_bytes = con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_bytes; con_stats->client[index].num_ipv4_bytes; data->ipv6_tx_bytes = con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_bytes; con_stats->client[index].num_ipv6_bytes; /* usb UL stats on cv2 */ client = &con_stats->client[IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS]; Loading Loading @@ -3733,21 +3750,26 @@ static int rmnet_ipa3_query_tethering_stats_hw( return rc; } if (rmnet_ipa3_ctx->ipa_config_is_apq) index = IPA_CLIENT_MHI_PRIME_TETH_CONS; else index = IPA_CLIENT_Q6_WAN_CONS; IPAWANDBG("wlan: v4_tx_p(%d) b(%lld) v6_tx_p(%d) b(%lld)\n", con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_pkts, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_bytes, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_pkts, con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_bytes); con_stats->client[index].num_ipv4_pkts, con_stats->client[index].num_ipv4_bytes, con_stats->client[index].num_ipv6_pkts, con_stats->client[index].num_ipv6_bytes); /* update the wlan UL stats */ data->ipv4_tx_packets += con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_pkts; data->ipv6_tx_packets += con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_pkts; data->ipv4_tx_bytes += con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv4_bytes; data->ipv6_tx_bytes += con_stats->client[IPA_CLIENT_Q6_WAN_CONS].num_ipv6_bytes; data->ipv4_tx_packets = con_stats->client[index].num_ipv4_pkts; data->ipv6_tx_packets = con_stats->client[index].num_ipv6_pkts; data->ipv4_tx_bytes = con_stats->client[index].num_ipv4_bytes; data->ipv6_tx_bytes = con_stats->client[index].num_ipv6_bytes; /* wlan UL stats on cv2 */ IPAWANDBG("wlan (cv2): v4_tx_p(%d) b(%lld) v6_tx_p(%d) b(%lld)\n", Loading