All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] bnxt patchset
@ 2018-05-01  1:06 Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 01/12] net/bnxt: add support for lsc interrupt event Ajit Khaparde
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev

Patchset against dpdk-next-net.
Please apply.

Ajit Khaparde (3):
  net/bnxt: fix MTU calculation
  net/bnxt: fix to reset status of initialization
  net/bnxt: fix usage of vnic id

Jay Ding (2):
  net/bnxt: return EINVAL instead of ENOSPC on invalid max ring
  net/bnxt: return error if init is not complete before accessing stats

Qingmin Liu (2):
  net/bnxt: add support for lsc interrupt event
  net/bnxt: set MTU in dev config for jumbo packets

Rahul Gupta (1):
  net/bnxt: Validate structs and pointers before use

Randy Schacher (1):
  net/bnxt: clear HWRM sniffer list for PFs

Scott Branden (2):
  net/bnxt: rename function checking MAC address
  net/bnxt: rename driver version from Cumulus to NetXtreme

Xiaoxin Peng (1):
  net/bnxt: fix rx mbuf and agg ring leak in dev stop

 drivers/net/bnxt/bnxt.h        |  1 +
 drivers/net/bnxt/bnxt_ethdev.c | 23 ++++++++++++++++-------
 drivers/net/bnxt/bnxt_filter.c |  8 +++++---
 drivers/net/bnxt/bnxt_filter.h |  2 +-
 drivers/net/bnxt/bnxt_hwrm.c   | 26 +++++++++++++++++++-------
 drivers/net/bnxt/bnxt_ring.c   |  3 +++
 drivers/net/bnxt/bnxt_rxq.c    | 14 +++++++-------
 drivers/net/bnxt/bnxt_stats.c  |  2 +-
 drivers/net/bnxt/bnxt_txq.c    | 11 ++++++-----
 9 files changed, 59 insertions(+), 31 deletions(-)

-- 
2.15.1 (Apple Git-101)

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

* [PATCH 01/12] net/bnxt: add support for lsc interrupt event
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 02/12] net/bnxt: rename function checking MAC address Ajit Khaparde
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: Qingmin Liu, Scott Branden, Ajit Kumar Khaparde

From: Qingmin Liu <qingmin.liu@broadcom.com>

Add support to bnxt driver to register RTE_ETH_EVENT_INTR_LSC
event and monitor physical link status.

Signed-off-by: Qingmin Liu <qingmin.liu@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Signed-off-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 348129dad..229017ace 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -780,6 +780,11 @@ int bnxt_link_update_op(struct rte_eth_dev *eth_dev, int wait_to_complete)
 	new.link_speed != eth_dev->data->dev_link.link_speed) {
 		memcpy(&eth_dev->data->dev_link, &new,
 			sizeof(struct rte_eth_link));
+
+		_rte_eth_dev_callback_process(eth_dev,
+					      RTE_ETH_EVENT_INTR_LSC,
+					      NULL);
+
 		bnxt_print_link_info(eth_dev);
 	}
 
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 02/12] net/bnxt: rename function checking MAC address
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 01/12] net/bnxt: add support for lsc interrupt event Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 03/12] net/bnxt: rename driver version from Cumulus to NetXtreme Ajit Khaparde
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: Scott Branden, Ajit Kumar Khaparde

From: Scott Branden <scott.branden@broadcom.com>

rename check_zero_bytes to bnxt_check_zero_bytes to match proper prefix.

Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Signed-off-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 2 +-
 drivers/net/bnxt/bnxt_filter.c | 8 +++++---
 drivers/net/bnxt/bnxt_filter.h | 2 +-
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 229017ace..3e2ccfa90 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -3286,7 +3286,7 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev)
 		goto error_free;
 	}
 
