diff options
author | Skylar Chang <chiaweic@codeaurora.org> | 2014-06-23 12:22:22 -0700 |
---|---|---|
committer | Skylar Chang <chiaweic@codeaurora.org> | 2014-06-23 15:17:51 -0700 |
commit | 91101184bf74524fa2df77c985202ab9bcb69116 (patch) | |
tree | d9c0e65282e5aa96703778c70d489c76650873b6 /ipanat | |
parent | c8e3c338dbfc1e9ed98156b8cfb372f64d075d4a (diff) | |
download | ipacfg-mgr-91101184bf74524fa2df77c985202ab9bcb69116.tar.gz |
IPANAT: fix IPANAT deletion issue
Used different variable to back up index table next
entry while deleting the head in index table to avoid
overwrite. Print index table entry while dumping nat entry
Change-Id: I6c389652ce0d514e0a03ff0532d90727c100bd4a
Diffstat (limited to 'ipanat')
-rw-r--r-- | ipanat/src/ipa_nat_drvi.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ipanat/src/ipa_nat_drvi.c b/ipanat/src/ipa_nat_drvi.c index 4d77a1f..d85a96d 100644 --- a/ipanat/src/ipa_nat_drvi.c +++ b/ipanat/src/ipa_nat_drvi.c @@ -1615,6 +1615,7 @@ int ipa_nati_post_del_dma_cmd(uint8_t tbl_indx, uint16_t prev_entry = IPA_NAT_INVALID_NAT_ENTRY; uint16_t next_entry = IPA_NAT_INVALID_NAT_ENTRY; + uint16_t indx_next_entry = IPA_NAT_INVALID_NAT_ENTRY; uint16_t table_entry; size = sizeof(struct ipa_ioc_nat_dma_cmd)+ @@ -1787,6 +1788,7 @@ int ipa_nati_post_del_dma_cmd(uint8_t tbl_indx, cmd->dma[no_of_cmds].base_addr, indx_tbl_entry); cmd->dma[no_of_cmds].offset += IPA_NAT_INDEX_RULE_NEXT_FIELD_OFFSET; + indx_next_entry = next_entry; } /* @@ -1880,7 +1882,11 @@ int ipa_nati_post_del_dma_cmd(uint8_t tbl_indx, if (IPA_NAT_DEL_TYPE_HEAD == indx_rule_pos) { /* Reset the next entry to IPA_NAT_DEL_TYPE_HEAD as we copied the next entry to IPA_NAT_DEL_TYPE_HEAD */ - indx_tbl_ptr[next_entry].tbl_entry_nxt_indx = 0; + + IPADBG("Resetting, index table entry(Proper): %d\n", + (cache_ptr->table_entries + indx_next_entry)); + + indx_tbl_ptr[indx_next_entry].tbl_entry_nxt_indx = 0; /* In case of IPA_NAT_DEL_TYPE_HEAD, update the sw specific parameters |