All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yanglong Wu <yanglong.wu@intel.com>
To: dev@dpdk.org
Cc: qi.z.zhang@intel.com, wei.dai@intel.com, beilei.xing@intel.com,
	Yanglong Wu <yanglong.wu@intel.com>
Subject: [PATCH v2 2/2] net/i40e: convert to new Tx offloads API
Date: Thu, 29 Mar 2018 13:23:16 +0800	[thread overview]
Message-ID: <20180329052316.44158-1-yanglong.wu@intel.com> (raw)
In-Reply-To: <20180302090552.120049-1-yanglong.wu@intel.com>

Ethdev Tx offloads API has changed since:
commit cba7f53b717d ("ethdev: introduce Tx queue offloads API")
This commit support the new Tx offloads API.

Signed-off-by: Yanglong Wu <yanglong.wu@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c    |  1 +
 drivers/net/i40e/i40e_ethdev_vf.c |  1 +
 drivers/net/i40e/i40e_rxtx.c      | 24 ++++++++++++++++++++++++
 drivers/net/i40e/i40e_rxtx.h      |  1 +
 4 files changed, 27 insertions(+)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 06f11dd23..5f520d2bc 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -3231,6 +3231,7 @@ i40e_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 		DEV_RX_OFFLOAD_VLAN_EXTEND |
 		DEV_RX_OFFLOAD_VLAN_FILTER;
 
+	dev_info->tx_queue_offload_capa = 0;
 	dev_info->tx_offload_capa =
 		DEV_TX_OFFLOAD_VLAN_INSERT |
 		DEV_TX_OFFLOAD_QINQ_INSERT |
diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index cb338def9..d04cd28ae 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -2185,6 +2185,7 @@ i40evf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 		DEV_RX_OFFLOAD_CRC_STRIP |
 		DEV_RX_OFFLOAD_SCATTER;
 
+	dev_info->tx_queue_offload_capa = 0;
 	dev_info->tx_offload_capa =
 		DEV_TX_OFFLOAD_VLAN_INSERT |
 		DEV_TX_OFFLOAD_QINQ_INSERT |
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 60cbb4d9c..d96810a9b 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -1998,6 +1998,20 @@ i40e_dev_tx_descriptor_status(void *tx_queue, uint16_t offset)
 	return RTE_ETH_TX_DESC_FULL;
 }
 
+static int
+i40e_check_tx_queue_offloads(struct rte_eth_dev *dev, uint64_t requested)
+{
+	struct rte_eth_dev_info dev_info;
+	uint64_t mandatory = dev->data->dev_conf.txmode.offloads;
+	uint64_t supported; /* All per port offloads */
+
+	dev->dev_ops->dev_infos_get(dev, &dev_info);
+	supported = dev_info.tx_offload_capa ^ dev_info.tx_queue_offload_capa;
+	if ((requested & dev_info.tx_queue_offload_capa) != requested)
+		return 0; /* requested range check */
+	return !((mandatory ^ requested) & supported);
+}
+
 int
 i40e_dev_tx_queue_setup(struct rte_eth_dev *dev,
 			uint16_t queue_idx,
@@ -2015,6 +2029,16 @@ i40e_dev_tx_queue_setup(struct rte_eth_dev *dev,
 	uint16_t tx_rs_thresh, tx_free_thresh;
 	uint16_t reg_idx, i, base, bsf, tc_mapping;
 	int q_offset;
+	struct rte_eth_dev_info dev_info;
+
+	if (!i40e_check_tx_queue_offloads(dev, tx_conf->offloads)) {
+		dev->dev_ops->dev_infos_get(dev, &dev_info);
+		PMD_INIT_LOG(ERR, "%p: Tx queue offloads 0x%" PRIx64
+			" don't match port  offloads 0x%" PRIx64
+			" or supported offloads 0x%" PRIx64,
+			(void *)dev, tx_conf->offloads,
+			dev->data->dev_conf.txmode.offloads,
+			dev_info.tx_offload_capa);}
 
 	if (hw->mac.type == I40E_MAC_VF || hw->mac.type == I40E_MAC_X722_VF) {
 		vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
diff --git a/drivers/net/i40e/i40e_rxtx.h b/drivers/net/i40e/i40e_rxtx.h
index cb5f8c714..10feec4a2 100644
--- a/drivers/net/i40e/i40e_rxtx.h
+++ b/drivers/net/i40e/i40e_rxtx.h
@@ -149,6 +149,7 @@ struct i40e_tx_queue {
 	bool q_set; /**< indicate if tx queue has been configured */
 	bool tx_deferred_start; /**< don't start this queue in dev start */
 	uint8_t dcb_tc;         /**< Traffic class of tx queue */
+	uint64_t offloads; /**< Tx offload flags of DEV_RX_OFFLOAD_* */
 };
 
 /** Offload features */
-- 
2.11.0

  parent reply	other threads:[~2018-03-29  5:27 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-02  9:05 [DPDK] net/i40e: convert to new Tx offloads API Yanglong Wu
2018-03-27  8:49 ` [PATCH v2 1/2] net/i40e: convert to new Rx " Yanglong Wu
2018-03-27  8:51 ` [PATCH v2 2/2] net/i40e: convert to new Tx " Yanglong Wu
2018-03-28  2:04 ` [PATCH v2 1/2] net/i40e: convert to new Rx " Yanglong Wu
2018-03-29  9:14   ` [PATCH v3 " Yanglong Wu
2018-03-30  5:39   ` [PATCH v3 0/2] net/i40e: convert to new Rx/Tx " Yanglong Wu
2018-03-30  5:39     ` [PATCH v3 1/2] net/i40e: convert to new Rx " Yanglong Wu
2018-03-30  7:25       ` Zhang, Qi Z
2018-03-30  8:03         ` Wu, Yanglong
2018-03-30  5:39     ` [PATCH v3 2/2] net/i40e: convert to new Tx " Yanglong Wu
2018-03-30  8:22     ` [PATCH v4 0/2] convert to new Rx/Tx " Yanglong Wu
2018-03-30  8:22       ` [PATCH v4 1/2] net/i40e: convert to new Rx " Yanglong Wu
2018-03-30  8:22       ` [PATCH v4 2/2] net/i40e: convert to new Tx " Yanglong Wu
2018-03-30 10:33       ` [PATCH v4 0/2] convert to new Rx/Tx " Zhang, Qi Z
2018-03-30 15:18         ` Zhang, Helin
2018-03-28  2:04 ` [PATCH v2 2/2] net/i40e: convert to new Tx " Yanglong Wu
2018-03-29  9:17   ` [PATCH v3 " Yanglong Wu
2018-03-29  5:23 ` Yanglong Wu [this message]
2018-03-29  5:26 ` [PATCH v2 " Yanglong Wu
2018-03-29  5:51   ` Zhang, Qi Z

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180329052316.44158-1-yanglong.wu@intel.com \
    --to=yanglong.wu@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=qi.z.zhang@intel.com \
    --cc=wei.dai@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.