-	if (check_zero_bytes(bp->dflt_mac_addr, ETHER_ADDR_LEN)) {
+	if (bnxt_check_zero_bytes(bp->dflt_mac_addr, ETHER_ADDR_LEN)) {
 		PMD_DRV_LOG(ERR,
 			    "Invalid MAC addr %02X:%02X:%02X:%02X:%02X:%02X\n",
 			    bp->dflt_mac_addr[0], bp->dflt_mac_addr[1],
diff --git a/drivers/net/bnxt/bnxt_filter.c b/drivers/net/bnxt/bnxt_filter.c
index dadd1e32f..e36da9977 100644
--- a/drivers/net/bnxt/bnxt_filter.c
+++ b/drivers/net/bnxt/bnxt_filter.c
@@ -231,7 +231,7 @@ nxt_non_void_action(const struct rte_flow_action *cur)
 	}
 }
 
-int check_zero_bytes(const uint8_t *bytes, int len)
+int bnxt_check_zero_bytes(const uint8_t *bytes, int len)
 {
 	int i;
 	for (i = 0; i < len; i++)
@@ -512,13 +512,15 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp,
 				   ipv6_spec->hdr.src_addr, 16);
 			rte_memcpy(filter->dst_ipaddr,
 				   ipv6_spec->hdr.dst_addr, 16);
-			if (!check_zero_bytes(ipv6_mask->hdr.src_addr, 16)) {
+			if (!bnxt_check_zero_bytes(ipv6_mask->hdr.src_addr,
+						   16)) {
 				rte_memcpy(filter->src_ipaddr_mask,
 					   ipv6_mask->hdr.src_addr, 16);
 				en |= !use_ntuple ? 0 :
 				    NTUPLE_FLTR_ALLOC_INPUT_EN_SRC_IPADDR_MASK;
 			}
-			if (!check_zero_bytes(ipv6_mask->hdr.dst_addr, 16)) {
+			if (!bnxt_check_zero_bytes(ipv6_mask->hdr.dst_addr,
+						   16)) {
 				rte_memcpy(filter->dst_ipaddr_mask,
 					   ipv6_mask->hdr.dst_addr, 16);
 				en |= !use_ntuple ? 0 :
diff --git a/drivers/net/bnxt/bnxt_filter.h b/drivers/net/bnxt/bnxt_filter.h
index c70b127ac..d27be7032 100644
--- a/drivers/net/bnxt/bnxt_filter.h
+++ b/drivers/net/bnxt/bnxt_filter.h
@@ -69,7 +69,7 @@ struct bnxt_filter_info *bnxt_get_unused_filter(struct bnxt *bp);
 void bnxt_free_filter(struct bnxt *bp, struct bnxt_filter_info *filter);
 struct bnxt_filter_info *bnxt_get_l2_filter(struct bnxt *bp,
 		struct bnxt_filter_info *nf, struct bnxt_vnic_info *vnic);
-int check_zero_bytes(const uint8_t *bytes, int len);
+int bnxt_check_zero_bytes(const uint8_t *bytes, int len);
 
 #define NTUPLE_FLTR_ALLOC_INPUT_EN_SRC_MACADDR	\
 	HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_SRC_MACADDR
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 03/12] net/bnxt: rename driver version from Cumulus to NetXtreme
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 01/12] net/bnxt: add support for lsc interrupt event Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 02/12] net/bnxt: rename function checking MAC address Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 04/12] net/bnxt: return EINVAL instead of ENOSPC on invalid max ring Ajit Khaparde
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: Scott Branden

From: Scott Branden <scott.branden@broadcom.com>

Rename driver version from "Broadcom Cumulus driver" to
"Broadcom NetXtreme driver" to reflect this driver is applicable to
NetXtreme family beyond Cumulus.

Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 3e2ccfa90..58241ccac 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -29,7 +29,7 @@
 
 #define DRV_MODULE_NAME		"bnxt"
 static const char bnxt_version[] =
-	"Broadcom Cumulus driver " DRV_MODULE_NAME "\n";
+	"Broadcom NetXtreme driver " DRV_MODULE_NAME "\n";
 int bnxt_logtype_driver;
 
 #define PCI_VENDOR_ID_BROADCOM 0x14E4
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 04/12] net/bnxt: return EINVAL instead of ENOSPC on invalid max ring
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (2 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 03/12] net/bnxt: rename driver version from Cumulus to NetXtreme Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 05/12] net/bnxt: Validate structs and pointers before use Ajit Khaparde
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: Jay Ding, Scott Branden

