Skip to contentSkip to conversation

net/mlx5: convert to dynamic logs

PATCH Superseded Nelio Laranjeiro 2 participants 7 messages Mar 5, 2018 – Mar 18, 2018 Network drivers

lore
Share & tools
lore
#0 lore raw

cover net/mlx5: convert to dynamic logs

This series applies on top of [1]

[1] https://dpdk.org/dev/patchwork/patch/35650/

Nelio Laranjeiro (2):
net/mlx5: use port id in PMD log
net/mlx5: use dynamic logging

 drivers/net/mlx5/mlx5.c         | 227 +++++++++++++++++++-------------
 drivers/net/mlx5/mlx5_ethdev.c  | 112 ++++++++++------
 drivers/net/mlx5/mlx5_flow.c    |  97 +++++++++-----
 drivers/net/mlx5/mlx5_mac.c     |  11 +-
 drivers/net/mlx5/mlx5_mr.c      |  77 ++++++-----
 drivers/net/mlx5/mlx5_rxmode.c  |  16 +--
 drivers/net/mlx5/mlx5_rxq.c     | 285 +++++++++++++++++++++++-----------------
 drivers/net/mlx5/mlx5_rxtx.h    |  20 +--
 drivers/net/mlx5/mlx5_socket.c  |  58 +++++---
 drivers/net/mlx5/mlx5_stats.c   |  35 +++--
 drivers/net/mlx5/mlx5_trigger.c |  28 ++--
 drivers/net/mlx5/mlx5_txq.c     | 153 ++++++++++++---------
 drivers/net/mlx5/mlx5_utils.h   |  27 ++--
 drivers/net/mlx5/mlx5_vlan.c    |  21 +--
 14 files changed, 697 insertions(+), 470 deletions(-)
Signature · 1 line
2.11.0
#1 lore raw

PATCH 1/2 net/mlx5: use port id in PMD log

---
 drivers/net/mlx5/mlx5.c         |  79 +++++++++-------
 drivers/net/mlx5/mlx5_ethdev.c  |  86 +++++++++--------
 drivers/net/mlx5/mlx5_flow.c    |  82 +++++++++-------
 drivers/net/mlx5/mlx5_mac.c     |   9 +-
 drivers/net/mlx5/mlx5_mr.c      |  58 +++++++-----
 drivers/net/mlx5/mlx5_rxmode.c  |  16 ++--
 drivers/net/mlx5/mlx5_rxq.c     | 201 ++++++++++++++++++++++------------------
 drivers/net/mlx5/mlx5_rxtx.h    |   7 +-
 drivers/net/mlx5/mlx5_socket.c  |  47 ++++++----
 drivers/net/mlx5/mlx5_stats.c   |  29 +++---
 drivers/net/mlx5/mlx5_trigger.c |  26 +++---
 drivers/net/mlx5/mlx5_txq.c     | 125 ++++++++++++++-----------
 drivers/net/mlx5/mlx5_vlan.c    |  21 +++--
 13 files changed, 446 insertions(+), 340 deletions(-)
drivers/net/mlx5/mlx5.c +45 -34
index 10da7a283..2edd66f2e 100644
@@ -132,7 +132,6 @@ mlx5_alloc_verbs_buf(size_t size, void *data)
 	ret = rte_malloc_socket(__func__, size, alignment, socket);
 	if (!ret && size)
 		rte_errno = ENOMEM;
-	DEBUG("Extern alloc size: %lu, align: %lu: %p", size, alignment, ret);
 	return ret;
 }
 
@@ -148,7 +147,6 @@ static void
 mlx5_free_verbs_buf(void *ptr, void *data __rte_unused)
 {
 	assert(data != NULL);
-	DEBUG("Extern free request: %p", ptr);
 	rte_free(ptr);
 }
 
@@ -167,8 +165,8 @@ mlx5_dev_close(struct rte_eth_dev *dev)
 	unsigned int i;
 	int ret;
 
-	DEBUG("%p: closing device \"%s\"",
-	      (void *)dev,
+	DEBUG("port %u closing device \"%s\"",
+	      dev->data->port_id,
 	      ((priv->ctx != NULL) ? priv->ctx->device->name : ""));
 	/* In case mlx5_dev_stop() has not been called. */
 	mlx5_dev_interrupt_handler_uninstall(dev);
@@ -206,28 +204,35 @@ mlx5_dev_close(struct rte_eth_dev *dev)
 		mlx5_socket_uninit(dev);
 	ret = mlx5_hrxq_ibv_verify(dev);
 	if (ret)
-		WARN("%p: some Hash Rx queue still remain", (void *)dev);
+		WARN("port %u some hash Rx queue still remain",
+		     dev->data->port_id);
 	ret = mlx5_ind_table_ibv_verify(dev);
 	if (ret)
-		WARN("%p: some Indirection table still remain", (void *)dev);
+		WARN("port %u some indirection table still remain",
+		     dev->data->port_id);
 	ret = mlx5_rxq_ibv_verify(dev);
 	if (ret)
-		WARN("%p: some Verbs Rx queue still remain", (void *)dev);
+		WARN("port %u some Verbs Rx queue still remain",
+		     dev->data->port_id);
 	ret = mlx5_rxq_verify(dev);
 	if (ret)
-		WARN("%p: some Rx Queues still remain", (void *)dev);
+		WARN("port %u some Rx queues still remain",
+		     dev->data->port_id);
 	ret = mlx5_txq_ibv_verify(dev);
 	if (ret)
-		WARN("%p: some Verbs Tx queue still remain", (void *)dev);
+		WARN("port %u some Verbs Tx queue still remain",
+		     dev->data->port_id);
 	ret = mlx5_txq_verify(dev);
 	if (ret)
-		WARN("%p: some Tx Queues still remain", (void *)dev);
+		WARN("port %u some Tx queues still remain",
+		     dev->data->port_id);
 	ret = mlx5_flow_verify(dev);
 	if (ret)
-		WARN("%p: some flows still remain", (void *)dev);
+		WARN("port %u some flows still remain", dev->data->port_id);
 	ret = mlx5_mr_verify(dev);
 	if (ret)
-		WARN("%p: some Memory Region still remain", (void *)dev);
+		WARN("port %u some memory region still remain",
+		     dev->data->port_id);
 	memset(priv, 0, sizeof(*priv));
 }
 
