diff options
author | Ravi Gummadidala <rgummadi@codeaurora.org> | 2013-05-01 16:51:48 -0700 |
---|---|---|
committer | Ravi Gummadidala <rgummadi@codeaurora.org> | 2013-05-02 14:52:05 -0700 |
commit | 371dbc47f9164f4895a9db97471bd0e8e070153e (patch) | |
tree | 381f3078bee994dd636c6149c709ee907ce96ff8 /ipacm/src/IPACM_Config.cpp | |
parent | f1e2f790d4729cab7c412942953cedbe928999e8 (diff) | |
download | ipacfg-mgr-371dbc47f9164f4895a9db97471bd0e8e070153e.tar.gz |
Remove the hack in makefile, now IPACM will support dynamically
both WLAN has RX_prop or none
Change-Id: I15609b0f2939c6a7d457dad190fc220318fe51a2
Diffstat (limited to 'ipacm/src/IPACM_Config.cpp')
-rw-r--r-- | ipacm/src/IPACM_Config.cpp | 341 |
1 files changed, 151 insertions, 190 deletions
diff --git a/ipacm/src/IPACM_Config.cpp b/ipacm/src/IPACM_Config.cpp index 6455b5b..ae658b2 100644 --- a/ipacm/src/IPACM_Config.cpp +++ b/ipacm/src/IPACM_Config.cpp @@ -271,8 +271,9 @@ int IPACM_Config::GetNonNatIfaces(int nIfaces, NonNatIfaces *pIfaces) } /* for IPACM resource manager dependency usage - add either Tx or Rx ipa_rm_resource_name */ -void IPACM_Config::AddRmDepend(ipa_rm_resource_name rm1) + add either Tx or Rx ipa_rm_resource_name and + also indicate that endpoint property if valid */ +void IPACM_Config::AddRmDepend(ipa_rm_resource_name rm1,bool rx_bypass_ipa) { int retval = 0; int m_fd = 0; /* File descriptor of the IPA device node /dev/ipa */ @@ -294,112 +295,93 @@ void IPACM_Config::AddRmDepend(ipa_rm_resource_name rm1) for(int i=0;i<IPA_MAX_PRIVATE_SUBNET_ENTRIES;i++) { - if(rm1 == ipa_rm_tbl[i].producer_rm1) + if(rm1 == ipa_rm_tbl[i].producer_rm1) { - ipa_rm_tbl[i].producer_up = true; - IPACMDBG("Matched RM_table entry: %d's producer_rm1 \n", i); + ipa_rm_tbl[i].producer1_up = true; + + /* entry1's producer actually dun have registered Rx-property */ + ipa_rm_tbl[i].rx_bypass_ipa = rx_bypass_ipa; + IPACMDBG("Matched RM_table entry: %d's producer_rm1 with non_rx_prop: %d \n", i,ipa_rm_tbl[i].rx_bypass_ipa); - if(ipa_rm_tbl[i].consumer_up == true && ipa_rm_tbl[i].rm_set == false) - { - IPACMDBG("SETUP RM_table entry %d's bi-direction dependency \n", i); - /* add bi-directional dependency*/ -#ifdef WLAN_SW_RX - if(ipa_rm_tbl[i].producer_rm1 == IPA_RM_RESOURCE_HSIC_PROD) - { + if(ipa_rm_tbl[i].consumer1_up == true && ipa_rm_tbl[i].rm_set == false) + { + IPACMDBG("SETUP RM_table entry %d's bi-direction dependency \n", i); + /* add bi-directional dependency*/ + if(ipa_rm_tbl[i].rx_bypass_ipa) + { IPACMDBG("Skip ADD entry %d's dependency between WLAN-Pro: %d, Con: %d \n", i, ipa_rm_tbl[i].producer_rm1,ipa_rm_tbl[i].consumer_rm1); - } - else - { - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm1; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; - retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); + } + else + { + memset(&dep, 0, sizeof(dep)); + dep.resource_name = ipa_rm_tbl[i].producer_rm1; + dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; + retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); + IPACMDBG("ADD entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); + if (retval) + { + IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); + } + } + + memset(&dep, 0, sizeof(dep)); + dep.resource_name = ipa_rm_tbl[i].producer_rm2; + dep.depends_on_name = ipa_rm_tbl[i].consumer_rm2; + retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); IPACMDBG("ADD entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } - } -#else - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm1; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; - retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); - IPACMDBG("ADD entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } -#endif - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm2; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm2; - retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); - IPACMDBG("ADD entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } - ipa_rm_tbl[i].rm_set = true; - } - else - { - IPACMDBG("Not SETUP RM_table entry %d: prod_up:%d, cons_up:%d, rm_set: %d \n", i,ipa_rm_tbl[i].producer_up, ipa_rm_tbl[i].consumer_up, ipa_rm_tbl[i].rm_set); - } + if (retval) + { + IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); + } + ipa_rm_tbl[i].rm_set = true; + } + else + { + IPACMDBG("Not SETUP RM_table entry %d: prod_up:%d, cons_up:%d, rm_set: %d \n", i,ipa_rm_tbl[i].producer1_up, ipa_rm_tbl[i].consumer1_up, ipa_rm_tbl[i].rm_set); + } } - if(rm1 == ipa_rm_tbl[i].consumer_rm1) + if(rm1 == ipa_rm_tbl[i].consumer_rm1) { - ipa_rm_tbl[i].consumer_up = true; - IPACMDBG("Matched RM_table entry: %d's consumer_rm1 \n", i); + ipa_rm_tbl[i].consumer1_up = true; + IPACMDBG("Matched RM_table entry: %d's consumer_rm1 \n", i); - if(ipa_rm_tbl[i].producer_up == true && ipa_rm_tbl[i].rm_set == false) - { - IPACMDBG("SETUP RM_table entry %d's bi-direction dependency \n", i); - /* add bi-directional dependency*/ -#ifdef WLAN_SW_RX - if(ipa_rm_tbl[i].producer_rm1 == IPA_RM_RESOURCE_HSIC_PROD) - { + if(ipa_rm_tbl[i].producer1_up == true && ipa_rm_tbl[i].rm_set == false) + { + IPACMDBG("SETUP RM_table entry %d's bi-direction dependency \n", i); + /* add bi-directional dependency*/ + if(ipa_rm_tbl[i].rx_bypass_ipa) + { IPACMDBG("Skip ADD entry %d's dependency between WLAN-Pro: %d, Con: %d \n", i, ipa_rm_tbl[i].producer_rm1,ipa_rm_tbl[i].consumer_rm1); - } - else - { - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm1; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; - retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); - IPACMDBG("ADD entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } - } -#else - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm1; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; - retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); + } + else + { + memset(&dep, 0, sizeof(dep)); + dep.resource_name = ipa_rm_tbl[i].producer_rm1; + dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; + retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); + IPACMDBG("ADD entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); + if (retval) + { + IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); + } + } + + memset(&dep, 0, sizeof(dep)); + dep.resource_name = ipa_rm_tbl[i].producer_rm2; + dep.depends_on_name = ipa_rm_tbl[i].consumer_rm2; + retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); IPACMDBG("ADD entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } -#endif - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm2; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm2; - retval = ioctl(m_fd, IPA_IOC_RM_ADD_DEPENDENCY, &dep); - IPACMDBG("ADD entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } - ipa_rm_tbl[i].rm_set = true; - } - else - { - IPACMDBG("Not SETUP RM_table entry %d: prod_up:%d, cons_up:%d, rm_set: %d \n", i,ipa_rm_tbl[i].producer_up, ipa_rm_tbl[i].consumer_up, ipa_rm_tbl[i].rm_set); - } + if (retval) + { + IPACMERR("Failed adding dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); + } + ipa_rm_tbl[i].rm_set = true; + } + else + { + IPACMDBG("Not SETUP RM_table entry %d: prod_up:%d, cons_up:%d, rm_set: %d \n", i,ipa_rm_tbl[i].producer1_up, ipa_rm_tbl[i].consumer1_up, ipa_rm_tbl[i].rm_set); + } } } @@ -433,110 +415,89 @@ void IPACM_Config::DelRmDepend(ipa_rm_resource_name rm1) for(int i=0;i<IPA_MAX_PRIVATE_SUBNET_ENTRIES;i++) { - if(rm1 == ipa_rm_tbl[i].producer_rm1) + if(rm1 == ipa_rm_tbl[i].producer_rm1) { - if(ipa_rm_tbl[i].rm_set == true) + if(ipa_rm_tbl[i].rm_set == true) { - IPACMDBG("Matched RM_table entry: %d's producer_rm1 and dependency is up \n", i); - ipa_rm_tbl[i].rm_set = false; - /* delete bi-directional dependency*/ -#ifdef WLAN_SW_RX - if(ipa_rm_tbl[i].producer_rm1 == IPA_RM_RESOURCE_HSIC_PROD) - { - IPACMDBG("Skip DEL entry %d's dependency between WLAN-Pro: %d, Con: %d \n", i, ipa_rm_tbl[i].producer_rm1,ipa_rm_tbl[i].consumer_rm1); - } - else - { - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm1; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; - retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); - IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { + IPACMDBG("Matched RM_table entry: %d's producer_rm1 and dependency is up \n", i); + ipa_rm_tbl[i].rm_set = false; + + /* delete bi-directional dependency*/ + if(ipa_rm_tbl[i].rx_bypass_ipa) + { + IPACMDBG("Skip DEL entry %d's dependency between WLAN-Pro: %d, Con: %d \n", i, ipa_rm_tbl[i].producer_rm1,ipa_rm_tbl[i].consumer_rm1); + } + else + { + memset(&dep, 0, sizeof(dep)); + dep.resource_name = ipa_rm_tbl[i].producer_rm1; + dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; + retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); + IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); + if (retval) + { + IPACMERR("Failed deleting dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); + } + } + memset(&dep, 0, sizeof(dep)); + dep.resource_name = ipa_rm_tbl[i].producer_rm2; + dep.depends_on_name = ipa_rm_tbl[i].consumer_rm2; + retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); + IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); + if (retval) + { IPACMERR("Failed deleting dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } - } -#else - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm1; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; - retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); - IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed deleting dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); + } } -#endif - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm2; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm2; - retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); - IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed deleting dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } - } - ipa_rm_tbl[i].producer_up = false; - + ipa_rm_tbl[i].producer1_up = false; + ipa_rm_tbl[i].rx_bypass_ipa = false; } - if(rm1 == ipa_rm_tbl[i].consumer_rm1) + if(rm1 == ipa_rm_tbl[i].consumer_rm1) { - /* ipa_rm_a2_check: IPA_RM_RESOURCE_A2_CONS*/ - if(ipa_rm_tbl[i].consumer_rm1 == IPA_RM_RESOURCE_A2_CONS && ipa_rm_a2_check == 1) - { - IPACMDBG(" still have %d default RT routing from A2 \n", ipa_rm_a2_check); - continue; - } + /* ipa_rm_a2_check: IPA_RM_RESOURCE_A2_CONS*/ + if(ipa_rm_tbl[i].consumer_rm1 == IPA_RM_RESOURCE_A2_CONS && ipa_rm_a2_check == 1) + { + IPACMDBG(" still have %d default RT routing from A2 \n", ipa_rm_a2_check); + continue; + } - if(ipa_rm_tbl[i].rm_set == true) + if(ipa_rm_tbl[i].rm_set == true) { - IPACMDBG("Matched RM_table entry: %d's consumer_rm1 and dependency is up \n", i); - ipa_rm_tbl[i].rm_set = false; - /* delete bi-directional dependency*/ -#ifdef WLAN_SW_RX - if(ipa_rm_tbl[i].producer_rm1 == IPA_RM_RESOURCE_HSIC_PROD) - { - IPACMDBG("Skip DEL entry %d's dependency between WLAN-Pro: %d, Con: %d \n", i, ipa_rm_tbl[i].producer_rm1,ipa_rm_tbl[i].consumer_rm1); - } - else - { - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm1; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; - retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); - IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed deleting dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } - } -#else - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm1; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; - retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); - IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { + IPACMDBG("Matched RM_table entry: %d's consumer_rm1 and dependency is up \n", i); + ipa_rm_tbl[i].rm_set = false; + + /* delete bi-directional dependency*/ + if(ipa_rm_tbl[i].rx_bypass_ipa) + { + IPACMDBG("Skip DEL entry %d's dependency between WLAN-Pro: %d, Con: %d \n", i, ipa_rm_tbl[i].producer_rm1,ipa_rm_tbl[i].consumer_rm1); + } + else + { + memset(&dep, 0, sizeof(dep)); + dep.resource_name = ipa_rm_tbl[i].producer_rm1; + dep.depends_on_name = ipa_rm_tbl[i].consumer_rm1; + retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); + IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); + if (retval) + { + IPACMERR("Failed deleting dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); + } + } + + memset(&dep, 0, sizeof(dep)); + dep.resource_name = ipa_rm_tbl[i].producer_rm2; + dep.depends_on_name = ipa_rm_tbl[i].consumer_rm2; + retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); + IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); + if (retval) + { IPACMERR("Failed deleting dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } -#endif - memset(&dep, 0, sizeof(dep)); - dep.resource_name = ipa_rm_tbl[i].producer_rm2; - dep.depends_on_name = ipa_rm_tbl[i].consumer_rm2; - retval = ioctl(m_fd, IPA_IOC_RM_DEL_DEPENDENCY, &dep); - IPACMDBG("Delete entry %d's dependency between Pro: %d, Con: %d \n", i,dep.resource_name,dep.depends_on_name); - if (retval) - { - IPACMERR("Failed deleting dependecny for RM_table entry %d's bi-direction dependency (error:%d) \n", i,retval); - } + } } - ipa_rm_tbl[i].consumer_up = false; - } + ipa_rm_tbl[i].consumer1_up = false; + } } return ; |