Move mlx5 symbols in the map file to the INTERNAL section and add __internal tags to their definitions. Those symbols were exported in 20.02 and now (20.05) they are removed. Avoid ABI comparison issues between 20.05/20.08 and 20.02 by adding the suppress_file directive to libabigail.abignore file. This directive will prevent loading mlx5 common symbols and no comparison will be performed.
Fixes: 7b4f1e6bd367 ("common/mlx5: introduce common library") Signed-off-by: Ophir Munk <ophi...@mellanox.com> Acked-by: Matan Azrad <ma...@mellanox.com> --- v3: add "Fixes" and "Acked-by" to commit message devtools/libabigail.abignore | 7 +++++++ drivers/common/mlx5/mlx5_common.h | 3 +++ drivers/common/mlx5/mlx5_devx_cmds.h | 23 +++++++++++++++++++++++ drivers/common/mlx5/mlx5_nl.h | 18 +++++++++++++++++- drivers/common/mlx5/rte_common_mlx5_version.map | 6 +++--- 5 files changed, 53 insertions(+), 4 deletions(-) diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore index 0326662..f22d540 100644 --- a/devtools/libabigail.abignore +++ b/devtools/libabigail.abignore @@ -35,3 +35,10 @@ type_kind = enum name = rte_eth_event_type changed_enumerators = RTE_ETH_EVENT_MAX + +; These functions were moved from stable to internal. +; Avoid loading the symbols and comparing them. +; This is a temporary exception till DPDK 20.11 +[suppress_file] + file_name_regexp = ^librte_common_mlx5\. + diff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h index c2d688a..b37b820 100644 --- a/drivers/common/mlx5/mlx5_common.h +++ b/drivers/common/mlx5/mlx5_common.h @@ -196,6 +196,7 @@ check_cqe(volatile struct mlx5_cqe *cqe, const uint16_t cqes_n, return MLX5_CQE_STATUS_SW_OWN; } +__rte_internal int mlx5_dev_to_pci_addr(const char *dev_path, struct rte_pci_addr *pci_addr); #define MLX5_CLASS_ARG_NAME "class" @@ -206,7 +207,9 @@ enum mlx5_class { MLX5_CLASS_INVALID, }; +__rte_internal enum mlx5_class mlx5_class_get(struct rte_devargs *devargs); +__rte_internal void mlx5_translate_port_name(const char *port_name_in, struct mlx5_switch_info *port_info_out); diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h index f7802e6..6dc27da 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.h +++ b/drivers/common/mlx5/mlx5_devx_cmds.h @@ -300,52 +300,75 @@ struct mlx5_devx_qp_attr { /* mlx5_devx_cmds.c */ +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_flow_counter_alloc(struct ibv_context *ctx, uint32_t bulk_sz); +__rte_internal int mlx5_devx_cmd_destroy(struct mlx5_devx_obj *obj); +__rte_internal int mlx5_devx_cmd_flow_counter_query(struct mlx5_devx_obj *dcs, int clear, uint32_t n_counters, uint64_t *pkts, uint64_t *bytes, uint32_t mkey, void *addr, struct mlx5dv_devx_cmd_comp *cmd_comp, uint64_t async_id); +__rte_internal int mlx5_devx_cmd_query_hca_attr(struct ibv_context *ctx, struct mlx5_hca_attr *attr); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_mkey_create(struct ibv_context *ctx, struct mlx5_devx_mkey_attr *attr); +__rte_internal int mlx5_devx_get_out_command_status(void *out); +__rte_internal int mlx5_devx_cmd_qp_query_tis_td(struct ibv_qp *qp, uint32_t tis_num, uint32_t *tis_td); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_create_rq(struct ibv_context *ctx, struct mlx5_devx_create_rq_attr *rq_attr, int socket); +__rte_internal int mlx5_devx_cmd_modify_rq(struct mlx5_devx_obj *rq, struct mlx5_devx_modify_rq_attr *rq_attr); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_create_tir(struct ibv_context *ctx, struct mlx5_devx_tir_attr *tir_attr); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_create_rqt(struct ibv_context *ctx, struct mlx5_devx_rqt_attr *rqt_attr); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_create_sq(struct ibv_context *ctx, struct mlx5_devx_create_sq_attr *sq_attr); +__rte_internal int mlx5_devx_cmd_modify_sq(struct mlx5_devx_obj *sq, struct mlx5_devx_modify_sq_attr *sq_attr); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_create_tis(struct ibv_context *ctx, struct mlx5_devx_tis_attr *tis_attr); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_create_td(struct ibv_context *ctx); +__rte_internal int mlx5_devx_cmd_flow_dump(void *fdb_domain, void *rx_domain, void *tx_domain, FILE *file); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_create_cq(struct ibv_context *ctx, struct mlx5_devx_cq_attr *attr); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_create_virtq(struct ibv_context *ctx, struct mlx5_devx_virtq_attr *attr); +__rte_internal int mlx5_devx_cmd_modify_virtq(struct mlx5_devx_obj *virtq_obj, struct mlx5_devx_virtq_attr *attr); +__rte_internal int mlx5_devx_cmd_query_virtq(struct mlx5_devx_obj *virtq_obj, struct mlx5_devx_virtq_attr *attr); +__rte_internal struct mlx5_devx_obj *mlx5_devx_cmd_create_qp(struct ibv_context *ctx, struct mlx5_devx_qp_attr *attr); +__rte_internal int mlx5_devx_cmd_modify_qp_state(struct mlx5_devx_obj *qp, uint32_t qp_st_mod_op, uint32_t remote_qp_id); +__rte_internal int mlx5_devx_cmd_modify_rqt(struct mlx5_devx_obj *rqt, struct mlx5_devx_rqt_attr *rqt_attr); diff --git a/drivers/common/mlx5/mlx5_nl.h b/drivers/common/mlx5/mlx5_nl.h index 2c3f837..53021e1 100644 --- a/drivers/common/mlx5/mlx5_nl.h +++ b/drivers/common/mlx5/mlx5_nl.h @@ -28,35 +28,51 @@ struct mlx5_nl_vlan_vmwa_context { struct mlx5_nl_vlan_dev vlan_dev[4096]; }; - +__rte_internal int mlx5_nl_init(int protocol); +__rte_internal int mlx5_nl_mac_addr_add(int nlsk_fd, unsigned int iface_idx, uint64_t *mac_own, struct rte_ether_addr *mac, uint32_t index); +__rte_internal int mlx5_nl_mac_addr_remove(int nlsk_fd, unsigned int iface_idx, uint64_t *mac_own, struct rte_ether_addr *mac, uint32_t index); +__rte_internal void mlx5_nl_mac_addr_sync(int nlsk_fd, unsigned int iface_idx, struct rte_ether_addr *mac_addrs, int n); +__rte_internal void mlx5_nl_mac_addr_flush(int nlsk_fd, unsigned int iface_idx, struct rte_ether_addr *mac_addrs, int n, uint64_t *mac_own); +__rte_internal int mlx5_nl_promisc(int nlsk_fd, unsigned int iface_idx, int enable); +__rte_internal int mlx5_nl_allmulti(int nlsk_fd, unsigned int iface_idx, int enable); +__rte_internal unsigned int mlx5_nl_portnum(int nl, const char *name); +__rte_internal unsigned int mlx5_nl_ifindex(int nl, const char *name, uint32_t pindex); +__rte_internal int mlx5_nl_vf_mac_addr_modify(int nlsk_fd, unsigned int iface_idx, struct rte_ether_addr *mac, int vf_index); +__rte_internal int mlx5_nl_switch_info(int nl, unsigned int ifindex, struct mlx5_switch_info *info); +__rte_internal void mlx5_nl_vlan_vmwa_delete(struct mlx5_nl_vlan_vmwa_context *vmwa, uint32_t ifindex); +__rte_internal uint32_t mlx5_nl_vlan_vmwa_create(struct mlx5_nl_vlan_vmwa_context *vmwa, uint32_t ifindex, uint16_t tag); +__rte_internal int mlx5_nl_devlink_family_id_get(int nlsk_fd); +__rte_internal int mlx5_nl_enable_roce_get(int nlsk_fd, int family_id, const char *pci_addr, int *enable); +__rte_internal int mlx5_nl_driver_reload(int nlsk_fd, int family_id, const char *pci_addr); +__rte_internal int mlx5_nl_enable_roce_set(int nlsk_fd, int family_id, const char *pci_addr, int enable); diff --git a/drivers/common/mlx5/rte_common_mlx5_version.map b/drivers/common/mlx5/rte_common_mlx5_version.map index 564a9a7..61d1d4d 100644 --- a/drivers/common/mlx5/rte_common_mlx5_version.map +++ b/drivers/common/mlx5/rte_common_mlx5_version.map @@ -1,8 +1,10 @@ -DPDK_21 { +INTERNAL { global: mlx5_class_get; + mlx5_dev_to_pci_addr; + mlx5_devx_cmd_create_cq; mlx5_devx_cmd_create_qp; mlx5_devx_cmd_create_rq; @@ -27,8 +29,6 @@ DPDK_21 { mlx5_devx_cmd_query_virtq; mlx5_devx_get_out_command_status; - mlx5_dev_to_pci_addr; - mlx5_nl_allmulti; mlx5_nl_devlink_family_id_get; mlx5_nl_driver_reload; -- 2.8.4