DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1
@ 2016-05-07  4:30 Rasesh Mody
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 1/9] qede: update hash config Rasesh Mody
                   ` (9 more replies)
  0 siblings, 10 replies; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Rasesh Mody

This patch set adds support for enabling 100G mode for QEDE PMD.
It also adds support for APIs like
 - mtu_set
 - reta_update
 - reta_query
 - rss_hash_update
 - rss_hash_conf_get
 - xstats_get
The changes include enablement of vf-vf traffic and updated the driver
version to 8.7.9.0_1.1.0.1

The patches have been generated and tested against dpdk-next-net rel_16_07
branch.

Please apply!

Harish Patil (2):
  qede: add 100g mode support
  qede: update version to 8.7.9.0_1.1.0.1

Rasesh Mody (1):
  qede: add support for xstats

Sony Chacko (6):
  qede: update hash config
  qede: get hash configuration
  qede: rss redirection table update
  qede: rss redirection table query
  qede: set mtu
  qede: enable vf-vf traffic with unmatched dest addr

 config/common_base               |    2 +-
 doc/guides/nics/overview.rst     |    6 +-
 doc/guides/nics/qede.rst         |   11 +-
 drivers/net/qede/base/ecore_l2.c |   19 +-
 drivers/net/qede/qede_eth_if.c   |   45 +++--
 drivers/net/qede/qede_eth_if.h   |    1 +
 drivers/net/qede/qede_ethdev.c   |  390 +++++++++++++++++++++++++++++++++++++-
 drivers/net/qede/qede_ethdev.h   |   10 +-
 drivers/net/qede/qede_rxtx.c     |   42 ++--
 9 files changed, 466 insertions(+), 60 deletions(-)

-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [dpdk-dev] [PATCH 1/9] qede: update hash config
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
@ 2016-05-07  4:30 ` Rasesh Mody
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 2/9] qede: get hash configuration Rasesh Mody
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Sony Chacko

From: Sony Chacko <sony.chacko@qlogic.com>

Add support for rss_hash_update.

Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
---
 doc/guides/nics/overview.rst   |    2 +-
 doc/guides/nics/qede.rst       |    3 +--
 drivers/net/qede/qede_eth_if.h |    1 +
 drivers/net/qede/qede_ethdev.c |   43 ++++++++++++++++++++++++++++++++++++++++
 drivers/net/qede/qede_rxtx.c   |   42 +++++++++++++++++++++++++++------------
 5 files changed, 75 insertions(+), 16 deletions(-)

diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index a309752..e62d27b 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -102,7 +102,7 @@ Most of these differences are summarized below.
    Unicast MAC filter     Y Y     Y   Y Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y       Y Y
    Multicast MAC filter   Y Y         Y Y Y Y Y             Y Y     Y Y         Y Y       Y Y
    RSS hash                     Y   Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y         Y Y
-   RSS key update                   Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y
+   RSS key update                   Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y         Y Y
    RSS reta update                  Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y
    VMDq                                 Y Y     Y   Y Y     Y Y
    SR-IOV                   Y       Y   Y Y     Y   Y Y             Y Y           Y
diff --git a/doc/guides/nics/qede.rst b/doc/guides/nics/qede.rst
index 9ff3d1d..c5fbd83 100644
--- a/doc/guides/nics/qede.rst
+++ b/doc/guides/nics/qede.rst
@@ -51,7 +51,7 @@ Supported Features
 - VLAN offload - Filtering and stripping
 - Stateless checksum offloads (IPv4/TCP/UDP)
 - Multiple Rx/Tx queues (queue-pairs)
-- RSS (with default table/key)
+- RSS (with user configurable table/key)
 - TSS
 - Multiple MAC address
 - Default pause flow control
@@ -61,7 +61,6 @@ Non-supported Features
 ----------------------
 
 - Scatter-Gather Rx/Tx frames
-- User configurable RETA table/key
 - Unequal number of Rx/Tx queues
 - MTU change (dynamic)
 - SR-IOV PF
diff --git a/drivers/net/qede/qede_eth_if.h b/drivers/net/qede/qede_eth_if.h
index 61f677c..26968eb 100644
--- a/drivers/net/qede/qede_eth_if.h
+++ b/drivers/net/qede/qede_eth_if.h
@@ -53,6 +53,7 @@ struct qed_dev_eth_info {
 struct qed_update_vport_rss_params {
 	uint16_t rss_ind_table[128];
 	uint32_t rss_key[10];
+	u8 rss_caps;
 };
 
 struct qed_stop_rxq_params {
diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 1273fd3..84ff6f8 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -753,6 +753,47 @@ qede_dev_supported_ptypes_get(struct rte_eth_dev *eth_dev)
 	return NULL;
 }
 
+int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
+			 struct rte_eth_rss_conf *rss_conf)
+{
+	struct qed_update_vport_params vport_update_params;
+	struct qede_dev *qdev = eth_dev->data->dev_private;
+	struct ecore_dev *edev = &qdev->edev;
+	uint8_t rss_caps;
+	uint32_t *key = (uint32_t *)rss_conf->rss_key;
+	uint64_t hf = rss_conf->rss_hf;
+	int i;
+
+	if (hf == 0)
+		DP_ERR(edev, "hash function 0 will disable RSS\n");
+
+	rss_caps = 0;
+	rss_caps |= (hf & ETH_RSS_IPV4)              ? ECORE_RSS_IPV4 : 0;
+	rss_caps |= (hf & ETH_RSS_IPV6)              ? ECORE_RSS_IPV6 : 0;
+	rss_caps |= (hf & ETH_RSS_IPV6_EX)           ? ECORE_RSS_IPV6 : 0;
+	rss_caps |= (hf & ETH_RSS_NONFRAG_IPV4_TCP)  ? ECORE_RSS_IPV4_TCP : 0;
+	rss_caps |= (hf & ETH_RSS_NONFRAG_IPV6_TCP)  ? ECORE_RSS_IPV6_TCP : 0;
+	rss_caps |= (hf & ETH_RSS_IPV6_TCP_EX)       ? ECORE_RSS_IPV6_TCP : 0;
+
+	/* If the mapping doesn't fit any supported, return */
+	if (rss_caps == 0 && hf != 0)
+		return -EINVAL;
+
+	memset(&vport_update_params, 0, sizeof(vport_update_params));
+
+	if (key != NULL)
+		memcpy(qdev->rss_params.rss_key, rss_conf->rss_key,
+		       rss_conf->rss_key_len);
+
+	qdev->rss_params.rss_caps = rss_caps;
+	memcpy(&vport_update_params.rss_params, &qdev->rss_params,
+	       sizeof(vport_update_params.rss_params));
+	vport_update_params.update_rss_flg = 1;
+	vport_update_params.vport_id = 0;
+
+	return qdev->ops->vport_update(edev, &vport_update_params);
+}
+
 static const struct eth_dev_ops qede_eth_dev_ops = {
 	.dev_configure = qede_dev_configure,
 	.dev_infos_get = qede_dev_info_get,
@@ -780,6 +821,7 @@ static const struct eth_dev_ops qede_eth_dev_ops = {
 	.flow_ctrl_set = qede_flow_ctrl_set,
 	.flow_ctrl_get = qede_flow_ctrl_get,
 	.dev_supported_ptypes_get = qede_dev_supported_ptypes_get,
+	.rss_hash_update = qede_rss_hash_update,
 };
 
 static const struct eth_dev_ops qede_eth_vf_dev_ops = {
@@ -804,6 +846,7 @@ static const struct eth_dev_ops qede_eth_vf_dev_ops = {
 	.vlan_offload_set = qede_vlan_offload_set,
 	.vlan_filter_set = qede_vlan_filter_set,
 	.dev_supported_ptypes_get = qede_dev_supported_ptypes_get,
+	.rss_hash_update = qede_rss_hash_update,
 };
 
 static void qede_update_pf_params(struct ecore_dev *edev)
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index 20c1cf8..23f9692 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -543,13 +543,18 @@ static int
 qede_config_rss(struct rte_eth_dev *eth_dev,
 		struct qed_update_vport_rss_params *rss_params)
 {
+	struct rte_eth_rss_conf rss_conf;
 	enum rte_eth_rx_mq_mode mode = eth_dev->data->dev_conf.rxmode.mq_mode;
-	struct rte_eth_rss_conf rss_conf =
-	    eth_dev->data->dev_conf.rx_adv_conf.rss_conf;
 	struct qede_dev *qdev = eth_dev->data->dev_private;
 	struct ecore_dev *edev = &qdev->edev;
+	uint8_t rss_caps;
 	unsigned int i;
+	uint64_t hf;
+	uint32_t *key;
 
+	rss_conf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf;
+	key = (uint32_t *)rss_conf.rss_key;
+	hf = rss_conf.rss_hf;
 	PMD_INIT_FUNC_TRACE(edev);
 
 	/* Check if RSS conditions are met.
@@ -564,16 +569,12 @@ qede_config_rss(struct rte_eth_dev *eth_dev,
 
 	DP_INFO(edev, "RSS flag is set\n");
 
-	if (rss_conf.rss_hf == 0) {
-		DP_NOTICE(edev, false, "No RSS hash function to apply\n");
-		return -EINVAL;
-	}
+	if (rss_conf.rss_hf == 0)
+		DP_NOTICE(edev, false, "RSS hash function = 0, disables RSS\n");
 
-	if (rss_conf.rss_key != NULL) {
-		DP_NOTICE(edev, false,
-			  "User provided RSS key is not supported\n");
-		return -EINVAL;
-	}
+	if (rss_conf.rss_key != NULL)
+		memcpy(qdev->rss_params.rss_key, rss_conf.rss_key,
+		       rss_conf.rss_key_len);
 
 	memset(rss_params, 0, sizeof(*rss_params));
 
@@ -581,8 +582,23 @@ qede_config_rss(struct rte_eth_dev *eth_dev,
 		rss_params->rss_ind_table[i] = qede_rxfh_indir_default(i,
 							QEDE_RSS_CNT(qdev));
 
-	qede_prandom_bytes(rss_params->rss_key,
-			   sizeof(rss_params->rss_key));
+	/* key and protocols */
+	if (rss_conf.rss_key == NULL)
+		qede_prandom_bytes(rss_params->rss_key,
+				   sizeof(rss_params->rss_key));
+	else
+		memcpy(rss_params->rss_key, rss_conf.rss_key,
+		       rss_conf.rss_key_len);
+
+	rss_caps = 0;
+	rss_caps |= (hf & ETH_RSS_IPV4)              ? ECORE_RSS_IPV4 : 0;
+	rss_caps |= (hf & ETH_RSS_IPV6)              ? ECORE_RSS_IPV6 : 0;
+	rss_caps |= (hf & ETH_RSS_IPV6_EX)           ? ECORE_RSS_IPV6 : 0;
+	rss_caps |= (hf & ETH_RSS_NONFRAG_IPV4_TCP)  ? ECORE_RSS_IPV4_TCP : 0;
+	rss_caps |= (hf & ETH_RSS_NONFRAG_IPV6_TCP)  ? ECORE_RSS_IPV6_TCP : 0;
+	rss_caps |= (hf & ETH_RSS_IPV6_TCP_EX)       ? ECORE_RSS_IPV6_TCP : 0;
+
+	rss_params->rss_caps = rss_caps;
 
 	DP_INFO(edev, "RSS check passes\n");
 
-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [dpdk-dev] [PATCH 2/9] qede: get hash configuration
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 1/9] qede: update hash config Rasesh Mody
@ 2016-05-07  4:30 ` Rasesh Mody
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 3/9] qede: rss redirection table update Rasesh Mody
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Sony Chacko

From: Sony Chacko <sony.chacko@qlogic.com>

Add support for rss_hash_conf_get.

Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
---
 drivers/net/qede/qede_ethdev.c |   34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 84ff6f8..6614632 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -794,6 +794,38 @@ int qede_rss_hash_update(struct rte_eth_dev *eth_dev,
 	return qdev->ops->vport_update(edev, &vport_update_params);
 }
 
+int qede_rss_hash_conf_get(struct rte_eth_dev *eth_dev,
+			   struct rte_eth_rss_conf *rss_conf)
+{
+	struct qede_dev *qdev = eth_dev->data->dev_private;
+	uint64_t hf;
+
+	if (rss_conf->rss_key_len < sizeof(qdev->rss_params.rss_key))
+		return -EINVAL;
+
+	if (rss_conf->rss_key)
+		memcpy(rss_conf->rss_key, qdev->rss_params.rss_key,
+		       sizeof(qdev->rss_params.rss_key));
+
+	hf = 0;
+	hf |= (qdev->rss_params.rss_caps & ECORE_RSS_IPV4)     ?
+			ETH_RSS_IPV4 : 0;
+	hf |= (qdev->rss_params.rss_caps & ECORE_RSS_IPV6)     ?
+			ETH_RSS_IPV6 : 0;
+	hf |= (qdev->rss_params.rss_caps & ECORE_RSS_IPV6)     ?
+			ETH_RSS_IPV6_EX : 0;
+	hf |= (qdev->rss_params.rss_caps & ECORE_RSS_IPV4_TCP) ?
+			ETH_RSS_NONFRAG_IPV4_TCP : 0;
+	hf |= (qdev->rss_params.rss_caps & ECORE_RSS_IPV6_TCP) ?
+			ETH_RSS_NONFRAG_IPV6_TCP : 0;
+	hf |= (qdev->rss_params.rss_caps & ECORE_RSS_IPV6_TCP) ?
+			ETH_RSS_IPV6_TCP_EX : 0;
+
+	rss_conf->rss_hf = hf;
+
+	return 0;
+}
+
 static const struct eth_dev_ops qede_eth_dev_ops = {
 	.dev_configure = qede_dev_configure,
 	.dev_infos_get = qede_dev_info_get,
@@ -822,6 +854,7 @@ static const struct eth_dev_ops qede_eth_dev_ops = {
 	.flow_ctrl_get = qede_flow_ctrl_get,
 	.dev_supported_ptypes_get = qede_dev_supported_ptypes_get,
 	.rss_hash_update = qede_rss_hash_update,
+	.rss_hash_conf_get = qede_rss_hash_conf_get,
 };
 
 static const struct eth_dev_ops qede_eth_vf_dev_ops = {
@@ -847,6 +880,7 @@ static const struct eth_dev_ops qede_eth_vf_dev_ops = {
 	.vlan_filter_set = qede_vlan_filter_set,
 	.dev_supported_ptypes_get = qede_dev_supported_ptypes_get,
 	.rss_hash_update = qede_rss_hash_update,
+	.rss_hash_conf_get = qede_rss_hash_conf_get,
 };
 
 static void qede_update_pf_params(struct ecore_dev *edev)
-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [dpdk-dev] [PATCH 3/9] qede: rss redirection table update
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 1/9] qede: update hash config Rasesh Mody
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 2/9] qede: get hash configuration Rasesh Mody
@ 2016-05-07  4:30 ` Rasesh Mody
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 4/9] qede: rss redirection table query Rasesh Mody
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Sony Chacko

From: Sony Chacko <sony.chacko@qlogic.com>

Add support for reta_update.

Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
---
 doc/guides/nics/overview.rst   |    2 +-
 drivers/net/qede/qede_ethdev.c |   36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index e62d27b..41ab760 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -103,7 +103,7 @@ Most of these differences are summarized below.
    Multicast MAC filter   Y Y         Y Y Y Y Y             Y Y     Y Y         Y Y       Y Y
    RSS hash                     Y   Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y         Y Y
    RSS key update                   Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y         Y Y
-   RSS reta update                  Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y
+   RSS reta update                  Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y         Y Y
    VMDq                                 Y Y     Y   Y Y     Y Y
    SR-IOV                   Y       Y   Y Y     Y   Y Y             Y Y           Y
    DCB                                  Y Y     Y   Y Y
diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 6614632..2b91e09 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -826,6 +826,40 @@ int qede_rss_hash_conf_get(struct rte_eth_dev *eth_dev,
 	return 0;
 }
 
+int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
+			 struct rte_eth_rss_reta_entry64 *reta_conf,
+			 uint16_t reta_size)
+{
+	struct qed_update_vport_params vport_update_params;
+	struct qede_dev *qdev = eth_dev->data->dev_private;
+	struct ecore_dev *edev = &qdev->edev;
+	uint16_t i, idx, shift;
+
+	if (reta_size > ETH_RSS_RETA_SIZE_128) {
+		DP_ERR(edev, "reta_size %d is not supported by hardware\n",
+		       reta_size);
+		return -EINVAL;
+	}
+
+	memset(&vport_update_params, 0, sizeof(vport_update_params));
+	memcpy(&vport_update_params.rss_params, &qdev->rss_params,
+	       sizeof(vport_update_params.rss_params));
+
+	for (i = 0; i < reta_size; i++) {
+		idx = i / RTE_RETA_GROUP_SIZE;
+		shift = i % RTE_RETA_GROUP_SIZE;
+		if (reta_conf[idx].mask & (1ULL << shift)) {
+			uint8_t entry = reta_conf[idx].reta[shift];
+			qdev->rss_params.rss_ind_table[i] = entry;
+		}
+	}
+
+	vport_update_params.update_rss_flg = 1;
+	vport_update_params.vport_id = 0;
+
+	return qdev->ops->vport_update(edev, &vport_update_params);
+}
+
 static const struct eth_dev_ops qede_eth_dev_ops = {
 	.dev_configure = qede_dev_configure,
 	.dev_infos_get = qede_dev_info_get,
@@ -855,6 +889,7 @@ static const struct eth_dev_ops qede_eth_dev_ops = {
 	.dev_supported_ptypes_get = qede_dev_supported_ptypes_get,
 	.rss_hash_update = qede_rss_hash_update,
 	.rss_hash_conf_get = qede_rss_hash_conf_get,
+	.reta_update  = qede_rss_reta_update,
 };
 
 static const struct eth_dev_ops qede_eth_vf_dev_ops = {
@@ -881,6 +916,7 @@ static const struct eth_dev_ops qede_eth_vf_dev_ops = {
 	.dev_supported_ptypes_get = qede_dev_supported_ptypes_get,
 	.rss_hash_update = qede_rss_hash_update,
 	.rss_hash_conf_get = qede_rss_hash_conf_get,
+	.reta_update  = qede_rss_reta_update,
 };
 
 static void qede_update_pf_params(struct ecore_dev *edev)
-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [dpdk-dev] [PATCH 4/9] qede: rss redirection table query
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
                   ` (2 preceding siblings ...)
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 3/9] qede: rss redirection table update Rasesh Mody
@ 2016-05-07  4:30 ` Rasesh Mody
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 5/9] qede: set mtu Rasesh Mody
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Sony Chacko

From: Sony Chacko <sony.chacko@qlogic.com>

Add support for reta_query.

Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
---
 drivers/net/qede/qede_ethdev.c |   27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 2b91e09..3754454 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -860,6 +860,31 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev,
 	return qdev->ops->vport_update(edev, &vport_update_params);
 }
 
+int qede_rss_reta_query(struct rte_eth_dev *eth_dev,
+			struct rte_eth_rss_reta_entry64 *reta_conf,
+			uint16_t reta_size)
+{
+	struct qede_dev *qdev = eth_dev->data->dev_private;
+	uint16_t i, idx, shift;
+
+	if (reta_size > ETH_RSS_RETA_SIZE_128) {
+		struct ecore_dev *edev = &qdev->edev;
+		DP_ERR(edev, "reta_size %d is not supported\n",
+		       reta_size);
+	}
+
+	for (i = 0; i < reta_size; i++) {
+		idx = i / RTE_RETA_GROUP_SIZE;
+		shift = i % RTE_RETA_GROUP_SIZE;
+		if (reta_conf[idx].mask & (1ULL << shift)) {
+			uint8_t entry = qdev->rss_params.rss_ind_table[i];
+			reta_conf[idx].reta[shift] = entry;
+		}
+	}
+
+	return 0;
+}
+
 static const struct eth_dev_ops qede_eth_dev_ops = {
 	.dev_configure = qede_dev_configure,
 	.dev_infos_get = qede_dev_info_get,
@@ -890,6 +915,7 @@ static const struct eth_dev_ops qede_eth_dev_ops = {
 	.rss_hash_update = qede_rss_hash_update,
 	.rss_hash_conf_get = qede_rss_hash_conf_get,
 	.reta_update  = qede_rss_reta_update,
+	.reta_query  = qede_rss_reta_query,
 };
 
 static const struct eth_dev_ops qede_eth_vf_dev_ops = {
@@ -917,6 +943,7 @@ static const struct eth_dev_ops qede_eth_vf_dev_ops = {
 	.rss_hash_update = qede_rss_hash_update,
 	.rss_hash_conf_get = qede_rss_hash_conf_get,
 	.reta_update  = qede_rss_reta_update,
+	.reta_query  = qede_rss_reta_query,
 };
 
 static void qede_update_pf_params(struct ecore_dev *edev)
-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [dpdk-dev] [PATCH 5/9] qede: set mtu
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
                   ` (3 preceding siblings ...)
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 4/9] qede: rss redirection table query Rasesh Mody
@ 2016-05-07  4:30 ` Rasesh Mody
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 6/9] qede: add support for xstats Rasesh Mody
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Sony Chacko

From: Sony Chacko <sony.chacko@qlogic.com>

Add support for mtu_set.

Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
---
 drivers/net/qede/qede_ethdev.c |   34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 3754454..af16277 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -885,6 +885,38 @@ int qede_rss_reta_query(struct rte_eth_dev *eth_dev,
 	return 0;
 }
 
+int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
+{
+	uint32_t frame_size;
+	struct qede_dev *qdev = dev->data->dev_private;
+	struct rte_eth_dev_info dev_info = {0};
+
+	qede_dev_info_get(dev, &dev_info);
+
+	/* VLAN_TAG = 4 */
+	frame_size = mtu + ETHER_HDR_LEN + ETHER_CRC_LEN + 4;
+
+	if ((mtu < ETHER_MIN_MTU) || (frame_size > dev_info.max_rx_pktlen))
+		return -EINVAL;
+
+	if (!dev->data->scattered_rx &&
+	    frame_size > dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM)
+		return -EINVAL;
+
+	if (frame_size > ETHER_MAX_LEN)
+		dev->data->dev_conf.rxmode.jumbo_frame = 1;
+	else
+		dev->data->dev_conf.rxmode.jumbo_frame = 0;
+
+	/* update max frame size */
+	dev->data->dev_conf.rxmode.max_rx_pkt_len = frame_size;
+	qdev->mtu = mtu;
+	qede_dev_stop(dev);
+	qede_dev_start(dev);
+
+	return 0;
+}
+
 static const struct eth_dev_ops qede_eth_dev_ops = {
 	.dev_configure = qede_dev_configure,
 	.dev_infos_get = qede_dev_info_get,
@@ -916,6 +948,7 @@ static const struct eth_dev_ops qede_eth_dev_ops = {
 	.rss_hash_conf_get = qede_rss_hash_conf_get,
 	.reta_update  = qede_rss_reta_update,
 	.reta_query  = qede_rss_reta_query,
+	.mtu_set = qede_set_mtu,
 };
 
 static const struct eth_dev_ops qede_eth_vf_dev_ops = {
@@ -944,6 +977,7 @@ static const struct eth_dev_ops qede_eth_vf_dev_ops = {
 	.rss_hash_conf_get = qede_rss_hash_conf_get,
 	.reta_update  = qede_rss_reta_update,
 	.reta_query  = qede_rss_reta_query,
+	.mtu_set = qede_set_mtu,
 };
 
 static void qede_update_pf_params(struct ecore_dev *edev)
-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [dpdk-dev] [PATCH 6/9] qede: add support for xstats
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
                   ` (4 preceding siblings ...)
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 5/9] qede: set mtu Rasesh Mody
@ 2016-05-07  4:30 ` Rasesh Mody
  2016-05-09 17:56   ` Van Haaren, Harry
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 7/9] qede: add 100g mode support Rasesh Mody
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Rasesh Mody

This patch adds support for extended statistics for QEDE PMD.

Signed-off-by: Rasesh Mody <rasesh.mody@qlogic.com>
---
 doc/guides/nics/overview.rst   |    2 +-
 drivers/net/qede/qede_ethdev.c |  152 +++++++++++++++++++++++++++++++++++++---
 2 files changed, 145 insertions(+), 9 deletions(-)

diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 41ab760..28c6436 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -128,7 +128,7 @@ Most of these differences are summarized below.
    Packet type parsing          Y     Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y         Y Y
    Timesync                             Y Y     Y   Y Y
    Basic stats            Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y Y Y   Y Y Y Y
-   Extended stats                   Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y                   Y Y
+   Extended stats                   Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y             Y Y   Y Y
    Stats per queue              Y                   Y Y     Y Y Y Y Y Y         Y Y   Y   Y Y
    EEPROM dump                                  Y   Y Y
    Registers dump                               Y Y Y Y Y Y
diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index af16277..4abe168 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -12,6 +12,125 @@
 static const struct qed_eth_ops *qed_ops;
 static const char *drivername = "qede pmd";
 
+static const struct rte_eth_xstats qede_eth_stats[] = {
+	{"no_buff_discards",
+		offsetof(struct ecore_eth_stats, no_buff_discards)},
+	{"packet_too_big_discard",
+		offsetof(struct ecore_eth_stats, packet_too_big_discard)},
+	{"ttl0_discard", offsetof(struct ecore_eth_stats, ttl0_discard)},
+	{"rx_ucast_bytes", offsetof(struct ecore_eth_stats, rx_ucast_bytes)},
+	{"rx_mcast_bytes", offsetof(struct ecore_eth_stats, rx_mcast_bytes)},
+	{"rx_bcast_bytes", offsetof(struct ecore_eth_stats, rx_bcast_bytes)},
+	{"rx_ucast_pkts", offsetof(struct ecore_eth_stats, rx_ucast_pkts)},
+	{"rx_mcast_pkts", offsetof(struct ecore_eth_stats, rx_mcast_pkts)},
+	{"rx_bcast_pkts", offsetof(struct ecore_eth_stats, rx_bcast_pkts)},
+	{"mftag_filter_discards",
+		offsetof(struct ecore_eth_stats, mftag_filter_discards)},
+	{"mac_filter_discards",
+		offsetof(struct ecore_eth_stats, mac_filter_discards)},
+	{"tx_ucast_bytes", offsetof(struct ecore_eth_stats, tx_ucast_bytes)},
+	{"tx_mcast_bytes", offsetof(struct ecore_eth_stats, tx_mcast_bytes)},
+	{"tx_bcast_bytes", offsetof(struct ecore_eth_stats, tx_bcast_bytes)},
+	{"tx_ucast_pkts", offsetof(struct ecore_eth_stats, tx_ucast_pkts)},
+	{"tx_mcast_pkts", offsetof(struct ecore_eth_stats, tx_mcast_pkts)},
+	{"tx_bcast_pkts", offsetof(struct ecore_eth_stats, tx_bcast_pkts)},
+	{"tx_err_drop_pkts",
+		offsetof(struct ecore_eth_stats, tx_err_drop_pkts)},
+	{"tpa_coalesced_pkts",
+		offsetof(struct ecore_eth_stats, tpa_coalesced_pkts)},
+	{"tpa_coalesced_events",
+		offsetof(struct ecore_eth_stats, tpa_coalesced_events)},
+	{"tpa_aborts_num", offsetof(struct ecore_eth_stats, tpa_aborts_num)},
+	{"tpa_not_coalesced_pkts",
+		offsetof(struct ecore_eth_stats, tpa_not_coalesced_pkts)},
+	{"tpa_coalesced_bytes",
+		offsetof(struct ecore_eth_stats, tpa_coalesced_bytes)},
+	{"rx_64_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_64_byte_packets)},
+	{"rx_65_to_127_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_65_to_127_byte_packets)},
+	{"rx_128_to_255_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_128_to_255_byte_packets)},
+	{"rx_256_to_511_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_256_to_511_byte_packets)},
+	{"rx_512_to_1023_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_512_to_1023_byte_packets)},
+	{"rx_1024_to_1518_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_1024_to_1518_byte_packets)},
+	{"rx_1519_to_1522_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_1519_to_1522_byte_packets)},
+	{"rx_1519_to_2047_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_1519_to_2047_byte_packets)},
+	{"rx_2048_to_4095_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_2048_to_4095_byte_packets)},
+	{"rx_4096_to_9216_byte_packets",
+		offsetof(struct ecore_eth_stats, rx_4096_to_9216_byte_packets)},
+	{"rx_9217_to_16383_byte_packets", offsetof(struct ecore_eth_stats,
+						rx_9217_to_16383_byte_packets)},
+	{"rx_crc_errors", offsetof(struct ecore_eth_stats, rx_crc_errors)},
+	{"rx_mac_crtl_frames",
+		offsetof(struct ecore_eth_stats, rx_mac_crtl_frames)},
+	{"rx_pause_frames", offsetof(struct ecore_eth_stats, rx_pause_frames)},
+	{"rx_prio_flow_ctrl_frames",
+		offsetof(struct ecore_eth_stats, rx_pfc_frames)},
+	{"rx_align_errors", offsetof(struct ecore_eth_stats, rx_align_errors)},
+	{"rx_carrier_errors",
+		offsetof(struct ecore_eth_stats, rx_carrier_errors)},
+	{"rx_oversize_packets",
+		offsetof(struct ecore_eth_stats, rx_oversize_packets)},
+	{"rx_jabbers", offsetof(struct ecore_eth_stats, rx_jabbers)},
+	{"rx_undersize_packets",
+		offsetof(struct ecore_eth_stats, rx_undersize_packets)},
+	{"rx_fragments", offsetof(struct ecore_eth_stats, rx_fragments)},
+	{"tx_64_byte_packets",
+		offsetof(struct ecore_eth_stats, tx_64_byte_packets)},
+	{"tx_65_to_127_byte_packets",
+		offsetof(struct ecore_eth_stats, tx_65_to_127_byte_packets)},
+	{"tx_128_to_255_byte_packets",
+		offsetof(struct ecore_eth_stats, tx_128_to_255_byte_packets)},
+	{"tx_256_to_511_byte_packets",
+		offsetof(struct ecore_eth_stats, tx_256_to_511_byte_packets)},
+	{"tx_512_to_1023_byte_packets",
+		offsetof(struct ecore_eth_stats, tx_512_to_1023_byte_packets)},
+	{"tx_1024_to_1518_byte_packets",
+		offsetof(struct ecore_eth_stats, tx_1024_to_1518_byte_packets)},
+	{"tx_1519_to_2047_byte_packets",
+		offsetof(struct ecore_eth_stats, tx_1519_to_2047_byte_packets)},
+	{"tx_2048_to_4095_byte_packets",
+		offsetof(struct ecore_eth_stats, tx_2048_to_4095_byte_packets)},
+	{"tx_4096_to_9216_byte_packets",
+		offsetof(struct ecore_eth_stats, tx_4096_to_9216_byte_packets)},
+	{"tx_9217_to_16383_byte_packets", offsetof(struct ecore_eth_stats,
+						tx_9217_to_16383_byte_packets)},
+	{"tx_pause_frames", offsetof(struct ecore_eth_stats, tx_pause_frames)},
+	{"tx_prio_flow_ctrl_frames",
+		offsetof(struct ecore_eth_stats, tx_pfc_frames)},
+	{"tx_lpi_entry_count",
+		offsetof(struct ecore_eth_stats, tx_lpi_entry_count)},
+	{"tx_total_collisions",
+		offsetof(struct ecore_eth_stats, tx_total_collisions)},
+	{"rx_buf_truncates", offsetof(struct ecore_eth_stats, brb_truncates)},
+	{"rx_buf_discards", offsetof(struct ecore_eth_stats, brb_discards)},
+	{"rx_mac_bytes", offsetof(struct ecore_eth_stats, rx_mac_bytes)},
+	{"rx_mac_uc_packets",
+		offsetof(struct ecore_eth_stats, rx_mac_uc_packets)},
+	{"rx_mac_mc_packets",
+		offsetof(struct ecore_eth_stats, rx_mac_mc_packets)},
+	{"rx_mac_bc_packets",
+		offsetof(struct ecore_eth_stats, rx_mac_bc_packets)},
+	{"rx_mac_frames_ok",
+		offsetof(struct ecore_eth_stats, rx_mac_frames_ok)},
+	{"tx_mac_bytes", offsetof(struct ecore_eth_stats, tx_mac_bytes)},
+	{"tx_mac_uc_packets",
+		offsetof(struct ecore_eth_stats, tx_mac_uc_packets)},
+	{"tx_mac_mc_packets",
+		offsetof(struct ecore_eth_stats, tx_mac_mc_packets)},
+	{"tx_mac_bc_packets",
+		offsetof(struct ecore_eth_stats, tx_mac_bc_packets)},
+	{"tx_mac_ctrl_frames",
+		offsetof(struct ecore_eth_stats, tx_mac_ctrl_frames)},
+};
+
 static void qede_interrupt_action(struct ecore_hwfn *p_hwfn)
 {
 	ecore_int_sp_dpc((osal_int_ptr_t)(p_hwfn));
@@ -611,15 +730,30 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
 	    stats.tx_mcast_bytes + stats.tx_bcast_bytes;
 
 	eth_stats->oerrors = stats.tx_err_drop_pkts;
+}
+
+static int
+qede_get_xstats(struct rte_eth_dev *dev, struct rte_eth_xstats *xstats,
+		unsigned int n)
+{
+	struct qede_dev *qdev = dev->data->dev_private;
+	struct ecore_dev *edev = &qdev->edev;
+	struct ecore_eth_stats stats;
+	unsigned int num = RTE_DIM(qede_eth_stats);
+
+	if (n < num)
+		return num;
+
+	qdev->ops->get_vport_stats(edev, &stats);
+
+	for (num = 0; num < n; num++) {
+		snprintf(xstats[num].name, sizeof(xstats[num].name), "%s",
+			 qede_eth_stats[num].name);
+		xstats[num].value = *(u64 *)(((char *)&stats) +
+					     qede_eth_stats[num].value);
+	}
 
-	DP_INFO(edev,
-		"no_buff_discards=%" PRIu64 ""
-		" mac_filter_discards=%" PRIu64 ""
-		" brb_truncates=%" PRIu64 ""
-		" brb_discards=%" PRIu64 "\n",
-		stats.no_buff_discards,
-		stats.mac_filter_discards,
-		stats.brb_truncates, stats.brb_discards);
+	return num;
 }
 
 int qede_dev_set_link_state(struct rte_eth_dev *eth_dev, bool link_up)
@@ -935,6 +1069,7 @@ static const struct eth_dev_ops qede_eth_dev_ops = {
 	.dev_stop = qede_dev_stop,
 	.dev_close = qede_dev_close,
 	.stats_get = qede_get_stats,
+	.xstats_get = qede_get_xstats,
 	.stats_reset = qede_reset_stats,
 	.mac_addr_add = qede_mac_addr_add,
 	.mac_addr_remove = qede_mac_addr_remove,
@@ -969,6 +1104,7 @@ static const struct eth_dev_ops qede_eth_vf_dev_ops = {
 	.dev_stop = qede_dev_stop,
 	.dev_close = qede_dev_close,
 	.stats_get = qede_get_stats,
+	.xstats_get = qede_get_xstats,
 	.stats_reset = qede_reset_stats,
 	.vlan_offload_set = qede_vlan_offload_set,
 	.vlan_filter_set = qede_vlan_filter_set,
-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [dpdk-dev] [PATCH 7/9] qede: add 100g mode support
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
                   ` (5 preceding siblings ...)
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 6/9] qede: add support for xstats Rasesh Mody
@ 2016-05-07  4:30 ` Rasesh Mody
  2016-06-07 11:09   ` Bruce Richardson
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 8/9] qede: enable vf-vf traffic with unmatched dest addr Rasesh Mody
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Harish Patil

From: Harish Patil <harish.patil@qlogic.com>

Change details:
 - Add device id to the PCI table
 - Add polling for the slowpath events for CMT mode device
 - Add prerequites to allow 100g mode
        o Min number of queues needed is 2
        o Only even number of queues are allowed
 - Update documentation

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
---
 config/common_base             |    2 +-
 doc/guides/nics/qede.rst       |    8 ++---
 drivers/net/qede/qede_ethdev.c |   64 ++++++++++++++++++++++++++++++++++++++++
 drivers/net/qede/qede_ethdev.h |    4 ++-
 4 files changed, 72 insertions(+), 6 deletions(-)

diff --git a/config/common_base b/config/common_base
index a053aa3..8976694 100644
--- a/config/common_base
+++ b/config/common_base
@@ -297,7 +297,7 @@ CONFIG_RTE_LIBRTE_PMD_BOND=y
 CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
 CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
 
-# QLogic 25G/40G PMD
+# QLogic 25G/40G/100G PMD
 #
 CONFIG_RTE_LIBRTE_QEDE_PMD=y
 CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
diff --git a/doc/guides/nics/qede.rst b/doc/guides/nics/qede.rst
index c5fbd83..f7ca8eb 100644
--- a/doc/guides/nics/qede.rst
+++ b/doc/guides/nics/qede.rst
@@ -55,7 +55,7 @@ Supported Features
 - TSS
 - Multiple MAC address
 - Default pause flow control
-- SR-IOV VF
+- SR-IOV VF for 25G/40G modes
 
 Non-supported Features
 ----------------------
@@ -70,13 +70,13 @@ Non-supported Features
 Supported QLogic Adapters
 -------------------------
 
-- QLogic FastLinQ QL4xxxx 25G/40G CNAs
+- QLogic FastLinQ QL4xxxx 25G/40G/100G CNAs.
 
 Prerequisites
 -------------
 
-- Requires firmware version **8.7.x.** and management
-  firmware version **8.7.x or higher**. Firmware may be available
+- Requires firmware version **8.7.x.** and management firmware
+  version **8.7.x or higher**. Firmware may be available
   inbox in certain newer Linux distros under the standard directory
   ``E.g. /lib/firmware/qed/qed_init_values_zipped-8.7.7.0.bin``
 
diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 4abe168..bd89e5a 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -7,10 +7,12 @@
  */
 
 #include "qede_ethdev.h"
+#include <rte_alarm.h>
 
 /* Globals */
 static const struct qed_eth_ops *qed_ops;
 static const char *drivername = "qede pmd";
+static int64_t timer_period = 1;
 
 static const struct rte_eth_xstats qede_eth_stats[] = {
 	{"no_buff_discards",
@@ -477,6 +479,21 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 		return -EINVAL;
 	}
 
+	/* Check requirements for 100G mode */
+	if (edev->num_hwfns > 1) {
+		if (eth_dev->data->nb_rx_queues < 2) {
+			DP_NOTICE(edev, false,
+				  "100G mode requires minimum two queues\n");
+			return -EINVAL;
+		}
+
+		if ((eth_dev->data->nb_rx_queues % 2) != 0) {
+			DP_NOTICE(edev, false,
+				  "100G mode requires even number of queues\n");
+			return -EINVAL;
+		}
+	}
+
 	qdev->num_rss = eth_dev->data->nb_rx_queues;
 
 	/* Initial state */
@@ -659,6 +676,26 @@ static void qede_promiscuous_disable(struct rte_eth_dev *eth_dev)
 		qede_rx_mode_setting(eth_dev, QED_FILTER_RX_MODE_TYPE_REGULAR);
 }
 
+static void qede_poll_sp_sb_cb(void *param)
+{
+	struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param;
+	struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev);
+	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
+	int rc;
+
+	qede_interrupt_action(ECORE_LEADING_HWFN(edev));
+	qede_interrupt_action(&edev->hwfns[1]);
+
+	rc = rte_eal_alarm_set(timer_period * US_PER_S,
+			       qede_poll_sp_sb_cb,
+			       (void *)eth_dev);
+	if (rc != 0) {
+		DP_ERR(edev, "Unable to start periodic"
+			     " timer rc %d\n", rc);
+		assert(false && "Unable to start periodic timer");
+	}
+}
+
 static void qede_dev_close(struct rte_eth_dev *eth_dev)
 {
 	struct qede_dev *qdev = eth_dev->data->dev_private;
@@ -691,6 +728,9 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev)
 	rte_intr_callback_unregister(&eth_dev->pci_dev->intr_handle,
 				     qede_interrupt_handler, (void *)eth_dev);
 
+	if (edev->num_hwfns > 1)
+		rte_eal_alarm_cancel(qede_poll_sp_sb_cb, (void *)eth_dev);
+
 	qdev->state = QEDE_CLOSE;
 }
 
@@ -1206,9 +1246,26 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 	params.drv_eng = QEDE_ENGINEERING_VERSION;
 	strncpy((char *)params.name, "qede LAN", QED_DRV_VER_STR_SIZE);
 
+	/* For CMT mode device do periodic polling for slowpath events.
+	 * This is required since uio device uses only one MSI-x
+	 * interrupt vector but we need one for each engine.
+	 */
+	if (edev->num_hwfns > 1) {
+		rc = rte_eal_alarm_set(timer_period * US_PER_S,
+				       qede_poll_sp_sb_cb,
+				       (void *)eth_dev);
+		if (rc != 0) {
+			DP_ERR(edev, "Unable to start periodic"
+				     " timer rc %d\n", rc);
+			return -EINVAL;
+		}
+	}
+
 	rc = qed_ops->common->slowpath_start(edev, &params);
 	if (rc) {
 		DP_ERR(edev, "Cannot start slowpath rc = %d\n", rc);
+		rte_eal_alarm_cancel(qede_poll_sp_sb_cb,
+				     (void *)eth_dev);
 		return -ENODEV;
 	}
 
@@ -1217,6 +1274,8 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 		DP_ERR(edev, "Cannot get device_info rc %d\n", rc);
 		qed_ops->common->slowpath_stop(edev);
 		qed_ops->common->remove(edev);
+		rte_eal_alarm_cancel(qede_poll_sp_sb_cb,
+				     (void *)eth_dev);
 		return -ENODEV;
 	}
 
@@ -1242,6 +1301,8 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 		DP_ERR(edev, "Failed to allocate MAC address\n");
 		qed_ops->common->slowpath_stop(edev);
 		qed_ops->common->remove(edev);
+		rte_eal_alarm_cancel(qede_poll_sp_sb_cb,
+				     (void *)eth_dev);
 		return -ENOMEM;
 	}
 
@@ -1357,6 +1418,9 @@ static struct rte_pci_id pci_id_qede_map[] = {
 	{
 		QEDE_RTE_PCI_DEVICE(PCI_DEVICE_ID_57980S_25)
 	},
+	{
+		QEDE_RTE_PCI_DEVICE(PCI_DEVICE_ID_57980S_100)
+	},
 	{.vendor_id = 0,}
 };
 
diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h
index 64d5f08..b080f5f 100644
--- a/drivers/net/qede/qede_ethdev.h
+++ b/drivers/net/qede/qede_ethdev.h
@@ -81,7 +81,7 @@
 	struct ecore_dev *edev = &qdev->edev;			\
 }
 
-/************* QLogic 25G/40G vendor/devices ids *************/
+/************* QLogic 25G/40G/100G vendor/devices ids *************/
 #define PCI_VENDOR_ID_QLOGIC            0x1077
 
 #define CHIP_NUM_57980E                 0x1634
@@ -90,6 +90,7 @@
 #define CHIP_NUM_57980S_40              0x1634
 #define CHIP_NUM_57980S_25              0x1656
 #define CHIP_NUM_57980S_IOV             0x1664
+#define CHIP_NUM_57980S_100             0x1644
 
 #define PCI_DEVICE_ID_NX2_57980E        CHIP_NUM_57980E
 #define PCI_DEVICE_ID_NX2_57980S        CHIP_NUM_57980S
@@ -97,6 +98,7 @@
 #define PCI_DEVICE_ID_57980S_40         CHIP_NUM_57980S_40
 #define PCI_DEVICE_ID_57980S_25         CHIP_NUM_57980S_25
 #define PCI_DEVICE_ID_57980S_IOV        CHIP_NUM_57980S_IOV
+#define PCI_DEVICE_ID_57980S_100        CHIP_NUM_57980S_100
 
 extern char fw_file[];
 
