From 5d291c59ec81983ba42d119d90a0e4f87de29dec Mon Sep 17 00:00:00 2001 From: Skylar Chang Date: Tue, 21 Aug 2018 11:23:58 -0700 Subject: ipacm: get usb_link_up from usb-driver Made the change to get usb_link_up from usb-driver instead of using netlink event to resolve the timing issue between usb-driver and android framework. Also not self-posting the usb-up from downstream event which was used to support ipcam restart phase 3. Change-Id: I3549cfbfbb5f41fa5ed99a43f00c6d8b4333b8e5 --- ipacm/src/IPACM_Netlink.cpp | 6 ++++-- ipacm/src/IPACM_OffloadManager.cpp | 2 -- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ipacm/src/IPACM_Netlink.cpp b/ipacm/src/IPACM_Netlink.cpp index 9c35497..fa4b8b7 100644 --- a/ipacm/src/IPACM_Netlink.cpp +++ b/ipacm/src/IPACM_Netlink.cpp @@ -686,7 +686,8 @@ static int ipa_nl_decode_nlmsg evt_data.evt_data = data_fid; IPACM_EvtDispatcher::PostEvt(&evt_data); } - + /* Andorid platform will use events from usb-driver directly */ +#ifndef FEATURE_IPA_ANDROID /* Add IPACM support for ECM plug-in/plug_out */ /*-------------------------------------------------------------------------- Check if the interface is running.If its a RTM_NEWLINK and the interface @@ -723,7 +724,7 @@ static int ipa_nl_decode_nlmsg ---------------------------------------------------------------------------*/ evt_data.event = IPA_USB_LINK_UP_EVENT; evt_data.evt_data = data_fid; - IPACMDBG_H("Posting usb IPA_LINK_UP_EVENT with if index: %d\n", + IPACMDBG_H("Posting usb IPA_USB_LINK_UP_EVENT with if index: %d\n", data_fid->if_index); IPACM_EvtDispatcher::PostEvt(&evt_data); } @@ -754,6 +755,7 @@ static int ipa_nl_decode_nlmsg data_fid->if_index); IPACM_EvtDispatcher::PostEvt(&evt_data); } +#endif /* not defined(FEATURE_IPA_ANDROID)*/ } break; diff --git a/ipacm/src/IPACM_OffloadManager.cpp b/ipacm/src/IPACM_OffloadManager.cpp index d9a9f4b..4fd6980 100644 --- a/ipacm/src/IPACM_OffloadManager.cpp +++ b/ipacm/src/IPACM_OffloadManager.cpp @@ -233,8 +233,6 @@ RET IPACM_OffloadManager::addDownstream(const char * downstream_name, const Pref if (cache_need) { IPACMDBG_H("addDownstream name(%s) currently not support in ipa \n", downstream_name); - /* add ipacm restart support */ - push_iface_up(downstream_name, false); /* copy to the cache */ for(int i = 0; i < MAX_EVENT_CACHE ;i++) -- cgit v1.2.3 From da264b769615a8d3a46ccf19ae21de16b0f55072 Mon Sep 17 00:00:00 2001 From: Skylar Chang Date: Fri, 12 Oct 2018 00:31:46 -0700 Subject: ipacm: fix tcp fragment rule for IPv6 on LTE Fix the ipv6 frag pkts going to sw-exception issue. Update the TCP ipv6 fragment rule attribute on LTE use-case. Change-Id: I53dcdf624cbc29146a7e095e7cc043584e919795 --- ipacm/src/IPACM_Wan.cpp | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp index 1a34388..0c2c395 100644 --- a/ipacm/src/IPACM_Wan.cpp +++ b/ipacm/src/IPACM_Wan.cpp @@ -3765,34 +3765,11 @@ int IPACM_Wan::add_dft_filtering_rule(struct ipa_flt_rule_add *rules, int rule_o memcpy(&(rules[rule_offset + 2]), &flt_rule_entry, sizeof(struct ipa_flt_rule_add)); - /* Add the fragment filtering rule. */ - memset(&flt_rule_entry, 0, sizeof(struct ipa_flt_rule_add)); - - flt_rule_entry.at_rear = true; - flt_rule_entry.flt_rule_hdl = -1; - flt_rule_entry.status = -1; - - flt_rule_entry.rule.retain_hdr = 1; - flt_rule_entry.rule.to_uc = 0; - flt_rule_entry.rule.eq_attrib_type = 1; - flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING; -#ifdef FEATURE_IPA_V3 - flt_rule_entry.rule.hashable = true; -#endif - flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx; - flt_rule_entry.rule.eq_attrib.rule_eq_bitmap |= (1<<1); - flt_rule_entry.rule.eq_attrib.protocol_eq_present = 1; - flt_rule_entry.rule.eq_attrib.protocol_eq = IPACM_FIREWALL_IPPROTO_TCP; - flt_rule_entry.rule.attrib.u.v6.next_hdr = (uint8_t)IPACM_FIREWALL_IPPROTO_TCP; - /* Configuring fragment Filtering Rule */ - memcpy(&flt_rule_entry.rule.attrib, - &rx_prop->rx[0].attrib, - sizeof(flt_rule_entry.rule.attrib)); - /* remove meta data mask since we only install default flt rules once for all modem PDN*/ - flt_rule_entry.rule.attrib.attrib_mask &= ~((uint32_t)IPA_FLT_META_DATA); - + flt_rule_entry.rule.attrib.attrib_mask &= ~((uint32_t)IPA_FLT_DST_ADDR); flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_FRAGMENT; + flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_NEXT_HDR; + flt_rule_entry.rule.attrib.u.v6.next_hdr = IPACM_FIREWALL_IPPROTO_TCP; memset(&flt_eq, 0, sizeof(flt_eq)); memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib)); -- cgit v1.2.3 From e929ca09e7a7bf5427d77cf06c8ae16ca518f23d Mon Sep 17 00:00:00 2001 From: mjavid Date: Fri, 30 Nov 2018 14:22:28 +0530 Subject: ipacm: Fix compilation error for switch case Insert fallthrough statement to fix compilation error for unannotated fall-through between switch labels. Change-Id: Ibc5f3f0cdc29e8144a47059c31ce15441a90ddac --- ipacm/src/IPACM_Main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ipacm/src/IPACM_Main.cpp b/ipacm/src/IPACM_Main.cpp index 1292d04..4716a47 100644 --- a/ipacm/src/IPACM_Main.cpp +++ b/ipacm/src/IPACM_Main.cpp @@ -607,6 +607,7 @@ void* ipa_driver_msg_notifier(void *param) case WLAN_SWITCH_TO_SCC: IPACMDBG_H("Received WLAN_SWITCH_TO_SCC\n"); + [[fallthrough]]; case WLAN_WDI_ENABLE: IPACMDBG_H("Received WLAN_WDI_ENABLE\n"); if (IPACM_Iface::ipacmcfg->isMCC_Mode == true) @@ -618,6 +619,7 @@ void* ipa_driver_msg_notifier(void *param) continue; case WLAN_SWITCH_TO_MCC: IPACMDBG_H("Received WLAN_SWITCH_TO_MCC\n"); + [[fallthrough]]; case WLAN_WDI_DISABLE: IPACMDBG_H("Received WLAN_WDI_DISABLE\n"); if (IPACM_Iface::ipacmcfg->isMCC_Mode == false) -- cgit v1.2.3 From d9aa38ed8d5db53f2531f8d9f96c5625a0c02642 Mon Sep 17 00:00:00 2001 From: Mohammed Javid Date: Mon, 16 Jul 2018 21:41:27 +0530 Subject: ipacm: KW fix Initialize pointer before use to fix KW issue. Change-Id: I023d67c13528c33e625d60e030952b0377b5fd27 --- ipacm/src/IPACM_OffloadManager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ipacm/src/IPACM_OffloadManager.cpp b/ipacm/src/IPACM_OffloadManager.cpp index 4fd6980..34c945b 100644 --- a/ipacm/src/IPACM_OffloadManager.cpp +++ b/ipacm/src/IPACM_OffloadManager.cpp @@ -794,7 +794,7 @@ bool IPACM_OffloadManager::search_framwork_cache(char * interface_name) int IPACM_OffloadManager::push_iface_up(const char * if_name, bool upstream) { ipacm_cmd_q_data evt_data; - ipacm_event_data_fid *data_fid; + ipacm_event_data_fid *data_fid = NULL; ipacm_event_data_mac *data = NULL; int index; @@ -867,7 +867,7 @@ int IPACM_OffloadManager::push_iface_up(const char * if_name, bool upstream) evt_data.event = IPA_WLAN_STA_LINK_UP_EVENT; evt_data.evt_data = data; IPACMDBG_H("Posting IPA_WLAN_STA_LINK_UP_EVENT with if index: %d\n", - data_fid->if_index); + data->if_index); IPACM_EvtDispatcher::PostEvt(&evt_data); } -- cgit v1.2.3