Hi Yuanhan In the dpdk public meeting, we requested Simon to also review this series to check that it is sync with the HWOL for kernel with respect to one or two high level aspects. I had some comments related to coding standards for V2, but I’ll wait for you to respond to Simon’s comments before adding my own other comments, in order to avoid confusion.
Thanks Darrell On 9/5/17, 2:22 AM, "Yuanhan Liu" <[email protected]> wrote: Hi, Here is a joint work from Mellanox and Napatech, to enable the flow hw offload with the DPDK generic flow interface (rte_flow). The basic idea is to associate the flow with a mark id (a unit32_t number). Later, we then get the flow directly from the mark id, bypassing the heavy emc processing, including miniflow_extract. The association is done with CMAP in patch 1. It also reuses the flow APIs introduced while adding the tc offloads. The emc bypassing is done in patch 2. The flow offload is done in patch 4, which mainly does two things: - translate the ovs match to DPDK rte flow patterns - bind those patterns with a MARK action. Afterwards, the NIC will set the mark id in every pkt's mbuf when it matches the flow. That's basically how we could get the flow directly from the received mbuf. While testing with PHY-PHY forwarding with one core and one queue, I got about 54% performance boost. For PHY-vhost forwarding, I got about 41% performance boost. The reason it's lower than v1 is I added the logic to get the correct tcp_flags, which examines all packets recieved. The major issue mentioned in last version is also workarounded: the queue index is never set to 0 blindly anymore, but set to the rxq that first receives the upcall pkt. Note that it's disabled by default, which can be enabled by: $ ovs-vsctl set Open_vSwitch . other_config:hw-offload=true v2: - workaround the queue action issue - fixed the tcp_flags being skipped issue, which also fixed the build warnings - fixed l2 patterns for Intel nic - Converted some macros to functions - did not hardcode the max number of flow/action - rebased on top of the lastest code Thanks. --yliu --- Finn Christensen (3): netdev-dpdk: implement flow put with rte flow netdev-dpdk: retry with queue action netdev-dpdk: set FDIR config Shachar Beiser (1): dpif-netdev: record rx queue id for the upcall Yuanhan Liu (4): dpif-netdev: associate flow with a mark id dpif-netdev: retrieve flow directly from the flow mark netdev-dpdk: convert ufid to dpdk flow netdev-dpdk: remove offloaded flow on deletion lib/dp-packet.h | 14 ++ lib/dpif-netdev.c | 132 +++++++++++-- lib/flow.c | 78 ++++++++ lib/flow.h | 1 + lib/netdev-dpdk.c | 574 +++++++++++++++++++++++++++++++++++++++++++++++++++++- lib/netdev.c | 1 + lib/netdev.h | 7 + 7 files changed, 795 insertions(+), 12 deletions(-) -- 2.7.4 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
