All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net 0/7] qed*: fix series.
@ 2016-10-21  8:43 sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 1/7] qede: get_channels() need to populate max tx/rx coalesce values sudarsana.kalluru
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: sudarsana.kalluru @ 2016-10-21  8:43 UTC (permalink / raw)
  To: davem
  Cc: netdev, Ariel.Elior, Yuval.Mintz, manish.chopra, Sudarsana Reddy Kalluru

From: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>

The patch series contains several minor bug fixes for qed/qede modules.
Please consider applying this to 'net' branch.

Manish Chopra (1):
  qede: Fix incorrrect usage of APIs for un-mapping DMA memory

Sudarsana Reddy Kalluru (6):
  qede: get_channels() need to populate max tx/rx coalesce values
  qede: Do not allow RSS config for 100G devices
  qede: Loopback implementation should ignore the normal traffic
  qed*: Reduce the memory footprint for Rx path
  qede: Reconfigure rss indirection direction table when rss count is
    updated
  qed: Zero-out the buffer paased to dcbx_query() API

 drivers/net/ethernet/qlogic/qed/qed_dcbx.c      |  2 +
 drivers/net/ethernet/qlogic/qed/qed_main.c      |  1 +
 drivers/net/ethernet/qlogic/qede/qede.h         |  3 +-
 drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 99 ++++++++++++++++---------
 drivers/net/ethernet/qlogic/qede/qede_main.c    | 11 ++-
 include/linux/qed/qed_if.h                      |  1 +
 6 files changed, 75 insertions(+), 42 deletions(-)

-- 
1.8.3.1

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

* [PATCH net 1/7] qede: get_channels() need to populate max tx/rx coalesce values
  2016-10-21  8:43 [PATCH net 0/7] qed*: fix series sudarsana.kalluru
@ 2016-10-21  8:43 ` sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 2/7] qede: Do not allow RSS config for 100G devices sudarsana.kalluru
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: sudarsana.kalluru @ 2016-10-21  8:43 UTC (permalink / raw)
  To: davem
  Cc: netdev, Ariel.Elior, Yuval.Mintz, manish.chopra, Sudarsana Reddy Kalluru

From: Sudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com>

Recent changes in kernel ethtool implementation requires the driver
callback for get_channels() has to populate the values for max tx/rx
coalesce fields.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
---
 drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
index 25a9b29..16a1a47 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
@@ -756,6 +756,8 @@ static void qede_get_channels(struct net_device *dev,
 	struct qede_dev *edev = netdev_priv(dev);
 
 	channels->max_combined = QEDE_MAX_RSS_CNT(edev);
+	channels->max_rx = QEDE_MAX_RSS_CNT(edev);
+	channels->max_tx = QEDE_MAX_RSS_CNT(edev);
 	channels->combined_count = QEDE_QUEUE_CNT(edev) - edev->fp_num_tx -
 					edev->fp_num_rx;
 	channels->tx_count = edev->fp_num_tx;
-- 
1.8.3.1

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

* [PATCH net 2/7] qede: Do not allow RSS config for 100G devices
  2016-10-21  8:43 [PATCH net 0/7] qed*: fix series sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 1/7] qede: get_channels() need to populate max tx/rx coalesce values sudarsana.kalluru
@ 2016-10-21  8:43 ` sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 3/7] qede: Loopback implementation should ignore the normal traffic sudarsana.kalluru
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: sudarsana.kalluru @ 2016-10-21  8:43 UTC (permalink / raw)
  To: davem
  Cc: netdev, Ariel.Elior, Yuval.Mintz, manish.chopra, Sudarsana Reddy Kalluru

From: Sudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com>

RSS configuration is not supported for 100G adapters.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
---
 drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
index 16a1a47..bf04fb9 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
@@ -1055,6 +1055,12 @@ static int qede_set_rxfh(struct net_device *dev, const u32 *indir,
 	struct qede_dev *edev = netdev_priv(dev);
 	int i;
 
+	if (edev->dev_info.common.num_hwfns > 1) {
+		DP_INFO(edev,
+			"RSS configuration is not supported for 100G devices\n");
+		return -EOPNOTSUPP;
+	}
+
 	if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP)
 		return -EOPNOTSUPP;
 
