When using doca for development, how can I patch dpdk?

When using doca for development, how can I patch dpdk?

Hello, I am developing with ConnectX-6 DX + doca2.8, and I need to patch dpdk (modify dpdk’s source code). I have tried compiling the source code downloaded from dpdk’s official website and replacing doca dpdk, but when I compile the doca sample, I receive some error messages indicating that some functions are missing.

My steps are as follows:

  1. By running cat /opt/mellanox/dpdk/lib64/pkgconfig/libdpdk.pc , I confirmed that the dpdk version used by doca is 22.11.2407.1.0.
  2. I downloaded dpdk source code version 22.11.6 from dpdk’s official website (I have also tried higher versions), compiled it, and replaced the contents of /opt/mellanox/dpdk.
  3. When compiling the doca sample, I encountered an error message stating that some functions are missing, and indeed, I cannot find these functions in the dpdk source code.

It seems that the dpdk used by doca has been modified. How can I patch dpdk? Or where can I get the source code of the dpdk used by doca?

/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_flow_action_list_handle_create@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_create_geneve_tlv_parser@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_query_rte_table_hws_matcher_metrics@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_flow_fp_ops@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_flow_template_table_resize@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_query_tag_param@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_release_rte_table_hws_matcher_metrics@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_port_is_configured@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_query_rte_table_hws_table_metrics@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_flow_action_list_handle_destroy@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_port_is_bond@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_flow_group_set_miss_actions@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_crypto_bulk_unregister@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_flow_action_list_handle_query_update@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_flow_calc_table_hash@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_destroy_geneve_tlv_parser@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_external_tx_queue_id_map@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_dpdk_bridge.so.2: undefined reference to `rte_pmd_mlx5_export_uar@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_crypto_bulk_register@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_flow_template_table_resize_complete@EXPERIMENTAL'
/opt/mellanox/doca/lib64/libdoca_flow.so: undefined reference to `rte_pmd_mlx5_external_tx_queue_id_unmap@EXPERIMENTAL'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Hello,

Thanks for your question.
The main idea is to use DOCA for everything, offload, encryption, security, etc…, as DOCA is a complete API, it’s recommended to implement it on the DOCA level.

DPDK provided with DOCA is not an open source, therefore it cannot be shared.

To better understand your scenario, and be able to assist you, a support case need to be open in Nvidia portal, and it will handled according to the entitlement.

Best Regards,
Anatoly