From: Jay Ding <jay.ding@broadcom.com>

Return EINVAL instead of ENOSPC when invalid queue_idx passed in
during rx and tx queue_setup_op routines.

Signed-off-by: Jay Ding <jay.ding@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ray Jui <ray.jui@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_rxq.c | 2 +-
 drivers/net/bnxt/bnxt_txq.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
index e939c9ac0..4e6fa4e30 100644
--- a/drivers/net/bnxt/bnxt_rxq.c
+++ b/drivers/net/bnxt/bnxt_rxq.c
@@ -290,7 +290,7 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev,
 		PMD_DRV_LOG(ERR,
 			"Cannot create Rx ring %d. Only %d rings available\n",
 			queue_idx, bp->max_rx_rings);
-		return -ENOSPC;
+		return -EINVAL;
 	}
 
 	if (!nb_desc || nb_desc > MAX_RX_DESC_CNT) {
diff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c
index 07e25d77b..b50f37cf2 100644
--- a/drivers/net/bnxt/bnxt_txq.c
+++ b/drivers/net/bnxt/bnxt_txq.c
@@ -86,7 +86,7 @@ int bnxt_tx_queue_setup_op(struct rte_eth_dev *eth_dev,
 		PMD_DRV_LOG(ERR,
 			"Cannot create Tx ring %d. Only %d rings available\n",
 			queue_idx, bp->max_tx_rings);
-		return -ENOSPC;
+		return -EINVAL;
 	}
 
 	if (!nb_desc || nb_desc > MAX_TX_DESC_CNT) {
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 05/12] net/bnxt: Validate structs and pointers before use
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (3 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 04/12] net/bnxt: return EINVAL instead of ENOSPC on invalid max ring Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 06/12] net/bnxt: set MTU in dev config for jumbo packets Ajit Khaparde
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: Rahul Gupta, Jay Ding, Scott Branden

From: Rahul Gupta <rahul.gupta@broadcom.com>

Validate pointers aren't pointing to uninitialized areas
including txq and rxq before using them to avoid
bnxt driver from crashing.

Signed-off-by: Rahul Gupta <rahul.gupta@broadcom.com>
Signed-off-by: Jay Ding <jay.ding@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ray Jui <ray.jui@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Tested-by: Randy Schacher <stuart.schacher@broadcom.com>
---
 drivers/net/bnxt/bnxt_ring.c | 3 +++
 drivers/net/bnxt/bnxt_rxq.c  | 6 ++----
 drivers/net/bnxt/bnxt_txq.c  | 9 +++++----
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c
index 8e822e11f..aa9f3f4cc 100644
--- a/drivers/net/bnxt/bnxt_ring.c
+++ b/drivers/net/bnxt/bnxt_ring.c
@@ -24,6 +24,9 @@
 
 void bnxt_free_ring(struct bnxt_ring *ring)
 {
+	if (!ring)
+		return;
+
 	if (ring->vmem_size && *ring->vmem) {
 		memset((char *)*ring->vmem, 0, ring->vmem_size);
 		*ring->vmem = NULL;
diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
index 4e6fa4e30..4b380d4f0 100644
--- a/drivers/net/bnxt/bnxt_rxq.c
+++ b/drivers/net/bnxt/bnxt_rxq.c
@@ -23,10 +23,8 @@
 
 void bnxt_free_rxq_stats(struct bnxt_rx_queue *rxq)
 {
-	struct bnxt_cp_ring_info *cpr = rxq->cp_ring;
-
-	if (cpr->hw_stats)
-		cpr->hw_stats = NULL;
+	if (rxq && rxq->cp_ring && rxq->cp_ring->hw_stats)
+		rxq->cp_ring->hw_stats = NULL;
 }
 
 int bnxt_mq_rx_configure(struct bnxt *bp)
diff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c
index b50f37cf2..b9b975e4c 100644
--- a/drivers/net/bnxt/bnxt_txq.c
+++ b/drivers/net/bnxt/bnxt_txq.c
@@ -19,10 +19,8 @@
 
 void bnxt_free_txq_stats(struct bnxt_tx_queue *txq)
 {
-	struct bnxt_cp_ring_info *cpr = txq->cp_ring;
-
-	if (cpr->hw_stats)
-		cpr->hw_stats = NULL;
+	if (txq && txq->cp_ring && txq->cp_ring->hw_stats)
+		txq->cp_ring->hw_stats = NULL;
 }
 
 static void bnxt_tx_queue_release_mbufs(struct bnxt_tx_queue *txq)
@@ -30,6 +28,9 @@ static void bnxt_tx_queue_release_mbufs(struct bnxt_tx_queue *txq)
 	struct bnxt_sw_tx_bd *sw_ring;
 	uint16_t i;
 
+	if (!txq)
+		return;
+
 	sw_ring = txq->tx_ring->tx_buf_ring;
 	if (sw_ring) {
 		for (i = 0; i < txq->tx_ring->tx_ring_struct->ring_size; i++) {
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 06/12] net/bnxt: set MTU in dev config for jumbo packets
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (4 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 05/12] net/bnxt: Validate structs and pointers before use Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 07/12] net/bnxt: fix MTU calculation Ajit Khaparde
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: Qingmin Liu, stable, Scott Branden

From: Qingmin Liu <qingmin.liu@broadcom.com>

MTU setting does not take effect after rte_eth_dev_configure
is called with jumbo enable unless it is configured using the
set_mtu dev_op.

Fixes: daef48efe5e5 ("net/bnxt: support set MTU")
Cc: stable@dpdk.org

Signed-off-by: Qingmin Liu <qingmin.liu@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Jay Ding <jay.ding@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 58241ccac..e68608f61 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -151,6 +151,7 @@ static const struct rte_pci_id bnxt_pci_id_map[] = {
 
 static int bnxt_vlan_offload_set_op(struct rte_eth_dev *dev, int mask);
 static void bnxt_print_link_info(struct rte_eth_dev *eth_dev);
+static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu);
 
 /***********************/
 
@@ -548,10 +549,12 @@ static int bnxt_dev_configure_op(struct rte_eth_dev *eth_dev)
 	bp->rx_cp_nr_rings = bp->rx_nr_rings;
 	bp->tx_cp_nr_rings = bp->tx_nr_rings;
 
-	if (rx_offloads & DEV_RX_OFFLOAD_JUMBO_FRAME)
+	if (rx_offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) {
 		eth_dev->data->mtu =
 				eth_dev->data->dev_conf.rxmode.max_rx_pkt_len -
 				ETHER_HDR_LEN - ETHER_CRC_LEN - VLAN_TAG_SIZE;
+		bnxt_mtu_set_op(eth_dev, eth_dev->data->mtu);
+	}
 	return 0;
 }
 
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 07/12] net/bnxt: fix MTU calculation
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (5 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 06/12] net/bnxt: set MTU in dev config for jumbo packets Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 08/12] net/bnxt: return error if init is not complete before accessing stats Ajit Khaparde
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: stable, Qingmin Liu, Scott Branden

We were not considering the case of nested VLANs while
calculating MTU. This patch takes care of the same.

Fixes: daef48efe5e5 ("net/bnxt: support set MTU")
Cc: stable@dpdk.org

Signed-off-by: Qingmin Liu <qingmin.liu@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Jay Ding <jay.ding@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt.h        | 1 +
 drivers/net/bnxt/bnxt_ethdev.c | 3 ++-
 drivers/net/bnxt/bnxt_hwrm.c   | 9 ++++++---
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 97b0e0853..110cdb992 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -23,6 +23,7 @@
 #define BNXT_MAX_MTU		9500
 #define VLAN_TAG_SIZE		4
 #define BNXT_MAX_LED		4
+#define BNXT_NUM_VLANS		2
 
 struct bnxt_led_info {
 	uint8_t      led_id;
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index e68608f61..20ed0a31f 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -552,7 +552,8 @@ static int bnxt_dev_configure_op(struct rte_eth_dev *eth_dev)
 	if (rx_offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) {
 		eth_dev->data->mtu =
 				eth_dev->data->dev_conf.rxmode.max_rx_pkt_len -
-				ETHER_HDR_LEN - ETHER_CRC_LEN - VLAN_TAG_SIZE;
+				ETHER_HDR_LEN - ETHER_CRC_LEN - VLAN_TAG_SIZE *
+				BNXT_NUM_VLANS;
 		bnxt_mtu_set_op(eth_dev, eth_dev->data->mtu);
 	}
 	return 0;
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index bc8773509..c136edc06 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -2360,7 +2360,8 @@ static int bnxt_hwrm_pf_func_cfg(struct bnxt *bp, int tx_rings)
 	req.flags = rte_cpu_to_le_32(bp->pf.func_cfg_flags);
 	req.mtu = rte_cpu_to_le_16(BNXT_MAX_MTU);
 	req.mru = rte_cpu_to_le_16(bp->eth_dev->data->mtu + ETHER_HDR_LEN +
-				   ETHER_CRC_LEN + VLAN_TAG_SIZE);
+				   ETHER_CRC_LEN + VLAN_TAG_SIZE *
+				   BNXT_NUM_VLANS);
 	req.num_rsscos_ctxs = rte_cpu_to_le_16(bp->max_rsscos_ctx);
 	req.num_stat_ctxs = rte_cpu_to_le_16(bp->max_stat_ctx);
 	req.num_cmpl_rings = rte_cpu_to_le_16(bp->max_cp_rings);
@@ -2397,9 +2398,11 @@ static void populate_vf_func_cfg_req(struct bnxt *bp,
 			HWRM_FUNC_CFG_INPUT_ENABLES_NUM_HW_RING_GRPS);
 
 	req->mtu = rte_cpu_to_le_16(bp->eth_dev->data->mtu + ETHER_HDR_LEN +
-				    ETHER_CRC_LEN + VLAN_TAG_SIZE);
+				    ETHER_CRC_LEN + VLAN_TAG_SIZE *
+				    BNXT_NUM_VLANS);
 	req->mru = rte_cpu_to_le_16(bp->eth_dev->data->mtu + ETHER_HDR_LEN +
-				    ETHER_CRC_LEN + VLAN_TAG_SIZE);
+				    ETHER_CRC_LEN + VLAN_TAG_SIZE *
+				    BNXT_NUM_VLANS);
 	req->num_rsscos_ctxs = rte_cpu_to_le_16(bp->max_rsscos_ctx /
 						(num_vfs + 1));
 	req->num_stat_ctxs = rte_cpu_to_le_16(bp->max_stat_ctx / (num_vfs + 1));
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 08/12] net/bnxt: return error if init is not complete before accessing stats
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (6 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 07/12] net/bnxt: fix MTU calculation Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 09/12] net/bnxt: fix to reset status of initialization Ajit Khaparde
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: Jay Ding, stable, Scott Branden

From: Jay Ding <jay.ding@broadcom.com>

return error if init is not complete before accessing stats.

Fixes: ed2ced6fe927 ("net/bnxt: check initialization before accessing stats")
Cc: stable@dpdk.org

Signed-off-by: Jay Ding <jay.ding@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_stats.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
index 1b586f333..c1a8fad09 100644
--- a/drivers/net/bnxt/bnxt_stats.c
+++ b/drivers/net/bnxt/bnxt_stats.c
@@ -210,7 +210,7 @@ int bnxt_stats_get_op(struct rte_eth_dev *eth_dev,
 	memset(bnxt_stats, 0, sizeof(*bnxt_stats));
 	if (!(bp->flags & BNXT_FLAG_INIT_DONE)) {
 		PMD_DRV_LOG(ERR, "Device Initialization not complete!\n");
-		return 0;
+		return -1;
 	}
 
 	for (i = 0; i < bp->rx_cp_nr_rings; i++) {
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 09/12] net/bnxt: fix to reset status of initialization
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (7 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 08/12] net/bnxt: return error if init is not complete before accessing stats Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 10/12] net/bnxt: fix rx mbuf and agg ring leak in dev stop Ajit Khaparde
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: stable

clear flag on stop at proper location to avoid race conditions.