-- 
1.8.3.1

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

* [PATCH net 3/7] qede: Loopback implementation should ignore the normal traffic
  2016-10-21  8:43 [PATCH net 0/7] qed*: fix series sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 1/7] qede: get_channels() need to populate max tx/rx coalesce values sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 2/7] qede: Do not allow RSS config for 100G devices sudarsana.kalluru
@ 2016-10-21  8:43 ` sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 4/7] qed*: Reduce the memory footprint for Rx path sudarsana.kalluru
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: sudarsana.kalluru @ 2016-10-21  8:43 UTC (permalink / raw)
  To: davem
  Cc: netdev, Ariel.Elior, Yuval.Mintz, manish.chopra, Sudarsana Reddy Kalluru

From: Sudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com>

During the execution of loopback test, driver may receive the packets which
are not originated by this test, loopback implementation need to skip those
packets.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
---
 drivers/net/ethernet/qlogic/qede/qede.h         |  1 +
 drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 80 +++++++++++++++----------
 drivers/net/ethernet/qlogic/qede/qede_main.c    |  3 +-
 3 files changed, 49 insertions(+), 35 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qede/qede.h b/drivers/net/ethernet/qlogic/qede/qede.h
index 28c0e9f..d6a4a9a5 100644
--- a/drivers/net/ethernet/qlogic/qede/qede.h
+++ b/drivers/net/ethernet/qlogic/qede/qede.h
@@ -348,6 +348,7 @@ void qede_reload(struct qede_dev *edev,
 int qede_txq_has_work(struct qede_tx_queue *txq);
 void qede_recycle_rx_bd_ring(struct qede_rx_queue *rxq, struct qede_dev *edev,
 			     u8 count);
+void qede_update_rx_prod(struct qede_dev *edev, struct qede_rx_queue *rxq);
 
 #define RX_RING_SIZE_POW	13
 #define RX_RING_SIZE		((u16)BIT(RX_RING_SIZE_POW))
diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
index bf04fb9..7da184c 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
@@ -1207,8 +1207,8 @@ static int qede_selftest_receive_traffic(struct qede_dev *edev)
 	struct qede_rx_queue *rxq = NULL;
 	struct sw_rx_data *sw_rx_data;
 	union eth_rx_cqe *cqe;
+	int i, rc = 0;
 	u8 *data_ptr;
-	int i;
 
 	for_each_queue(i) {
 		if (edev->fp_array[i].type & QEDE_FASTPATH_RX) {
@@ -1227,46 +1227,60 @@ static int qede_selftest_receive_traffic(struct qede_dev *edev)
 	 * queue and that the loopback traffic is not IP.
 	 */
 	for (i = 0; i < QEDE_SELFTEST_POLL_COUNT; i++) {
-		if (qede_has_rx_work(rxq))
+		if (!qede_has_rx_work(rxq)) {
+			usleep_range(100, 200);
+			continue;
+		}
+
+		hw_comp_cons = le16_to_cpu(*rxq->hw_cons_ptr);
+		sw_comp_cons = qed_chain_get_cons_idx(&rxq->rx_comp_ring);
+
+		/* Memory barrier to prevent the CPU from doing speculative
+		 * reads of CQE/BD before reading hw_comp_cons. If the CQE is
+		 * read before it is written by FW, then FW writes CQE and SB,
+		 * and then the CPU reads the hw_comp_cons, it will use an old
+		 * CQE.
+		 */
+		rmb();
+
+		/* Get the CQE from the completion ring */
+		cqe = (union eth_rx_cqe *)qed_chain_consume(&rxq->rx_comp_ring);
+
+		/* Get the data from the SW ring */
+		sw_rx_index = rxq->sw_rx_cons & NUM_RX_BDS_MAX;
+		sw_rx_data = &rxq->sw_rx_ring[sw_rx_index];
+		fp_cqe = &cqe->fast_path_regular;
+		len =  le16_to_cpu(fp_cqe->len_on_first_bd);
+		data_ptr = (u8 *)(page_address(sw_rx_data->data) +
+				  fp_cqe->placement_offset +
+				  sw_rx_data->page_offset);
+		if (ether_addr_equal(data_ptr,  edev->ndev->dev_addr) &&
+		    ether_addr_equal(data_ptr + ETH_ALEN,
+				     edev->ndev->dev_addr)) {
+			for (i = ETH_HLEN; i < len; i++)
+				if (data_ptr[i] != (unsigned char)(i & 0xff)) {
+					rc = -1;
+					break;
+				}
+
+			qede_recycle_rx_bd_ring(rxq, edev, 1);
+			qed_chain_recycle_consumed(&rxq->rx_comp_ring);
 			break;
-		usleep_range(100, 200);
+		}
+
+		DP_INFO(edev, "Not the transmitted packet\n");
+		qede_recycle_rx_bd_ring(rxq, edev, 1);
+		qed_chain_recycle_consumed(&rxq->rx_comp_ring);
 	}
 
-	if (!qede_has_rx_work(rxq)) {
+	if (i == QEDE_SELFTEST_POLL_COUNT) {
 		DP_NOTICE(edev, "Failed to receive the traffic\n");
 		return -1;
 	}
 
-	hw_comp_cons = le16_to_cpu(*rxq->hw_cons_ptr);
-	sw_comp_cons = qed_chain_get_cons_idx(&rxq->rx_comp_ring);
-
-	/* Memory barrier to prevent the CPU from doing speculative reads of CQE
-	 * / BD before reading hw_comp_cons. If the CQE is read before it is
-	 * written by FW, then FW writes CQE and SB, and then the CPU reads the
-	 * hw_comp_cons, it will use an old CQE.
-	 */
-	rmb();
-
-	/* Get the CQE from the completion ring */
-	cqe = (union eth_rx_cqe *)qed_chain_consume(&rxq->rx_comp_ring);
-
-	/* Get the data from the SW ring */
-	sw_rx_index = rxq->sw_rx_cons & NUM_RX_BDS_MAX;
-	sw_rx_data = &rxq->sw_rx_ring[sw_rx_index];
-	fp_cqe = &cqe->fast_path_regular;
-	len =  le16_to_cpu(fp_cqe->len_on_first_bd);
-	data_ptr = (u8 *)(page_address(sw_rx_data->data) +
-		     fp_cqe->placement_offset + sw_rx_data->page_offset);
-	for (i = ETH_HLEN; i < len; i++)
-		if (data_ptr[i] != (unsigned char)(i & 0xff)) {
-			DP_NOTICE(edev, "Loopback test failed\n");
-			qede_recycle_rx_bd_ring(rxq, edev, 1);
-			return -1;
-		}
-
-	qede_recycle_rx_bd_ring(rxq, edev, 1);
+	qede_update_rx_prod(edev, rxq);
 
-	return 0;
+	return rc;
 }
 
 static int qede_selftest_run_loopback(struct qede_dev *edev, u32 loopback_mode)
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index 343038c..da8ef69 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -943,8 +943,7 @@ static inline int qede_realloc_rx_buffer(struct qede_dev *edev,
 	return 0;
 }
 
-static inline void qede_update_rx_prod(struct qede_dev *edev,
-				       struct qede_rx_queue *rxq)
+void qede_update_rx_prod(struct qede_dev *edev, struct qede_rx_queue *rxq)
 {
 	u16 bd_prod = qed_chain_get_prod_idx(&rxq->rx_bd_ring);
 	u16 cqe_prod = qed_chain_get_prod_idx(&rxq->rx_comp_ring);
-- 
1.8.3.1

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

* [PATCH net 4/7] qed*: Reduce the memory footprint for Rx path
  2016-10-21  8:43 [PATCH net 0/7] qed*: fix series sudarsana.kalluru
                   ` (2 preceding siblings ...)
  2016-10-21  8:43 ` [PATCH net 3/7] qede: Loopback implementation should ignore the normal traffic sudarsana.kalluru
@ 2016-10-21  8:43 ` sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 5/7] qede: Reconfigure rss indirection direction table when rss count is updated sudarsana.kalluru
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: sudarsana.kalluru @ 2016-10-21  8:43 UTC (permalink / raw)
  To: davem
  Cc: netdev, Ariel.Elior, Yuval.Mintz, manish.chopra, Sudarsana Reddy Kalluru

