Merge "msm: ipa3: added a check to ignore WIGIG client in IPA 4_11"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
67cb15e19c
86
drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c
Executable file → Normal file
86
drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c
Executable file → Normal file
@@ -90,6 +90,9 @@ enum ipa_ap_ingress_ep_enum {
|
|||||||
#define RMNET_IPA_ULSO_FEATURE \
|
#define RMNET_IPA_ULSO_FEATURE \
|
||||||
(NETIF_F_SG | NETIF_F_ALL_TSO)
|
(NETIF_F_SG | NETIF_F_ALL_TSO)
|
||||||
#define RMNET_IPA_ULSO_SIZE_LIMIT 64000
|
#define RMNET_IPA_ULSO_SIZE_LIMIT 64000
|
||||||
|
#define MAX_WIGIG_CLIENTS_IPA_5_5 3
|
||||||
|
#define MAX_WIGIG_CLIENTS_IPA_4_11 0
|
||||||
|
#define MAX_WIGIG_CLIENTS 4
|
||||||
|
|
||||||
static void rmnet_ipa_free_msg(void *buff, u32 len, u32 type);
|
static void rmnet_ipa_free_msg(void *buff, u32 len, u32 type);
|
||||||
static void rmnet_ipa_get_stats_and_update(void);
|
static void rmnet_ipa_get_stats_and_update(void);
|
||||||
@@ -4835,15 +4838,28 @@ static inline enum ipa_client_type rmnet_ipa3_get_wigig_cons(int idx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int rmnet_ipa3_get_max_wigig_clnt(void)
|
||||||
|
{
|
||||||
|
switch (ipa3_ctx->ipa_hw_type) {
|
||||||
|
case IPA_HW_v5_5:
|
||||||
|
return MAX_WIGIG_CLIENTS_IPA_5_5;
|
||||||
|
case IPA_HW_v4_11:
|
||||||
|
return MAX_WIGIG_CLIENTS_IPA_4_11;
|
||||||
|
default:
|
||||||
|
return MAX_WIGIG_CLIENTS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int rmnet_ipa3_query_tethering_stats_hw(
|
static int rmnet_ipa3_query_tethering_stats_hw(
|
||||||
struct wan_ioctl_query_tether_stats *data, bool reset)
|
struct wan_ioctl_query_tether_stats *data, bool reset)
|
||||||
{
|
{
|
||||||
#define MAX_WIGIG_CLIENTS 4
|
|
||||||
|
|
||||||
int rc = 0, index = 0, i = 0;
|
int rc = 0, index = 0, i = 0;
|
||||||
struct ipa_quota_stats_all *con_stats;
|
struct ipa_quota_stats_all *con_stats;
|
||||||
enum ipa_client_type wlan_client;
|
enum ipa_client_type wlan_client;
|
||||||
int ep_idx,wlan_ep_idx,usb_ep_idx;
|
int ep_idx, wlan_ep_idx, usb_ep_idx, max_wigig_clnts;
|
||||||
|
|
||||||
|
max_wigig_clnts = rmnet_ipa3_get_max_wigig_clnt();
|
||||||
|
|
||||||
/* qet HW-stats */
|
/* qet HW-stats */
|
||||||
rc = ipa_get_teth_stats();
|
rc = ipa_get_teth_stats();
|
||||||
@@ -4907,19 +4923,10 @@ static int rmnet_ipa3_query_tethering_stats_hw(
|
|||||||
con_stats->client[usb_ep_idx].num_ipv6_pkts,
|
con_stats->client[usb_ep_idx].num_ipv6_pkts,
|
||||||
con_stats->client[usb_ep_idx].num_ipv6_bytes);
|
con_stats->client[usb_ep_idx].num_ipv6_bytes);
|
||||||
|
|
||||||
for (i = 0; i < MAX_WIGIG_CLIENTS; i++) {
|
for (i = 0; i < max_wigig_clnts; i++) {
|
||||||
enum ipa_client_type wigig_client =
|
enum ipa_client_type wigig_client =
|
||||||
rmnet_ipa3_get_wigig_cons(i);
|
rmnet_ipa3_get_wigig_cons(i);
|
||||||
|
|
||||||
if (ipa3_ctx->ipa_hw_type >= IPA_HW_v5_5) {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG3_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG4_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ep_idx = ipa_get_ep_mapping( wigig_client );
|
ep_idx = ipa_get_ep_mapping( wigig_client );
|
||||||
|
|
||||||
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
||||||
@@ -4948,19 +4955,10 @@ static int rmnet_ipa3_query_tethering_stats_hw(
|
|||||||
con_stats->client[wlan_ep_idx].num_ipv6_bytes +
|
con_stats->client[wlan_ep_idx].num_ipv6_bytes +
|
||||||
con_stats->client[usb_ep_idx].num_ipv6_bytes;
|
con_stats->client[usb_ep_idx].num_ipv6_bytes;
|
||||||
|
|
||||||
for (i = 0; i < MAX_WIGIG_CLIENTS; i++) {
|
for (i = 0; i < max_wigig_clnts; i++) {
|
||||||
enum ipa_client_type wigig_client =
|
enum ipa_client_type wigig_client =
|
||||||
rmnet_ipa3_get_wigig_cons(i);
|
rmnet_ipa3_get_wigig_cons(i);
|
||||||
|
|
||||||
if (ipa3_ctx->ipa_hw_type >= IPA_HW_v5_5) {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG3_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG4_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ep_idx = ipa_get_ep_mapping( wigig_client );
|
ep_idx = ipa_get_ep_mapping( wigig_client );
|
||||||
|
|
||||||
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
||||||
@@ -5018,19 +5016,10 @@ static int rmnet_ipa3_query_tethering_stats_hw(
|
|||||||
con_stats->client[usb_ep_idx].num_ipv6_pkts,
|
con_stats->client[usb_ep_idx].num_ipv6_pkts,
|
||||||
con_stats->client[usb_ep_idx].num_ipv6_bytes);
|
con_stats->client[usb_ep_idx].num_ipv6_bytes);
|
||||||
|
|
||||||
for (i = 0; i < MAX_WIGIG_CLIENTS; i++) {
|
for (i = 0; i < max_wigig_clnts; i++) {
|
||||||
enum ipa_client_type wigig_client =
|
enum ipa_client_type wigig_client =
|
||||||
rmnet_ipa3_get_wigig_cons(i);
|
rmnet_ipa3_get_wigig_cons(i);
|
||||||
|
|
||||||
if (ipa3_ctx->ipa_hw_type >= IPA_HW_v5_5) {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG3_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG4_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ep_idx = ipa_get_ep_mapping( wigig_client );
|
ep_idx = ipa_get_ep_mapping( wigig_client );
|
||||||
|
|
||||||
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
||||||
@@ -5058,19 +5047,10 @@ static int rmnet_ipa3_query_tethering_stats_hw(
|
|||||||
con_stats->client[wlan_ep_idx].num_ipv6_bytes +
|
con_stats->client[wlan_ep_idx].num_ipv6_bytes +
|
||||||
con_stats->client[usb_ep_idx].num_ipv6_bytes;
|
con_stats->client[usb_ep_idx].num_ipv6_bytes;
|
||||||
|
|
||||||
for (i = 0; i < MAX_WIGIG_CLIENTS; i++) {
|
for (i = 0; i < max_wigig_clnts; i++) {
|
||||||
enum ipa_client_type wigig_client =
|
enum ipa_client_type wigig_client =
|
||||||
rmnet_ipa3_get_wigig_cons(i);
|
rmnet_ipa3_get_wigig_cons(i);
|
||||||
|
|
||||||
if (ipa3_ctx->ipa_hw_type >= IPA_HW_v5_5) {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG3_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG4_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ep_idx = ipa_get_ep_mapping( wigig_client );
|
ep_idx = ipa_get_ep_mapping( wigig_client );
|
||||||
|
|
||||||
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
||||||
@@ -5127,19 +5107,10 @@ static int rmnet_ipa3_query_tethering_stats_hw(
|
|||||||
con_stats->client[usb_ep_idx].num_ipv6_pkts,
|
con_stats->client[usb_ep_idx].num_ipv6_pkts,
|
||||||
con_stats->client[usb_ep_idx].num_ipv6_bytes);
|
con_stats->client[usb_ep_idx].num_ipv6_bytes);
|
||||||
|
|
||||||
for (i = 0; i < MAX_WIGIG_CLIENTS; i++) {
|
for (i = 0; i < max_wigig_clnts; i++) {
|
||||||
enum ipa_client_type wigig_client =
|
enum ipa_client_type wigig_client =
|
||||||
rmnet_ipa3_get_wigig_cons(i);
|
rmnet_ipa3_get_wigig_cons(i);
|
||||||
|
|
||||||
if (ipa3_ctx->ipa_hw_type >= IPA_HW_v5_5) {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG3_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG4_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ep_idx = ipa_get_ep_mapping( wigig_client );
|
ep_idx = ipa_get_ep_mapping( wigig_client );
|
||||||
|
|
||||||
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
||||||
@@ -5167,19 +5138,10 @@ static int rmnet_ipa3_query_tethering_stats_hw(
|
|||||||
con_stats->client[wlan_ep_idx].num_ipv6_bytes +
|
con_stats->client[wlan_ep_idx].num_ipv6_bytes +
|
||||||
con_stats->client[IPA_CLIENT_USB_CONS].num_ipv6_bytes;
|
con_stats->client[IPA_CLIENT_USB_CONS].num_ipv6_bytes;
|
||||||
|
|
||||||
for (i = 0; i < MAX_WIGIG_CLIENTS; i++) {
|
for (i = 0; i < max_wigig_clnts; i++) {
|
||||||
enum ipa_client_type wigig_client =
|
enum ipa_client_type wigig_client =
|
||||||
rmnet_ipa3_get_wigig_cons(i);
|
rmnet_ipa3_get_wigig_cons(i);
|
||||||
|
|
||||||
if (ipa3_ctx->ipa_hw_type >= IPA_HW_v5_5) {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG3_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (wigig_client > IPA_CLIENT_WIGIG4_CONS)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ep_idx = ipa_get_ep_mapping( wigig_client );
|
ep_idx = ipa_get_ep_mapping( wigig_client );
|
||||||
|
|
||||||
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
if (ep_idx == -1 || ep_idx >= ipa3_get_max_num_pipes())
|
||||||
|
Reference in New Issue
Block a user