Hi I am trying to understand DPDK cache architecture for pmd threads. There are three hash tables (flow_cache, cls and flow_table) in the dp_netdev_pmd_thread structure. First, dp_netdev_input() calls emc_processing() and it tries to match the packet in flow_cache for the related pmd thread. If it's unsuccessful, it performs a classifier lookup using dpcls_lookup() for cls in fast_path_processing(). If still unsuccessful, it executes an upcall using dp_netdev_upcall().
Now the cache issues are not clear for me. 1) Are flow_cache, cls and flow_table in the real CPU caches like L1, L2 etc? 2) flow_cache does not have wildcarding, does it only depends on exact match? 3) Does cls have wildcarding? If not, why we use mask while inserting? in the line: dpcls_insert(&pmd->cls, &flow->cr, &mask) 4) What is the difference between cls and flow_table? Thanks in advance - Volkan _______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss