* [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
* 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
* [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(ð_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, ¶ms);
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
* 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
* [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
* 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
* [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 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 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