diff options
author | Skylar Chang <chiaweic@codeaurora.org> | 2015-10-07 15:16:34 -0700 |
---|---|---|
committer | Skylar Chang <chiaweic@codeaurora.org> | 2015-10-08 00:11:08 -0700 |
commit | a3cc8144c34bb7da16864922572a77f6d5424226 (patch) | |
tree | 1e99ffd3ab2475a04a566b70eb2e3d2cad2e6886 /ipacm/src/IPACM_Wlan.cpp | |
parent | 5cbcdf91d7817e8daef40beea174234932a7e032 (diff) | |
download | ipacfg-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.cpp | 30 |
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"); |