Fixes: ed2ced6fe927 ("net/bnxt: check initialization before accessing stats")
Cc: stable@dpdk.org

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 20ed0a31f..352fc30b4 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -648,13 +648,13 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
 {
 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
 
+	bp->flags &= ~BNXT_FLAG_INIT_DONE;
 	if (bp->eth_dev->data->dev_started) {
 		/* TBD: STOP HW queues DMA */
 		eth_dev->data->dev_link.link_status = 0;
 	}
 	bnxt_set_hwrm_link_config(bp, false);
 	bnxt_hwrm_port_clr_stats(bp);
-	bp->flags &= ~BNXT_FLAG_INIT_DONE;
 	bnxt_shutdown_nic(bp);
 	bp->dev_stopped = 1;
 }
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 10/12] net/bnxt: fix rx mbuf and agg ring leak in dev stop
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (8 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 09/12] net/bnxt: fix to reset status of initialization Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 11/12] net/bnxt: fix usage of vnic id Ajit Khaparde
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: Xiaoxin Peng, stable, Jay Ding, Scott Branden

From: Xiaoxin Peng <xiaoxin.peng@broadcom.com>

In the start/stop_op operation, mbufs allocated for rings were not freed

1) add bnxt_free_tx_mbuf/bnxt_free_rx_mbuf in bnxt_dev_stop_op to free MBUF
   before freeing the rings.
2) MBUF allocation and free routines were not in sync. Allocation uses the
   ring->ring_size including any rounded up and multiple factors while the
   free routine uses the requested queue size.

Fixes: c09f57b49c13 ("net/bnxt: add start/stop/link update operations")
Cc: stable@dpdk.org

Signed-off-by: Jay Ding <jay.ding@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ray Jui <ray.jui@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Signed-off-by: Xiaoxin Peng <xiaoxin.peng@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 4 ++--
 drivers/net/bnxt/bnxt_rxq.c    | 6 ++++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 352fc30b4..dc445f9a5 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -655,6 +655,8 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
 	}
 	bnxt_set_hwrm_link_config(bp, false);
 	bnxt_hwrm_port_clr_stats(bp);
+	bnxt_free_tx_mbufs(bp);
+	bnxt_free_rx_mbufs(bp);
 	bnxt_shutdown_nic(bp);
 	bp->dev_stopped = 1;
 }
@@ -666,8 +668,6 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
 	if (bp->dev_stopped == 0)
 		bnxt_dev_stop_op(eth_dev);
 