-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [dpdk-dev] [PATCH 8/9] qede: enable vf-vf traffic with unmatched dest addr
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
                   ` (6 preceding siblings ...)
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 7/9] qede: add 100g mode support Rasesh Mody
@ 2016-05-07  4:30 ` Rasesh Mody
  2016-06-07 12:37   ` Bruce Richardson
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 9/9] qede: update version to 8.7.9.0_1.1.0.1 Rasesh Mody
  2016-05-23  0:56 ` [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
  9 siblings, 1 reply; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Sony Chacko

From: Sony Chacko <sony.chacko@qlogic.com>

This patch enables VF to VF traffic with unmatched destination address.

Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
---
 drivers/net/qede/base/ecore_l2.c |   19 +++++++++++-----
 drivers/net/qede/qede_eth_if.c   |   45 +++++++++++++++++++++-----------------
 2 files changed, 39 insertions(+), 25 deletions(-)

diff --git a/drivers/net/qede/base/ecore_l2.c b/drivers/net/qede/base/ecore_l2.c
index 8a1a26a..9e6ef5a 100644
--- a/drivers/net/qede/base/ecore_l2.c
+++ b/drivers/net/qede/base/ecore_l2.c
@@ -227,11 +227,11 @@ ecore_sp_update_accept_mode(struct ecore_hwfn *p_hwfn,
  *		SET_FIELD(*state, ETH_VPORT_RX_MODE_UCAST_DROP_ALL,
  *			  !!(accept_filter & ECORE_ACCEPT_NONE));
  */
-/*
- *		SET_FIELD(*state, ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL,
- *			  (!!(accept_filter & ECORE_ACCEPT_UCAST_MATCHED) &&
- *			   !!(accept_filter & ECORE_ACCEPT_UCAST_UNMATCHED)));
- */
+
+		SET_FIELD(*state, ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL,
+			  (!!(accept_filter & ECORE_ACCEPT_UCAST_MATCHED) &&
+			   !!(accept_filter & ECORE_ACCEPT_UCAST_UNMATCHED)));
+
 		SET_FIELD(*state, ETH_VPORT_RX_MODE_UCAST_DROP_ALL,
 			  !(!!(accept_filter & ECORE_ACCEPT_UCAST_MATCHED) ||
 			    !!(accept_filter & ECORE_ACCEPT_UCAST_UNMATCHED)));
@@ -275,6 +275,15 @@ ecore_sp_update_accept_mode(struct ecore_hwfn *p_hwfn,
 
 		SET_FIELD(*state, ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL,
 			  !!(accept_filter & ECORE_ACCEPT_BCAST));
+		/* @DPDK */
+		/* ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL and
+		 * ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL
+		 * needs to be set for VF-VF communication to work
+		 * when dest macaddr is unknown.
+		 */
+		SET_FIELD(*state, ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL,
+			  (!!(accept_filter & ECORE_ACCEPT_UCAST_MATCHED) &&
+			   !!(accept_filter & ECORE_ACCEPT_UCAST_UNMATCHED)));
 
 		DP_VERBOSE(p_hwfn, ECORE_MSG_SP,
 			   "p_ramrod->tx_mode.state = 0x%x\n",
diff --git a/drivers/net/qede/qede_eth_if.c b/drivers/net/qede/qede_eth_if.c
index fd07d8b..b6f6487 100644
--- a/drivers/net/qede/qede_eth_if.c
+++ b/drivers/net/qede/qede_eth_if.c
@@ -377,33 +377,38 @@ qed_configure_filter_mcast(struct ecore_dev *edev,
 	return ecore_filter_mcast_cmd(edev, &mcast, ECORE_SPQ_MODE_CB, NULL);
 }
 
-int
-qed_configure_filter_rx_mode(struct ecore_dev *edev,
-			     enum qed_filter_rx_mode_type type)
+int qed_configure_filter_rx_mode(struct ecore_dev *edev,
+				 enum qed_filter_rx_mode_type type)
 {
-	struct ecore_filter_accept_flags accept_flags;
+	struct ecore_filter_accept_flags flags;
 
-	memset(&accept_flags, 0, sizeof(accept_flags));
+	memset(&flags, 0, sizeof(flags));
 
-	accept_flags.update_rx_mode_config = 1;
-	accept_flags.update_tx_mode_config = 1;
-	accept_flags.rx_accept_filter = ECORE_ACCEPT_UCAST_MATCHED |
-					ECORE_ACCEPT_MCAST_MATCHED |
-					ECORE_ACCEPT_BCAST;
-	accept_flags.tx_accept_filter = ECORE_ACCEPT_UCAST_MATCHED |
+	flags.update_rx_mode_config = 1;
+	flags.update_tx_mode_config = 1;
+	flags.rx_accept_filter = ECORE_ACCEPT_UCAST_MATCHED |
 					ECORE_ACCEPT_MCAST_MATCHED |
 					ECORE_ACCEPT_BCAST;
 
-	if (type == QED_FILTER_RX_MODE_TYPE_PROMISC)
-		accept_flags.rx_accept_filter |= ECORE_ACCEPT_UCAST_UNMATCHED;
-	else if (type == QED_FILTER_RX_MODE_TYPE_MULTI_PROMISC)
-		accept_flags.rx_accept_filter |= ECORE_ACCEPT_MCAST_UNMATCHED;
-	else if (type == (QED_FILTER_RX_MODE_TYPE_MULTI_PROMISC |
-			  QED_FILTER_RX_MODE_TYPE_PROMISC))
-		accept_flags.rx_accept_filter |= ECORE_ACCEPT_UCAST_UNMATCHED |
-		    ECORE_ACCEPT_MCAST_UNMATCHED;
+	flags.tx_accept_filter = ECORE_ACCEPT_UCAST_MATCHED |
+				 ECORE_ACCEPT_MCAST_MATCHED |
+				 ECORE_ACCEPT_BCAST;
+
+	if (type == QED_FILTER_RX_MODE_TYPE_PROMISC) {
+		flags.rx_accept_filter |= ECORE_ACCEPT_UCAST_UNMATCHED;
+		if (IS_VF(edev)) {
+			flags.tx_accept_filter |= ECORE_ACCEPT_UCAST_UNMATCHED;
+			DP_INFO(edev, "Enabling Tx unmatched flag for VF\n");
+		}
+	} else if (type == QED_FILTER_RX_MODE_TYPE_MULTI_PROMISC) {
+		flags.rx_accept_filter |= ECORE_ACCEPT_MCAST_UNMATCHED;
+	} else if (type == (QED_FILTER_RX_MODE_TYPE_MULTI_PROMISC |
+			    QED_FILTER_RX_MODE_TYPE_PROMISC)) {
+		flags.rx_accept_filter |= ECORE_ACCEPT_UCAST_UNMATCHED |
+					  ECORE_ACCEPT_MCAST_UNMATCHED;
+	}
 
-	return ecore_filter_accept_cmd(edev, 0, accept_flags, false, false,
+	return ecore_filter_accept_cmd(edev, 0, flags, false, false,
 				       ECORE_SPQ_MODE_CB, NULL);
 }
 
-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [dpdk-dev] [PATCH 9/9] qede: update version to 8.7.9.0_1.1.0.1
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
                   ` (7 preceding siblings ...)
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 8/9] qede: enable vf-vf traffic with unmatched dest addr Rasesh Mody
@ 2016-05-07  4:30 ` Rasesh Mody
  2016-05-23  0:56 ` [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
  9 siblings, 0 replies; 16+ messages in thread
From: Rasesh Mody @ 2016-05-07  4:30 UTC (permalink / raw)
  To: dev; +Cc: Dept-EngDPDKDev, Harish Patil

From: Harish Patil <harish.patil@qlogic.com>

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
---
 drivers/net/qede/qede_ethdev.h |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h
index b080f5f..abb33af 100644
--- a/drivers/net/qede/qede_ethdev.h
+++ b/drivers/net/qede/qede_ethdev.h
@@ -40,9 +40,9 @@
 /* Driver versions */
 #define QEDE_PMD_VER_PREFIX		"QEDE PMD"
 #define QEDE_PMD_VERSION_MAJOR		1
-#define QEDE_PMD_VERSION_MINOR		0
-#define QEDE_PMD_VERSION_REVISION	6
-#define QEDE_PMD_VERSION_PATCH		1
+#define QEDE_PMD_VERSION_MINOR	        1
+#define QEDE_PMD_VERSION_REVISION       0
+#define QEDE_PMD_VERSION_PATCH	        1
 
 #define QEDE_MAJOR_VERSION		8
 #define QEDE_MINOR_VERSION		7
-- 
1.7.10.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [dpdk-dev] [PATCH 6/9] qede: add support for xstats
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 6/9] qede: add support for xstats Rasesh Mody
@ 2016-05-09 17:56   ` Van Haaren, Harry
  0 siblings, 0 replies; 16+ messages in thread
From: Van Haaren, Harry @ 2016-05-09 17:56 UTC (permalink / raw)
  To: Rasesh Mody, dev; +Cc: Dept-EngDPDKDev

Hi Rasesh,

Some comments about xstats strings below, please refer to the docs here:
http://dpdk.org/doc/guides/prog_guide/poll_mode_drv.html#extended-statistics-api
Due to my familiarity with ixgbe, I will use it as an example: other PMDs should
be identical. 

I understand these may seem trivial and pointless changes, but ensuring the xstats strings are consistent is vital for apps to find the metadata contained.

Regards, -Harry

> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Rasesh Mody
> Subject: [dpdk-dev] [PATCH 6/9] qede: add support for xstats
> 
> This patch adds support for extended statistics for QEDE PMD.
> 	
> +static const struct rte_eth_xstats qede_eth_stats[] = {
> +	{"no_buff_discards",
> +		offsetof(struct ecore_eth_stats, no_buff_discards)},

Is provided by ethdev as rx_mbuf_allocation_errors
http://dpdk.org/browse/dpdk/tree/lib/librte_ether/rte_ethdev.c#n93

> +	{"packet_too_big_discard",
> +		offsetof(struct ecore_eth_stats, packet_too_big_discard)},

Is this not the same as rx_oversize below? It reads like it is - perhaps try be more descriptive (provide a direction, and differentiate it from the counter below) 

> +	{"ttl0_discard", offsetof(struct ecore_eth_stats, ttl0_discard)},

This needs a direction, "rx", I suggest "rx_ttl_zero_dropped" 

> +	{"rx_ucast_bytes", offsetof(struct ecore_eth_stats, rx_ucast_bytes)},
> +	{"rx_mcast_bytes", offsetof(struct ecore_eth_stats, rx_mcast_bytes)},
> +	{"rx_bcast_bytes", offsetof(struct ecore_eth_stats, rx_bcast_bytes)},
> +	{"rx_ucast_pkts", offsetof(struct ecore_eth_stats, rx_ucast_pkts)},
> +	{"rx_mcast_pkts", offsetof(struct ecore_eth_stats, rx_mcast_pkts)},
> +	{"rx_bcast_pkts", offsetof(struct ecore_eth_stats, rx_bcast_pkts)},

expand these names - unicast, packets. Otherwise formatting is good.

> +	{"mftag_filter_discards",
> +		offsetof(struct ecore_eth_stats, mftag_filter_discards)},
> +	{"mac_filter_discards",
> +		offsetof(struct ecore_eth_stats, mac_filter_discards)},

Direction, "mftag"?

> +	{"tx_ucast_bytes", offsetof(struct ecore_eth_stats, tx_ucast_bytes)},
> +	{"tx_mcast_bytes", offsetof(struct ecore_eth_stats, tx_mcast_bytes)},
> +	{"tx_bcast_bytes", offsetof(struct ecore_eth_stats, tx_bcast_bytes)},
> +	{"tx_ucast_pkts", offsetof(struct ecore_eth_stats, tx_ucast_pkts)},
> +	{"tx_mcast_pkts", offsetof(struct ecore_eth_stats, tx_mcast_pkts)},
> +	{"tx_bcast_pkts", offsetof(struct ecore_eth_stats, tx_bcast_pkts)},

Same as RX (expand to unicast etc, packets)

> +	{"tx_err_drop_pkts",
> +		offsetof(struct ecore_eth_stats, tx_err_drop_pkts)},
> +	{"tpa_coalesced_pkts",
> +		offsetof(struct ecore_eth_stats, tpa_coalesced_pkts)},
> +	{"tpa_coalesced_events",
> +		offsetof(struct ecore_eth_stats, tpa_coalesced_events)},
> +	{"tpa_aborts_num", offsetof(struct ecore_eth_stats, tpa_aborts_num)},
> +	{"tpa_not_coalesced_pkts",
> +		offsetof(struct ecore_eth_stats, tpa_not_coalesced_pkts)},
> +	{"tpa_coalesced_bytes",
> +		offsetof(struct ecore_eth_stats, tpa_coalesced_bytes)},

"tpa" should be human-readable, and these need a direction (unless this counter explicitly has no affinity to rx/tx)

> +	{"rx_64_byte_packets",
> +		offsetof(struct ecore_eth_stats, rx_64_byte_packets)},
<<until>>
> +	{"rx_9217_to_16383_byte_packets", offsetof(struct ecore_eth_stats,
> +						rx_9217_to_16383_byte_packets)},

Formatting not consistent, see docs linked at top.		

> +	{"rx_mac_crtl_frames",
> +		offsetof(struct ecore_eth_stats, rx_mac_crtl_frames)},

and 

> +	{"rx_prio_flow_ctrl_frames",
> +		offsetof(struct ecore_eth_stats, rx_pfc_frames)},

Expand crtl

> +	{"rx_oversize_packets",
> +		offsetof(struct ecore_eth_stats, rx_oversize_packets)},

Does this packet get received properly? If so, packets is the right counter. Otherwise this should be errors:
http://dpdk.org/browse/dpdk/tree/drivers/net/ixgbe/ixgbe_ethdev.c#n617

> +	{"rx_jabbers", offsetof(struct ecore_eth_stats, rx_jabbers)},

rx_jabber_errors

> +	{"rx_undersize_packets",
> +		offsetof(struct ecore_eth_stats, rx_undersize_packets)},

Same as oversize.

> +	{"rx_fragments", offsetof(struct ecore_eth_stats, rx_fragments)},

rx_fragment_packets?
http://dpdk.org/browse/dpdk/tree/drivers/net/ixgbe/ixgbe_ethdev.c#n615

> +	{"tx_64_byte_packets",
> +		offsetof(struct ecore_eth_stats, tx_64_byte_packets)},

Same as RX size comment.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1
  2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
                   ` (8 preceding siblings ...)
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 9/9] qede: update version to 8.7.9.0_1.1.0.1 Rasesh Mody
@ 2016-05-23  0:56 ` Rasesh Mody
  2016-06-07 12:47   ` Bruce Richardson
  9 siblings, 1 reply; 16+ messages in thread
From: Rasesh Mody @ 2016-05-23  0:56 UTC (permalink / raw)
  To: Bruce Richardson, Rasesh Mody, dev; +Cc: Dept-Eng DPDK Dev

Hi Bruce,

> From: Rasesh Mody [mailto:rasesh.mody@qlogic.com]
> Sent: Friday, May 06, 2016 9:30 PM
> 
> This patch set adds support for enabling 100G mode for QEDE PMD.
> It also adds support for APIs like
>  - mtu_set
>  - reta_update
>  - reta_query
>  - rss_hash_update
>  - rss_hash_conf_get
>  - xstats_get
> The changes include enablement of vf-vf traffic and updated the driver
> version to 8.7.9.0_1.1.0.1
> 
> The patches have been generated and tested against dpdk-next-net
> rel_16_07 branch.
> 
> Please apply!
> 
> Harish Patil (2):
>   qede: add 100g mode support
>   qede: update version to 8.7.9.0_1.1.0.1
> 
> Rasesh Mody (1):
>   qede: add support for xstats
> 
> Sony Chacko (6):
>   qede: update hash config
>   qede: get hash configuration
>   qede: rss redirection table update
>   qede: rss redirection table query
>   qede: set mtu
>   qede: enable vf-vf traffic with unmatched dest addr
> 
>  config/common_base               |    2 +-
>  doc/guides/nics/overview.rst     |    6 +-
>  doc/guides/nics/qede.rst         |   11 +-
>  drivers/net/qede/base/ecore_l2.c |   19 +-
>  drivers/net/qede/qede_eth_if.c   |   45 +++--
>  drivers/net/qede/qede_eth_if.h   |    1 +
>  drivers/net/qede/qede_ethdev.c   |  390
> +++++++++++++++++++++++++++++++++++++-
>  drivers/net/qede/qede_ethdev.h   |   10 +-
>  drivers/net/qede/qede_rxtx.c     |   42 ++--
>  9 files changed, 466 insertions(+), 60 deletions(-)
> 
> --
> 1.7.10.3

Did you get a chance to review these patches for QEDE PMD?

Thanks!
Rasesh

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [dpdk-dev] [PATCH 7/9] qede: add 100g mode support
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 7/9] qede: add 100g mode support Rasesh Mody
@ 2016-06-07 11:09   ` Bruce Richardson
  0 siblings, 0 replies; 16+ messages in thread
From: Bruce Richardson @ 2016-06-07 11:09 UTC (permalink / raw)
  To: Rasesh Mody; +Cc: dev, Dept-EngDPDKDev, Harish Patil

On Fri, May 06, 2016 at 09:30:19PM -0700, Rasesh Mody wrote:
> From: Harish Patil <harish.patil@qlogic.com>
> 
> Change details:
>  - Add device id to the PCI table
>  - Add polling for the slowpath events for CMT mode device
>  - Add prerequites to allow 100g mode

typo: prerequisites

>         o Min number of queues needed is 2
>         o Only even number of queues are allowed
>  - Update documentation
> 
> Signed-off-by: Harish Patil <harish.patil@qlogic.com>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [dpdk-dev] [PATCH 8/9] qede: enable vf-vf traffic with unmatched dest addr
  2016-05-07  4:30 ` [dpdk-dev] [PATCH 8/9] qede: enable vf-vf traffic with unmatched dest addr Rasesh Mody
@ 2016-06-07 12:37   ` Bruce Richardson
  0 siblings, 0 replies; 16+ messages in thread
From: Bruce Richardson @ 2016-06-07 12:37 UTC (permalink / raw)
  To: Rasesh Mody; +Cc: dev, Dept-EngDPDKDev, Sony Chacko

On Fri, May 06, 2016 at 09:30:20PM -0700, Rasesh Mody wrote:
> From: Sony Chacko <sony.chacko@qlogic.com>
> 
> This patch enables VF to VF traffic with unmatched destination address.
> 
> Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>

I think this patch needs more detail in the commit log to explain how this
actually works. Is it the case that this allows a VF to be the default
destination for unmatched traffic, or something else? Does this need a
documentation update to describe the feature?

Regards,
/Bruce

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1
  2016-05-23  0:56 ` [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
@ 2016-06-07 12:47   ` Bruce Richardson
  2016-06-07 18:26     ` Rasesh Mody
  0 siblings, 1 reply; 16+ messages in thread
From: Bruce Richardson @ 2016-06-07 12:47 UTC (permalink / raw)
  To: Rasesh Mody; +Cc: dev, Dept-Eng DPDK Dev

On Mon, May 23, 2016 at 12:56:50AM +0000, Rasesh Mody wrote:
> Hi Bruce,
> 
> > From: Rasesh Mody [mailto:rasesh.mody@qlogic.com]
> > Sent: Friday, May 06, 2016 9:30 PM
> > 
> > This patch set adds support for enabling 100G mode for QEDE PMD.
> > It also adds support for APIs like
> >  - mtu_set
> >  - reta_update
> >  - reta_query
> >  - rss_hash_update
> >  - rss_hash_conf_get
> >  - xstats_get
> > The changes include enablement of vf-vf traffic and updated the driver
> > version to 8.7.9.0_1.1.0.1
> > 
> > The patches have been generated and tested against dpdk-next-net
> > rel_16_07 branch.
> > 
> > Please apply!
> > 
> > Harish Patil (2):
> >   qede: add 100g mode support
> >   qede: update version to 8.7.9.0_1.1.0.1
> > 
> > Rasesh Mody (1):
> >   qede: add support for xstats
> > 
> > Sony Chacko (6):
> >   qede: update hash config
> >   qede: get hash configuration
> >   qede: rss redirection table update
> >   qede: rss redirection table query
> >   qede: set mtu
> >   qede: enable vf-vf traffic with unmatched dest addr
> > 
> >  config/common_base               |    2 +-
> >  doc/guides/nics/overview.rst     |    6 +-
> >  doc/guides/nics/qede.rst         |   11 +-
> >  drivers/net/qede/base/ecore_l2.c |   19 +-
> >  drivers/net/qede/qede_eth_if.c   |   45 +++--
> >  drivers/net/qede/qede_eth_if.h   |    1 +
> >  drivers/net/qede/qede_ethdev.c   |  390
> > +++++++++++++++++++++++++++++++++++++-
> >  drivers/net/qede/qede_ethdev.h   |   10 +-
> >  drivers/net/qede/qede_rxtx.c     |   42 ++--
> >  9 files changed, 466 insertions(+), 60 deletions(-)
> > 
> > --
> > 1.7.10.3
> 
> Did you get a chance to review these patches for QEDE PMD?
> 
> Thanks!
> Rasesh

Hi,

a couple of comments I've put in reply to individual patches, and please also
take into account Harry's comments on the stats patch. Otherwise things look
pretty ok.

A general comment that applied to a number of patches is to ensure that
the titles start with the appropriate verb to describe what the patch is doing.
For example, the patch:

qede: set mtu

is not actually setting the MTU on the nic, but is adding support for setting
the mtu on the NIC, so should be:

qede: add support for setting the MTU.

Please take this into account when doing a V2.

Thanks,
/Bruce

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1
  2016-06-07 12:47   ` Bruce Richardson
@ 2016-06-07 18:26     ` Rasesh Mody
  0 siblings, 0 replies; 16+ messages in thread
From: Rasesh Mody @ 2016-06-07 18:26 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dev, Dept-Eng DPDK Dev

> From: Bruce Richardson [mailto:bruce.richardson@intel.com]
> Sent: Tuesday, June 07, 2016 5:47 AM
> To: Rasesh Mody <rasesh.mody@qlogic.com>
> Cc: dev@dpdk.org; Dept-Eng DPDK Dev <Dept-EngDPDKDev@qlogic.com>
> Subject: Re: [PATCH 0/9] qede: update qede PMD to 1.1.0.1
> 
> On Mon, May 23, 2016 at 12:56:50AM +0000, Rasesh Mody wrote:
> > Hi Bruce,
> >
> > > From: Rasesh Mody [mailto:rasesh.mody@qlogic.com]
> > > Sent: Friday, May 06, 2016 9:30 PM
> > >
> > > This patch set adds support for enabling 100G mode for QEDE PMD.
> > > It also adds support for APIs like
> > >  - mtu_set
> > >  - reta_update
> > >  - reta_query
> > >  - rss_hash_update
> > >  - rss_hash_conf_get
> > >  - xstats_get
> > > The changes include enablement of vf-vf traffic and updated the
> > > driver version to 8.7.9.0_1.1.0.1
> > >
> > > The patches have been generated and tested against dpdk-next-net
> > > rel_16_07 branch.
> > >
> > > Please apply!
> > >
> > > Harish Patil (2):
> > >   qede: add 100g mode support
> > >   qede: update version to 8.7.9.0_1.1.0.1
> > >
> > > Rasesh Mody (1):
> > >   qede: add support for xstats
> > >
> > > Sony Chacko (6):
> > >   qede: update hash config
> > >   qede: get hash configuration
> > >   qede: rss redirection table update
> > >   qede: rss redirection table query
> > >   qede: set mtu
> > >   qede: enable vf-vf traffic with unmatched dest addr
> > >
> > >  config/common_base               |    2 +-
> > >  doc/guides/nics/overview.rst     |    6 +-
> > >  doc/guides/nics/qede.rst         |   11 +-
> > >  drivers/net/qede/base/ecore_l2.c |   19 +-
> > >  drivers/net/qede/qede_eth_if.c   |   45 +++--
> > >  drivers/net/qede/qede_eth_if.h   |    1 +
> > >  drivers/net/qede/qede_ethdev.c   |  390
> > > +++++++++++++++++++++++++++++++++++++-
> > >  drivers/net/qede/qede_ethdev.h   |   10 +-
> > >  drivers/net/qede/qede_rxtx.c     |   42 ++--
> > >  9 files changed, 466 insertions(+), 60 deletions(-)
> > >
> > > --
> > > 1.7.10.3
> >
> > Did you get a chance to review these patches for QEDE PMD?
> >
> > Thanks!
> > Rasesh
> 
> Hi,
> 
> a couple of comments I've put in reply to individual patches, and please also
> take into account Harry's comments on the stats patch. Otherwise things look
> pretty ok.
> 
> A general comment that applied to a number of patches is to ensure that the
> titles start with the appropriate verb to describe what the patch is doing.
> For example, the patch:
> 
> qede: set mtu
> 
> is not actually setting the MTU on the nic, but is adding support for setting
> the mtu on the NIC, so should be:
> 
> qede: add support for setting the MTU.
> 
> Please take this into account when doing a V2.

We'll take care of the above.

Thanks!
Rasesh

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2016-06-07 18:26 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-07  4:30 [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
2016-05-07  4:30 ` [dpdk-dev] [PATCH 1/9] qede: update hash config Rasesh Mody
2016-05-07  4:30 ` [dpdk-dev] [PATCH 2/9] qede: get hash configuration Rasesh Mody
2016-05-07  4:30 ` [dpdk-dev] [PATCH 3/9] qede: rss redirection table update Rasesh Mody
2016-05-07  4:30 ` [dpdk-dev] [PATCH 4/9] qede: rss redirection table query Rasesh Mody
2016-05-07  4:30 ` [dpdk-dev] [PATCH 5/9] qede: set mtu Rasesh Mody
2016-05-07  4:30 ` [dpdk-dev] [PATCH 6/9] qede: add support for xstats Rasesh Mody
2016-05-09 17:56   ` Van Haaren, Harry
2016-05-07  4:30 ` [dpdk-dev] [PATCH 7/9] qede: add 100g mode support Rasesh Mody
2016-06-07 11:09   ` Bruce Richardson
2016-05-07  4:30 ` [dpdk-dev] [PATCH 8/9] qede: enable vf-vf traffic with unmatched dest addr Rasesh Mody
2016-06-07 12:37   ` Bruce Richardson
2016-05-07  4:30 ` [dpdk-dev] [PATCH 9/9] qede: update version to 8.7.9.0_1.1.0.1 Rasesh Mody
2016-05-23  0:56 ` [dpdk-dev] [PATCH 0/9] qede: update qede PMD to 1.1.0.1 Rasesh Mody
2016-06-07 12:47   ` Bruce Richardson
2016-06-07 18:26     ` Rasesh Mody

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).