[dpdk-dev] [PATCH v3 1/2] common/mlx5: add rte internal tag and avoid comparison

Ophir Munk ophirmu at mellanox.com
Thu May 7 10:56:33 CEST 2020


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 <ophirmu at mellanox.com>
Acked-by: Matan Azrad <matan at 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



More information about the dev mailing list