-	bnxt_free_tx_mbufs(bp);
-	bnxt_free_rx_mbufs(bp);
 	bnxt_free_mem(bp);
 	if (eth_dev->data->mac_addrs != NULL) {
 		rte_free(eth_dev->data->mac_addrs);
diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
index 4b380d4f0..866fb56b1 100644
--- a/drivers/net/bnxt/bnxt_rxq.c
+++ b/drivers/net/bnxt/bnxt_rxq.c
@@ -207,7 +207,8 @@ static void bnxt_rx_queue_release_mbufs(struct bnxt_rx_queue *rxq)
 	if (rxq) {
 		sw_ring = rxq->rx_ring->rx_buf_ring;
 		if (sw_ring) {
-			for (i = 0; i < rxq->nb_rx_desc; i++) {
+			for (i = 0;
+			     i < rxq->rx_ring->rx_ring_struct->ring_size; i++) {
 				if (sw_ring[i].mbuf) {
 					rte_pktmbuf_free_seg(sw_ring[i].mbuf);
 					sw_ring[i].mbuf = NULL;
@@ -217,7 +218,8 @@ static void bnxt_rx_queue_release_mbufs(struct bnxt_rx_queue *rxq)
 		/* Free up mbufs in Agg ring */
 		sw_ring = rxq->rx_ring->ag_buf_ring;
 		if (sw_ring) {
-			for (i = 0; i < rxq->nb_rx_desc; i++) {
+			for (i = 0;
+			     i < rxq->rx_ring->ag_ring_struct->ring_size; i++) {
 				if (sw_ring[i].mbuf) {
 					rte_pktmbuf_free_seg(sw_ring[i].mbuf);
 					sw_ring[i].mbuf = NULL;
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 11/12] net/bnxt: fix usage of vnic id
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (9 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 10/12] net/bnxt: fix rx mbuf and agg ring leak in dev stop Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-01  1:06 ` [PATCH 12/12] net/bnxt: clear HWRM sniffer list for PFs Ajit Khaparde
  2018-05-08 16:30 ` [PATCH 00/12] bnxt patchset Ferruh Yigit
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: stable, Scott Branden

VNIC ID returned by the FW is a 16-bit field.
We are incorrectly using it as a 32-bit value in few places.
This patch corrects that.

Fixes: daef48efe5e5 ("net/bnxt: support set MTU")
Cc: stable@dpdk.org

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Michael Wildt <michael.wildt@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Ray Jui <ray.jui@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index c136edc06..d3c50e490 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -1212,7 +1212,7 @@ static int bnxt_hwrm_vnic_plcmodes_qcfg(struct bnxt *bp,
 
 	HWRM_PREP(req, VNIC_PLCMODES_QCFG);
 
-	req.vnic_id = rte_cpu_to_le_32(vnic->fw_vnic_id);
+	req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);
 
 	rc = bnxt_hwrm_send_message(bp, &req, sizeof(req));
 
@@ -1240,7 +1240,7 @@ static int bnxt_hwrm_vnic_plcmodes_cfg(struct bnxt *bp,
 
 	HWRM_PREP(req, VNIC_PLCMODES_CFG);
 
-	req.vnic_id = rte_cpu_to_le_32(vnic->fw_vnic_id);
+	req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);
 	req.flags = rte_cpu_to_le_32(pmode->flags);
 	req.jumbo_thresh = rte_cpu_to_le_16(pmode->jumbo_thresh);
 	req.hds_offset = rte_cpu_to_le_16(pmode->hds_offset);
@@ -1484,7 +1484,7 @@ int bnxt_hwrm_vnic_plcmode_cfg(struct bnxt *bp,
 	size -= RTE_PKTMBUF_HEADROOM;
 
 	req.jumbo_thresh = rte_cpu_to_le_16(size);
-	req.vnic_id = rte_cpu_to_le_32(vnic->fw_vnic_id);
+	req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);
 
 	rc = bnxt_hwrm_send_message(bp, &req, sizeof(req));
 
@@ -1520,7 +1520,7 @@ int bnxt_hwrm_vnic_tpa_cfg(struct bnxt *bp,
 			rte_cpu_to_le_16(HWRM_VNIC_TPA_CFG_INPUT_MAX_AGGS_MAX);
 		req.min_agg_len = rte_cpu_to_le_32(512);
 	}
-	req.vnic_id = rte_cpu_to_le_32(vnic->fw_vnic_id);
+	req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);
 
 	rc = bnxt_hwrm_send_message(bp, &req, sizeof(req));
 
-- 
2.15.1 (Apple Git-101)

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

* [PATCH 12/12] net/bnxt: clear HWRM sniffer list for PFs
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (10 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 11/12] net/bnxt: fix usage of vnic id Ajit Khaparde
@ 2018-05-01  1:06 ` Ajit Khaparde
  2018-05-08 16:30 ` [PATCH 00/12] bnxt patchset Ferruh Yigit
  12 siblings, 0 replies; 14+ messages in thread
From: Ajit Khaparde @ 2018-05-01  1:06 UTC (permalink / raw)
  To: dev; +Cc: Randy Schacher, Scott Branden

From: Randy Schacher <stuart.schacher@broadcom.com>

Clear HWRM sniffer list for DPDK PFs so that VFs on
DPDK PFs initialize successfully. DPDK PF driver does not
handle HWRM commands from VFs.

Signed-off-by: Randy Schacher <stuart.schacher@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index d3c50e490..5b9840d4f 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -611,6 +611,15 @@ int bnxt_hwrm_func_driver_register(struct bnxt *bp)
 		memcpy(req.vf_req_fwd, bp->pf.vf_req_fwd,
 		       RTE_MIN(sizeof(req.vf_req_fwd),
 			       sizeof(bp->pf.vf_req_fwd)));
+
+		/*
+		 * PF can sniff HWRM API issued by VF. This can be set up by
+		 * linux driver and inherited by the DPDK PF driver. Clear
+		 * this HWRM sniffer list in FW because DPDK PF driver does
+		 * not support this.
+		 */
+		req.flags =
+		rte_cpu_to_le_32(HWRM_FUNC_DRV_RGTR_INPUT_FLAGS_FWD_NONE_MODE);
 	}
 
 	req.async_event_fwd[0] |=
-- 
2.15.1 (Apple Git-101)

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

* Re: [PATCH 00/12] bnxt patchset
  2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
                   ` (11 preceding siblings ...)
  2018-05-01  1:06 ` [PATCH 12/12] net/bnxt: clear HWRM sniffer list for PFs Ajit Khaparde
@ 2018-05-08 16:30 ` Ferruh Yigit
  12 siblings, 0 replies; 14+ messages in thread
From: Ferruh Yigit @ 2018-05-08 16:30 UTC (permalink / raw)
  To: Ajit Khaparde, dev

On 5/1/2018 2:06 AM, Ajit Khaparde wrote:
> Patchset against dpdk-next-net.
> Please apply.
> 
> Ajit Khaparde (3):
>   net/bnxt: fix MTU calculation
>   net/bnxt: fix to reset status of initialization
>   net/bnxt: fix usage of vnic id
> 
> Jay Ding (2):
>   net/bnxt: return EINVAL instead of ENOSPC on invalid max ring
>   net/bnxt: return error if init is not complete before accessing stats
> 
> Qingmin Liu (2):
>   net/bnxt: add support for lsc interrupt event
>   net/bnxt: set MTU in dev config for jumbo packets
> 
> Rahul Gupta (1):
>   net/bnxt: Validate structs and pointers before use
> 
> Randy Schacher (1):
>   net/bnxt: clear HWRM sniffer list for PFs
> 
> Scott Branden (2):
>   net/bnxt: rename function checking MAC address
>   net/bnxt: rename driver version from Cumulus to NetXtreme
> 
> Xiaoxin Peng (1):
>   net/bnxt: fix rx mbuf and agg ring leak in dev stop

Series applied to dpdk-next-net/master, thanks.

There were some ./devtools/check-git-log.sh errors fixed while applying, please
check them next time, thanks.

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

end of thread, other threads:[~2018-05-08 16:30 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-01  1:06 [PATCH 00/12] bnxt patchset Ajit Khaparde
2018-05-01  1:06 ` [PATCH 01/12] net/bnxt: add support for lsc interrupt event Ajit Khaparde
2018-05-01  1:06 ` [PATCH 02/12] net/bnxt: rename function checking MAC address Ajit Khaparde
2018-05-01  1:06 ` [PATCH 03/12] net/bnxt: rename driver version from Cumulus to NetXtreme Ajit Khaparde
2018-05-01  1:06 ` [PATCH 04/12] net/bnxt: return EINVAL instead of ENOSPC on invalid max ring Ajit Khaparde
2018-05-01  1:06 ` [PATCH 05/12] net/bnxt: Validate structs and pointers before use Ajit Khaparde
2018-05-01  1:06 ` [PATCH 06/12] net/bnxt: set MTU in dev config for jumbo packets Ajit Khaparde
2018-05-01  1:06 ` [PATCH 07/12] net/bnxt: fix MTU calculation Ajit Khaparde
2018-05-01  1:06 ` [PATCH 08/12] net/bnxt: return error if init is not complete before accessing stats Ajit Khaparde
2018-05-01  1:06 ` [PATCH 09/12] net/bnxt: fix to reset status of initialization Ajit Khaparde
2018-05-01  1:06 ` [PATCH 10/12] net/bnxt: fix rx mbuf and agg ring leak in dev stop Ajit Khaparde
2018-05-01  1:06 ` [PATCH 11/12] net/bnxt: fix usage of vnic id Ajit Khaparde
2018-05-01  1:06 ` [PATCH 12/12] net/bnxt: clear HWRM sniffer list for PFs Ajit Khaparde
2018-05-08 16:30 ` [PATCH 00/12] bnxt patchset Ferruh Yigit

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.