ipacm: Add flag to get previous mux id Add flag to get previous mux id and delete rule for correct PDN. Change-Id: Id55ba3d2c0c79121ccf4e8f74e017e10bf82acc7 Acked-by: Pooja Kumari <kumarip@qti.qualcomm.com> Signed-off-by: Mohammed Javid <mjavid@codeaurora.org>
diff --git a/ipacm/inc/IPACM_Lan.h b/ipacm/inc/IPACM_Lan.h index 0f50ae7..21a72c1 100644 --- a/ipacm/inc/IPACM_Lan.h +++ b/ipacm/inc/IPACM_Lan.h
@@ -263,7 +263,9 @@ bool is_active; bool modem_ul_v4_set; + uint8_t v4_mux_id; bool modem_ul_v6_set; + uint8_t v6_mux_id; bool sta_ul_v4_set; bool sta_ul_v6_set;
diff --git a/ipacm/src/IPACM_Lan.cpp b/ipacm/src/IPACM_Lan.cpp index e47767c..2cbb69a 100644 --- a/ipacm/src/IPACM_Lan.cpp +++ b/ipacm/src/IPACM_Lan.cpp
@@ -81,7 +81,9 @@ num_wan_ul_fl_rule_v6 = 0; is_active = true; modem_ul_v4_set = false; + v4_mux_id = 0; modem_ul_v6_set = false; + v6_mux_id = 0; sta_ul_v4_set = false; sta_ul_v6_set = false; @@ -1169,8 +1171,8 @@ flt_index.retain_header_valid = 1; flt_index.retain_header = 0; flt_index.embedded_call_mux_id_valid = 1; - flt_index.embedded_call_mux_id = IPACM_Iface::ipacmcfg->GetQmapId(); - + flt_index.embedded_call_mux_id = v4_mux_id; + v4_mux_id = 0; if(false == m_filtering.SendFilteringRuleIndex(&flt_index)) { IPACMERR("Error sending filtering rule index, aborting...\n"); @@ -3102,6 +3104,7 @@ int fd; int i, index, eq_index; uint32_t value = 0; + uint8_t qmap_id; IPACMDBG_H("Set modem UL flt rules\n"); @@ -3157,8 +3160,9 @@ flt_index.retain_header_valid = 1; flt_index.retain_header = 0; - flt_index.embedded_call_mux_id_valid = 1; - flt_index.embedded_call_mux_id = IPACM_Iface::ipacmcfg->GetQmapId(); + flt_index.embedded_call_mux_id_valid = 1; + qmap_id = IPACM_Iface::ipacmcfg->GetQmapId(); + flt_index.embedded_call_mux_id = qmap_id; #ifndef FEATURE_IPA_V3 IPACMDBG_H("flt_index: src pipe: %d, num of rules: %d, ebd pipe: %d, mux id: %d\n", flt_index.source_pipe_index, flt_index.filter_index_list_len, flt_index.embedded_pipe_index, flt_index.embedded_call_mux_id); @@ -3376,6 +3380,7 @@ num_wan_ul_fl_rule_v4++; } IPACM_Iface::ipacmcfg->increaseFltRuleCount(rx_prop->rx[0].src_pipe, iptype, pFilteringTable->num_rules); + v4_mux_id = qmap_id; } else if(iptype == IPA_IP_v6) { @@ -3385,7 +3390,9 @@ num_wan_ul_fl_rule_v6++; } IPACM_Iface::ipacmcfg->increaseFltRuleCount(rx_prop->rx[0].src_pipe, iptype, pFilteringTable->num_rules); + v6_mux_id = qmap_id; } + else { IPACMERR("IP type is not expected.\n"); @@ -3469,7 +3476,8 @@ flt_index.retain_header_valid = 1; flt_index.retain_header = 0; flt_index.embedded_call_mux_id_valid = 1; - flt_index.embedded_call_mux_id = IPACM_Iface::ipacmcfg->GetQmapId(); + flt_index.embedded_call_mux_id = v6_mux_id; + v6_mux_id = 0; if(false == m_filtering.SendFilteringRuleIndex(&flt_index)) { IPACMERR("Error sending filtering rule index, aborting...\n");