Implement&nbsp;hash&nbsp;tables&nbsp;get&nbsp;operation&nbsp;by&nbsp;dtb&nbsp;channel.<br />
<br />Signed-off-by:&nbsp;Bingbin&nbsp;Chen&nbsp;&lt;chen.bingbin@zte.com.cn&gt;
<br />---<br />&nbsp;drivers/net/zxdh/zxdh_np.c&nbsp;|&nbsp;482&nbsp;++++++++++++++++++++++++++++++++++++-<br />&nbsp;drivers/net/zxdh/zxdh_np.h&nbsp;|&nbsp;&nbsp;&nbsp;7&nbsp;+<br />&nbsp;2&nbsp;files&nbsp;changed,&nbsp;488&nbsp;insertions(+),&nbsp;1&nbsp;deletion(-)<br />
<br />diff&nbsp;--git&nbsp;a/drivers/net/zxdh/zxdh_np.c&nbsp;b/drivers/net/zxdh/zxdh_np.c<br />index&nbsp;67edf581e2..fb61e0f99c&nbsp;100644<br />---&nbsp;a/drivers/net/zxdh/zxdh_np.c<br />+++&nbsp;b/drivers/net/zxdh/zxdh_np.c<br />@@&nbsp;-1371,6&nbsp;+1371,40&nbsp;@@&nbsp;zxdh_comm_rb_insert(ZXDH_RB_CFG&nbsp;*p_rb_cfg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_OK;<br />&nbsp;}<br />&nbsp;
<br />+static&nbsp;uint32_t<br />+zxdh_comm_rb_search(ZXDH_RB_CFG&nbsp;*p_rb_cfg,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*p_key,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*out_val)<br />+{<br />+&nbsp;&nbsp;&nbsp;&nbsp;int32_t&nbsp;&nbsp;&nbsp;&nbsp;cmprtn&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_RB_TN&nbsp;*p_cur_tn&nbsp;=&nbsp;NULL;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_cur_tn&nbsp;=&nbsp;p_rb_cfg-&gt;p_root;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(p_cur_tn)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmprtn&nbsp;=&nbsp;p_rb_cfg-&gt;p_cmpfun(p_key,&nbsp;p_cur_tn-&gt;p_key,&nbsp;p_rb_cfg-&gt;key_size);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(cmprtn&nbsp;&gt;&nbsp;0)<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_cur_tn&nbsp;=&nbsp;p_cur_tn-&gt;p_right;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(cmprtn&nbsp;&lt;&nbsp;0)<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_cur_tn&nbsp;=&nbsp;p_cur_tn-&gt;p_left;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!p_cur_tn)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;rb&nbsp;srh&nbsp;fail&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_RBT_RC_SRHFAIL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(p_rb_cfg-&gt;is_dynamic)<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ZXDH_RB_TN&nbsp;**)out_val&nbsp;=&nbsp;p_cur_tn;<br />+&nbsp;&nbsp;&nbsp;&nbsp;else<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(uint32_t&nbsp;*)out_val&nbsp;=&nbsp;zxdh_np_get_tn_lsv(p_cur_tn);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_OK;<br />+}<br />+<br />&nbsp;static&nbsp;uint32_t<br />&nbsp;zxdh_comm_rb_handle_del(__rte_unused&nbsp;ZXDH_RB_CFG&nbsp;*p_rb_cfg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_RB_TN&nbsp;***stack_tn,<br />@@&nbsp;-4015,6&nbsp;+4049,38&nbsp;@@&nbsp;zxdh_np_dtb_smmu0_dump_info_write(uint32_t&nbsp;dev_id,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />&nbsp;}<br />&nbsp;
<br />+static&nbsp;uint32_t<br />+zxdh_np_dtb_zcam_dump_info_write(uint32_t&nbsp;dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;addr,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;tb_width,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;depth,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;addr_high32,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;addr_low32,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;*p_dump_info)<br />+{<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;rc&nbsp;=&nbsp;ZXDH_OK;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_DTB_ZCAM_DUMP_FORM_T&nbsp;dtb_zcam_dump_form_info&nbsp;=&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.valid&nbsp;=&nbsp;1,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.up_type&nbsp;=&nbsp;ZXDH_DTB_DUMP_MODE_ZCAM,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.tb_width&nbsp;=&nbsp;tb_width,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.sram_addr&nbsp;=&nbsp;addr&nbsp;&amp;&nbsp;0x1FF,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ram_reg_flag&nbsp;=&nbsp;(addr&nbsp;&gt;&gt;&nbsp;16)&nbsp;&amp;&nbsp;0x1,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.z_reg_cell_id&nbsp;=&nbsp;(addr&nbsp;&gt;&gt;&nbsp;9)&nbsp;&amp;&nbsp;0x3,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.zblock_id&nbsp;=&nbsp;(addr&nbsp;&gt;&gt;&nbsp;11)&nbsp;&amp;&nbsp;0x7,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.zgroup_id&nbsp;=&nbsp;(addr&nbsp;&gt;&gt;&nbsp;14)&nbsp;&amp;&nbsp;0x3,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.tb_depth&nbsp;=&nbsp;depth,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.tb_dst_addr_h&nbsp;=&nbsp;addr_high32,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.tb_dst_addr_l&nbsp;=&nbsp;addr_low32,<br />+&nbsp;&nbsp;&nbsp;&nbsp;};<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_write_dump_cmd(dev_id,&nbsp;ZXDH_DTB_DUMP_ZCAM,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;dtb_zcam_dump_form_info,&nbsp;p_dump_info);<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_write_dump_cmd&quot;);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />+}<br />+<br />&nbsp;static&nbsp;uint32_t<br />&nbsp;zxdh_np_dtb_se_smmu0_ind_write(uint32_t&nbsp;dev_id,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;base_addr,<br />@@&nbsp;-6160,6&nbsp;+6226,399&nbsp;@@&nbsp;zxdh_np_dtb_eram_data_get(uint32_t&nbsp;dev_id,&nbsp;uint32_t&nbsp;queue_id,&nbsp;uint32_t&nbsp;sdt_no,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />&nbsp;}<br />&nbsp;
<br />+static&nbsp;uint32_t<br />+zxdh_np_dtb_se_zcam_dma_dump(uint32_t&nbsp;dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;queue_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;addr,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;tb_width,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;depth,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;*p_data,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;*element_id)<br />+{<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;rc&nbsp;=&nbsp;ZXDH_OK;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;dump_dst_phy_haddr&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;dump_dst_phy_laddr&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;queue_item_index&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;data_len&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;desc_len&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;tb_width_len&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;form_buff[ZXDH_DTB_TABLE_CMD_SIZE_BIT&nbsp;/&nbsp;8]&nbsp;=&nbsp;{0};<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_tab_up_free_item_get(dev_id,&nbsp;queue_id,&nbsp;&amp;queue_item_index);<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rc&nbsp;!=&nbsp;ZXDH_OK)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(ERR,&nbsp;&quot;zxdh_np_dtb_tab_up_free_item_get&nbsp;failed!&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_RC_DTB_QUEUE_ITEM_SW_EMPTY;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;table&nbsp;up&nbsp;item&nbsp;queue_element_id&nbsp;is:&nbsp;%u.&quot;,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue_item_index);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;*element_id&nbsp;=&nbsp;queue_item_index;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_tab_up_item_addr_get(dev_id,&nbsp;queue_id,&nbsp;queue_item_index,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;dump_dst_phy_haddr,&nbsp;&amp;dump_dst_phy_laddr);<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_tab_up_item_addr_get&quot;);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_zcam_dump_info_write(dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb_width,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;depth,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dump_dst_phy_haddr,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dump_dst_phy_laddr,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(uint32_t&nbsp;*)form_buff);<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_zcam_dump_info_write&quot;);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;tb_width_len&nbsp;=&nbsp;ZXDH_DTB_LEN_POS_SETP&nbsp;&lt;&lt;&nbsp;tb_width;<br />+&nbsp;&nbsp;&nbsp;&nbsp;data_len&nbsp;=&nbsp;depth&nbsp;*&nbsp;tb_width_len&nbsp;/&nbsp;4;<br />+&nbsp;&nbsp;&nbsp;&nbsp;desc_len&nbsp;=&nbsp;ZXDH_DTB_LEN_POS_SETP&nbsp;/&nbsp;4;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_write_dump_desc_info(dev_id,&nbsp;queue_id,&nbsp;queue_item_index,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(uint32_t&nbsp;*)form_buff,&nbsp;data_len,&nbsp;desc_len,&nbsp;p_data);<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_write_dump_desc_info&quot;);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />+}<br />+<br />+static&nbsp;uint32_t<br />+zxdh_np_dtb_hash_data_parse(uint32_t&nbsp;item_type,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;key_by_size,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_ENTRY&nbsp;*p_entry,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;&nbsp;*p_item_data,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;&nbsp;*p_data_offset)<br />+{<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;data_offset&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;temp_key_valid&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;temp_key_type&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;temp_entry_size&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;srh_key_type&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;srh_entry_size&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;rst_by_size&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;srh_succ&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;item_width&nbsp;=&nbsp;ZXDH_SE_ITEM_WIDTH_MAX;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;*p_srh_key&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;*p_temp_key&nbsp;=&nbsp;NULL;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(item_type&nbsp;==&nbsp;ZXDH_ITEM_DDR_256)<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item_width&nbsp;=&nbsp;item_width&nbsp;/&nbsp;2;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_temp_key&nbsp;=&nbsp;p_item_data;<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_srh_key&nbsp;=&nbsp;p_entry-&gt;p_key;<br />+&nbsp;&nbsp;&nbsp;&nbsp;srh_key_type&nbsp;=&nbsp;ZXDH_GET_HASH_KEY_TYPE(p_srh_key);<br />+&nbsp;&nbsp;&nbsp;&nbsp;srh_entry_size&nbsp;=&nbsp;ZXDH_GET_HASH_ENTRY_SIZE(srh_key_type);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(data_offset&nbsp;&lt;&nbsp;item_width)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_key_valid&nbsp;=&nbsp;ZXDH_GET_HASH_KEY_VALID(p_temp_key);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_key_type&nbsp;=&nbsp;ZXDH_GET_HASH_KEY_TYPE(p_temp_key);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(temp_key_valid&nbsp;&amp;&amp;&nbsp;srh_key_type&nbsp;==&nbsp;temp_key_type)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(memcmp(p_srh_key,&nbsp;p_temp_key,&nbsp;key_by_size)&nbsp;==&nbsp;0)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;Hash&nbsp;search&nbsp;hardware&nbsp;successfully.&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srh_succ&nbsp;=&nbsp;1;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_offset&nbsp;+=&nbsp;srh_entry_size;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(temp_key_valid&nbsp;&amp;&amp;&nbsp;(srh_key_type&nbsp;!=&nbsp;temp_key_type))&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_entry_size&nbsp;=&nbsp;ZXDH_GET_HASH_ENTRY_SIZE(temp_key_type);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_offset&nbsp;+=&nbsp;temp_entry_size;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_offset&nbsp;+=&nbsp;ZXDH_HASH_ENTRY_POS_STEP;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_temp_key&nbsp;=&nbsp;p_item_data;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_temp_key&nbsp;+=&nbsp;data_offset;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!srh_succ)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;Hash&nbsp;search&nbsp;hardware&nbsp;fail.&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_HASH_RC_MATCH_ITEM_FAIL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rst_by_size&nbsp;=&nbsp;srh_entry_size&nbsp;-&nbsp;key_by_size;<br />+&nbsp;&nbsp;&nbsp;&nbsp;memcpy(p_entry-&gt;p_rst,&nbsp;p_temp_key&nbsp;+&nbsp;key_by_size,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(rst_by_size&nbsp;&gt;&nbsp;ZXDH_HASH_RST_MAX)&nbsp;?&nbsp;ZXDH_HASH_RST_MAX&nbsp;:&nbsp;rst_by_size);<br />+&nbsp;&nbsp;&nbsp;&nbsp;*p_data_offset&nbsp;=&nbsp;data_offset;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_OK;<br />+}<br />+<br />+static&nbsp;uint32_t<br />+zxdh_np_dtb_hash_zcam_get_hardware(uint32_t&nbsp;dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;queue_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HASH_ENTRY_CFG&nbsp;&nbsp;*p_hash_entry_cfg,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_ENTRY&nbsp;&nbsp;*p_hash_entry,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;*p_srh_succ)<br />+{<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;rc&nbsp;=&nbsp;ZXDH_OK;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_CFG&nbsp;*p_hash_cfg&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_SE_ZCELL_CFG&nbsp;*p_zcell&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_SE_ZBLK_CFG&nbsp;*p_zblk&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;zblk_idx&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;pre_zblk_idx&nbsp;=&nbsp;0xFFFFFFFF;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint16_t&nbsp;crc16_value&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;zcell_id&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;item_idx&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;element_id&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;byte_offset&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;addr&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;i&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;srh_succ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;temp_key[ZXDH_HASH_KEY_MAX]&nbsp;=&nbsp;{0};<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;&nbsp;rd_buff[ZXDH_SE_ITEM_WIDTH_MAX]&nbsp;&nbsp;&nbsp;=&nbsp;{0};<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_D_NODE&nbsp;*p_zblk_dn&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_D_NODE&nbsp;*p_zcell_dn&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_SE_CFG&nbsp;*p_se_cfg&nbsp;=&nbsp;NULL;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_hash_cfg&nbsp;=&nbsp;p_hash_entry_cfg-&gt;p_hash_cfg;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_POINT(dev_id,&nbsp;p_hash_cfg);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_se_cfg&nbsp;=&nbsp;p_hash_entry_cfg-&gt;p_se_cfg;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_POINT(dev_id,&nbsp;p_se_cfg);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;zxdh_np_hash_set_crc_key(p_hash_entry_cfg,&nbsp;p_hash_entry,&nbsp;temp_key);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_zcell_dn&nbsp;=&nbsp;p_hash_cfg-&gt;hash_shareram.zcell_free_list.p_next;<br />+&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(p_zcell_dn)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_zcell&nbsp;=&nbsp;(ZXDH_SE_ZCELL_CFG&nbsp;*)p_zcell_dn-&gt;data;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zblk_idx&nbsp;=&nbsp;GET_ZBLK_IDX(p_zcell-&gt;zcell_idx);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_zblk&nbsp;=&nbsp;&amp;p_se_cfg-&gt;zblk_info[zblk_idx];<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(zblk_idx&nbsp;!=&nbsp;pre_zblk_idx)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre_zblk_idx&nbsp;=&nbsp;zblk_idx;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crc16_value&nbsp;=&nbsp;p_hash_cfg-&gt;p_hash16_fun(temp_key,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_entry_cfg-&gt;key_by_size,&nbsp;p_zblk-&gt;hash_arg);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zcell_id&nbsp;=&nbsp;GET_ZCELL_IDX(p_zcell-&gt;zcell_idx);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item_idx&nbsp;=&nbsp;GET_ZCELL_CRC_VAL(zcell_id,&nbsp;crc16_value);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr&nbsp;=&nbsp;ZXDH_ZBLK_ITEM_ADDR_CALC(p_zcell-&gt;zcell_idx,&nbsp;item_idx);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;&nbsp;zxdh_np_dtb_se_zcam_dma_dump(dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_DTB_DUMP_ZCAM_512b,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(uint32_t&nbsp;*)rd_buff,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;element_id);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_se_zcam_dma_dump&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zxdh_np_comm_swap(rd_buff,&nbsp;sizeof(rd_buff));<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_hash_data_parse(ZXDH_ITEM_RAM,&nbsp;p_hash_entry_cfg-&gt;key_by_size,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_entry,&nbsp;rd_buff,&nbsp;&amp;byte_offset);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rc&nbsp;==&nbsp;ZXDH_OK)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;Hash&nbsp;search&nbsp;hardware&nbsp;succ&nbsp;in&nbsp;zcell.&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srh_succ&nbsp;=&nbsp;1;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_cfg-&gt;hash_stat.search_ok++;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_zcell_dn&nbsp;=&nbsp;p_zcell_dn-&gt;next;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(srh_succ&nbsp;==&nbsp;0)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_zblk_dn&nbsp;=&nbsp;p_hash_cfg-&gt;hash_shareram.zblk_list.p_next;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(p_zblk_dn)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_zblk&nbsp;=&nbsp;(ZXDH_SE_ZBLK_CFG&nbsp;*)p_zblk_dn-&gt;data;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zblk_idx&nbsp;=&nbsp;p_zblk-&gt;zblk_idx;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;ZXDH_SE_ZREG_NUM;&nbsp;i++)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item_idx&nbsp;=&nbsp;i;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr&nbsp;=&nbsp;ZXDH_ZBLK_HASH_LIST_REG_ADDR_CALC(zblk_idx,&nbsp;item_idx);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;&nbsp;zxdh_np_dtb_se_zcam_dma_dump(dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_DTB_DUMP_ZCAM_512b,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(uint32_t&nbsp;*)rd_buff,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;element_id);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_se_zcam_dma_dump&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zxdh_np_comm_swap(rd_buff,&nbsp;sizeof(rd_buff));<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_hash_data_parse(ZXDH_ITEM_RAM,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_entry_cfg-&gt;key_by_size,&nbsp;p_hash_entry,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rd_buff,&nbsp;&amp;byte_offset);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rc&nbsp;==&nbsp;ZXDH_OK)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;Hash&nbsp;search&nbsp;hardware&nbsp;succ&nbsp;in&nbsp;zreg.&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srh_succ&nbsp;=&nbsp;1;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_cfg-&gt;hash_stat.search_ok++;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_zblk_dn&nbsp;=&nbsp;p_zblk_dn-&gt;next;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;*p_srh_succ&nbsp;=&nbsp;srh_succ;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />+}<br />+<br />+static&nbsp;uint32_t<br />+zxdh_np_dtb_hash_software_item_check(ZXDH_HASH_ENTRY&nbsp;*p_entry,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;key_by_size,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;rst_by_size,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_SE_ITEM_CFG&nbsp;*p_item_info)<br />+{<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;srh_succ&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;temp_key_type&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;srh_key_type&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;dev_id&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_D_NODE&nbsp;*p_entry_dn&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_RBKEY_INFO&nbsp;*p_rbkey&nbsp;=&nbsp;NULL;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;srh_key_type&nbsp;=&nbsp;ZXDH_GET_HASH_KEY_TYPE(p_entry-&gt;p_key);<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_entry_dn&nbsp;=&nbsp;p_item_info-&gt;item_list.p_next;<br />+&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(p_entry_dn)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_rbkey&nbsp;=&nbsp;(ZXDH_HASH_RBKEY_INFO&nbsp;*)p_entry_dn-&gt;data;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_POINT(dev_id,&nbsp;p_rbkey);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RTE_ASSERT(p_rbkey-&gt;p_item_info&nbsp;==&nbsp;p_item_info);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_key_type&nbsp;=&nbsp;ZXDH_GET_HASH_KEY_TYPE(p_rbkey-&gt;key);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ZXDH_GET_HASH_KEY_VALID(p_rbkey-&gt;key)&nbsp;&amp;&amp;&nbsp;srh_key_type&nbsp;==&nbsp;temp_key_type)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(memcmp(p_entry-&gt;p_key,&nbsp;p_rbkey-&gt;key,&nbsp;key_by_size)&nbsp;==&nbsp;0)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srh_succ&nbsp;=&nbsp;1;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_entry_dn&nbsp;=&nbsp;p_entry_dn-&gt;next;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(p_rbkey&nbsp;==&nbsp;NULL)<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_PAR_CHK_POINT_NULL;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!srh_succ)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;hash&nbsp;search&nbsp;failed!&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_HASH_RC_MATCH_ITEM_FAIL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;memcpy(p_entry-&gt;p_rst,&nbsp;p_rbkey-&gt;rst,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(rst_by_size&nbsp;&gt;&nbsp;ZXDH_HASH_RST_MAX)&nbsp;?&nbsp;ZXDH_HASH_RST_MAX&nbsp;:&nbsp;rst_by_size);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_OK;<br />+}<br />+<br />+static&nbsp;uint32_t<br />+zxdh_np_dtb_hash_get_software(uint32_t&nbsp;dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HASH_ENTRY_CFG&nbsp;&nbsp;*p_hash_entry_cfg,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_ENTRY&nbsp;&nbsp;*p_hash_entry,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;*p_srh_succ)<br />+{<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;rc&nbsp;=&nbsp;ZXDH_OK;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_RBKEY_INFO&nbsp;srh_rbkey&nbsp;=&nbsp;{0};<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_RBKEY_INFO&nbsp;*p_rbkey&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_RB_TN&nbsp;*p_rb_tn_rtn&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_SE_ITEM_CFG&nbsp;*p_item&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_CFG&nbsp;*p_hash_cfg&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_SPINLOCK_T&nbsp;*p_hash_spinlock&nbsp;=&nbsp;NULL;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;memcpy(srh_rbkey.key,&nbsp;p_hash_entry-&gt;p_key,&nbsp;p_hash_entry_cfg-&gt;key_by_size);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_hash_cfg&nbsp;=&nbsp;p_hash_entry_cfg-&gt;p_hash_cfg;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_POINT(dev_id,&nbsp;p_hash_cfg);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;zxdh_np_dev_hash_opr_spinlock_get(dev_id,&nbsp;p_hash_cfg-&gt;fun_id,&nbsp;&amp;p_hash_spinlock);<br />+&nbsp;&nbsp;&nbsp;&nbsp;rte_spinlock_lock(&amp;p_hash_spinlock-&gt;spinlock);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_comm_rb_search(&amp;p_hash_cfg-&gt;hash_rb,&nbsp;(void&nbsp;*)&amp;srh_rbkey,&nbsp;(void&nbsp;*)(&amp;p_rb_tn_rtn));<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rc&nbsp;==&nbsp;ZXDH_RBT_RC_SRHFAIL)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;zxdh_comm_rb_search&nbsp;fail.&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rte_spinlock_unlock(&amp;p_hash_spinlock-&gt;spinlock);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_OK;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_rbkey&nbsp;=&nbsp;p_rb_tn_rtn-&gt;p_key;<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_item&nbsp;=&nbsp;p_rbkey-&gt;p_item_info;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_hash_software_item_check(p_hash_entry,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_entry_cfg-&gt;key_by_size,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_entry_cfg-&gt;rst_by_size,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_item);<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rc&nbsp;==&nbsp;ZXDH_OK)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;Hash&nbsp;search&nbsp;software&nbsp;succ.&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*p_srh_succ&nbsp;=&nbsp;1;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_cfg-&gt;hash_stat.search_ok++;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rte_spinlock_unlock(&amp;p_hash_spinlock-&gt;spinlock);<br />+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />+}<br />+<br />+static&nbsp;uint32_t<br />+zxdh_np_dtb_hash_zcam_get(uint32_t&nbsp;dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;queue_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HASH_ENTRY_CFG&nbsp;&nbsp;*p_hash_entry_cfg,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_ENTRY&nbsp;&nbsp;*p_hash_entry,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;srh_mode,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;*p_srh_succ)<br />+{<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;&nbsp;rc&nbsp;=&nbsp;ZXDH_OK;<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(srh_mode&nbsp;==&nbsp;ZXDH_HASH_SRH_MODE_HDW)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_hash_zcam_get_hardware(dev_id,&nbsp;queue_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_entry_cfg,&nbsp;p_hash_entry,&nbsp;p_srh_succ);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_hash_zcam_get_hardware&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_hash_get_software(dev_id,&nbsp;p_hash_entry_cfg,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_entry,&nbsp;p_srh_succ);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_hash_get_software&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />+}<br />+<br />+static&nbsp;uint32_t<br />+zxdh_np_dtb_hash_data_get(uint32_t&nbsp;dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;queue_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;sdt_no,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_DTB_HASH_ENTRY_INFO_T&nbsp;*p_dtb_hash_entry,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;srh_mode)<br />+{<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;rc&nbsp;=&nbsp;ZXDH_OK;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;srh_succ&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;key_valid&nbsp;=&nbsp;1;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_CFG&nbsp;*p_hash_cfg&nbsp;=&nbsp;NULL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;HASH_ENTRY_CFG&nbsp;&nbsp;hash_entry_cfg&nbsp;=&nbsp;{0};<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_HASH_ENTRY&nbsp;hash_entry&nbsp;=&nbsp;{0};<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;temp_key[ZXDH_HASH_KEY_MAX]&nbsp;=&nbsp;{0};<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;temp_rst[ZXDH_HASH_RST_MAX]&nbsp;=&nbsp;{0};<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;hash&nbsp;get&nbsp;sdt_no:%u&quot;,&nbsp;sdt_no);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_hash_get_hash_info_from_sdt(dev_id,&nbsp;sdt_no,&nbsp;&amp;hash_entry_cfg);<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_hash_get_hash_info_from_sdt&quot;);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;p_hash_cfg&nbsp;=&nbsp;hash_entry_cfg.p_hash_cfg;<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_POINT(dev_id,&nbsp;p_hash_cfg);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;hash_entry.p_key&nbsp;=&nbsp;temp_key;<br />+&nbsp;&nbsp;&nbsp;&nbsp;hash_entry.p_rst&nbsp;=&nbsp;temp_rst;<br />+&nbsp;&nbsp;&nbsp;&nbsp;hash_entry.p_key[0]&nbsp;=&nbsp;ZXDH_GET_HASH_KEY_CTRL(key_valid,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash_entry_cfg.key_type,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash_entry_cfg.table_id);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&amp;hash_entry.p_key[1],&nbsp;p_dtb_hash_entry-&gt;p_actu_key,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash_entry_cfg.actu_key_size);<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!srh_succ)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;&nbsp;=&nbsp;zxdh_np_dtb_hash_zcam_get(dev_id,&nbsp;queue_id,&nbsp;&amp;hash_entry_cfg,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;hash_entry,&nbsp;srh_mode,&nbsp;&amp;srh_succ);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_hash_zcam_get&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!srh_succ)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_hash_cfg-&gt;hash_stat.search_fail++;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;Hash&nbsp;search&nbsp;key&nbsp;fail!&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ZXDH_HASH_RC_SRH_FAIL;<br />+&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;memcpy(p_dtb_hash_entry-&gt;p_rst,&nbsp;hash_entry.p_rst,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt;&lt;&nbsp;(hash_entry_cfg.rsp_mode&nbsp;+&nbsp;2));<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />+}<br />+<br />&nbsp;int<br />&nbsp;zxdh_np_dtb_table_entry_get(uint32_t&nbsp;dev_id,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;queue_id,<br />@@&nbsp;-6170,10&nbsp;+6629,12&nbsp;@@&nbsp;zxdh_np_dtb_table_entry_get(uint32_t&nbsp;dev_id,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;tbl_type&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;rc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;sdt_no;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;sdt_partner&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;valid&nbsp;=&nbsp;0;<br />+&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;key&nbsp;=&nbsp;0;<br />&nbsp;
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdt_no&nbsp;=&nbsp;get_entry-&gt;sdt_no;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;sdt_no:%u&quot;,&nbsp;sdt_no);<br />-&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;srh_mode:%u&quot;,&nbsp;srh_mode);<br />&nbsp;
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zxdh_np_sdt_tbl_data_get(dev_id,&nbsp;sdt_no,&nbsp;&amp;sdt_tbl);<br />&nbsp;
<br />@@&nbsp;-6187,6&nbsp;+6648,25&nbsp;@@&nbsp;zxdh_np_dtb_table_entry_get(uint32_t&nbsp;dev_id,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ZXDH_DTB_ERAM_ENTRY_INFO_T&nbsp;*)get_entry-&gt;p_entry_data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_RC_NO_ASSERT(rc,&nbsp;&quot;dpp_dtb_eram_data_get&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />+&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;ZXDH_SDT_TBLT_HASH:<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;zxdh_np_dtb_hash_data_get(dev_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue_id,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdt_no,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ZXDH_DTB_HASH_ENTRY_INFO_T&nbsp;*)get_entry-&gt;p_entry_data,<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srh_mode);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdt_partner&nbsp;=&nbsp;zxdh_np_apt_get_sdt_partner(dev_id,&nbsp;sdt_no);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valid&nbsp;=&nbsp;zxdh_np_hash_sdt_partner_valid(sdt_no,&nbsp;sdt_partner,&nbsp;&amp;key);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdt_no&nbsp;=&nbsp;sdt_partner;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;while&nbsp;((rc&nbsp;==&nbsp;ZXDH_HASH_RC_SRH_FAIL)&nbsp;&amp;&amp;&nbsp;(valid&nbsp;==&nbsp;ZXDH_TRUE));<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rc&nbsp;==&nbsp;ZXDH_HASH_RC_SRH_FAIL)&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(DEBUG,&nbsp;&quot;hash&nbsp;search&nbsp;failed&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />+<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_COMM_CHECK_DEV_RC(dev_id,&nbsp;rc,&nbsp;&quot;zxdh_np_dtb_hash_data_get&quot;);<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMD_DRV_LOG(ERR,&nbsp;&quot;SDT&nbsp;table_type[&nbsp;%u&nbsp;]&nbsp;is&nbsp;invalid!&quot;,&nbsp;tbl_type);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />diff&nbsp;--git&nbsp;a/drivers/net/zxdh/zxdh_np.h&nbsp;b/drivers/net/zxdh/zxdh_np.h<br />index&nbsp;5ca8053d5e..3b66cf0b9f&nbsp;100644<br />---&nbsp;a/drivers/net/zxdh/zxdh_np.h<br />+++&nbsp;b/drivers/net/zxdh/zxdh_np.h<br />@@&nbsp;-1320,6&nbsp;+1320,13&nbsp;@@&nbsp;typedef&nbsp;enum&nbsp;zxdh_dtb_tab_up_user_addr_type_e&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_DTB_TAB_UP_USER_ADDR_TYPE_MAX,<br />&nbsp;}&nbsp;ZXDH_DTB_TAB_UP_USER_ADDR_TYPE_E;<br />&nbsp;
<br />+typedef&nbsp;enum&nbsp;zxdh_dtb_dump_zcam_width_e&nbsp;{<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_DTB_DUMP_ZCAM_128b&nbsp;=&nbsp;0,<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_DTB_DUMP_ZCAM_256b&nbsp;=&nbsp;1,<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_DTB_DUMP_ZCAM_512b&nbsp;=&nbsp;2,<br />+&nbsp;&nbsp;&nbsp;&nbsp;ZXDH_DTB_DUMP_ZCAM_RSV&nbsp;&nbsp;=&nbsp;3,<br />+}&nbsp;ZXDH_DTB_DUMP_ZCAM_WIDTH_E;<br />+<br />&nbsp;typedef&nbsp;struct&nbsp;zxdh_dtb_lpm_entry_t&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t&nbsp;dtb_len0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;*p_data_buff0;<br />--&nbsp;
<br />2.27.0<br />