From: Sudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com>

With the current default values for Rx path i.e., 8 queues of 8Kb entries
each with 4Kb size, interface will consume 256Mb for Rx. The default values
causing the driver probe to fail when the system memory is low. Based on
the perforamnce results, rx-ring count value of 1Kb gives the comparable
performance with Rx coalesce timeout of 12 seconds. Updating the default
values.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
---
 drivers/net/ethernet/qlogic/qed/qed_main.c | 1 +
 drivers/net/ethernet/qlogic/qede/qede.h    | 2 +-
 include/linux/qed/qed_if.h                 | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c
index 8dc3f46..c418360 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
@@ -878,6 +878,7 @@ static int qed_slowpath_start(struct qed_dev *cdev,
 		}
 	}
 
+	cdev->rx_coalesce_usecs = QED_DEFAULT_RX_USECS;
 	rc = qed_nic_setup(cdev);
 	if (rc)
 		goto err;
diff --git a/drivers/net/ethernet/qlogic/qede/qede.h b/drivers/net/ethernet/qlogic/qede/qede.h
index d6a4a9a5..974689a 100644
--- a/drivers/net/ethernet/qlogic/qede/qede.h
+++ b/drivers/net/ethernet/qlogic/qede/qede.h
@@ -354,7 +354,7 @@ void qede_recycle_rx_bd_ring(struct qede_rx_queue *rxq, struct qede_dev *edev,
 #define RX_RING_SIZE		((u16)BIT(RX_RING_SIZE_POW))
 #define NUM_RX_BDS_MAX		(RX_RING_SIZE - 1)
 #define NUM_RX_BDS_MIN		128
-#define NUM_RX_BDS_DEF		NUM_RX_BDS_MAX
+#define NUM_RX_BDS_DEF		((u16)BIT(10) - 1)
 
 #define TX_RING_SIZE_POW	13
 #define TX_RING_SIZE		((u16)BIT(TX_RING_SIZE_POW))
diff --git a/include/linux/qed/qed_if.h b/include/linux/qed/qed_if.h
index f9ae903..8978a60 100644
--- a/include/linux/qed/qed_if.h
+++ b/include/linux/qed/qed_if.h
@@ -146,6 +146,7 @@ enum qed_led_mode {
 #define DIRECT_REG_RD(reg_addr) readl((void __iomem *)(reg_addr))
 
 #define QED_COALESCE_MAX 0xFF
+#define QED_DEFAULT_RX_USECS 12
 
 /* forward */
 struct qed_dev;
-- 
1.8.3.1

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

* [PATCH net 5/7] qede: Reconfigure rss indirection direction table when rss count is updated
  2016-10-21  8:43 [PATCH net 0/7] qed*: fix series sudarsana.kalluru
                   ` (3 preceding siblings ...)
  2016-10-21  8:43 ` [PATCH net 4/7] qed*: Reduce the memory footprint for Rx path sudarsana.kalluru
@ 2016-10-21  8:43 ` sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 6/7] qed: Zero-out the buffer paased to dcbx_query() API sudarsana.kalluru
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: sudarsana.kalluru @ 2016-10-21  8:43 UTC (permalink / raw)
  To: davem
  Cc: netdev, Ariel.Elior, Yuval.Mintz, manish.chopra, Sudarsana Reddy Kalluru

From: Sudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com>

Rx indirection table entries are in the range [0, (rss_count - 1)]. If
user reduces the rss count, the table entries may not be in the ccorrect
range. Need to reconfigure the table with new rss_count as a basis.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
---
 drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
index 7da184c..d47bdaa 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
@@ -822,6 +822,13 @@ static int qede_set_channels(struct net_device *dev,
 	edev->req_queues = count;
 	edev->req_num_tx = channels->tx_count;
 	edev->req_num_rx = channels->rx_count;
+	/* Reset the indirection table if rx queue count is updated */
+	if ((edev->req_queues - edev->req_num_tx) != QEDE_RSS_COUNT(edev)) {
+		edev->rss_params_inited &= ~QEDE_RSS_INDIR_INITED;
+		memset(&edev->rss_params.rss_ind_table, 0,
+		       sizeof(edev->rss_params.rss_ind_table));
+	}
+
 	if (netif_running(dev))
 		qede_reload(edev, NULL, NULL);
 
-- 
1.8.3.1

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

* [PATCH net 6/7] qed: Zero-out the buffer paased to dcbx_query() API
  2016-10-21  8:43 [PATCH net 0/7] qed*: fix series sudarsana.kalluru
                   ` (4 preceding siblings ...)
  2016-10-21  8:43 ` [PATCH net 5/7] qede: Reconfigure rss indirection direction table when rss count is updated sudarsana.kalluru
@ 2016-10-21  8:43 ` sudarsana.kalluru
  2016-10-21  8:43 ` [PATCH net 7/7] qede: Fix incorrrect usage of APIs for un-mapping DMA memory sudarsana.kalluru
  2016-10-22 21:18 ` [PATCH net 0/7] qed*: fix series David Miller
  7 siblings, 0 replies; 9+ messages in thread
From: sudarsana.kalluru @ 2016-10-21  8:43 UTC (permalink / raw)
  To: davem
  Cc: netdev, Ariel.Elior, Yuval.Mintz, manish.chopra, Sudarsana Reddy Kalluru

From: Sudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com>

qed_dcbx_query_params() implementation populate the values to input
buffer based on the dcbx mode and, the current negotiated state/params,
the caller of this API need to memset the buffer to zero.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
---
 drivers/net/ethernet/qlogic/qed/qed_dcbx.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/qlogic/qed/qed_dcbx.c b/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
index 130da1c..a4789a9 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
@@ -1190,6 +1190,7 @@ int qed_dcbx_get_config_params(struct qed_hwfn *p_hwfn,
 	if (!dcbx_info)
 		return -ENOMEM;
 
+	memset(dcbx_info, 0, sizeof(*dcbx_info));
 	rc = qed_dcbx_query_params(p_hwfn, dcbx_info, QED_DCBX_OPERATIONAL_MIB);
 	if (rc) {
 		kfree(dcbx_info);
@@ -1225,6 +1226,7 @@ static struct qed_dcbx_get *qed_dcbnl_get_dcbx(struct qed_hwfn *hwfn,
 	if (!dcbx_info)
 		return NULL;
 
+	memset(dcbx_info, 0, sizeof(*dcbx_info));
 	if (qed_dcbx_query_params(hwfn, dcbx_info, type)) {
 		kfree(dcbx_info);
 		return NULL;
-- 
1.8.3.1

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

* [PATCH net 7/7] qede: Fix incorrrect usage of APIs for un-mapping DMA memory
  2016-10-21  8:43 [PATCH net 0/7] qed*: fix series sudarsana.kalluru
                   ` (5 preceding siblings ...)
  2016-10-21  8:43 ` [PATCH net 6/7] qed: Zero-out the buffer paased to dcbx_query() API sudarsana.kalluru
@ 2016-10-21  8:43 ` sudarsana.kalluru
  2016-10-22 21:18 ` [PATCH net 0/7] qed*: fix series David Miller
  7 siblings, 0 replies; 9+ messages in thread
From: sudarsana.kalluru @ 2016-10-21  8:43 UTC (permalink / raw)
  To: davem; +Cc: netdev, Ariel.Elior, Yuval.Mintz, manish.chopra, Manish Chopra

From: Manish Chopra <manish.chopra@qlogic.com>

Driver uses incorrect APIs to unmap DMA memory which were
mapped using dma_map_single(). This patch fixes it to use
appropriate APIs for un-mapping DMA memory.

Signed-off-by: Manish Chopra <manish.chopra@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
---
 drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 4 ++--
 drivers/net/ethernet/qlogic/qede/qede_main.c    | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
index d47bdaa..12251a1 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
@@ -1199,8 +1199,8 @@ static int qede_selftest_transmit_traffic(struct qede_dev *edev,
 	}
 
 	first_bd = (struct eth_tx_1st_bd *)qed_chain_consume(&txq->tx_pbl);
-	dma_unmap_page(&edev->pdev->dev, BD_UNMAP_ADDR(first_bd),
-		       BD_UNMAP_LEN(first_bd), DMA_TO_DEVICE);
+	dma_unmap_single(&edev->pdev->dev, BD_UNMAP_ADDR(first_bd),
+			 BD_UNMAP_LEN(first_bd), DMA_TO_DEVICE);
 	txq->sw_tx_cons++;
 	txq->sw_tx_ring[idx].skb = NULL;
 
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index da8ef69..444b271 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -313,8 +313,8 @@ static int qede_free_tx_pkt(struct qede_dev *edev,
 		split_bd_len = BD_UNMAP_LEN(split);
 		bds_consumed++;
 	}
-	dma_unmap_page(&edev->pdev->dev, BD_UNMAP_ADDR(first_bd),
-		       BD_UNMAP_LEN(first_bd) + split_bd_len, DMA_TO_DEVICE);
+	dma_unmap_single(&edev->pdev->dev, BD_UNMAP_ADDR(first_bd),
+			 BD_UNMAP_LEN(first_bd) + split_bd_len, DMA_TO_DEVICE);
 
 	/* Unmap the data of the skb frags */
 	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++, bds_consumed++) {
@@ -359,8 +359,8 @@ static void qede_free_failed_tx_pkt(struct qede_dev *edev,
 		nbd--;
 	}
 
-	dma_unmap_page(&edev->pdev->dev, BD_UNMAP_ADDR(first_bd),
-		       BD_UNMAP_LEN(first_bd) + split_bd_len, DMA_TO_DEVICE);
+	dma_unmap_single(&edev->pdev->dev, BD_UNMAP_ADDR(first_bd),
+			 BD_UNMAP_LEN(first_bd) + split_bd_len, DMA_TO_DEVICE);
 
 	/* Unmap the data of the skb frags */
 	for (i = 0; i < nbd; i++) {
-- 
1.8.3.1

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

* Re: [PATCH net 0/7] qed*: fix series.
  2016-10-21  8:43 [PATCH net 0/7] qed*: fix series sudarsana.kalluru
                   ` (6 preceding siblings ...)
  2016-10-21  8:43 ` [PATCH net 7/7] qede: Fix incorrrect usage of APIs for un-mapping DMA memory sudarsana.kalluru
@ 2016-10-22 21:18 ` David Miller
  7 siblings, 0 replies; 9+ messages in thread
From: David Miller @ 2016-10-22 21:18 UTC (permalink / raw)
  To: sudarsana.kalluru; +Cc: netdev, Ariel.Elior, Yuval.Mintz, manish.chopra

From: <sudarsana.kalluru@cavium.com>
Date: Fri, 21 Oct 2016 04:43:38 -0400

> The patch series contains several minor bug fixes for qed/qede modules.
> Please consider applying this to 'net' branch.

Series applied, thanks.

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

end of thread, other threads:[~2016-10-22 21:18 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-21  8:43 [PATCH net 0/7] qed*: fix series sudarsana.kalluru
2016-10-21  8:43 ` [PATCH net 1/7] qede: get_channels() need to populate max tx/rx coalesce values sudarsana.kalluru
2016-10-21  8:43 ` [PATCH net 2/7] qede: Do not allow RSS config for 100G devices sudarsana.kalluru
2016-10-21  8:43 ` [PATCH net 3/7] qede: Loopback implementation should ignore the normal traffic sudarsana.kalluru
2016-10-21  8:43 ` [PATCH net 4/7] qed*: Reduce the memory footprint for Rx path sudarsana.kalluru
2016-10-21  8:43 ` [PATCH net 5/7] qede: Reconfigure rss indirection direction table when rss count is updated sudarsana.kalluru
2016-10-21  8:43 ` [PATCH net 6/7] qed: Zero-out the buffer paased to dcbx_query() API sudarsana.kalluru
2016-10-21  8:43 ` [PATCH net 7/7] qede: Fix incorrrect usage of APIs for un-mapping DMA memory sudarsana.kalluru
2016-10-22 21:18 ` [PATCH net 0/7] qed*: fix series David Miller

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.