@@ -503,15 +508,17 @@ mlx5_uar_init_primary(struct rte_eth_dev *dev)
 	addr = mmap(addr, MLX5_UAR_SIZE,
 		    PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 	if (addr == MAP_FAILED) {
-		ERROR("Failed to reserve UAR address space, please adjust "
-		      "MLX5_UAR_SIZE or try --base-virtaddr");
+		ERROR("port %u failed to reserve UAR address space, please"
+		      " adjust MLX5_UAR_SIZE or try --base-virtaddr",
+		      dev->data->port_id);
 		rte_errno = ENOMEM;
 		return -rte_errno;
 	}
 	/* Accept either same addr or a new addr returned from mmap if target
 	 * range occupied.
 	 */
-	INFO("Reserved UAR address space: %p", addr);
+	INFO("port %u reserved UAR address space: %p", dev->data->port_id,
+	     addr);
 	priv->uar_base = addr; /* for primary and secondary UAR re-mmap. */
 	uar_base = addr; /* process local, don't reserve again. */
 	return 0;
@@ -542,20 +549,21 @@ mlx5_uar_init_secondary(struct rte_eth_dev *dev)
 	addr = mmap(priv->uar_base, MLX5_UAR_SIZE,
 		    PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 	if (addr == MAP_FAILED) {
-		ERROR("UAR mmap failed: %p size: %llu",
-		      priv->uar_base, MLX5_UAR_SIZE);
+		ERROR("port %u UAR mmap failed: %p size: %llu",
+		      dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
 		rte_errno = ENXIO;
 		return -rte_errno;
 	}
 	if (priv->uar_base != addr) {
-		ERROR("UAR address %p size %llu occupied, please adjust "
+		ERROR("port %u UAR address %p size %llu occupied, please adjust "
 		      "MLX5_UAR_OFFSET or try EAL parameter --base-virtaddr",
-		      priv->uar_base, MLX5_UAR_SIZE);
+		      dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
 		rte_errno = ENXIO;
 		return -rte_errno;
 	}
 	uar_base = addr; /* process local, don't reserve again */
-	INFO("Reserved UAR address space: %p", addr);
+	INFO("port %u reserved UAR address space: %p", dev->data->port_id,
+	     addr);
 	return 0;
 }
 
@@ -659,7 +667,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 	mlx5_glue->dv_query_device(attr_ctx, &attrs_out);
 	if (attrs_out.flags & MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED) {
 		if (attrs_out.flags & MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW) {
-			DEBUG("Enhanced MPW is supported");
+			DEBUG("enhanced MPW is supported");
 			mps = MLX5_MPW_ENHANCED;
 		} else {
 			DEBUG("MPW is supported");
@@ -681,9 +689,9 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			     (attrs_out.tunnel_offloads_caps &
 			      MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE));
 	}
-	DEBUG("Tunnel offloading is %ssupported", tunnel_en ? "" : "not ");
+	DEBUG("tunnel offloading is %ssupported", tunnel_en ? "" : "not ");
 #else
-	WARN("Tunnel offloading disabled due to old OFED/rdma-core version");
+	WARN("tunnel offloading disabled due to old OFED/rdma-core version");
 #endif
 	if (mlx5_glue->query_device_ex(attr_ctx, NULL, &device_attr)) {
 		err = errno;
@@ -829,7 +837,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		if (config.ind_table_max_size >
 				(unsigned int)ETH_RSS_RETA_SIZE_512)
 			config.ind_table_max_size = ETH_RSS_RETA_SIZE_512;
-		DEBUG("maximum RX indirection table size is %u",
+		DEBUG("maximum Rx indirection table size is %u",
 		      config.ind_table_max_size);
 		config.hw_vlan_strip = !!(device_attr_ex.raw_packet_caps &
 					 IBV_RAW_PACKET_CAP_CVLAN_STRIPPING);
@@ -844,7 +852,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 #ifdef HAVE_IBV_WQ_FLAG_RX_END_PADDING
 		config.hw_padding = !!device_attr_ex.rx_pad_end_addr_align;
 #endif
-		DEBUG("hardware RX end alignment padding is %ssupported",
+		DEBUG("hardware Rx end alignment padding is %ssupported",
 		      (config.hw_padding ? "" : "not "));
 		config.tso = ((device_attr_ex.tso_caps.max_tso > 0) &&
 			      (device_attr_ex.tso_caps.supported_qpts &
@@ -858,8 +866,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			err = ENOTSUP;
 			goto port_error;
 		}
-		INFO("%sMPS is %s",
-		     config.mps == MLX5_MPW_ENHANCED ? "Enhanced " : "",
+		INFO("%s MPS is %s",
+		     config.mps == MLX5_MPW_ENHANCED ? "enhanced " : "",
 		     config.mps != MLX5_MPW_DISABLED ? "enabled" : "disabled");
 		if (config.cqe_comp && !cqe_comp) {
 			WARN("Rx CQE compression isn't supported");
@@ -882,13 +890,14 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			goto port_error;
 		/* Configure the first MAC address by default. */
 		if (mlx5_get_mac(eth_dev, &mac.addr_bytes)) {
-			ERROR("cannot get MAC address, is mlx5_en loaded?"
-			      " (errno: %s)", strerror(errno));
+			ERROR("port %u cannot get MAC address, is mlx5_en"
+			      " loaded? (errno: %s)", eth_dev->data->port_id,
+			      strerror(errno));
 			err = ENODEV;
 			goto port_error;
 		}
 		INFO("port %u MAC address is %02x:%02x:%02x:%02x:%02x:%02x",
-		     priv->port,
+		     eth_dev->data->port_id,
 		     mac.addr_bytes[0], mac.addr_bytes[1],
 		     mac.addr_bytes[2], mac.addr_bytes[3],
 		     mac.addr_bytes[4], mac.addr_bytes[5]);
@@ -898,16 +907,17 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 
 			if (mlx5_get_ifname(eth_dev, &ifname) == 0)
 				DEBUG("port %u ifname is \"%s\"",
-				      priv->port, ifname);
+				      eth_dev->data->port_id, ifname);
 			else
-				DEBUG("port %u ifname is unknown", priv->port);
+				DEBUG("port %u ifname is unknown",
+				      eth_dev->data->port_id);
 		}
 #endif
 		/* Get actual MTU if possible. */
 		err = mlx5_get_mtu(eth_dev, &priv->mtu);
 		if (err)
 			goto port_error;
-		DEBUG("port %u MTU is %u", priv->port, priv->mtu);
+		DEBUG("port %u MTU is %u", eth_dev->data->port_id, priv->mtu);
 		/*
 		 * Initialize burst functions to prevent crashes before link-up.
 		 */
@@ -928,7 +938,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 					       MLX5DV_CTX_ATTR_BUF_ALLOCATORS,
 					       (void *)((uintptr_t)&alctr));
 		/* Bring Ethernet device up. */
-		DEBUG("forcing Ethernet interface up");
+		DEBUG("port %u forcing Ethernet interface up",
+		      eth_dev->data->port_id);
 		mlx5_set_flags(eth_dev, ~IFF_UP, IFF_UP);
 		/* Store device configuration on private structure. */
 		priv->config = config;
drivers/net/mlx5/mlx5_ethdev.c +47 -39

212 lines not on this page · raw message

drivers/net/mlx5/mlx5_flow.c +50 -32

231 lines not on this page · raw message

drivers/net/mlx5/mlx5_mac.c +5 -4
index ba54c055e..e2f5b5b3a 100644
@@ -73,8 +73,8 @@ mlx5_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)
 		int ret = mlx5_traffic_restart(dev);
 
 		if (ret)
-			ERROR("%p cannot remove mac address: %s", (void *)dev,
-			      strerror(rte_errno));
+			ERROR("port %u cannot remove mac address: %s",
+			      dev->data->port_id, strerror(rte_errno));
 	}
 }
 
@@ -130,8 +130,9 @@ mlx5_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
 {
 	int ret;
 
-	DEBUG("%p: setting primary MAC address", (void *)dev);
+	DEBUG("port %u setting primary MAC address", dev->data->port_id);
 	ret = mlx5_mac_addr_add(dev, mac_addr, 0, 0);
 	if (ret)
-		ERROR("cannot set mac address: %s", strerror(rte_errno));
+		ERROR("port %u cannot set mac address: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
drivers/net/mlx5/mlx5_mr.c +33 -25

136 lines not on this page · raw message

drivers/net/mlx5/mlx5_rxmode.c +8 -8
index 0c1e9eb2a..8cc5667a4 100644
@@ -37,8 +37,8 @@ mlx5_promiscuous_enable(struct rte_eth_dev *dev)
 	dev->data->promiscuous = 1;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("%p cannot enable promiscuous mode: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot enable promiscuous mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -55,8 +55,8 @@ mlx5_promiscuous_disable(struct rte_eth_dev *dev)
 	dev->data->promiscuous = 0;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("%p cannot disable promiscuous mode: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot disable promiscuous mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -73,8 +73,8 @@ mlx5_allmulticast_enable(struct rte_eth_dev *dev)
 	dev->data->all_multicast = 1;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("%p cannot enable allmulicast mode: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot enable allmulicast mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -91,6 +91,6 @@ mlx5_allmulticast_disable(struct rte_eth_dev *dev)
 	dev->data->all_multicast = 0;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("%p cannot disable allmulicast mode: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot disable allmulicast mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
drivers/net/mlx5/mlx5_rxq.c +111 -90

478 lines not on this page · raw message

drivers/net/mlx5/mlx5_rxtx.h +5 -2
index 17a6072e2..ee30a0677 100644
@@ -126,6 +126,7 @@ struct mlx5_rxq_ctrl {
 	struct mlx5_rxq_data rxq; /* Data path structure. */
 	unsigned int socket; /* CPU socket ID for allocations. */
 	unsigned int irq:1; /* Whether IRQ is enabled. */
+	uint16_t idx; /* Queue index. */
 };
 
 /* Indirection table. */
@@ -187,6 +188,7 @@ struct mlx5_txq_data {
 struct mlx5_txq_ibv {
 	LIST_ENTRY(mlx5_txq_ibv) next; /* Pointer to the next element. */
 	rte_atomic32_t refcnt; /* Reference counter. */
+	struct mlx5_txq_ctrl *txq_ctrl; /* Pointer to the control queue. */
 	struct ibv_cq *cq; /* Completion Queue. */
 	struct ibv_qp *qp; /* Queue Pair. */
 };
@@ -203,6 +205,7 @@ struct mlx5_txq_ctrl {
 	struct mlx5_txq_data txq; /* Data path structure. */
 	off_t uar_mmap_offset; /* UAR mmap offset for non-primary process. */
 	volatile void *bf_reg_orig; /* Blueflame register from verbs. */
+	uint16_t idx; /* Queue index. */
 };
 
 /* mlx5_rxq.c */
@@ -446,7 +449,7 @@ mlx5_tx_complete(struct mlx5_txq_data *txq)
 	if ((MLX5_CQE_OPCODE(cqe->op_own) == MLX5_CQE_RESP_ERR) ||
 	    (MLX5_CQE_OPCODE(cqe->op_own) == MLX5_CQE_REQ_ERR)) {
 		if (!check_cqe_seen(cqe)) {
-			ERROR("unexpected error CQE, TX stopped");
+			ERROR("unexpected error CQE, Tx stopped");
 			rte_hexdump(stderr, "MLX5 TXQ:",
 				    (const void *)((uintptr_t)txq->wqes),
 				    ((1 << txq->wqe_n) *
@@ -563,7 +566,7 @@ mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb)
 	} else {
 		struct rte_mempool *mp = mlx5_tx_mb2mp(mb);
 
-		WARN("Failed to register mempool 0x%p(%s)",
+		WARN("failed to register mempool 0x%p(%s)",
 		      (void *)mp, mp->name);
 	}
 	return (uint32_t)-1;
drivers/net/mlx5/mlx5_socket.c +27 -20

146 lines not on this page · raw message

drivers/net/mlx5/mlx5_stats.c +18 -11
index 06e9a1f19..066d347a0 100644
@@ -148,7 +148,8 @@ mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
 	ifr.ifr_data = (caddr_t)et_stats;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("unable to read statistic values from device");
+		WARN("port %u unable to read statistic values from device",
+		     dev->data->port_id);
 		return ret;
 	}
 	for (i = 0; i != xstats_n; ++i) {
@@ -194,7 +195,8 @@ mlx5_ethtool_get_stats_n(struct rte_eth_dev *dev) {
 	ifr.ifr_data = (caddr_t)&drvinfo;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("unable to query number of statistics");
+		WARN("port %u unable to query number of statistics",
+		     dev->data->port_id);
 		return ret;
 	}
 	return drvinfo.n_stats;
@@ -221,7 +223,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 
 	ret = mlx5_ethtool_get_stats_n(dev);
 	if (ret < 0) {
-		WARN("no extended statistics available");
+		WARN("port %u no extended statistics available",
+		     dev->data->port_id);
 		return;
 	}
 	dev_stats_n = ret;
@@ -232,7 +235,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		  rte_malloc("xstats_strings",
 			     str_sz + sizeof(struct ethtool_gstrings), 0);
 	if (!strings) {
-		WARN("unable to allocate memory for xstats");
+		WARN("port %u unable to allocate memory for xstats",
+		     dev->data->port_id);
 		return;
 	}
 	strings->cmd = ETHTOOL_GSTRINGS;
@@ -241,7 +245,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	ifr.ifr_data = (caddr_t)strings;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("unable to get statistic names");
+		WARN("port %u unable to get statistic names",
+		     dev->data->port_id);
 		goto free;
 	}
 	for (j = 0; j != xstats_n; ++j)
@@ -262,7 +267,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		if (mlx5_counters_init[j].ib)
 			continue;
 		if (xstats_ctrl->dev_table_idx[j] >= dev_stats_n) {
-			WARN("counter \"%s\" is not recognized",
+			WARN("port %u counter \"%s\" is not recognized",
+			     dev->data->port_id,
 			     mlx5_counters_init[j].dpdk_name);
 			goto free;
 		}
@@ -271,7 +277,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	assert(xstats_n <= MLX5_MAX_XSTATS);
 	ret = mlx5_read_dev_counters(dev, xstats_ctrl->base);
 	if (ret)
-		ERROR("cannot read device counters: %s", strerror(rte_errno));
+		ERROR("port %u cannot read device counters: %s",
+		      dev->data->port_id, strerror(rte_errno));
 free:
 	rte_free(strings);
 }
@@ -438,7 +445,7 @@ mlx5_xstats_reset(struct rte_eth_dev *dev)
 
 	stats_n = mlx5_ethtool_get_stats_n(dev);
 	if (stats_n < 0) {
-		ERROR("%p cannot get stats: %s", (void *)dev,
+		ERROR("port %u cannot get stats: %s", dev->data->port_id,
 		      strerror(-stats_n));
 		return;
 	}
@@ -446,8 +453,8 @@ mlx5_xstats_reset(struct rte_eth_dev *dev)
 		mlx5_xstats_init(dev);
 	ret = mlx5_read_dev_counters(dev, counters);
 	if (ret) {
-		ERROR("%p cannot read device counters: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot read device counters: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		return;
 	}
 	for (i = 0; i != n; ++i)
@@ -469,7 +476,7 @@ mlx5_xstats_reset(struct rte_eth_dev *dev)
  */
 int
 mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused,
-		struct rte_eth_xstat_name *xstats_names, unsigned int n)
+		      struct rte_eth_xstat_name *xstats_names, unsigned int n)
 {
 	unsigned int i;
 
drivers/net/mlx5/mlx5_trigger.c +14 -12
index 4e396b7f0..3d6b8c3b0 100644
@@ -150,37 +150,38 @@ mlx5_dev_start(struct rte_eth_dev *dev)
 	dev->data->dev_started = 1;
 	ret = mlx5_flow_create_drop_queue(dev);
 	if (ret) {
-		ERROR("%p: Drop queue allocation failed: %s",
-		      (void *)dev, strerror(rte_errno));
+		ERROR("port %u drop queue allocation failed: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
-	DEBUG("%p: allocating and configuring hash RX queues", (void *)dev);
+	DEBUG("port %u allocating and configuring hash Rx queues",
+	      dev->data->port_id);
 	rte_mempool_walk(mlx5_mp2mr_iter, priv);
 	ret = mlx5_txq_start(dev);
 	if (ret) {
-		ERROR("%p: Tx Queue allocation failed: %s",
-		      (void *)dev, strerror(rte_errno));
+		ERROR("port %u Tx queue allocation failed: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
 	ret = mlx5_rxq_start(dev);
 	if (ret) {
-		ERROR("%p: Rx Queue allocation failed: %s",
-		      (void *)dev, strerror(rte_errno));
+		ERROR("port %u Rx queue allocation failed: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
 	ret = mlx5_rx_intr_vec_enable(dev);
 	if (ret) {
-		ERROR("%p: Rx interrupt vector creation failed",
-		      (void *)dev);
+		ERROR("port %u Rx interrupt vector creation failed",
+		      dev->data->port_id);
 		goto error;
 	}
 	mlx5_xstats_init(dev);
 	/* Update link status and Tx/Rx callbacks for the first time. */
 	memset(&dev->data->dev_link, 0, sizeof(struct rte_eth_link));
-	INFO("Forcing port %u link to be up", dev->data->port_id);
+	INFO("port %u forcing link to be up", dev->data->port_id);
 	ret = mlx5_force_link_status_change(dev, ETH_LINK_UP);
 	if (ret) {
-		DEBUG("Failed to set port %u link to be up",
+		DEBUG("failed to set port %u link to be up",
 		      dev->data->port_id);
 		goto error;
 	}
@@ -221,7 +222,8 @@ mlx5_dev_stop(struct rte_eth_dev *dev)
 	dev->tx_pkt_burst = removed_tx_burst;
 	rte_wmb();
 	usleep(1000 * priv->rxqs_n);
-	DEBUG("%p: cleaning up and destroying hash RX queues", (void *)dev);
+	DEBUG("port %u cleaning up and destroying hash Rx queues",
+	      dev->data->port_id);
 	mlx5_flow_stop(dev, &priv->flows);
 	mlx5_traffic_disable(dev);
 	mlx5_rx_intr_vec_disable(dev);
drivers/net/mlx5/mlx5_txq.c +71 -54

301 lines not on this page · raw message

drivers/net/mlx5/mlx5_vlan.c +12 -9
index 3246c0a38..f6643fcd4 100644
@@ -45,8 +45,8 @@ mlx5_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
 	struct priv *priv = dev->data->dev_private;
 	unsigned int i;
 
-	DEBUG("%p: %s VLAN filter ID %" PRIu16,
-	      (void *)dev, (on ? "enable" : "disable"), vlan_id);
+	DEBUG("port %u %s VLAN filter ID %" PRIu16,
+	      dev->data->port_id, (on ? "enable" : "disable"), vlan_id);
 	assert(priv->vlan_filter_n <= RTE_DIM(priv->vlan_filter));
 	for (i = 0; (i != priv->vlan_filter_n); ++i)
 		if (priv->vlan_filter[i] == vlan_id)
@@ -108,16 +108,18 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
 
 	/* Validate hw support */
 	if (!priv->config.hw_vlan_strip) {
-		ERROR("VLAN stripping is not supported");
+		ERROR("port %u VLAN stripping is not supported",
+		      dev->data->port_id);
 		return;
 	}
 	/* Validate queue number */
 	if (queue >= priv->rxqs_n) {
-		ERROR("VLAN stripping, invalid queue number %d", queue);
+		ERROR("port %u VLAN stripping, invalid queue number %d",
+		      dev->data->port_id, queue);
 		return;
 	}
-	DEBUG("set VLAN offloads 0x%x for port %d queue %d",
-	      vlan_offloads, rxq->port_id, queue);
+	DEBUG("port %u set VLAN offloads 0x%x for port %uqueue %d",
+	      dev->data->port_id, vlan_offloads, rxq->port_id, queue);
 	if (!rxq_ctrl->ibv) {
 		/* Update related bits in RX queue. */
 		rxq->vlan_strip = !!on;
@@ -130,8 +132,8 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
 	};
 	ret = mlx5_glue->modify_wq(rxq_ctrl->ibv->wq, &mod);
 	if (ret) {
-		ERROR("%p: failed to modified stripping mode: %s",
-		      (void *)dev, strerror(rte_errno));
+		ERROR("port %u failed to modified stripping mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		return;
 	}
 	/* Update related bits in RX queue. */
@@ -160,7 +162,8 @@ mlx5_vlan_offload_set(struct rte_eth_dev *dev, int mask)
 				       DEV_RX_OFFLOAD_VLAN_STRIP);
 
 		if (!priv->config.hw_vlan_strip) {
-			ERROR("VLAN stripping is not supported");
+			ERROR("port %u VLAN stripping is not supported",
+			      dev->data->port_id);
 			return 0;
 		}
 		/* Run on every RX queue and set/reset VLAN stripping. */
Signature · 1 line
2.11.0
#2 lore raw

PATCH 2/2 net/mlx5: use dynamic logging

In reply to Nelio Laranjeiro
---
 drivers/net/mlx5/mlx5.c         | 238 ++++++++++++++++++--------------
 drivers/net/mlx5/mlx5_ethdev.c  | 118 +++++++++-------
 drivers/net/mlx5/mlx5_flow.c    | 109 ++++++++-------
 drivers/net/mlx5/mlx5_mac.c     |  12 +-
 drivers/net/mlx5/mlx5_mr.c      |  85 ++++++------
 drivers/net/mlx5/mlx5_rxmode.c  |  16 +--
 drivers/net/mlx5/mlx5_rxq.c     | 298 ++++++++++++++++++++++------------------
 drivers/net/mlx5/mlx5_rxtx.h    |  17 +--
 drivers/net/mlx5/mlx5_socket.c  |  65 +++++----
 drivers/net/mlx5/mlx5_stats.c   |  38 ++---
 drivers/net/mlx5/mlx5_trigger.c |  30 ++--
 drivers/net/mlx5/mlx5_txq.c     | 164 ++++++++++++----------
 drivers/net/mlx5/mlx5_utils.h   |  27 ++--
 drivers/net/mlx5/mlx5_vlan.c    |  24 ++--
 14 files changed, 681 insertions(+), 560 deletions(-)
drivers/net/mlx5/mlx5.c +135 -103
index 2edd66f2e..4300bafb7 100644
@@ -77,6 +77,9 @@
 #define MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP (1 << 4)
 #endif
 
+/** Driver-specific log messages type. */
+int mlx5_logtype;
+
 /**
  * Retrieve integer value from environment variable.
  *
@@ -165,9 +168,9 @@ mlx5_dev_close(struct rte_eth_dev *dev)
 	unsigned int i;
 	int ret;
 
-	DEBUG("port %u closing device \"%s\"",
-	      dev->data->port_id,
-	      ((priv->ctx != NULL) ? priv->ctx->device->name : ""));
+	DRV_LOG(DEBUG, "port %u closing device \"%s\"",
+		dev->data->port_id,
+		((priv->ctx != NULL) ? priv->ctx->device->name : ""));
 	/* In case mlx5_dev_stop() has not been called. */
 	mlx5_dev_interrupt_handler_uninstall(dev);
 	mlx5_traffic_disable(dev);
@@ -204,35 +207,36 @@ mlx5_dev_close(struct rte_eth_dev *dev)
 		mlx5_socket_uninit(dev);
 	ret = mlx5_hrxq_ibv_verify(dev);
 	if (ret)
-		WARN("port %u some hash Rx queue still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some hash Rx queue still remain",
+			dev->data->port_id);
 	ret = mlx5_ind_table_ibv_verify(dev);
 	if (ret)
-		WARN("port %u some indirection table still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some indirection table still remain",
+			dev->data->port_id);
 	ret = mlx5_rxq_ibv_verify(dev);
 	if (ret)
-		WARN("port %u some Verbs Rx queue still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some Verbs Rx queue still remain",
+			dev->data->port_id);
 	ret = mlx5_rxq_verify(dev);
 	if (ret)
-		WARN("port %u some Rx queues still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some Rx queues still remain",
+			dev->data->port_id);
 	ret = mlx5_txq_ibv_verify(dev);
 	if (ret)
-		WARN("port %u some Verbs Tx queue still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some Verbs Tx queue still remain",
+			dev->data->port_id);
 	ret = mlx5_txq_verify(dev);
 	if (ret)
-		WARN("port %u some Tx queues still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some Tx queues still remain",
+			dev->data->port_id);
 	ret = mlx5_flow_verify(dev);
 	if (ret)
-		WARN("port %u some flows still remain", dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some flows still remain",
+			dev->data->port_id);
 	ret = mlx5_mr_verify(dev);
 	if (ret)
-		WARN("port %u some memory region still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some memory region still remain",
+			dev->data->port_id);
 	memset(priv, 0, sizeof(*priv));
 }
 
@@ -384,7 +388,7 @@ mlx5_args_check(const char *key, const char *val, void *opaque)
 	tmp = strtoul(val, NULL, 0);
 	if (errno) {
 		rte_errno = errno;
-		WARN("%s: \"%s\" is not a valid integer", key, val);
+		DRV_LOG(WARNING, "%s: \"%s\" is not a valid integer", key, val);
 		return -rte_errno;
 	}
 	if (strcmp(MLX5_RXQ_CQE_COMP_EN, key) == 0) {
@@ -404,7 +408,7 @@ mlx5_args_check(const char *key, const char *val, void *opaque)
 	} else if (strcmp(MLX5_RX_VEC_EN, key) == 0) {
 		config->rx_vec_en = !!tmp;
 	} else {
-		WARN("%s: unknown parameter", key);
+		DRV_LOG(WARNING, "%s: unknown parameter", key);
 		rte_errno = EINVAL;
 		return -rte_errno;
 	}
@@ -508,17 +512,18 @@ mlx5_uar_init_primary(struct rte_eth_dev *dev)
 	addr = mmap(addr, MLX5_UAR_SIZE,
 		    PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 	if (addr == MAP_FAILED) {
-		ERROR("port %u failed to reserve UAR address space, please"
-		      " adjust MLX5_UAR_SIZE or try --base-virtaddr",
-		      dev->data->port_id);
+		DRV_LOG(ERR,
+			"port %u failed to reserve UAR address space, please"
+			" adjust MLX5_UAR_SIZE or try --base-virtaddr",
+			dev->data->port_id);
 		rte_errno = ENOMEM;
 		return -rte_errno;
 	}
 	/* Accept either same addr or a new addr returned from mmap if target
 	 * range occupied.
 	 */
-	INFO("port %u reserved UAR address space: %p", dev->data->port_id,
-	     addr);
+	DRV_LOG(INFO, "port %u reserved UAR address space: %p",
+		dev->data->port_id, addr);
 	priv->uar_base = addr; /* for primary and secondary UAR re-mmap. */
 	uar_base = addr; /* process local, don't reserve again. */
 	return 0;
@@ -549,21 +554,23 @@ mlx5_uar_init_secondary(struct rte_eth_dev *dev)
 	addr = mmap(priv->uar_base, MLX5_UAR_SIZE,
 		    PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 	if (addr == MAP_FAILED) {
-		ERROR("port %u UAR mmap failed: %p size: %llu",
-		      dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
+		DRV_LOG(ERR, "port %u UAR mmap failed: %p size: %llu",
+			dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
 		rte_errno = ENXIO;
 		return -rte_errno;
 	}
 	if (priv->uar_base != addr) {
-		ERROR("port %u UAR address %p size %llu occupied, please adjust "
-		      "MLX5_UAR_OFFSET or try EAL parameter --base-virtaddr",
-		      dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
+		DRV_LOG(ERR,
+			"port %u UAR address %p size %llu occupied, please"
+			" adjust MLX5_UAR_OFFSET or try EAL parameter"
+			" --base-virtaddr",
+			dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
 		rte_errno = ENXIO;
 		return -rte_errno;
 	}
 	uar_base = addr; /* process local, don't reserve again */
-	INFO("port %u reserved UAR address space: %p", dev->data->port_id,
-	     addr);
+	DRV_LOG(INFO, "port %u reserved UAR address space: %p",
+		dev->data->port_id, addr);
 	return 0;
 }
 
@@ -604,11 +611,11 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 	/* Get mlx5_dev[] index. */
 	idx = mlx5_dev_idx(&pci_dev->addr);
 	if (idx == -1) {
-		ERROR("this driver cannot support any more adapters");
+		DRV_LOG(ERR, "this driver cannot support any more adapters");
 		err = ENOMEM;
 		goto error;
 	}
-	DEBUG("using driver device index %d", idx);
+	DRV_LOG(DEBUG, "using driver device index %d", idx);
 	/* Save PCI address. */
 	mlx5_dev[idx].pci_addr = pci_dev->addr;
 	list = mlx5_glue->get_device_list(&i);
@@ -616,7 +623,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		assert(errno);
 		err = errno;
 		if (errno == ENOSYS)
-			ERROR("cannot list devices, is ib_uverbs loaded?");
+			DRV_LOG(ERR,
+				"cannot list devices, is ib_uverbs loaded?");
 		goto error;
 	}
 	assert(i >= 0);
@@ -628,7 +636,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		struct rte_pci_addr pci_addr;
 
 		--i;
-		DEBUG("checking device \"%s\"", list[i]->name);
+		DRV_LOG(DEBUG, "checking device \"%s\"", list[i]->name);
 		if (mlx5_ibv_device_to_pci_addr(list[i], &pci_addr))
 			continue;
 		if ((pci_dev->addr.domain != pci_addr.domain) ||
@@ -636,8 +644,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		    (pci_dev->addr.devid != pci_addr.devid) ||
 		    (pci_dev->addr.function != pci_addr.function))
 			continue;
-		INFO("PCI information matches, using device \"%s\"",
-		     list[i]->name);
+		DRV_LOG(INFO, "PCI information matches, using device \"%s\"",
+			list[i]->name);
 		attr_ctx = mlx5_glue->open_device(list[i]);
 		rte_errno = errno;
 		err = rte_errno;
@@ -647,16 +655,18 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		mlx5_glue->free_device_list(list);
 		switch (err) {
 		case 0:
-			ERROR("cannot access device, is mlx5_ib loaded?");
+			DRV_LOG(ERR,
+				"cannot access device, is mlx5_ib loaded?");
 			err = ENODEV;
 			goto error;
 		case EINVAL:
-			ERROR("cannot use device, are drivers up to date?");
+			DRV_LOG(ERR,
+				"cannot use device, are drivers up to date?");
 			goto error;
 		}
 	}
 	ibv_dev = list[i];
-	DEBUG("device opened");
+	DRV_LOG(DEBUG, "device opened");
 	/*
 	 * Multi-packet send is supported by ConnectX-4 Lx PF as well
 	 * as all ConnectX-5 devices.
@@ -667,14 +677,14 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 	mlx5_glue->dv_query_device(attr_ctx, &attrs_out);
 	if (attrs_out.flags & MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED) {
 		if (attrs_out.flags & MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW) {
-			DEBUG("enhanced MPW is supported");
+			DRV_LOG(DEBUG, "enhanced MPW is supported");
 			mps = MLX5_MPW_ENHANCED;
 		} else {
-			DEBUG("MPW is supported");
+			DRV_LOG(DEBUG, "MPW is supported");
 			mps = MLX5_MPW;
 		}
 	} else {
-		DEBUG("MPW isn't supported");
+		DRV_LOG(DEBUG, "MPW isn't supported");
 		mps = MLX5_MPW_DISABLED;
 	}
 	if (RTE_CACHE_LINE_SIZE == 128 &&
@@ -689,15 +699,18 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			     (attrs_out.tunnel_offloads_caps &
 			      MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE));
 	}
-	DEBUG("tunnel offloading is %ssupported", tunnel_en ? "" : "not ");
+	DRV_LOG(DEBUG, "tunnel offloading is %ssupported",
+		tunnel_en ? "" : "not ");
 #else
-	WARN("tunnel offloading disabled due to old OFED/rdma-core version");
+	DRV_LOG(WARNING,
+		"tunnel offloading disabled due to old OFED/rdma-core version");
 #endif
 	if (mlx5_glue->query_device_ex(attr_ctx, NULL, &device_attr)) {
 		err = errno;
 		goto error;
 	}
-	INFO("%u port(s) detected", device_attr.orig_attr.phys_port_cnt);
+	DRV_LOG(INFO, "%u port(s) detected",
+		device_attr.orig_attr.phys_port_cnt);
 	for (i = 0; i < device_attr.orig_attr.phys_port_cnt; i++) {
 		char name[RTE_ETH_NAME_MAX_LEN];
 		int len;
@@ -732,7 +745,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
 			eth_dev = rte_eth_dev_attach_secondary(name);
 			if (eth_dev == NULL) {
-				ERROR("can not attach rte ethdev");
+				DRV_LOG(ERR, "can not attach rte ethdev");
 				rte_errno = ENOMEM;
 				err = rte_errno;
 				goto error;
@@ -761,7 +774,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 				mlx5_select_tx_function(eth_dev);
 			continue;
 		}
-		DEBUG("using port %u (%08" PRIx32 ")", port, test);
+		DRV_LOG(DEBUG, "using port %u (%08" PRIx32 ")", port, test);
 		ctx = mlx5_glue->open_device(ibv_dev);
 		if (ctx == NULL) {
 			err = ENODEV;
@@ -771,23 +784,25 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		/* Check port status. */
 		err = mlx5_glue->query_port(ctx, port, &port_attr);
 		if (err) {
-			ERROR("port query failed: %s", strerror(err));
+			DRV_LOG(ERR, "port query failed: %s", strerror(err));
 			goto port_error;
 		}
 		if (port_attr.link_layer != IBV_LINK_LAYER_ETHERNET) {
-			ERROR("port %d is not configured in Ethernet mode",
-			      port);
+			DRV_LOG(ERR,
+				"port %d is not configured in Ethernet mode",
+				port);
 			err = EINVAL;
 			goto port_error;
 		}
 		if (port_attr.state != IBV_PORT_ACTIVE)
-			DEBUG("port %d is not active: \"%s\" (%d)",
-			      port, mlx5_glue->port_state_str(port_attr.state),
-			      port_attr.state);
+			DRV_LOG(DEBUG, "port %d is not active: \"%s\" (%d)",
+				port,
+				mlx5_glue->port_state_str(port_attr.state),
+				port_attr.state);
 		/* Allocate protection domain. */
 		pd = mlx5_glue->alloc_pd(ctx);
 		if (pd == NULL) {
-			ERROR("PD allocation failure");
+			DRV_LOG(ERR, "PD allocation failure");
 			err = ENOMEM;
 			goto port_error;
 		}
@@ -797,7 +812,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 				   sizeof(*priv),
 				   RTE_CACHE_LINE_SIZE);
 		if (priv == NULL) {
-			ERROR("priv allocation failure");
+			DRV_LOG(ERR, "priv allocation failure");
 			err = ENOMEM;
 			goto port_error;
 		}
@@ -810,25 +825,26 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		priv->mtu = ETHER_MTU;
 		err = mlx5_args(&config, pci_dev->device.devargs);
 		if (err) {
-			ERROR("failed to process device arguments: %s",
-			      strerror(err));
+			DRV_LOG(ERR, "failed to process device arguments: %s",
+				strerror(err));
 			goto port_error;
 		}
 		if (mlx5_glue->query_device_ex(ctx, NULL, &device_attr_ex)) {
-			ERROR("ibv_query_device_ex() failed");
+			DRV_LOG(ERR, "ibv_query_device_ex() failed");
 			err = errno;
 			goto port_error;
 		}
 		config.hw_csum = !!(device_attr_ex.device_cap_flags_ex &
 				    IBV_DEVICE_RAW_IP_CSUM);
-		DEBUG("checksum offloading is %ssupported",
-		      (config.hw_csum ? "" : "not "));
+		DRV_LOG(DEBUG, "checksum offloading is %ssupported",
+			(config.hw_csum ? "" : "not "));
 #ifdef HAVE_IBV_DEVICE_COUNTERS_SET_SUPPORT
 		config.flow_counter_en = !!(device_attr.max_counter_sets);
 		mlx5_glue->describe_counter_set(ctx, 0, &cs_desc);
-		DEBUG("counter type = %d, num of cs = %ld, attributes = %d",
-		      cs_desc.counter_type, cs_desc.num_of_cs,
-		      cs_desc.attributes);
+		DRV_LOG(DEBUG,
+			"counter type = %d, num of cs = %ld, attributes = %d",
+			cs_desc.counter_type, cs_desc.num_of_cs,
+			cs_desc.attributes);
 #endif
 		config.ind_table_max_size =
 			device_attr_ex.rss_caps.max_rwq_indirection_table_size;
@@ -837,23 +853,24 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		if (config.ind_table_max_size >
 				(unsigned int)ETH_RSS_RETA_SIZE_512)
 			config.ind_table_max_size = ETH_RSS_RETA_SIZE_512;
-		DEBUG("maximum Rx indirection table size is %u",
-		      config.ind_table_max_size);
+		DRV_LOG(DEBUG, "maximum Rx indirection table size is %u",
+			config.ind_table_max_size);
 		config.hw_vlan_strip = !!(device_attr_ex.raw_packet_caps &
 					 IBV_RAW_PACKET_CAP_CVLAN_STRIPPING);
-		DEBUG("VLAN stripping is %ssupported",
-		      (config.hw_vlan_strip ? "" : "not "));
+		DRV_LOG(DEBUG, "VLAN stripping is %ssupported",
+			(config.hw_vlan_strip ? "" : "not "));
 
 		config.hw_fcs_strip = !!(device_attr_ex.raw_packet_caps &
 					 IBV_RAW_PACKET_CAP_SCATTER_FCS);
-		DEBUG("FCS stripping configuration is %ssupported",
-		      (config.hw_fcs_strip ? "" : "not "));
+		DRV_LOG(DEBUG, "FCS stripping configuration is %ssupported",
+			(config.hw_fcs_strip ? "" : "not "));
 
 #ifdef HAVE_IBV_WQ_FLAG_RX_END_PADDING
 		config.hw_padding = !!device_attr_ex.rx_pad_end_addr_align;
 #endif
-		DEBUG("hardware Rx end alignment padding is %ssupported",
-		      (config.hw_padding ? "" : "not "));
+		DRV_LOG(DEBUG,
+			"hardware Rx end alignment padding is %ssupported",
+			(config.hw_padding ? "" : "not "));
 		config.tso = ((device_attr_ex.tso_caps.max_tso > 0) &&
 			      (device_attr_ex.tso_caps.supported_qpts &
 			      (1 << IBV_QPT_RAW_PACKET)));
@@ -861,21 +878,23 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			config.tso_max_payload_sz =
 					device_attr_ex.tso_caps.max_tso;
 		if (config.mps && !mps) {
-			ERROR("multi-packet send not supported on this device"
-			      " (" MLX5_TXQ_MPW_EN ")");
+			DRV_LOG(ERR,
+				"multi-packet send not supported on this device"
+				" (" MLX5_TXQ_MPW_EN ")");
 			err = ENOTSUP;
 			goto port_error;
 		}
-		INFO("%s MPS is %s",
-		     config.mps == MLX5_MPW_ENHANCED ? "enhanced " : "",
-		     config.mps != MLX5_MPW_DISABLED ? "enabled" : "disabled");
+		DRV_LOG(INFO, "%s MPS is %s",
+			config.mps == MLX5_MPW_ENHANCED ? "enhanced " : "",
+			config.mps != MLX5_MPW_DISABLED ? "enabled" :
+			"disabled");
 		if (config.cqe_comp && !cqe_comp) {
-			WARN("Rx CQE compression isn't supported");
+			DRV_LOG(WARNING, "Rx CQE compression isn't supported");
 			config.cqe_comp = 0;
 		}
 		eth_dev = rte_eth_dev_allocate(name);
 		if (eth_dev == NULL) {
-			ERROR("can not allocate rte ethdev");
+			DRV_LOG(ERR, "can not allocate rte ethdev");
 			err = ENOMEM;
 			goto port_error;
 		}
@@ -890,34 +909,37 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			goto port_error;
 		/* Configure the first MAC address by default. */
 		if (mlx5_get_mac(eth_dev, &mac.addr_bytes)) {
-			ERROR("port %u cannot get MAC address, is mlx5_en"
-			      " loaded? (errno: %s)", eth_dev->data->port_id,
-			      strerror(errno));
+			DRV_LOG(ERR,
+				"port %u cannot get MAC address, is mlx5_en"
+				" loaded? (errno: %s)",
+				eth_dev->data->port_id, strerror(errno));
 			err = ENODEV;
 			goto port_error;
 		}
-		INFO("port %u MAC address is %02x:%02x:%02x:%02x:%02x:%02x",
-		     eth_dev->data->port_id,
-		     mac.addr_bytes[0], mac.addr_bytes[1],
-		     mac.addr_bytes[2], mac.addr_bytes[3],
-		     mac.addr_bytes[4], mac.addr_bytes[5]);
+		DRV_LOG(INFO,
+			"port %u MAC address is %02x:%02x:%02x:%02x:%02x:%02x",
+			eth_dev->data->port_id,
+			mac.addr_bytes[0], mac.addr_bytes[1],
+			mac.addr_bytes[2], mac.addr_bytes[3],
+			mac.addr_bytes[4], mac.addr_bytes[5]);
 #ifndef NDEBUG
 		{
 			char ifname[IF_NAMESIZE];
 
 			if (mlx5_get_ifname(eth_dev, &ifname) == 0)
-				DEBUG("port %u ifname is \"%s\"",
-				      eth_dev->data->port_id, ifname);
+				DRV_LOG(DEBUG, "port %u ifname is \"%s\"",
+					eth_dev->data->port_id, ifname);
 			else
-				DEBUG("port %u ifname is unknown",
-				      eth_dev->data->port_id);
+				DRV_LOG(DEBUG, "port %u ifname is unknown",
+					eth_dev->data->port_id);
 		}
 #endif
 		/* Get actual MTU if possible. */
 		err = mlx5_get_mtu(eth_dev, &priv->mtu);
 		if (err)
 			goto port_error;
-		DEBUG("port %u MTU is %u", eth_dev->data->port_id, priv->mtu);
+		DRV_LOG(DEBUG, "port %u MTU is %u", eth_dev->data->port_id,
+			priv->mtu);
 		/*
 		 * Initialize burst functions to prevent crashes before link-up.
 		 */
@@ -938,8 +960,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 					       MLX5DV_CTX_ATTR_BUF_ALLOCATORS,
 					       (void *)((uintptr_t)&alctr));
 		/* Bring Ethernet device up. */
-		DEBUG("port %u forcing Ethernet interface up",
-		      eth_dev->data->port_id);
+		DRV_LOG(DEBUG, "port %u forcing Ethernet interface up",
+			eth_dev->data->port_id);
 		mlx5_set_flags(eth_dev, ~IFF_UP, IFF_UP);
 		/* Store device configuration on private structure. */
 		priv->config = config;
@@ -1069,7 +1091,8 @@ mlx5_glue_init(void)
 				break;
 			if (sizeof(name) != (size_t)ret + 1)
 				continue;
-			DEBUG("looking for rdma-core glue as \"%s\"", name);
+			DRV_LOG(DEBUG, "looking for rdma-core glue as \"%s\"",
+				name);
 			handle = dlopen(name, RTLD_LAZY);
 			break;
 		} while (1);
@@ -1081,7 +1104,7 @@ mlx5_glue_init(void)
 		rte_errno = EINVAL;
 		dlmsg = dlerror();
 		if (dlmsg)
-			WARN("cannot load glue library: %s", dlmsg);
+			DRV_LOG(WARNING, "cannot load glue library: %s", dlmsg);
 		goto glue_error;
 	}
 	sym = dlsym(handle, "mlx5_glue");
@@ -1089,7 +1112,7 @@ mlx5_glue_init(void)
 		rte_errno = EINVAL;
 		dlmsg = dlerror();
 		if (dlmsg)
-			ERROR("cannot resolve glue symbol: %s", dlmsg);
+			DRV_LOG(ERR, "cannot resolve glue symbol: %s", dlmsg);
 		goto glue_error;
 	}
 	mlx5_glue = *sym;
@@ -1097,9 +1120,9 @@ mlx5_glue_init(void)
 glue_error:
 	if (handle)
 		dlclose(handle);
-	WARN("cannot initialize PMD due to missing run-time"
-	     " dependency on rdma-core libraries (libibverbs,"
-	     " libmlx5)");
+	DRV_LOG(WARNING,
+		"cannot initialize PMD due to missing run-time dependency on"
+		" rdma-core libraries (libibverbs, libmlx5)");
 	return -rte_errno;
 }
 
@@ -1139,8 +1162,9 @@ rte_mlx5_pmd_init(void)
 	}
 #endif
 	if (strcmp(mlx5_glue->version, MLX5_GLUE_VERSION)) {
-		ERROR("rdma-core glue \"%s\" mismatch: \"%s\" is required",
-		      mlx5_glue->version, MLX5_GLUE_VERSION);
+		DRV_LOG(ERR,
+			"rdma-core glue \"%s\" mismatch: \"%s\" is required",
+			mlx5_glue->version, MLX5_GLUE_VERSION);
 		return;
 	}
 	mlx5_glue->fork_init();
@@ -1150,3 +1174,11 @@ rte_mlx5_pmd_init(void)
 RTE_PMD_EXPORT_NAME(net_mlx5, __COUNTER__);
 RTE_PMD_REGISTER_PCI_TABLE(net_mlx5, mlx5_pci_id_map);
 RTE_PMD_REGISTER_KMOD_DEP(net_mlx5, "* ib_uverbs & mlx5_core & mlx5_ib");
+
+/** Initialize driver log type. */
+RTE_INIT(vdev_netvsc_init_log)
+{
+	mlx5_logtype = rte_log_register("pmd.net.mlx5");
+	if (mlx5_logtype >= 0)
+		rte_log_set_level(mlx5_logtype, RTE_LOG_NOTICE);
+}
drivers/net/mlx5/mlx5_ethdev.c +70 -48

243 lines not on this page · raw message

drivers/net/mlx5/mlx5_flow.c +58 -51

242 lines not on this page · raw message

drivers/net/mlx5/mlx5_mac.c +7 -5
index e2f5b5b3a..01c7ba17a 100644
@@ -73,8 +73,8 @@ mlx5_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)
 		int ret = mlx5_traffic_restart(dev);
 
 		if (ret)
-			ERROR("port %u cannot remove mac address: %s",
-			      dev->data->port_id, strerror(rte_errno));
+			DRV_LOG(ERR, "port %u cannot remove mac address: %s",
+				dev->data->port_id, strerror(rte_errno));
 	}
 }
 
@@ -130,9 +130,11 @@ mlx5_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
 {
 	int ret;
 
-	DEBUG("port %u setting primary MAC address", dev->data->port_id);
+	DRV_LOG(DEBUG, "port %u setting primary MAC address",
+		dev->data->port_id);
+
 	ret = mlx5_mac_addr_add(dev, mac_addr, 0, 0);
 	if (ret)
-		ERROR("port %u cannot set mac address: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot set mac address: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
drivers/net/mlx5/mlx5_mr.c +46 -39

161 lines not on this page · raw message

drivers/net/mlx5/mlx5_rxmode.c +8 -8
index 8cc5667a4..e43a4b030 100644
@@ -37,8 +37,8 @@ mlx5_promiscuous_enable(struct rte_eth_dev *dev)
 	dev->data->promiscuous = 1;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("port %u cannot enable promiscuous mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot enable promiscuous mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -55,8 +55,8 @@ mlx5_promiscuous_disable(struct rte_eth_dev *dev)
 	dev->data->promiscuous = 0;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("port %u cannot disable promiscuous mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot disable promiscuous mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -73,8 +73,8 @@ mlx5_allmulticast_enable(struct rte_eth_dev *dev)
 	dev->data->all_multicast = 1;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("port %u cannot enable allmulicast mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot enable allmulicast mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -91,6 +91,6 @@ mlx5_allmulticast_disable(struct rte_eth_dev *dev)
 	dev->data->all_multicast = 0;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("port %u cannot disable allmulicast mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot disable allmulicast mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
drivers/net/mlx5/mlx5_rxq.c +163 -135

553 lines not on this page · raw message

drivers/net/mlx5/mlx5_rxtx.h +9 -8
index ee30a0677..f5af43735 100644
@@ -377,9 +377,10 @@ check_cqe(volatile struct mlx5_cqe *cqe,
 		    (syndrome == MLX5_CQE_SYNDROME_REMOTE_ABORTED_ERR))
 			return 0;
 		if (!check_cqe_seen(cqe)) {
-			ERROR("unexpected CQE error %u (0x%02x)"
-			      " syndrome 0x%02x",
-			      op_code, op_code, syndrome);
+			DRV_LOG(ERR,
+				"unexpected CQE error %u (0x%02x) syndrome"
+				" 0x%02x",
+				op_code, op_code, syndrome);
 			rte_hexdump(stderr, "MLX5 Error CQE:",
 				    (const void *)((uintptr_t)err_cqe),
 				    sizeof(*err_cqe));
@@ -388,8 +389,8 @@ check_cqe(volatile struct mlx5_cqe *cqe,
 	} else if ((op_code != MLX5_CQE_RESP_SEND) &&
 		   (op_code != MLX5_CQE_REQ)) {
 		if (!check_cqe_seen(cqe)) {
-			ERROR("unexpected CQE opcode %u (0x%02x)",
-			      op_code, op_code);
+			DRV_LOG(ERR, "unexpected CQE opcode %u (0x%02x)",
+				op_code, op_code);
 			rte_hexdump(stderr, "MLX5 CQE:",
 				    (const void *)((uintptr_t)cqe),
 				    sizeof(*cqe));
@@ -449,7 +450,7 @@ mlx5_tx_complete(struct mlx5_txq_data *txq)
 	if ((MLX5_CQE_OPCODE(cqe->op_own) == MLX5_CQE_RESP_ERR) ||
 	    (MLX5_CQE_OPCODE(cqe->op_own) == MLX5_CQE_REQ_ERR)) {
 		if (!check_cqe_seen(cqe)) {
-			ERROR("unexpected error CQE, Tx stopped");
+			DRV_LOG(ERR, "unexpected error CQE, Tx stopped");
 			rte_hexdump(stderr, "MLX5 TXQ:",
 				    (const void *)((uintptr_t)txq->wqes),
 				    ((1 << txq->wqe_n) *
@@ -566,8 +567,8 @@ mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb)
 	} else {
 		struct rte_mempool *mp = mlx5_tx_mb2mp(mb);
 
-		WARN("failed to register mempool 0x%p(%s)",
-		      (void *)mp, mp->name);
+		DRV_LOG(WARNING, "failed to register mempool 0x%p(%s)",
+			(void *)mp, mp->name);
 	}
 	return (uint32_t)-1;
 }
drivers/net/mlx5/mlx5_socket.c +38 -27

164 lines not on this page · raw message

drivers/net/mlx5/mlx5_stats.c +20 -18
index 066d347a0..42ac9d9d1 100644
@@ -148,8 +148,9 @@ mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
 	ifr.ifr_data = (caddr_t)et_stats;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("port %u unable to read statistic values from device",
-		     dev->data->port_id);
+		DRV_LOG(WARNING,
+			"port %u unable to read statistic values from device",
+			dev->data->port_id);
 		return ret;
 	}
 	for (i = 0; i != xstats_n; ++i) {
@@ -195,8 +196,8 @@ mlx5_ethtool_get_stats_n(struct rte_eth_dev *dev) {
 	ifr.ifr_data = (caddr_t)&drvinfo;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("port %u unable to query number of statistics",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u unable to query number of statistics",
+			dev->data->port_id);
 		return ret;
 	}
 	return drvinfo.n_stats;
@@ -223,8 +224,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 
 	ret = mlx5_ethtool_get_stats_n(dev);
 	if (ret < 0) {
-		WARN("port %u no extended statistics available",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u no extended statistics available",
+			dev->data->port_id);
 		return;
 	}
 	dev_stats_n = ret;
@@ -235,7 +236,7 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		  rte_malloc("xstats_strings",
 			     str_sz + sizeof(struct ethtool_gstrings), 0);
 	if (!strings) {
-		WARN("port %u unable to allocate memory for xstats",
+		DRV_LOG(WARNING, "port %u unable to allocate memory for xstats",
 		     dev->data->port_id);
 		return;
 	}
@@ -245,8 +246,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	ifr.ifr_data = (caddr_t)strings;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("port %u unable to get statistic names",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u unable to get statistic names",
+			dev->data->port_id);
 		goto free;
 	}
 	for (j = 0; j != xstats_n; ++j)
@@ -267,9 +268,10 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		if (mlx5_counters_init[j].ib)
 			continue;
 		if (xstats_ctrl->dev_table_idx[j] >= dev_stats_n) {
-			WARN("port %u counter \"%s\" is not recognized",
-			     dev->data->port_id,
-			     mlx5_counters_init[j].dpdk_name);
+			DRV_LOG(WARNING,
+				"port %u counter \"%s\" is not recognized",
+				dev->data->port_id,
+				mlx5_counters_init[j].dpdk_name);
 			goto free;
 		}
 	}
@@ -277,8 +279,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	assert(xstats_n <= MLX5_MAX_XSTATS);
 	ret = mlx5_read_dev_counters(dev, xstats_ctrl->base);
 	if (ret)
-		ERROR("port %u cannot read device counters: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot read device counters: %s",
+			dev->data->port_id, strerror(rte_errno));
 free:
 	rte_free(strings);
 }
@@ -445,16 +447,16 @@ mlx5_xstats_reset(struct rte_eth_dev *dev)
 
 	stats_n = mlx5_ethtool_get_stats_n(dev);
 	if (stats_n < 0) {
-		ERROR("port %u cannot get stats: %s", dev->data->port_id,
-		      strerror(-stats_n));
+		DRV_LOG(ERR, "port %u cannot get stats: %s", dev->data->port_id,
+			strerror(-stats_n));
 		return;
 	}
 	if (xstats_ctrl->stats_n != stats_n)
 		mlx5_xstats_init(dev);
 	ret = mlx5_read_dev_counters(dev, counters);
 	if (ret) {
-		ERROR("port %u cannot read device counters: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot read device counters: %s",
+			dev->data->port_id, strerror(rte_errno));
 		return;
 	}
 	for (i = 0; i != n; ++i)
drivers/net/mlx5/mlx5_trigger.c +15 -15
index 3d6b8c3b0..28770b8eb 100644
@@ -150,39 +150,39 @@ mlx5_dev_start(struct rte_eth_dev *dev)
 	dev->data->dev_started = 1;
 	ret = mlx5_flow_create_drop_queue(dev);
 	if (ret) {
-		ERROR("port %u drop queue allocation failed: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u drop queue allocation failed: %s",
+			dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
-	DEBUG("port %u allocating and configuring hash Rx queues",
-	      dev->data->port_id);
+	DRV_LOG(DEBUG, "port %u allocating and configuring hash Rx queues",
+		dev->data->port_id);
 	rte_mempool_walk(mlx5_mp2mr_iter, priv);
 	ret = mlx5_txq_start(dev);
 	if (ret) {
-		ERROR("port %u Tx queue allocation failed: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u Tx queue allocation failed: %s",
+			dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
 	ret = mlx5_rxq_start(dev);
 	if (ret) {
-		ERROR("port %u Rx queue allocation failed: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u Rx queue allocation failed: %s",
+			dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
 	ret = mlx5_rx_intr_vec_enable(dev);
 	if (ret) {
-		ERROR("port %u Rx interrupt vector creation failed",
-		      dev->data->port_id);
+		DRV_LOG(ERR, "port %u Rx interrupt vector creation failed",
+			dev->data->port_id);
 		goto error;
 	}
 	mlx5_xstats_init(dev);
 	/* Update link status and Tx/Rx callbacks for the first time. */
 	memset(&dev->data->dev_link, 0, sizeof(struct rte_eth_link));
-	INFO("port %u forcing link to be up", dev->data->port_id);
+	DRV_LOG(INFO, "forcing port %u link to be up", dev->data->port_id);
 	ret = mlx5_force_link_status_change(dev, ETH_LINK_UP);
 	if (ret) {
-		DEBUG("failed to set port %u link to be up",
-		      dev->data->port_id);
+		DRV_LOG(DEBUG, "failed to set port %u link to be up",
+			dev->data->port_id);
 		goto error;
 	}
 	mlx5_dev_interrupt_handler_install(dev);
@@ -222,8 +222,8 @@ mlx5_dev_stop(struct rte_eth_dev *dev)
 	dev->tx_pkt_burst = removed_tx_burst;
 	rte_wmb();
 	usleep(1000 * priv->rxqs_n);
-	DEBUG("port %u cleaning up and destroying hash Rx queues",
-	      dev->data->port_id);
+	DRV_LOG(DEBUG, "port %u cleaning up and destroying hash Rx queues",
+		dev->data->port_id);
 	mlx5_flow_stop(dev, &priv->flows);
 	mlx5_traffic_disable(dev);
 	mlx5_rx_intr_vec_disable(dev);
drivers/net/mlx5/mlx5_txq.c +89 -75

324 lines not on this page · raw message

drivers/net/mlx5/mlx5_utils.h +11 -16
index e1bfb9cd9..85d2aae2b 100644
@@ -61,14 +61,21 @@ pmd_drv_log_basename(const char *s)
 	return s;
 }
 
+extern int mlx5_logtype;
+
+#define PMD_DRV_LOG___(level, ...) \
+	rte_log(RTE_LOG_ ## level, \
+		mlx5_logtype, \
+		RTE_FMT(MLX5_DRIVER_NAME ": " \
+			RTE_FMT_HEAD(__VA_ARGS__,), \
+		RTE_FMT_TAIL(__VA_ARGS__,)))
+
 /*
  * When debugging is enabled (NDEBUG not defined), file, line and function
  * information replace the driver name (MLX5_DRIVER_NAME) in log messages.
  */
 #ifndef NDEBUG
 
-#define PMD_DRV_LOG___(level, ...) \
-	ERRNO_SAFE(RTE_LOG(level, PMD, __VA_ARGS__))
 #define PMD_DRV_LOG__(level, ...) \
 	PMD_DRV_LOG___(level, "%s:%u: %s(): " __VA_ARGS__)
 #define PMD_DRV_LOG_(level, s, ...) \
@@ -80,9 +87,6 @@ pmd_drv_log_basename(const char *s)
 		__VA_ARGS__)
 
 #else /* NDEBUG */
-
-#define PMD_DRV_LOG___(level, ...) \
-	ERRNO_SAFE(RTE_LOG(level, PMD, MLX5_DRIVER_NAME ": " __VA_ARGS__))
 #define PMD_DRV_LOG__(level, ...) \
 	PMD_DRV_LOG___(level, __VA_ARGS__)
 #define PMD_DRV_LOG_(level, s, ...) \
@@ -91,33 +95,24 @@ pmd_drv_log_basename(const char *s)
 #endif /* NDEBUG */
 
 /* Generic printf()-like logging macro with automatic line feed. */
-#define PMD_DRV_LOG(level, ...) \
+#define DRV_LOG(level, ...) \
 	PMD_DRV_LOG_(level, \
 		__VA_ARGS__ PMD_DRV_LOG_STRIP PMD_DRV_LOG_OPAREN, \
 		PMD_DRV_LOG_CPAREN)
 
-/*
- * Like assert(), DEBUG() becomes a no-op and claim_zero() does not perform
- * any check when debugging is disabled.
- */
+/* claim_zero() does not perform any check when debugging is disabled. */
 #ifndef NDEBUG
 
-#define DEBUG(...) PMD_DRV_LOG(DEBUG, __VA_ARGS__)
 #define claim_zero(...) assert((__VA_ARGS__) == 0)
 #define claim_nonzero(...) assert((__VA_ARGS__) != 0)
 
 #else /* NDEBUG */
 
-#define DEBUG(...) (void)0
 #define claim_zero(...) (__VA_ARGS__)
 #define claim_nonzero(...) (__VA_ARGS__)
 
 #endif /* NDEBUG */
 
-#define INFO(...) PMD_DRV_LOG(INFO, __VA_ARGS__)
-#define WARN(...) PMD_DRV_LOG(WARNING, __VA_ARGS__)
-#define ERROR(...) PMD_DRV_LOG(ERR, __VA_ARGS__)
-
 /* Convenience macros for accessing mbuf fields. */
 #define NEXT(m) ((m)->next)
 #define DATA_LEN(m) ((m)->data_len)
drivers/net/mlx5/mlx5_vlan.c +12 -12
index f6643fcd4..e6971097b 100644
@@ -45,8 +45,8 @@ mlx5_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
 	struct priv *priv = dev->data->dev_private;
 	unsigned int i;
 
-	DEBUG("port %u %s VLAN filter ID %" PRIu16,
-	      dev->data->port_id, (on ? "enable" : "disable"), vlan_id);
+	DRV_LOG(DEBUG, "port %u %s VLAN filter ID %" PRIu16,
+		dev->data->port_id, (on ? "enable" : "disable"), vlan_id);
 	assert(priv->vlan_filter_n <= RTE_DIM(priv->vlan_filter));
 	for (i = 0; (i != priv->vlan_filter_n); ++i)
 		if (priv->vlan_filter[i] == vlan_id)
@@ -108,18 +108,18 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
 
 	/* Validate hw support */
 	if (!priv->config.hw_vlan_strip) {
-		ERROR("port %u VLAN stripping is not supported",
-		      dev->data->port_id);
+		DRV_LOG(ERR, "port %u VLAN stripping is not supported",
+			dev->data->port_id);
 		return;
 	}
 	/* Validate queue number */
 	if (queue >= priv->rxqs_n) {
-		ERROR("port %u VLAN stripping, invalid queue number %d",
-		      dev->data->port_id, queue);
+		DRV_LOG(ERR, "port %u VLAN stripping, invalid queue number %d",
+			dev->data->port_id, queue);
 		return;
 	}
-	DEBUG("port %u set VLAN offloads 0x%x for port %uqueue %d",
-	      dev->data->port_id, vlan_offloads, rxq->port_id, queue);
+	DRV_LOG(DEBUG, "port %u set VLAN offloads 0x%x for port %uqueue %d",
+		dev->data->port_id, vlan_offloads, rxq->port_id, queue);
 	if (!rxq_ctrl->ibv) {
 		/* Update related bits in RX queue. */
 		rxq->vlan_strip = !!on;
@@ -132,8 +132,8 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
 	};
 	ret = mlx5_glue->modify_wq(rxq_ctrl->ibv->wq, &mod);
 	if (ret) {
-		ERROR("port %u failed to modified stripping mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u failed to modified stripping mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 		return;
 	}
 	/* Update related bits in RX queue. */
@@ -162,8 +162,8 @@ mlx5_vlan_offload_set(struct rte_eth_dev *dev, int mask)
 				       DEV_RX_OFFLOAD_VLAN_STRIP);
 
 		if (!priv->config.hw_vlan_strip) {
-			ERROR("port %u VLAN stripping is not supported",
-			      dev->data->port_id);
+			DRV_LOG(ERR, "port %u VLAN stripping is not supported",
+				dev->data->port_id);
 			return 0;
 		}
 		/* Run on every RX queue and set/reset VLAN stripping. */
Signature · 1 line
2.11.0
#3 lore raw

v2 cover net/mlx5: convert to dynamic logs

In reply to Nelio Laranjeiro

This series applies on top of [1]

[1] https://dpdk.org/dev/patchwork/patch/35650/

Changes in v2:

- modified the ERROR new print added in
commit b0203fdb37ef ("net/mlx: fix rdma-core glue path with EAL plugins")

Nelio Laranjeiro (2):
net/mlx5: use port id in PMD log
net/mlx5: use dynamic logging

 drivers/net/mlx5/mlx5.c         | 234 +++++++++++++++++++--------------
 drivers/net/mlx5/mlx5_ethdev.c  | 112 ++++++++++------
 drivers/net/mlx5/mlx5_flow.c    |  97 +++++++++-----
 drivers/net/mlx5/mlx5_mac.c     |  11 +-
 drivers/net/mlx5/mlx5_mr.c      |  77 ++++++-----
 drivers/net/mlx5/mlx5_rxmode.c  |  16 +--
 drivers/net/mlx5/mlx5_rxq.c     | 285 +++++++++++++++++++++++-----------------
 drivers/net/mlx5/mlx5_rxtx.h    |  20 +--
 drivers/net/mlx5/mlx5_socket.c  |  58 +++++---
 drivers/net/mlx5/mlx5_stats.c   |  35 +++--
 drivers/net/mlx5/mlx5_trigger.c |  28 ++--
 drivers/net/mlx5/mlx5_txq.c     | 153 ++++++++++++---------
 drivers/net/mlx5/mlx5_utils.h   |  27 ++--
 drivers/net/mlx5/mlx5_vlan.c    |  21 +--
 14 files changed, 701 insertions(+), 473 deletions(-)
Signature · 1 line
2.11.0
#4 lore raw

PATCH v2 1/2 net/mlx5: use port id in PMD log

---
 drivers/net/mlx5/mlx5.c         |  79 +++++++++-------
 drivers/net/mlx5/mlx5_ethdev.c  |  86 +++++++++--------
 drivers/net/mlx5/mlx5_flow.c    |  82 +++++++++-------
 drivers/net/mlx5/mlx5_mac.c     |   9 +-
 drivers/net/mlx5/mlx5_mr.c      |  58 +++++++-----
 drivers/net/mlx5/mlx5_rxmode.c  |  16 ++--
 drivers/net/mlx5/mlx5_rxq.c     | 201 ++++++++++++++++++++++------------------
 drivers/net/mlx5/mlx5_rxtx.h    |   7 +-
 drivers/net/mlx5/mlx5_socket.c  |  47 ++++++----
 drivers/net/mlx5/mlx5_stats.c   |  29 +++---
 drivers/net/mlx5/mlx5_trigger.c |  26 +++---
 drivers/net/mlx5/mlx5_txq.c     | 125 ++++++++++++++-----------
 drivers/net/mlx5/mlx5_vlan.c    |  21 +++--
 13 files changed, 446 insertions(+), 340 deletions(-)
drivers/net/mlx5/mlx5.c +45 -34
index 4f776497c..dbc504ea2 100644
@@ -132,7 +132,6 @@ mlx5_alloc_verbs_buf(size_t size, void *data)
 	ret = rte_malloc_socket(__func__, size, alignment, socket);
 	if (!ret && size)
 		rte_errno = ENOMEM;
-	DEBUG("Extern alloc size: %lu, align: %lu: %p", size, alignment, ret);
 	return ret;
 }
 
@@ -148,7 +147,6 @@ static void
 mlx5_free_verbs_buf(void *ptr, void *data __rte_unused)
 {
 	assert(data != NULL);
-	DEBUG("Extern free request: %p", ptr);
 	rte_free(ptr);
 }
 
@@ -167,8 +165,8 @@ mlx5_dev_close(struct rte_eth_dev *dev)
 	unsigned int i;
 	int ret;
 
-	DEBUG("%p: closing device \"%s\"",
-	      (void *)dev,
+	DEBUG("port %u closing device \"%s\"",
+	      dev->data->port_id,
 	      ((priv->ctx != NULL) ? priv->ctx->device->name : ""));
 	/* In case mlx5_dev_stop() has not been called. */
 	mlx5_dev_interrupt_handler_uninstall(dev);
@@ -206,28 +204,35 @@ mlx5_dev_close(struct rte_eth_dev *dev)
 		mlx5_socket_uninit(dev);
 	ret = mlx5_hrxq_ibv_verify(dev);
 	if (ret)
-		WARN("%p: some Hash Rx queue still remain", (void *)dev);
+		WARN("port %u some hash Rx queue still remain",
+		     dev->data->port_id);
 	ret = mlx5_ind_table_ibv_verify(dev);
 	if (ret)
-		WARN("%p: some Indirection table still remain", (void *)dev);
+		WARN("port %u some indirection table still remain",
+		     dev->data->port_id);
 	ret = mlx5_rxq_ibv_verify(dev);
 	if (ret)
-		WARN("%p: some Verbs Rx queue still remain", (void *)dev);
+		WARN("port %u some Verbs Rx queue still remain",
+		     dev->data->port_id);
 	ret = mlx5_rxq_verify(dev);
 	if (ret)
-		WARN("%p: some Rx Queues still remain", (void *)dev);
+		WARN("port %u some Rx queues still remain",
+		     dev->data->port_id);
 	ret = mlx5_txq_ibv_verify(dev);
 	if (ret)
-		WARN("%p: some Verbs Tx queue still remain", (void *)dev);
+		WARN("port %u some Verbs Tx queue still remain",
+		     dev->data->port_id);
 	ret = mlx5_txq_verify(dev);
 	if (ret)
-		WARN("%p: some Tx Queues still remain", (void *)dev);
+		WARN("port %u some Tx queues still remain",
+		     dev->data->port_id);
 	ret = mlx5_flow_verify(dev);
 	if (ret)
-		WARN("%p: some flows still remain", (void *)dev);
+		WARN("port %u some flows still remain", dev->data->port_id);
 	ret = mlx5_mr_verify(dev);
 	if (ret)
-		WARN("%p: some Memory Region still remain", (void *)dev);
+		WARN("port %u some memory region still remain",
+		     dev->data->port_id);
 	memset(priv, 0, sizeof(*priv));
 }
 
@@ -503,15 +508,17 @@ mlx5_uar_init_primary(struct rte_eth_dev *dev)
 	addr = mmap(addr, MLX5_UAR_SIZE,
 		    PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 	if (addr == MAP_FAILED) {
-		ERROR("Failed to reserve UAR address space, please adjust "
-		      "MLX5_UAR_SIZE or try --base-virtaddr");
+		ERROR("port %u failed to reserve UAR address space, please"
+		      " adjust MLX5_UAR_SIZE or try --base-virtaddr",
+		      dev->data->port_id);
 		rte_errno = ENOMEM;
 		return -rte_errno;
 	}
 	/* Accept either same addr or a new addr returned from mmap if target
 	 * range occupied.
 	 */
-	INFO("Reserved UAR address space: %p", addr);
+	INFO("port %u reserved UAR address space: %p", dev->data->port_id,
+	     addr);
 	priv->uar_base = addr; /* for primary and secondary UAR re-mmap. */
 	uar_base = addr; /* process local, don't reserve again. */
 	return 0;
@@ -542,20 +549,21 @@ mlx5_uar_init_secondary(struct rte_eth_dev *dev)
 	addr = mmap(priv->uar_base, MLX5_UAR_SIZE,
 		    PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 	if (addr == MAP_FAILED) {
-		ERROR("UAR mmap failed: %p size: %llu",
-		      priv->uar_base, MLX5_UAR_SIZE);
+		ERROR("port %u UAR mmap failed: %p size: %llu",
+		      dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
 		rte_errno = ENXIO;
 		return -rte_errno;
 	}
 	if (priv->uar_base != addr) {
-		ERROR("UAR address %p size %llu occupied, please adjust "
+		ERROR("port %u UAR address %p size %llu occupied, please adjust "
 		      "MLX5_UAR_OFFSET or try EAL parameter --base-virtaddr",
-		      priv->uar_base, MLX5_UAR_SIZE);
+		      dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
 		rte_errno = ENXIO;
 		return -rte_errno;
 	}
 	uar_base = addr; /* process local, don't reserve again */
-	INFO("Reserved UAR address space: %p", addr);
+	INFO("port %u reserved UAR address space: %p", dev->data->port_id,
+	     addr);
 	return 0;
 }
 
@@ -659,7 +667,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 	mlx5_glue->dv_query_device(attr_ctx, &attrs_out);
 	if (attrs_out.flags & MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED) {
 		if (attrs_out.flags & MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW) {
-			DEBUG("Enhanced MPW is supported");
+			DEBUG("enhanced MPW is supported");
 			mps = MLX5_MPW_ENHANCED;
 		} else {
 			DEBUG("MPW is supported");
@@ -681,9 +689,9 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			     (attrs_out.tunnel_offloads_caps &
 			      MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE));
 	}
-	DEBUG("Tunnel offloading is %ssupported", tunnel_en ? "" : "not ");
+	DEBUG("tunnel offloading is %ssupported", tunnel_en ? "" : "not ");
 #else
-	WARN("Tunnel offloading disabled due to old OFED/rdma-core version");
+	WARN("tunnel offloading disabled due to old OFED/rdma-core version");
 #endif
 	if (mlx5_glue->query_device_ex(attr_ctx, NULL, &device_attr)) {
 		err = errno;
@@ -829,7 +837,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		if (config.ind_table_max_size >
 				(unsigned int)ETH_RSS_RETA_SIZE_512)
 			config.ind_table_max_size = ETH_RSS_RETA_SIZE_512;
-		DEBUG("maximum RX indirection table size is %u",
+		DEBUG("maximum Rx indirection table size is %u",
 		      config.ind_table_max_size);
 		config.hw_vlan_strip = !!(device_attr_ex.raw_packet_caps &
 					 IBV_RAW_PACKET_CAP_CVLAN_STRIPPING);
@@ -844,7 +852,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 #ifdef HAVE_IBV_WQ_FLAG_RX_END_PADDING
 		config.hw_padding = !!device_attr_ex.rx_pad_end_addr_align;
 #endif
-		DEBUG("hardware RX end alignment padding is %ssupported",
+		DEBUG("hardware Rx end alignment padding is %ssupported",
 		      (config.hw_padding ? "" : "not "));
 		config.tso = ((device_attr_ex.tso_caps.max_tso > 0) &&
 			      (device_attr_ex.tso_caps.supported_qpts &
@@ -858,8 +866,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			err = ENOTSUP;
 			goto port_error;
 		}
-		INFO("%sMPS is %s",
-		     config.mps == MLX5_MPW_ENHANCED ? "Enhanced " : "",
+		INFO("%s MPS is %s",
+		     config.mps == MLX5_MPW_ENHANCED ? "enhanced " : "",
 		     config.mps != MLX5_MPW_DISABLED ? "enabled" : "disabled");
 		if (config.cqe_comp && !cqe_comp) {
 			WARN("Rx CQE compression isn't supported");
@@ -882,13 +890,14 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			goto port_error;
 		/* Configure the first MAC address by default. */
 		if (mlx5_get_mac(eth_dev, &mac.addr_bytes)) {
-			ERROR("cannot get MAC address, is mlx5_en loaded?"
-			      " (errno: %s)", strerror(errno));
+			ERROR("port %u cannot get MAC address, is mlx5_en"
+			      " loaded? (errno: %s)", eth_dev->data->port_id,
+			      strerror(errno));
 			err = ENODEV;
 			goto port_error;
 		}
 		INFO("port %u MAC address is %02x:%02x:%02x:%02x:%02x:%02x",
-		     priv->port,
+		     eth_dev->data->port_id,
 		     mac.addr_bytes[0], mac.addr_bytes[1],
 		     mac.addr_bytes[2], mac.addr_bytes[3],
 		     mac.addr_bytes[4], mac.addr_bytes[5]);
@@ -898,16 +907,17 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 
 			if (mlx5_get_ifname(eth_dev, &ifname) == 0)
 				DEBUG("port %u ifname is \"%s\"",
-				      priv->port, ifname);
+				      eth_dev->data->port_id, ifname);
 			else
-				DEBUG("port %u ifname is unknown", priv->port);
+				DEBUG("port %u ifname is unknown",
+				      eth_dev->data->port_id);
 		}
 #endif
 		/* Get actual MTU if possible. */
 		err = mlx5_get_mtu(eth_dev, &priv->mtu);
 		if (err)
 			goto port_error;
-		DEBUG("port %u MTU is %u", priv->port, priv->mtu);
+		DEBUG("port %u MTU is %u", eth_dev->data->port_id, priv->mtu);
 		/*
 		 * Initialize burst functions to prevent crashes before link-up.
 		 */
@@ -928,7 +938,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 					       MLX5DV_CTX_ATTR_BUF_ALLOCATORS,
 					       (void *)((uintptr_t)&alctr));
 		/* Bring Ethernet device up. */
-		DEBUG("forcing Ethernet interface up");
+		DEBUG("port %u forcing Ethernet interface up",
+		      eth_dev->data->port_id);
 		mlx5_set_flags(eth_dev, ~IFF_UP, IFF_UP);
 		/* Store device configuration on private structure. */
 		priv->config = config;
drivers/net/mlx5/mlx5_ethdev.c +47 -39

212 lines not on this page · raw message

drivers/net/mlx5/mlx5_flow.c +50 -32

231 lines not on this page · raw message

drivers/net/mlx5/mlx5_mac.c +5 -4
index ba54c055e..e2f5b5b3a 100644
@@ -73,8 +73,8 @@ mlx5_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)
 		int ret = mlx5_traffic_restart(dev);
 
 		if (ret)
-			ERROR("%p cannot remove mac address: %s", (void *)dev,
-			      strerror(rte_errno));
+			ERROR("port %u cannot remove mac address: %s",
+			      dev->data->port_id, strerror(rte_errno));
 	}
 }
 
@@ -130,8 +130,9 @@ mlx5_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
 {
 	int ret;
 
-	DEBUG("%p: setting primary MAC address", (void *)dev);
+	DEBUG("port %u setting primary MAC address", dev->data->port_id);
 	ret = mlx5_mac_addr_add(dev, mac_addr, 0, 0);
 	if (ret)
-		ERROR("cannot set mac address: %s", strerror(rte_errno));
+		ERROR("port %u cannot set mac address: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
drivers/net/mlx5/mlx5_mr.c +33 -25

136 lines not on this page · raw message

drivers/net/mlx5/mlx5_rxmode.c +8 -8
index 0c1e9eb2a..8cc5667a4 100644
@@ -37,8 +37,8 @@ mlx5_promiscuous_enable(struct rte_eth_dev *dev)
 	dev->data->promiscuous = 1;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("%p cannot enable promiscuous mode: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot enable promiscuous mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -55,8 +55,8 @@ mlx5_promiscuous_disable(struct rte_eth_dev *dev)
 	dev->data->promiscuous = 0;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("%p cannot disable promiscuous mode: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot disable promiscuous mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -73,8 +73,8 @@ mlx5_allmulticast_enable(struct rte_eth_dev *dev)
 	dev->data->all_multicast = 1;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("%p cannot enable allmulicast mode: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot enable allmulicast mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -91,6 +91,6 @@ mlx5_allmulticast_disable(struct rte_eth_dev *dev)
 	dev->data->all_multicast = 0;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("%p cannot disable allmulicast mode: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot disable allmulicast mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 }
drivers/net/mlx5/mlx5_rxq.c +111 -90

478 lines not on this page · raw message

drivers/net/mlx5/mlx5_rxtx.h +5 -2
index 17a6072e2..ee30a0677 100644
@@ -126,6 +126,7 @@ struct mlx5_rxq_ctrl {
 	struct mlx5_rxq_data rxq; /* Data path structure. */
 	unsigned int socket; /* CPU socket ID for allocations. */
 	unsigned int irq:1; /* Whether IRQ is enabled. */
+	uint16_t idx; /* Queue index. */
 };
 
 /* Indirection table. */
@@ -187,6 +188,7 @@ struct mlx5_txq_data {
 struct mlx5_txq_ibv {
 	LIST_ENTRY(mlx5_txq_ibv) next; /* Pointer to the next element. */
 	rte_atomic32_t refcnt; /* Reference counter. */
+	struct mlx5_txq_ctrl *txq_ctrl; /* Pointer to the control queue. */
 	struct ibv_cq *cq; /* Completion Queue. */
 	struct ibv_qp *qp; /* Queue Pair. */
 };
@@ -203,6 +205,7 @@ struct mlx5_txq_ctrl {
 	struct mlx5_txq_data txq; /* Data path structure. */
 	off_t uar_mmap_offset; /* UAR mmap offset for non-primary process. */
 	volatile void *bf_reg_orig; /* Blueflame register from verbs. */
+	uint16_t idx; /* Queue index. */
 };
 
 /* mlx5_rxq.c */
@@ -446,7 +449,7 @@ mlx5_tx_complete(struct mlx5_txq_data *txq)
 	if ((MLX5_CQE_OPCODE(cqe->op_own) == MLX5_CQE_RESP_ERR) ||
 	    (MLX5_CQE_OPCODE(cqe->op_own) == MLX5_CQE_REQ_ERR)) {
 		if (!check_cqe_seen(cqe)) {
-			ERROR("unexpected error CQE, TX stopped");
+			ERROR("unexpected error CQE, Tx stopped");
 			rte_hexdump(stderr, "MLX5 TXQ:",
 				    (const void *)((uintptr_t)txq->wqes),
 				    ((1 << txq->wqe_n) *
@@ -563,7 +566,7 @@ mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb)
 	} else {
 		struct rte_mempool *mp = mlx5_tx_mb2mp(mb);
 
-		WARN("Failed to register mempool 0x%p(%s)",
+		WARN("failed to register mempool 0x%p(%s)",
 		      (void *)mp, mp->name);
 	}
 	return (uint32_t)-1;
drivers/net/mlx5/mlx5_socket.c +27 -20

146 lines not on this page · raw message

drivers/net/mlx5/mlx5_stats.c +18 -11
index 06e9a1f19..066d347a0 100644
@@ -148,7 +148,8 @@ mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
 	ifr.ifr_data = (caddr_t)et_stats;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("unable to read statistic values from device");
+		WARN("port %u unable to read statistic values from device",
+		     dev->data->port_id);
 		return ret;
 	}
 	for (i = 0; i != xstats_n; ++i) {
@@ -194,7 +195,8 @@ mlx5_ethtool_get_stats_n(struct rte_eth_dev *dev) {
 	ifr.ifr_data = (caddr_t)&drvinfo;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("unable to query number of statistics");
+		WARN("port %u unable to query number of statistics",
+		     dev->data->port_id);
 		return ret;
 	}
 	return drvinfo.n_stats;
@@ -221,7 +223,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 
 	ret = mlx5_ethtool_get_stats_n(dev);
 	if (ret < 0) {
-		WARN("no extended statistics available");
+		WARN("port %u no extended statistics available",
+		     dev->data->port_id);
 		return;
 	}
 	dev_stats_n = ret;
@@ -232,7 +235,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		  rte_malloc("xstats_strings",
 			     str_sz + sizeof(struct ethtool_gstrings), 0);
 	if (!strings) {
-		WARN("unable to allocate memory for xstats");
+		WARN("port %u unable to allocate memory for xstats",
+		     dev->data->port_id);
 		return;
 	}
 	strings->cmd = ETHTOOL_GSTRINGS;
@@ -241,7 +245,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	ifr.ifr_data = (caddr_t)strings;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("unable to get statistic names");
+		WARN("port %u unable to get statistic names",
+		     dev->data->port_id);
 		goto free;
 	}
 	for (j = 0; j != xstats_n; ++j)
@@ -262,7 +267,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		if (mlx5_counters_init[j].ib)
 			continue;
 		if (xstats_ctrl->dev_table_idx[j] >= dev_stats_n) {
-			WARN("counter \"%s\" is not recognized",
+			WARN("port %u counter \"%s\" is not recognized",
+			     dev->data->port_id,
 			     mlx5_counters_init[j].dpdk_name);
 			goto free;
 		}
@@ -271,7 +277,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	assert(xstats_n <= MLX5_MAX_XSTATS);
 	ret = mlx5_read_dev_counters(dev, xstats_ctrl->base);
 	if (ret)
-		ERROR("cannot read device counters: %s", strerror(rte_errno));
+		ERROR("port %u cannot read device counters: %s",
+		      dev->data->port_id, strerror(rte_errno));
 free:
 	rte_free(strings);
 }
@@ -438,7 +445,7 @@ mlx5_xstats_reset(struct rte_eth_dev *dev)
 
 	stats_n = mlx5_ethtool_get_stats_n(dev);
 	if (stats_n < 0) {
-		ERROR("%p cannot get stats: %s", (void *)dev,
+		ERROR("port %u cannot get stats: %s", dev->data->port_id,
 		      strerror(-stats_n));
 		return;
 	}
@@ -446,8 +453,8 @@ mlx5_xstats_reset(struct rte_eth_dev *dev)
 		mlx5_xstats_init(dev);
 	ret = mlx5_read_dev_counters(dev, counters);
 	if (ret) {
-		ERROR("%p cannot read device counters: %s", (void *)dev,
-		      strerror(rte_errno));
+		ERROR("port %u cannot read device counters: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		return;
 	}
 	for (i = 0; i != n; ++i)
@@ -469,7 +476,7 @@ mlx5_xstats_reset(struct rte_eth_dev *dev)
  */
 int
 mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused,
-		struct rte_eth_xstat_name *xstats_names, unsigned int n)
+		      struct rte_eth_xstat_name *xstats_names, unsigned int n)
 {
 	unsigned int i;
 
drivers/net/mlx5/mlx5_trigger.c +14 -12
index 4e396b7f0..3d6b8c3b0 100644
@@ -150,37 +150,38 @@ mlx5_dev_start(struct rte_eth_dev *dev)
 	dev->data->dev_started = 1;
 	ret = mlx5_flow_create_drop_queue(dev);
 	if (ret) {
-		ERROR("%p: Drop queue allocation failed: %s",
-		      (void *)dev, strerror(rte_errno));
+		ERROR("port %u drop queue allocation failed: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
-	DEBUG("%p: allocating and configuring hash RX queues", (void *)dev);
+	DEBUG("port %u allocating and configuring hash Rx queues",
+	      dev->data->port_id);
 	rte_mempool_walk(mlx5_mp2mr_iter, priv);
 	ret = mlx5_txq_start(dev);
 	if (ret) {
-		ERROR("%p: Tx Queue allocation failed: %s",
-		      (void *)dev, strerror(rte_errno));
+		ERROR("port %u Tx queue allocation failed: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
 	ret = mlx5_rxq_start(dev);
 	if (ret) {
-		ERROR("%p: Rx Queue allocation failed: %s",
-		      (void *)dev, strerror(rte_errno));
+		ERROR("port %u Rx queue allocation failed: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
 	ret = mlx5_rx_intr_vec_enable(dev);
 	if (ret) {
-		ERROR("%p: Rx interrupt vector creation failed",
-		      (void *)dev);
+		ERROR("port %u Rx interrupt vector creation failed",
+		      dev->data->port_id);
 		goto error;
 	}
 	mlx5_xstats_init(dev);
 	/* Update link status and Tx/Rx callbacks for the first time. */
 	memset(&dev->data->dev_link, 0, sizeof(struct rte_eth_link));
-	INFO("Forcing port %u link to be up", dev->data->port_id);
+	INFO("port %u forcing link to be up", dev->data->port_id);
 	ret = mlx5_force_link_status_change(dev, ETH_LINK_UP);
 	if (ret) {
-		DEBUG("Failed to set port %u link to be up",
+		DEBUG("failed to set port %u link to be up",
 		      dev->data->port_id);
 		goto error;
 	}
@@ -221,7 +222,8 @@ mlx5_dev_stop(struct rte_eth_dev *dev)
 	dev->tx_pkt_burst = removed_tx_burst;
 	rte_wmb();
 	usleep(1000 * priv->rxqs_n);
-	DEBUG("%p: cleaning up and destroying hash RX queues", (void *)dev);
+	DEBUG("port %u cleaning up and destroying hash Rx queues",
+	      dev->data->port_id);
 	mlx5_flow_stop(dev, &priv->flows);
 	mlx5_traffic_disable(dev);
 	mlx5_rx_intr_vec_disable(dev);
drivers/net/mlx5/mlx5_txq.c +71 -54

301 lines not on this page · raw message

drivers/net/mlx5/mlx5_vlan.c +12 -9
index 3246c0a38..f6643fcd4 100644
@@ -45,8 +45,8 @@ mlx5_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
 	struct priv *priv = dev->data->dev_private;
 	unsigned int i;
 
-	DEBUG("%p: %s VLAN filter ID %" PRIu16,
-	      (void *)dev, (on ? "enable" : "disable"), vlan_id);
+	DEBUG("port %u %s VLAN filter ID %" PRIu16,
+	      dev->data->port_id, (on ? "enable" : "disable"), vlan_id);
 	assert(priv->vlan_filter_n <= RTE_DIM(priv->vlan_filter));
 	for (i = 0; (i != priv->vlan_filter_n); ++i)
 		if (priv->vlan_filter[i] == vlan_id)
@@ -108,16 +108,18 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
 
 	/* Validate hw support */
 	if (!priv->config.hw_vlan_strip) {
-		ERROR("VLAN stripping is not supported");
+		ERROR("port %u VLAN stripping is not supported",
+		      dev->data->port_id);
 		return;
 	}
 	/* Validate queue number */
 	if (queue >= priv->rxqs_n) {
-		ERROR("VLAN stripping, invalid queue number %d", queue);
+		ERROR("port %u VLAN stripping, invalid queue number %d",
+		      dev->data->port_id, queue);
 		return;
 	}
-	DEBUG("set VLAN offloads 0x%x for port %d queue %d",
-	      vlan_offloads, rxq->port_id, queue);
+	DEBUG("port %u set VLAN offloads 0x%x for port %uqueue %d",
+	      dev->data->port_id, vlan_offloads, rxq->port_id, queue);
 	if (!rxq_ctrl->ibv) {
 		/* Update related bits in RX queue. */
 		rxq->vlan_strip = !!on;
@@ -130,8 +132,8 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
 	};
 	ret = mlx5_glue->modify_wq(rxq_ctrl->ibv->wq, &mod);
 	if (ret) {
-		ERROR("%p: failed to modified stripping mode: %s",
-		      (void *)dev, strerror(rte_errno));
+		ERROR("port %u failed to modified stripping mode: %s",
+		      dev->data->port_id, strerror(rte_errno));
 		return;
 	}
 	/* Update related bits in RX queue. */
@@ -160,7 +162,8 @@ mlx5_vlan_offload_set(struct rte_eth_dev *dev, int mask)
 				       DEV_RX_OFFLOAD_VLAN_STRIP);
 
 		if (!priv->config.hw_vlan_strip) {
-			ERROR("VLAN stripping is not supported");
+			ERROR("port %u VLAN stripping is not supported",
+			      dev->data->port_id);
 			return 0;
 		}
 		/* Run on every RX queue and set/reset VLAN stripping. */
Signature · 1 line
2.11.0
#5 lore raw

PATCH v2 2/2 net/mlx5: use dynamic logging

In reply to Nelio Laranjeiro
---
 drivers/net/mlx5/mlx5.c         | 245 +++++++++++++++++++--------------
 drivers/net/mlx5/mlx5_ethdev.c  | 118 +++++++++-------
 drivers/net/mlx5/mlx5_flow.c    | 109 ++++++++-------
 drivers/net/mlx5/mlx5_mac.c     |  12 +-
 drivers/net/mlx5/mlx5_mr.c      |  85 ++++++------
 drivers/net/mlx5/mlx5_rxmode.c  |  16 +--
 drivers/net/mlx5/mlx5_rxq.c     | 298 ++++++++++++++++++++++------------------
 drivers/net/mlx5/mlx5_rxtx.h    |  17 +--
 drivers/net/mlx5/mlx5_socket.c  |  65 +++++----
 drivers/net/mlx5/mlx5_stats.c   |  38 ++---
 drivers/net/mlx5/mlx5_trigger.c |  30 ++--
 drivers/net/mlx5/mlx5_txq.c     | 164 ++++++++++++----------
 drivers/net/mlx5/mlx5_utils.h   |  27 ++--
 drivers/net/mlx5/mlx5_vlan.c    |  24 ++--
 14 files changed, 685 insertions(+), 563 deletions(-)
drivers/net/mlx5/mlx5.c +139 -106
index dbc504ea2..a2acac703 100644
@@ -77,6 +77,9 @@
 #define MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP (1 << 4)
 #endif
 
+/** Driver-specific log messages type. */
+int mlx5_logtype;
+
 /**
  * Retrieve integer value from environment variable.
  *
@@ -165,9 +168,9 @@ mlx5_dev_close(struct rte_eth_dev *dev)
 	unsigned int i;
 	int ret;
 
-	DEBUG("port %u closing device \"%s\"",
-	      dev->data->port_id,
-	      ((priv->ctx != NULL) ? priv->ctx->device->name : ""));
+	DRV_LOG(DEBUG, "port %u closing device \"%s\"",
+		dev->data->port_id,
+		((priv->ctx != NULL) ? priv->ctx->device->name : ""));
 	/* In case mlx5_dev_stop() has not been called. */
 	mlx5_dev_interrupt_handler_uninstall(dev);
 	mlx5_traffic_disable(dev);
@@ -204,35 +207,36 @@ mlx5_dev_close(struct rte_eth_dev *dev)
 		mlx5_socket_uninit(dev);
 	ret = mlx5_hrxq_ibv_verify(dev);
 	if (ret)
-		WARN("port %u some hash Rx queue still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some hash Rx queue still remain",
+			dev->data->port_id);
 	ret = mlx5_ind_table_ibv_verify(dev);
 	if (ret)
-		WARN("port %u some indirection table still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some indirection table still remain",
+			dev->data->port_id);
 	ret = mlx5_rxq_ibv_verify(dev);
 	if (ret)
-		WARN("port %u some Verbs Rx queue still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some Verbs Rx queue still remain",
+			dev->data->port_id);
 	ret = mlx5_rxq_verify(dev);
 	if (ret)
-		WARN("port %u some Rx queues still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some Rx queues still remain",
+			dev->data->port_id);
 	ret = mlx5_txq_ibv_verify(dev);
 	if (ret)
-		WARN("port %u some Verbs Tx queue still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some Verbs Tx queue still remain",
+			dev->data->port_id);
 	ret = mlx5_txq_verify(dev);
 	if (ret)
-		WARN("port %u some Tx queues still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some Tx queues still remain",
+			dev->data->port_id);
 	ret = mlx5_flow_verify(dev);
 	if (ret)
-		WARN("port %u some flows still remain", dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some flows still remain",
+			dev->data->port_id);
 	ret = mlx5_mr_verify(dev);
 	if (ret)
-		WARN("port %u some memory region still remain",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u some memory region still remain",
+			dev->data->port_id);
 	memset(priv, 0, sizeof(*priv));
 }
 
@@ -384,7 +388,7 @@ mlx5_args_check(const char *key, const char *val, void *opaque)
 	tmp = strtoul(val, NULL, 0);
 	if (errno) {
 		rte_errno = errno;
-		WARN("%s: \"%s\" is not a valid integer", key, val);
+		DRV_LOG(WARNING, "%s: \"%s\" is not a valid integer", key, val);
 		return -rte_errno;
 	}
 	if (strcmp(MLX5_RXQ_CQE_COMP_EN, key) == 0) {
@@ -404,7 +408,7 @@ mlx5_args_check(const char *key, const char *val, void *opaque)
 	} else if (strcmp(MLX5_RX_VEC_EN, key) == 0) {
 		config->rx_vec_en = !!tmp;
 	} else {
-		WARN("%s: unknown parameter", key);
+		DRV_LOG(WARNING, "%s: unknown parameter", key);
 		rte_errno = EINVAL;
 		return -rte_errno;
 	}
@@ -508,17 +512,18 @@ mlx5_uar_init_primary(struct rte_eth_dev *dev)
 	addr = mmap(addr, MLX5_UAR_SIZE,
 		    PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 	if (addr == MAP_FAILED) {
-		ERROR("port %u failed to reserve UAR address space, please"
-		      " adjust MLX5_UAR_SIZE or try --base-virtaddr",
-		      dev->data->port_id);
+		DRV_LOG(ERR,
+			"port %u failed to reserve UAR address space, please"
+			" adjust MLX5_UAR_SIZE or try --base-virtaddr",
+			dev->data->port_id);
 		rte_errno = ENOMEM;
 		return -rte_errno;
 	}
 	/* Accept either same addr or a new addr returned from mmap if target
 	 * range occupied.
 	 */
-	INFO("port %u reserved UAR address space: %p", dev->data->port_id,
-	     addr);
+	DRV_LOG(INFO, "port %u reserved UAR address space: %p",
+		dev->data->port_id, addr);
 	priv->uar_base = addr; /* for primary and secondary UAR re-mmap. */
 	uar_base = addr; /* process local, don't reserve again. */
 	return 0;
@@ -549,21 +554,23 @@ mlx5_uar_init_secondary(struct rte_eth_dev *dev)
 	addr = mmap(priv->uar_base, MLX5_UAR_SIZE,
 		    PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 	if (addr == MAP_FAILED) {
-		ERROR("port %u UAR mmap failed: %p size: %llu",
-		      dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
+		DRV_LOG(ERR, "port %u UAR mmap failed: %p size: %llu",
+			dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
 		rte_errno = ENXIO;
 		return -rte_errno;
 	}
 	if (priv->uar_base != addr) {
-		ERROR("port %u UAR address %p size %llu occupied, please adjust "
-		      "MLX5_UAR_OFFSET or try EAL parameter --base-virtaddr",
-		      dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
+		DRV_LOG(ERR,
+			"port %u UAR address %p size %llu occupied, please"
+			" adjust MLX5_UAR_OFFSET or try EAL parameter"
+			" --base-virtaddr",
+			dev->data->port_id, priv->uar_base, MLX5_UAR_SIZE);
 		rte_errno = ENXIO;
 		return -rte_errno;
 	}
 	uar_base = addr; /* process local, don't reserve again */
-	INFO("port %u reserved UAR address space: %p", dev->data->port_id,
-	     addr);
+	DRV_LOG(INFO, "port %u reserved UAR address space: %p",
+		dev->data->port_id, addr);
 	return 0;
 }
 
@@ -604,11 +611,11 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 	/* Get mlx5_dev[] index. */
 	idx = mlx5_dev_idx(&pci_dev->addr);
 	if (idx == -1) {
-		ERROR("this driver cannot support any more adapters");
+		DRV_LOG(ERR, "this driver cannot support any more adapters");
 		err = ENOMEM;
 		goto error;
 	}
-	DEBUG("using driver device index %d", idx);
+	DRV_LOG(DEBUG, "using driver device index %d", idx);
 	/* Save PCI address. */
 	mlx5_dev[idx].pci_addr = pci_dev->addr;
 	list = mlx5_glue->get_device_list(&i);
@@ -616,7 +623,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		assert(errno);
 		err = errno;
 		if (errno == ENOSYS)
-			ERROR("cannot list devices, is ib_uverbs loaded?");
+			DRV_LOG(ERR,
+				"cannot list devices, is ib_uverbs loaded?");
 		goto error;
 	}
 	assert(i >= 0);
@@ -628,7 +636,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		struct rte_pci_addr pci_addr;
 
 		--i;
-		DEBUG("checking device \"%s\"", list[i]->name);
+		DRV_LOG(DEBUG, "checking device \"%s\"", list[i]->name);
 		if (mlx5_ibv_device_to_pci_addr(list[i], &pci_addr))
 			continue;
 		if ((pci_dev->addr.domain != pci_addr.domain) ||
@@ -636,8 +644,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		    (pci_dev->addr.devid != pci_addr.devid) ||
 		    (pci_dev->addr.function != pci_addr.function))
 			continue;
-		INFO("PCI information matches, using device \"%s\"",
-		     list[i]->name);
+		DRV_LOG(INFO, "PCI information matches, using device \"%s\"",
+			list[i]->name);
 		attr_ctx = mlx5_glue->open_device(list[i]);
 		rte_errno = errno;
 		err = rte_errno;
@@ -647,16 +655,18 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		mlx5_glue->free_device_list(list);
 		switch (err) {
 		case 0:
-			ERROR("cannot access device, is mlx5_ib loaded?");
+			DRV_LOG(ERR,
+				"cannot access device, is mlx5_ib loaded?");
 			err = ENODEV;
 			goto error;
 		case EINVAL:
-			ERROR("cannot use device, are drivers up to date?");
+			DRV_LOG(ERR,
+				"cannot use device, are drivers up to date?");
 			goto error;
 		}
 	}
 	ibv_dev = list[i];
-	DEBUG("device opened");
+	DRV_LOG(DEBUG, "device opened");
 	/*
 	 * Multi-packet send is supported by ConnectX-4 Lx PF as well
 	 * as all ConnectX-5 devices.
@@ -667,14 +677,14 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 	mlx5_glue->dv_query_device(attr_ctx, &attrs_out);
 	if (attrs_out.flags & MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED) {
 		if (attrs_out.flags & MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW) {
-			DEBUG("enhanced MPW is supported");
+			DRV_LOG(DEBUG, "enhanced MPW is supported");
 			mps = MLX5_MPW_ENHANCED;
 		} else {
-			DEBUG("MPW is supported");
+			DRV_LOG(DEBUG, "MPW is supported");
 			mps = MLX5_MPW;
 		}
 	} else {
-		DEBUG("MPW isn't supported");
+		DRV_LOG(DEBUG, "MPW isn't supported");
 		mps = MLX5_MPW_DISABLED;
 	}
 	if (RTE_CACHE_LINE_SIZE == 128 &&
@@ -689,15 +699,18 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			     (attrs_out.tunnel_offloads_caps &
 			      MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE));
 	}
-	DEBUG("tunnel offloading is %ssupported", tunnel_en ? "" : "not ");
+	DRV_LOG(DEBUG, "tunnel offloading is %ssupported",
+		tunnel_en ? "" : "not ");
 #else
-	WARN("tunnel offloading disabled due to old OFED/rdma-core version");
+	DRV_LOG(WARNING,
+		"tunnel offloading disabled due to old OFED/rdma-core version");
 #endif
 	if (mlx5_glue->query_device_ex(attr_ctx, NULL, &device_attr)) {
 		err = errno;
 		goto error;
 	}
-	INFO("%u port(s) detected", device_attr.orig_attr.phys_port_cnt);
+	DRV_LOG(INFO, "%u port(s) detected",
+		device_attr.orig_attr.phys_port_cnt);
 	for (i = 0; i < device_attr.orig_attr.phys_port_cnt; i++) {
 		char name[RTE_ETH_NAME_MAX_LEN];
 		int len;
@@ -732,7 +745,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
 			eth_dev = rte_eth_dev_attach_secondary(name);
 			if (eth_dev == NULL) {
-				ERROR("can not attach rte ethdev");
+				DRV_LOG(ERR, "can not attach rte ethdev");
 				rte_errno = ENOMEM;
 				err = rte_errno;
 				goto error;
@@ -761,7 +774,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 				mlx5_select_tx_function(eth_dev);
 			continue;
 		}
-		DEBUG("using port %u (%08" PRIx32 ")", port, test);
+		DRV_LOG(DEBUG, "using port %u (%08" PRIx32 ")", port, test);
 		ctx = mlx5_glue->open_device(ibv_dev);
 		if (ctx == NULL) {
 			err = ENODEV;
@@ -771,23 +784,25 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		/* Check port status. */
 		err = mlx5_glue->query_port(ctx, port, &port_attr);
 		if (err) {
-			ERROR("port query failed: %s", strerror(err));
+			DRV_LOG(ERR, "port query failed: %s", strerror(err));
 			goto port_error;
 		}
 		if (port_attr.link_layer != IBV_LINK_LAYER_ETHERNET) {
-			ERROR("port %d is not configured in Ethernet mode",
-			      port);
+			DRV_LOG(ERR,
+				"port %d is not configured in Ethernet mode",
+				port);
 			err = EINVAL;
 			goto port_error;
 		}
 		if (port_attr.state != IBV_PORT_ACTIVE)
-			DEBUG("port %d is not active: \"%s\" (%d)",
-			      port, mlx5_glue->port_state_str(port_attr.state),
-			      port_attr.state);
+			DRV_LOG(DEBUG, "port %d is not active: \"%s\" (%d)",
+				port,
+				mlx5_glue->port_state_str(port_attr.state),
+				port_attr.state);
 		/* Allocate protection domain. */
 		pd = mlx5_glue->alloc_pd(ctx);
 		if (pd == NULL) {
-			ERROR("PD allocation failure");
+			DRV_LOG(ERR, "PD allocation failure");
 			err = ENOMEM;
 			goto port_error;
 		}
@@ -797,7 +812,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 				   sizeof(*priv),
 				   RTE_CACHE_LINE_SIZE);
 		if (priv == NULL) {
-			ERROR("priv allocation failure");
+			DRV_LOG(ERR, "priv allocation failure");
 			err = ENOMEM;
 			goto port_error;
 		}
@@ -810,25 +825,26 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		priv->mtu = ETHER_MTU;
 		err = mlx5_args(&config, pci_dev->device.devargs);
 		if (err) {
-			ERROR("failed to process device arguments: %s",
-			      strerror(err));
+			DRV_LOG(ERR, "failed to process device arguments: %s",
+				strerror(err));
 			goto port_error;
 		}
 		if (mlx5_glue->query_device_ex(ctx, NULL, &device_attr_ex)) {
-			ERROR("ibv_query_device_ex() failed");
+			DRV_LOG(ERR, "ibv_query_device_ex() failed");
 			err = errno;
 			goto port_error;
 		}
 		config.hw_csum = !!(device_attr_ex.device_cap_flags_ex &
 				    IBV_DEVICE_RAW_IP_CSUM);
-		DEBUG("checksum offloading is %ssupported",
-		      (config.hw_csum ? "" : "not "));
+		DRV_LOG(DEBUG, "checksum offloading is %ssupported",
+			(config.hw_csum ? "" : "not "));
 #ifdef HAVE_IBV_DEVICE_COUNTERS_SET_SUPPORT
 		config.flow_counter_en = !!(device_attr.max_counter_sets);
 		mlx5_glue->describe_counter_set(ctx, 0, &cs_desc);
-		DEBUG("counter type = %d, num of cs = %ld, attributes = %d",
-		      cs_desc.counter_type, cs_desc.num_of_cs,
-		      cs_desc.attributes);
+		DRV_LOG(DEBUG,
+			"counter type = %d, num of cs = %ld, attributes = %d",
+			cs_desc.counter_type, cs_desc.num_of_cs,
+			cs_desc.attributes);
 #endif
 		config.ind_table_max_size =
 			device_attr_ex.rss_caps.max_rwq_indirection_table_size;
@@ -837,23 +853,24 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		if (config.ind_table_max_size >
 				(unsigned int)ETH_RSS_RETA_SIZE_512)
 			config.ind_table_max_size = ETH_RSS_RETA_SIZE_512;
-		DEBUG("maximum Rx indirection table size is %u",
-		      config.ind_table_max_size);
+		DRV_LOG(DEBUG, "maximum Rx indirection table size is %u",
+			config.ind_table_max_size);
 		config.hw_vlan_strip = !!(device_attr_ex.raw_packet_caps &
 					 IBV_RAW_PACKET_CAP_CVLAN_STRIPPING);
-		DEBUG("VLAN stripping is %ssupported",
-		      (config.hw_vlan_strip ? "" : "not "));
+		DRV_LOG(DEBUG, "VLAN stripping is %ssupported",
+			(config.hw_vlan_strip ? "" : "not "));
 
 		config.hw_fcs_strip = !!(device_attr_ex.raw_packet_caps &
 					 IBV_RAW_PACKET_CAP_SCATTER_FCS);
-		DEBUG("FCS stripping configuration is %ssupported",
-		      (config.hw_fcs_strip ? "" : "not "));
+		DRV_LOG(DEBUG, "FCS stripping configuration is %ssupported",
+			(config.hw_fcs_strip ? "" : "not "));
 
 #ifdef HAVE_IBV_WQ_FLAG_RX_END_PADDING
 		config.hw_padding = !!device_attr_ex.rx_pad_end_addr_align;
 #endif
-		DEBUG("hardware Rx end alignment padding is %ssupported",
-		      (config.hw_padding ? "" : "not "));
+		DRV_LOG(DEBUG,
+			"hardware Rx end alignment padding is %ssupported",
+			(config.hw_padding ? "" : "not "));
 		config.tso = ((device_attr_ex.tso_caps.max_tso > 0) &&
 			      (device_attr_ex.tso_caps.supported_qpts &
 			      (1 << IBV_QPT_RAW_PACKET)));
@@ -861,21 +878,23 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			config.tso_max_payload_sz =
 					device_attr_ex.tso_caps.max_tso;
 		if (config.mps && !mps) {
-			ERROR("multi-packet send not supported on this device"
-			      " (" MLX5_TXQ_MPW_EN ")");
+			DRV_LOG(ERR,
+				"multi-packet send not supported on this device"
+				" (" MLX5_TXQ_MPW_EN ")");
 			err = ENOTSUP;
 			goto port_error;
 		}
-		INFO("%s MPS is %s",
-		     config.mps == MLX5_MPW_ENHANCED ? "enhanced " : "",
-		     config.mps != MLX5_MPW_DISABLED ? "enabled" : "disabled");
+		DRV_LOG(INFO, "%s MPS is %s",
+			config.mps == MLX5_MPW_ENHANCED ? "enhanced " : "",
+			config.mps != MLX5_MPW_DISABLED ? "enabled" :
+			"disabled");
 		if (config.cqe_comp && !cqe_comp) {
-			WARN("Rx CQE compression isn't supported");
+			DRV_LOG(WARNING, "Rx CQE compression isn't supported");
 			config.cqe_comp = 0;
 		}
 		eth_dev = rte_eth_dev_allocate(name);
 		if (eth_dev == NULL) {
-			ERROR("can not allocate rte ethdev");
+			DRV_LOG(ERR, "can not allocate rte ethdev");
 			err = ENOMEM;
 			goto port_error;
 		}
@@ -890,34 +909,37 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 			goto port_error;
 		/* Configure the first MAC address by default. */
 		if (mlx5_get_mac(eth_dev, &mac.addr_bytes)) {
-			ERROR("port %u cannot get MAC address, is mlx5_en"
-			      " loaded? (errno: %s)", eth_dev->data->port_id,
-			      strerror(errno));
+			DRV_LOG(ERR,
+				"port %u cannot get MAC address, is mlx5_en"
+				" loaded? (errno: %s)",
+				eth_dev->data->port_id, strerror(errno));
 			err = ENODEV;
 			goto port_error;
 		}
-		INFO("port %u MAC address is %02x:%02x:%02x:%02x:%02x:%02x",
-		     eth_dev->data->port_id,
-		     mac.addr_bytes[0], mac.addr_bytes[1],
-		     mac.addr_bytes[2], mac.addr_bytes[3],
-		     mac.addr_bytes[4], mac.addr_bytes[5]);
+		DRV_LOG(INFO,
+			"port %u MAC address is %02x:%02x:%02x:%02x:%02x:%02x",
+			eth_dev->data->port_id,
+			mac.addr_bytes[0], mac.addr_bytes[1],
+			mac.addr_bytes[2], mac.addr_bytes[3],
+			mac.addr_bytes[4], mac.addr_bytes[5]);
 #ifndef NDEBUG
 		{
 			char ifname[IF_NAMESIZE];
 
 			if (mlx5_get_ifname(eth_dev, &ifname) == 0)
-				DEBUG("port %u ifname is \"%s\"",
-				      eth_dev->data->port_id, ifname);
+				DRV_LOG(DEBUG, "port %u ifname is \"%s\"",
+					eth_dev->data->port_id, ifname);
 			else
-				DEBUG("port %u ifname is unknown",
-				      eth_dev->data->port_id);
+				DRV_LOG(DEBUG, "port %u ifname is unknown",
+					eth_dev->data->port_id);
 		}
 #endif
 		/* Get actual MTU if possible. */
 		err = mlx5_get_mtu(eth_dev, &priv->mtu);
 		if (err)
 			goto port_error;
-		DEBUG("port %u MTU is %u", eth_dev->data->port_id, priv->mtu);
+		DRV_LOG(DEBUG, "port %u MTU is %u", eth_dev->data->port_id,
+			priv->mtu);
 		/*
 		 * Initialize burst functions to prevent crashes before link-up.
 		 */
@@ -938,8 +960,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 					       MLX5DV_CTX_ATTR_BUF_ALLOCATORS,
 					       (void *)((uintptr_t)&alctr));
 		/* Bring Ethernet device up. */
-		DEBUG("port %u forcing Ethernet interface up",
-		      eth_dev->data->port_id);
+		DRV_LOG(DEBUG, "port %u forcing Ethernet interface up",
+			eth_dev->data->port_id);
 		mlx5_set_flags(eth_dev, ~IFF_UP, IFF_UP);
 		/* Store device configuration on private structure. */
 		priv->config = config;
@@ -1060,9 +1082,10 @@ mlx5_glue_path(char *buf, size_t size)
 		goto error;
 	return buf;
 error:
-	ERROR("unable to append \"-glue\" to last component of"
-	      " RTE_EAL_PMD_PATH (\"" RTE_EAL_PMD_PATH "\"),"
-	      " please re-configure DPDK");
+	DRV_LOG(ERR,
+		"unable to append \"-glue\" to last component of"
+		" RTE_EAL_PMD_PATH (\"" RTE_EAL_PMD_PATH "\"),"
+		" please re-configure DPDK");
 	return NULL;
 }
 
@@ -1117,7 +1140,8 @@ mlx5_glue_init(void)
 				break;
 			if (sizeof(name) != (size_t)ret + 1)
 				continue;
-			DEBUG("looking for rdma-core glue as \"%s\"", name);
+			DRV_LOG(DEBUG, "looking for rdma-core glue as \"%s\"",
+				name);
 			handle = dlopen(name, RTLD_LAZY);
 			break;
 		} while (1);
@@ -1129,7 +1153,7 @@ mlx5_glue_init(void)
 		rte_errno = EINVAL;
 		dlmsg = dlerror();
 		if (dlmsg)
-			WARN("cannot load glue library: %s", dlmsg);
+			DRV_LOG(WARNING, "cannot load glue library: %s", dlmsg);
 		goto glue_error;
 	}
 	sym = dlsym(handle, "mlx5_glue");
@@ -1137,7 +1161,7 @@ mlx5_glue_init(void)
 		rte_errno = EINVAL;
 		dlmsg = dlerror();
 		if (dlmsg)
-			ERROR("cannot resolve glue symbol: %s", dlmsg);
+			DRV_LOG(ERR, "cannot resolve glue symbol: %s", dlmsg);
 		goto glue_error;
 	}
 	mlx5_glue = *sym;
@@ -1145,9 +1169,9 @@ mlx5_glue_init(void)
 glue_error:
 	if (handle)
 		dlclose(handle);
-	WARN("cannot initialize PMD due to missing run-time"
-	     " dependency on rdma-core libraries (libibverbs,"
-	     " libmlx5)");
+	DRV_LOG(WARNING,
+		"cannot initialize PMD due to missing run-time dependency on"
+		" rdma-core libraries (libibverbs, libmlx5)");
 	return -rte_errno;
 }
 
@@ -1187,8 +1211,9 @@ rte_mlx5_pmd_init(void)
 	}
 #endif
 	if (strcmp(mlx5_glue->version, MLX5_GLUE_VERSION)) {
-		ERROR("rdma-core glue \"%s\" mismatch: \"%s\" is required",
-		      mlx5_glue->version, MLX5_GLUE_VERSION);
+		DRV_LOG(ERR,
+			"rdma-core glue \"%s\" mismatch: \"%s\" is required",
+			mlx5_glue->version, MLX5_GLUE_VERSION);
 		return;
 	}
 	mlx5_glue->fork_init();
@@ -1198,3 +1223,11 @@ rte_mlx5_pmd_init(void)
 RTE_PMD_EXPORT_NAME(net_mlx5, __COUNTER__);
 RTE_PMD_REGISTER_PCI_TABLE(net_mlx5, mlx5_pci_id_map);
 RTE_PMD_REGISTER_KMOD_DEP(net_mlx5, "* ib_uverbs & mlx5_core & mlx5_ib");
+
+/** Initialize driver log type. */
+RTE_INIT(vdev_netvsc_init_log)
+{
+	mlx5_logtype = rte_log_register("pmd.net.mlx5");
+	if (mlx5_logtype >= 0)
+		rte_log_set_level(mlx5_logtype, RTE_LOG_NOTICE);
+}
drivers/net/mlx5/mlx5_ethdev.c +70 -48

243 lines not on this page · raw message

drivers/net/mlx5/mlx5_flow.c +58 -51

242 lines not on this page · raw message

drivers/net/mlx5/mlx5_mac.c +7 -5
index e2f5b5b3a..01c7ba17a 100644
@@ -73,8 +73,8 @@ mlx5_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)
 		int ret = mlx5_traffic_restart(dev);
 
 		if (ret)
-			ERROR("port %u cannot remove mac address: %s",
-			      dev->data->port_id, strerror(rte_errno));
+			DRV_LOG(ERR, "port %u cannot remove mac address: %s",
+				dev->data->port_id, strerror(rte_errno));
 	}
 }
 
@@ -130,9 +130,11 @@ mlx5_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
 {
 	int ret;
 
-	DEBUG("port %u setting primary MAC address", dev->data->port_id);
+	DRV_LOG(DEBUG, "port %u setting primary MAC address",
+		dev->data->port_id);
+
 	ret = mlx5_mac_addr_add(dev, mac_addr, 0, 0);
 	if (ret)
-		ERROR("port %u cannot set mac address: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot set mac address: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
drivers/net/mlx5/mlx5_mr.c +46 -39

161 lines not on this page · raw message

drivers/net/mlx5/mlx5_rxmode.c +8 -8
index 8cc5667a4..e43a4b030 100644
@@ -37,8 +37,8 @@ mlx5_promiscuous_enable(struct rte_eth_dev *dev)
 	dev->data->promiscuous = 1;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("port %u cannot enable promiscuous mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot enable promiscuous mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -55,8 +55,8 @@ mlx5_promiscuous_disable(struct rte_eth_dev *dev)
 	dev->data->promiscuous = 0;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("port %u cannot disable promiscuous mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot disable promiscuous mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -73,8 +73,8 @@ mlx5_allmulticast_enable(struct rte_eth_dev *dev)
 	dev->data->all_multicast = 1;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("port %u cannot enable allmulicast mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot enable allmulicast mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
 
 /**
@@ -91,6 +91,6 @@ mlx5_allmulticast_disable(struct rte_eth_dev *dev)
 	dev->data->all_multicast = 0;
 	ret = mlx5_traffic_restart(dev);
 	if (ret)
-		ERROR("port %u cannot disable allmulicast mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot disable allmulicast mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 }
drivers/net/mlx5/mlx5_rxq.c +163 -135

553 lines not on this page · raw message

drivers/net/mlx5/mlx5_rxtx.h +9 -8
index ee30a0677..f5af43735 100644
@@ -377,9 +377,10 @@ check_cqe(volatile struct mlx5_cqe *cqe,
 		    (syndrome == MLX5_CQE_SYNDROME_REMOTE_ABORTED_ERR))
 			return 0;
 		if (!check_cqe_seen(cqe)) {
-			ERROR("unexpected CQE error %u (0x%02x)"
-			      " syndrome 0x%02x",
-			      op_code, op_code, syndrome);
+			DRV_LOG(ERR,
+				"unexpected CQE error %u (0x%02x) syndrome"
+				" 0x%02x",
+				op_code, op_code, syndrome);
 			rte_hexdump(stderr, "MLX5 Error CQE:",
 				    (const void *)((uintptr_t)err_cqe),
 				    sizeof(*err_cqe));
@@ -388,8 +389,8 @@ check_cqe(volatile struct mlx5_cqe *cqe,
 	} else if ((op_code != MLX5_CQE_RESP_SEND) &&
 		   (op_code != MLX5_CQE_REQ)) {
 		if (!check_cqe_seen(cqe)) {
-			ERROR("unexpected CQE opcode %u (0x%02x)",
-			      op_code, op_code);
+			DRV_LOG(ERR, "unexpected CQE opcode %u (0x%02x)",
+				op_code, op_code);
 			rte_hexdump(stderr, "MLX5 CQE:",
 				    (const void *)((uintptr_t)cqe),
 				    sizeof(*cqe));
@@ -449,7 +450,7 @@ mlx5_tx_complete(struct mlx5_txq_data *txq)
 	if ((MLX5_CQE_OPCODE(cqe->op_own) == MLX5_CQE_RESP_ERR) ||
 	    (MLX5_CQE_OPCODE(cqe->op_own) == MLX5_CQE_REQ_ERR)) {
 		if (!check_cqe_seen(cqe)) {
-			ERROR("unexpected error CQE, Tx stopped");
+			DRV_LOG(ERR, "unexpected error CQE, Tx stopped");
 			rte_hexdump(stderr, "MLX5 TXQ:",
 				    (const void *)((uintptr_t)txq->wqes),
 				    ((1 << txq->wqe_n) *
@@ -566,8 +567,8 @@ mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb)
 	} else {
 		struct rte_mempool *mp = mlx5_tx_mb2mp(mb);
 
-		WARN("failed to register mempool 0x%p(%s)",
-		      (void *)mp, mp->name);
+		DRV_LOG(WARNING, "failed to register mempool 0x%p(%s)",
+			(void *)mp, mp->name);
 	}
 	return (uint32_t)-1;
 }
drivers/net/mlx5/mlx5_socket.c +38 -27

164 lines not on this page · raw message

drivers/net/mlx5/mlx5_stats.c +20 -18
index 066d347a0..42ac9d9d1 100644
@@ -148,8 +148,9 @@ mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
 	ifr.ifr_data = (caddr_t)et_stats;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("port %u unable to read statistic values from device",
-		     dev->data->port_id);
+		DRV_LOG(WARNING,
+			"port %u unable to read statistic values from device",
+			dev->data->port_id);
 		return ret;
 	}
 	for (i = 0; i != xstats_n; ++i) {
@@ -195,8 +196,8 @@ mlx5_ethtool_get_stats_n(struct rte_eth_dev *dev) {
 	ifr.ifr_data = (caddr_t)&drvinfo;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("port %u unable to query number of statistics",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u unable to query number of statistics",
+			dev->data->port_id);
 		return ret;
 	}
 	return drvinfo.n_stats;
@@ -223,8 +224,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 
 	ret = mlx5_ethtool_get_stats_n(dev);
 	if (ret < 0) {
-		WARN("port %u no extended statistics available",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u no extended statistics available",
+			dev->data->port_id);
 		return;
 	}
 	dev_stats_n = ret;
@@ -235,7 +236,7 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		  rte_malloc("xstats_strings",
 			     str_sz + sizeof(struct ethtool_gstrings), 0);
 	if (!strings) {
-		WARN("port %u unable to allocate memory for xstats",
+		DRV_LOG(WARNING, "port %u unable to allocate memory for xstats",
 		     dev->data->port_id);
 		return;
 	}
@@ -245,8 +246,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	ifr.ifr_data = (caddr_t)strings;
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
-		WARN("port %u unable to get statistic names",
-		     dev->data->port_id);
+		DRV_LOG(WARNING, "port %u unable to get statistic names",
+			dev->data->port_id);
 		goto free;
 	}
 	for (j = 0; j != xstats_n; ++j)
@@ -267,9 +268,10 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		if (mlx5_counters_init[j].ib)
 			continue;
 		if (xstats_ctrl->dev_table_idx[j] >= dev_stats_n) {
-			WARN("port %u counter \"%s\" is not recognized",
-			     dev->data->port_id,
-			     mlx5_counters_init[j].dpdk_name);
+			DRV_LOG(WARNING,
+				"port %u counter \"%s\" is not recognized",
+				dev->data->port_id,
+				mlx5_counters_init[j].dpdk_name);
 			goto free;
 		}
 	}
@@ -277,8 +279,8 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	assert(xstats_n <= MLX5_MAX_XSTATS);
 	ret = mlx5_read_dev_counters(dev, xstats_ctrl->base);
 	if (ret)
-		ERROR("port %u cannot read device counters: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot read device counters: %s",
+			dev->data->port_id, strerror(rte_errno));
 free:
 	rte_free(strings);
 }
@@ -445,16 +447,16 @@ mlx5_xstats_reset(struct rte_eth_dev *dev)
 
 	stats_n = mlx5_ethtool_get_stats_n(dev);
 	if (stats_n < 0) {
-		ERROR("port %u cannot get stats: %s", dev->data->port_id,
-		      strerror(-stats_n));
+		DRV_LOG(ERR, "port %u cannot get stats: %s", dev->data->port_id,
+			strerror(-stats_n));
 		return;
 	}
 	if (xstats_ctrl->stats_n != stats_n)
 		mlx5_xstats_init(dev);
 	ret = mlx5_read_dev_counters(dev, counters);
 	if (ret) {
-		ERROR("port %u cannot read device counters: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u cannot read device counters: %s",
+			dev->data->port_id, strerror(rte_errno));
 		return;
 	}
 	for (i = 0; i != n; ++i)
drivers/net/mlx5/mlx5_trigger.c +15 -15
index 3d6b8c3b0..28770b8eb 100644
@@ -150,39 +150,39 @@ mlx5_dev_start(struct rte_eth_dev *dev)
 	dev->data->dev_started = 1;
 	ret = mlx5_flow_create_drop_queue(dev);
 	if (ret) {
-		ERROR("port %u drop queue allocation failed: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u drop queue allocation failed: %s",
+			dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
-	DEBUG("port %u allocating and configuring hash Rx queues",
-	      dev->data->port_id);
+	DRV_LOG(DEBUG, "port %u allocating and configuring hash Rx queues",
+		dev->data->port_id);
 	rte_mempool_walk(mlx5_mp2mr_iter, priv);
 	ret = mlx5_txq_start(dev);
 	if (ret) {
-		ERROR("port %u Tx queue allocation failed: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u Tx queue allocation failed: %s",
+			dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
 	ret = mlx5_rxq_start(dev);
 	if (ret) {
-		ERROR("port %u Rx queue allocation failed: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u Rx queue allocation failed: %s",
+			dev->data->port_id, strerror(rte_errno));
 		goto error;
 	}
 	ret = mlx5_rx_intr_vec_enable(dev);
 	if (ret) {
-		ERROR("port %u Rx interrupt vector creation failed",
-		      dev->data->port_id);
+		DRV_LOG(ERR, "port %u Rx interrupt vector creation failed",
+			dev->data->port_id);
 		goto error;
 	}
 	mlx5_xstats_init(dev);
 	/* Update link status and Tx/Rx callbacks for the first time. */
 	memset(&dev->data->dev_link, 0, sizeof(struct rte_eth_link));
-	INFO("port %u forcing link to be up", dev->data->port_id);
+	DRV_LOG(INFO, "forcing port %u link to be up", dev->data->port_id);
 	ret = mlx5_force_link_status_change(dev, ETH_LINK_UP);
 	if (ret) {
-		DEBUG("failed to set port %u link to be up",
-		      dev->data->port_id);
+		DRV_LOG(DEBUG, "failed to set port %u link to be up",
+			dev->data->port_id);
 		goto error;
 	}
 	mlx5_dev_interrupt_handler_install(dev);
@@ -222,8 +222,8 @@ mlx5_dev_stop(struct rte_eth_dev *dev)
 	dev->tx_pkt_burst = removed_tx_burst;
 	rte_wmb();
 	usleep(1000 * priv->rxqs_n);
-	DEBUG("port %u cleaning up and destroying hash Rx queues",
-	      dev->data->port_id);
+	DRV_LOG(DEBUG, "port %u cleaning up and destroying hash Rx queues",
+		dev->data->port_id);
 	mlx5_flow_stop(dev, &priv->flows);
 	mlx5_traffic_disable(dev);
 	mlx5_rx_intr_vec_disable(dev);
drivers/net/mlx5/mlx5_txq.c +89 -75

324 lines not on this page · raw message

drivers/net/mlx5/mlx5_utils.h +11 -16
index e1bfb9cd9..85d2aae2b 100644
@@ -61,14 +61,21 @@ pmd_drv_log_basename(const char *s)
 	return s;
 }
 
+extern int mlx5_logtype;
+
+#define PMD_DRV_LOG___(level, ...) \
+	rte_log(RTE_LOG_ ## level, \
+		mlx5_logtype, \
+		RTE_FMT(MLX5_DRIVER_NAME ": " \
+			RTE_FMT_HEAD(__VA_ARGS__,), \
+		RTE_FMT_TAIL(__VA_ARGS__,)))
+
 /*
  * When debugging is enabled (NDEBUG not defined), file, line and function
  * information replace the driver name (MLX5_DRIVER_NAME) in log messages.
  */
 #ifndef NDEBUG
 
-#define PMD_DRV_LOG___(level, ...) \
-	ERRNO_SAFE(RTE_LOG(level, PMD, __VA_ARGS__))
 #define PMD_DRV_LOG__(level, ...) \
 	PMD_DRV_LOG___(level, "%s:%u: %s(): " __VA_ARGS__)
 #define PMD_DRV_LOG_(level, s, ...) \
@@ -80,9 +87,6 @@ pmd_drv_log_basename(const char *s)
 		__VA_ARGS__)
 
 #else /* NDEBUG */
-
-#define PMD_DRV_LOG___(level, ...) \
-	ERRNO_SAFE(RTE_LOG(level, PMD, MLX5_DRIVER_NAME ": " __VA_ARGS__))
 #define PMD_DRV_LOG__(level, ...) \
 	PMD_DRV_LOG___(level, __VA_ARGS__)
 #define PMD_DRV_LOG_(level, s, ...) \
@@ -91,33 +95,24 @@ pmd_drv_log_basename(const char *s)
 #endif /* NDEBUG */
 
 /* Generic printf()-like logging macro with automatic line feed. */
-#define PMD_DRV_LOG(level, ...) \
+#define DRV_LOG(level, ...) \
 	PMD_DRV_LOG_(level, \
 		__VA_ARGS__ PMD_DRV_LOG_STRIP PMD_DRV_LOG_OPAREN, \
 		PMD_DRV_LOG_CPAREN)
 
-/*
- * Like assert(), DEBUG() becomes a no-op and claim_zero() does not perform
- * any check when debugging is disabled.
- */
+/* claim_zero() does not perform any check when debugging is disabled. */
 #ifndef NDEBUG
 
-#define DEBUG(...) PMD_DRV_LOG(DEBUG, __VA_ARGS__)
 #define claim_zero(...) assert((__VA_ARGS__) == 0)
 #define claim_nonzero(...) assert((__VA_ARGS__) != 0)
 
 #else /* NDEBUG */
 
-#define DEBUG(...) (void)0
 #define claim_zero(...) (__VA_ARGS__)
 #define claim_nonzero(...) (__VA_ARGS__)
 
 #endif /* NDEBUG */
 
-#define INFO(...) PMD_DRV_LOG(INFO, __VA_ARGS__)
-#define WARN(...) PMD_DRV_LOG(WARNING, __VA_ARGS__)
-#define ERROR(...) PMD_DRV_LOG(ERR, __VA_ARGS__)
-
 /* Convenience macros for accessing mbuf fields. */
 #define NEXT(m) ((m)->next)
 #define DATA_LEN(m) ((m)->data_len)
drivers/net/mlx5/mlx5_vlan.c +12 -12
index f6643fcd4..e6971097b 100644
@@ -45,8 +45,8 @@ mlx5_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
 	struct priv *priv = dev->data->dev_private;
 	unsigned int i;
 
-	DEBUG("port %u %s VLAN filter ID %" PRIu16,
-	      dev->data->port_id, (on ? "enable" : "disable"), vlan_id);
+	DRV_LOG(DEBUG, "port %u %s VLAN filter ID %" PRIu16,
+		dev->data->port_id, (on ? "enable" : "disable"), vlan_id);
 	assert(priv->vlan_filter_n <= RTE_DIM(priv->vlan_filter));
 	for (i = 0; (i != priv->vlan_filter_n); ++i)
 		if (priv->vlan_filter[i] == vlan_id)
@@ -108,18 +108,18 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
 
 	/* Validate hw support */
 	if (!priv->config.hw_vlan_strip) {
-		ERROR("port %u VLAN stripping is not supported",
-		      dev->data->port_id);
+		DRV_LOG(ERR, "port %u VLAN stripping is not supported",
+			dev->data->port_id);
 		return;
 	}
 	/* Validate queue number */
 	if (queue >= priv->rxqs_n) {
-		ERROR("port %u VLAN stripping, invalid queue number %d",
-		      dev->data->port_id, queue);
+		DRV_LOG(ERR, "port %u VLAN stripping, invalid queue number %d",
+			dev->data->port_id, queue);
 		return;
 	}
-	DEBUG("port %u set VLAN offloads 0x%x for port %uqueue %d",
-	      dev->data->port_id, vlan_offloads, rxq->port_id, queue);
+	DRV_LOG(DEBUG, "port %u set VLAN offloads 0x%x for port %uqueue %d",
+		dev->data->port_id, vlan_offloads, rxq->port_id, queue);
 	if (!rxq_ctrl->ibv) {
 		/* Update related bits in RX queue. */
 		rxq->vlan_strip = !!on;
@@ -132,8 +132,8 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
 	};
 	ret = mlx5_glue->modify_wq(rxq_ctrl->ibv->wq, &mod);
 	if (ret) {
-		ERROR("port %u failed to modified stripping mode: %s",
-		      dev->data->port_id, strerror(rte_errno));
+		DRV_LOG(ERR, "port %u failed to modified stripping mode: %s",
+			dev->data->port_id, strerror(rte_errno));
 		return;
 	}
 	/* Update related bits in RX queue. */
@@ -162,8 +162,8 @@ mlx5_vlan_offload_set(struct rte_eth_dev *dev, int mask)
 				       DEV_RX_OFFLOAD_VLAN_STRIP);
 
 		if (!priv->config.hw_vlan_strip) {
-			ERROR("port %u VLAN stripping is not supported",
-			      dev->data->port_id);
+			DRV_LOG(ERR, "port %u VLAN stripping is not supported",
+				dev->data->port_id);
 			return 0;
 		}
 		/* Run on every RX queue and set/reset VLAN stripping. */
Signature · 1 line
2.11.0
#6 lore raw
In reply to Nelio Laranjeiro

Tuesday, March 13, 2018 11:24 AM, Nelio Laranjeiro:

Quoted 10 lines

This series applies on top of [1]

[1]
https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdp
dk.org%2Fdev%2Fpatchwork%2Fpatch%2F35650%2F&data=02%7C01%7Csha hafs%40mellanox.com%7Cb1ba428446e141f36ac008d588c455b7%7Ca652971c 7d2e4d9ba6a4d149256f461b%7C0%7C0%7C636565299208586718&sdata=IMr WqigZCTfcJenR4bVMusWJj1nF%2FSutMW81K8Ab3hE%3D&reserved=0

Series applied to next-net-mlx, thanks.