diff options
| author | Skylar Chang <chiaweic@codeaurora.org> | 2018-10-12 00:31:46 -0700 |
|---|---|---|
| committer | Skylar Chang <chiaweic@codeaurora.org> | 2018-10-19 14:50:43 -0700 |
| commit | a728574dfec734dc8a11292cb0707a2542124828 (patch) | |
| tree | d11940fcd85fb22991bb94f7d49680027aedfccf | |
| parent | b3759152baa1d860e87d0104af97e889e2ee8891 (diff) | |
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
| -rw-r--r-- | ipacm/src/IPACM_Wan.cpp | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp index 5d884fc..be2c0a2 100644 --- a/ipacm/src/IPACM_Wan.cpp +++ b/ipacm/src/IPACM_Wan.cpp @@ -3799,34 +3799,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)); |
