summaryrefslogtreecommitdiff
path: root/ipacm/src/IPACM_Wlan.cpp
diff options
context:
space:
mode:
authorSkylar Chang <chiaweic@codeaurora.org>2015-10-07 15:16:34 -0700
committerSkylar Chang <chiaweic@codeaurora.org>2015-10-08 00:11:08 -0700
commita3cc8144c34bb7da16864922572a77f6d5424226 (patch)
tree1e99ffd3ab2475a04a566b70eb2e3d2cad2e6886 /ipacm/src/IPACM_Wlan.cpp
parent5cbcdf91d7817e8daef40beea174234932a7e032 (diff)
downloadipacfg-mgr-a3cc8144c34bb7da16864922572a77f6d5424226.tar.gz
IPACM: Fix the UL traffic taking SW-exception
When LTE comes first with usb/wlan-tethering enable lately from android UI, IPACM failed to add modem UL filter rules if it's getting UPSTREAM_add event from CNE earlier then the usb/wlan netdev creation event from netlink. The fix is to handle this timing issue. Change-Id: I6452c1bb880bcaec2232784b117e22a2d12c6e8f
Diffstat (limited to 'ipacm/src/IPACM_Wlan.cpp')
-rw-r--r--ipacm/src/IPACM_Wlan.cpp30
1 files changed, 16 insertions, 14 deletions
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp
index 530e2bf..1971e90 100644
--- a/ipacm/src/IPACM_Wlan.cpp
+++ b/ipacm/src/IPACM_Wlan.cpp
@@ -410,9 +410,10 @@ void IPACM_Wlan::event_callback(ipa_cm_event_id event, void *param)
IPACMERR("No event data is found.\n");
return;
}
- IPACMDBG_H("Backhaul is sta mode?%d, if_index_tether:%d\n", data_wan_tether->is_sta,
- data_wan_tether->if_index_tether);
- if (iface_ipa_index_query(data_wan_tether->if_index_tether) == ipa_if_num)
+ IPACMDBG_H("Backhaul is sta mode?%d, if_index_tether:%d tether_if_name:%s\n", data_wan_tether->is_sta,
+ data_wan_tether->if_index_tether,
+ IPACM_Iface::ipacmcfg->iface_table[data_wan_tether->if_index_tether].iface_name);
+ if (data_wan_tether->if_index_tether == ipa_if_num)
{
if(ip_type == IPA_IP_v4 || ip_type == IPA_IP_MAX)
{
@@ -438,9 +439,10 @@ void IPACM_Wlan::event_callback(ipa_cm_event_id event, void *param)
IPACMERR("No event data is found.\n");
return;
}
- IPACMDBG_H("Backhaul is sta mode?%d, if_index_tether:%d\n", data_wan_tether->is_sta,
- data_wan_tether->if_index_tether);
- if (iface_ipa_index_query(data_wan_tether->if_index_tether) == ipa_if_num)
+ IPACMDBG_H("Backhaul is sta mode?%d, if_index_tether:%d tether_if_name:%s\n", data_wan_tether->is_sta,
+ data_wan_tether->if_index_tether,
+ IPACM_Iface::ipacmcfg->iface_table[data_wan_tether->if_index_tether].iface_name);
+ if (data_wan_tether->if_index_tether == ipa_if_num)
{
if(ip_type == IPA_IP_v6 || ip_type == IPA_IP_MAX)
{
@@ -469,10 +471,10 @@ void IPACM_Wlan::event_callback(ipa_cm_event_id event, void *param)
IPACMERR("No event data is found.\n");
return;
}
- IPACMDBG_H("Backhaul is sta mode?%d, if_index_tether:%d, itself %d\n", data_wan_tether->is_sta,
- iface_ipa_index_query(data_wan_tether->if_index_tether),
- ipa_if_num);
- if (iface_ipa_index_query(data_wan_tether->if_index_tether) == ipa_if_num)
+ IPACMDBG_H("Backhaul is sta mode?%d, if_index_tether:%d tether_if_name:%s\n", data_wan_tether->is_sta,
+ data_wan_tether->if_index_tether,
+ IPACM_Iface::ipacmcfg->iface_table[data_wan_tether->if_index_tether].iface_name);
+ if (data_wan_tether->if_index_tether == ipa_if_num)
{
if(data_wan_tether->is_sta == false && wlan_ap_index > 0)
{
@@ -497,10 +499,10 @@ void IPACM_Wlan::event_callback(ipa_cm_event_id event, void *param)
IPACMERR("No event data is found.\n");
return;
}
- IPACMDBG_H("Backhaul is sta mode?%d, if_index_tether:%d, itself %d\n", data_wan_tether->is_sta,
- iface_ipa_index_query(data_wan_tether->if_index_tether),
- ipa_if_num);
- if (iface_ipa_index_query(data_wan_tether->if_index_tether) == ipa_if_num)
+ IPACMDBG_H("Backhaul is sta mode?%d, if_index_tether:%d tether_if_name:%s\n", data_wan_tether->is_sta,
+ data_wan_tether->if_index_tether,
+ IPACM_Iface::ipacmcfg->iface_table[data_wan_tether->if_index_tether].iface_name);
+ if (data_wan_tether->if_index_tether == ipa_if_num)
{
/* clean up v6 RT rules*/
IPACMDBG_H("Received IPA_WAN_V6_DOWN in WLAN-instance and need clean up client IPv6 address \n");