linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/5] driver/net: enic: enic driver updates
@ 2013-09-04  5:47 Govindarajulu Varadarajan
  2013-09-04  5:47 ` [PATCH net-next 1/5] driver/net: enic: Add multi tx support for enic Govindarajulu Varadarajan
                   ` (5 more replies)
  0 siblings, 6 replies; 10+ messages in thread
From: Govindarajulu Varadarajan @ 2013-09-04  5:47 UTC (permalink / raw)
  To: davem, netdev, linux-kernel
  Cc: benve, ssujith, nistrive, umalhi, Govindarajulu Varadarajan

This series includes support for multi-tx, rss_hash, RPS, RFS, DMA64, 
export symbols for cisco low latency driver and update the driver version and 
driver maintainers.

Govindarajulu Varadarajan (5):
  driver/net: enic: Add multi tx support for enic
  driver/net: enic: record q_number and rss_hash for skb
  driver/net: enic: Try DMA 64 first, then failover to DMA
  driver/net: enic: Exposing symbols for Cisco's low latency driver
  driver/net: enic: update enic maintainers and driver

 MAINTAINERS                                 |  3 +-
 drivers/net/ethernet/cisco/enic/enic.h      |  4 +--
 drivers/net/ethernet/cisco/enic/enic_main.c | 55 ++++++++++++++++++++---------
 drivers/net/ethernet/cisco/enic/vnic_dev.c  | 10 ++++++
 drivers/net/ethernet/cisco/enic/vnic_dev.h  |  1 +
 5 files changed, 54 insertions(+), 19 deletions(-)

-- 
1.8.4


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

* [PATCH net-next 1/5] driver/net: enic: Add multi tx support for enic
  2013-09-04  5:47 [PATCH net-next 0/5] driver/net: enic: enic driver updates Govindarajulu Varadarajan
@ 2013-09-04  5:47 ` Govindarajulu Varadarajan
  2013-09-04  5:47 ` [PATCH net-next 2/5] driver/net: enic: record q_number and rss_hash for skb Govindarajulu Varadarajan
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Govindarajulu Varadarajan @ 2013-09-04  5:47 UTC (permalink / raw)
  To: davem, netdev, linux-kernel
  Cc: benve, ssujith, nistrive, umalhi, Govindarajulu Varadarajan

The following patch adds multi tx support for enic.

Signed-off-by: Nishank Trivedi <nistrive@cisco.com>
Signed-off-by: Christian Benvenuti <benve@cisco.com>
Signed-off-by: Govindarajulu Varadarajan <govindarajulu90@gmail.com>
---
 drivers/net/ethernet/cisco/enic/enic.h      |  2 +-
 drivers/net/ethernet/cisco/enic/enic_main.c | 36 +++++++++++++++++++----------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/cisco/enic/enic.h b/drivers/net/ethernet/cisco/enic/enic.h
index be16731..34b637a 100644
--- a/drivers/net/ethernet/cisco/enic/enic.h
+++ b/drivers/net/ethernet/cisco/enic/enic.h
@@ -37,7 +37,7 @@
 
 #define ENIC_BARS_MAX		6
 
-#define ENIC_WQ_MAX		1
+#define ENIC_WQ_MAX		8
 #define ENIC_RQ_MAX		8
 #define ENIC_CQ_MAX		(ENIC_WQ_MAX + ENIC_RQ_MAX)
 #define ENIC_INTR_MAX		(ENIC_CQ_MAX + 2)
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index bcf15b1..1ab3f18 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -128,10 +128,10 @@ static int enic_wq_service(struct vnic_dev *vdev, struct cq_desc *cq_desc,
 		completed_index, enic_wq_free_buf,
 		opaque);
 
-	if (netif_queue_stopped(enic->netdev) &&
+	if (netif_tx_queue_stopped(netdev_get_tx_queue(enic->netdev, q_number)) &&
 	    vnic_wq_desc_avail(&enic->wq[q_number]) >=
 	    (MAX_SKB_FRAGS + ENIC_DESC_MAX_SPLITS))
-		netif_wake_queue(enic->netdev);
+		netif_wake_subqueue(enic->netdev, q_number);
 
 	spin_unlock(&enic->wq_lock[q_number]);
 
@@ -292,10 +292,15 @@ static irqreturn_t enic_isr_msix_rq(int irq, void *data)
 static irqreturn_t enic_isr_msix_wq(int irq, void *data)
 {
 	struct enic *enic = data;
-	unsigned int cq = enic_cq_wq(enic, 0);
-	unsigned int intr = enic_msix_wq_intr(enic, 0);
+	unsigned int cq;
+	unsigned int intr;
 	unsigned int wq_work_to_do = -1; /* no limit */
 	unsigned int wq_work_done;
+	unsigned int wq_irq;
+
+	wq_irq = (u32)irq - enic->msix_entry[enic_msix_wq_intr(enic, 0)].vector;
+	cq = enic_cq_wq(enic, wq_irq);
+	intr = enic_msix_wq_intr(enic, wq_irq);
 
 	wq_work_done = vnic_cq_service(&enic->cq[cq],
 		wq_work_to_do, enic_wq_service, NULL);
@@ -511,14 +516,18 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb,
 	struct net_device *netdev)
 {
 	struct enic *enic = netdev_priv(netdev);
-	struct vnic_wq *wq = &enic->wq[0];
+	struct vnic_wq *wq;
 	unsigned long flags;
+	unsigned int txq_map;
 
 	if (skb->len <= 0) {
 		dev_kfree_skb(skb);
 		return NETDEV_TX_OK;
 	}
 
+	txq_map = skb_get_queue_mapping(skb) % enic->wq_count;
+	wq = &enic->wq[txq_map];
+
 	/* Non-TSO sends must fit within ENIC_NON_TSO_MAX_DESC descs,
 	 * which is very likely.  In the off chance it's going to take
 	 * more than * ENIC_NON_TSO_MAX_DESC, linearize the skb.
@@ -531,23 +540,23 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb,
 		return NETDEV_TX_OK;
 	}
 
-	spin_lock_irqsave(&enic->wq_lock[0], flags);
+	spin_lock_irqsave(&enic->wq_lock[txq_map], flags);
 
 	if (vnic_wq_desc_avail(wq) <
 	    skb_shinfo(skb)->nr_frags + ENIC_DESC_MAX_SPLITS) {
-		netif_stop_queue(netdev);
+		netif_tx_stop_queue(netdev_get_tx_queue(netdev, txq_map));
 		/* This is a hard error, log it */
 		netdev_err(netdev, "BUG! Tx ring full when queue awake!\n");
-		spin_unlock_irqrestore(&enic->wq_lock[0], flags);
+		spin_unlock_irqrestore(&enic->wq_lock[txq_map], flags);
 		return NETDEV_TX_BUSY;
 	}
 
 	enic_queue_wq_skb(enic, wq, skb);
 
 	if (vnic_wq_desc_avail(wq) < MAX_SKB_FRAGS + ENIC_DESC_MAX_SPLITS)
-		netif_stop_queue(netdev);
+		netif_tx_stop_queue(netdev_get_tx_queue(netdev, txq_map));
 
-	spin_unlock_irqrestore(&enic->wq_lock[0], flags);
+	spin_unlock_irqrestore(&enic->wq_lock[txq_map], flags);
 
 	return NETDEV_TX_OK;
 }
@@ -1369,7 +1378,7 @@ static int enic_open(struct net_device *netdev)
 
 	enic_set_rx_mode(netdev);
 
-	netif_wake_queue(netdev);
+	netif_tx_wake_all_queues(netdev);
 
 	for (i = 0; i < enic->rq_count; i++)
 		napi_enable(&enic->napi[i]);
@@ -2032,7 +2041,8 @@ static int enic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	 * instance data is initialized to zero.
 	 */
 
-	netdev = alloc_etherdev(sizeof(struct enic));
+	netdev = alloc_etherdev_mqs(sizeof(struct enic),
+				    ENIC_RQ_MAX, ENIC_WQ_MAX);
 	if (!netdev)
 		return -ENOMEM;
 
@@ -2198,6 +2208,8 @@ static int enic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 		goto err_out_dev_close;
 	}
 
+	netif_set_real_num_tx_queues(netdev, enic->wq_count);
+
 	/* Setup notification timer, HW reset task, and wq locks
 	 */
 
-- 
1.8.4


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

* [PATCH net-next 2/5] driver/net: enic: record q_number and rss_hash for skb
  2013-09-04  5:47 [PATCH net-next 0/5] driver/net: enic: enic driver updates Govindarajulu Varadarajan
  2013-09-04  5:47 ` [PATCH net-next 1/5] driver/net: enic: Add multi tx support for enic Govindarajulu Varadarajan
@ 2013-09-04  5:47 ` Govindarajulu Varadarajan
  2013-09-04  5:47 ` [PATCH net-next 3/5] driver/net: enic: Try DMA 64 first, then failover to DMA Govindarajulu Varadarajan
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Govindarajulu Varadarajan @ 2013-09-04  5:47 UTC (permalink / raw)
  To: davem, netdev, linux-kernel
  Cc: benve, ssujith, nistrive, umalhi, Govindarajulu Varadarajan

The following patch sets the skb->rxhash and skb->q_number.
This is used by RPS and RFS. Kernel can make use of hw provided hash
instead of calculating the hash.

Signed-off-by: Govindarajulu Varadarajan <govindarajulu90@gmail.com>
Signed-off-by: Nishank Trivedi <nistrive@cisco.com>
Signed-off-by: Christian Benvenuti <benve@cisco.com>
---
 drivers/net/ethernet/cisco/enic/enic_main.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index 1ab3f18..93898ba 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -1034,6 +1034,14 @@ static void enic_rq_indicate_buf(struct vnic_rq *rq,
 
 		skb_put(skb, bytes_written);
 		skb->protocol = eth_type_trans(skb, netdev);
+		skb_record_rx_queue(skb, q_number);
+		if (netdev->features & NETIF_F_RXHASH) {
+			skb->rxhash = rss_hash;
+			if (rss_type & (NIC_CFG_RSS_HASH_TYPE_TCP_IPV6_EX |
+					NIC_CFG_RSS_HASH_TYPE_TCP_IPV6 |
+					NIC_CFG_RSS_HASH_TYPE_TCP_IPV4))
+				skb->l4_rxhash = true;
+		}
 
 		if ((netdev->features & NETIF_F_RXCSUM) && !csum_not_calc) {
 			skb->csum = htons(checksum);
@@ -2209,6 +2217,7 @@ static int enic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 
 	netif_set_real_num_tx_queues(netdev, enic->wq_count);
+	netif_set_real_num_rx_queues(netdev, enic->rq_count);
 
 	/* Setup notification timer, HW reset task, and wq locks
 	 */
@@ -2258,6 +2267,8 @@ static int enic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ENIC_SETTING(enic, TSO))
 		netdev->hw_features |= NETIF_F_TSO |
 			NETIF_F_TSO6 | NETIF_F_TSO_ECN;
+	if (ENIC_SETTING(enic, RSS))
+		netdev->hw_features |= NETIF_F_RXHASH;
 	if (ENIC_SETTING(enic, RXCSUM))
 		netdev->hw_features |= NETIF_F_RXCSUM;
 
-- 
1.8.4


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

* [PATCH net-next 3/5] driver/net: enic: Try DMA 64 first, then failover to DMA
  2013-09-04  5:47 [PATCH net-next 0/5] driver/net: enic: enic driver updates Govindarajulu Varadarajan
  2013-09-04  5:47 ` [PATCH net-next 1/5] driver/net: enic: Add multi tx support for enic Govindarajulu Varadarajan
  2013-09-04  5:47 ` [PATCH net-next 2/5] driver/net: enic: record q_number and rss_hash for skb Govindarajulu Varadarajan
@ 2013-09-04  5:47 ` Govindarajulu Varadarajan
  2013-09-04  6:01   ` Govindarajulu Varadarajan
  2013-09-04  5:47 ` [PATCH net-next 4/5] driver/net: enic: Exposing symbols for Cisco's low latency driver Govindarajulu Varadarajan
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 10+ messages in thread
From: Govindarajulu Varadarajan @ 2013-09-04  5:47 UTC (permalink / raw)
  To: davem, netdev, linux-kernel
  Cc: benve, ssujith, nistrive, umalhi, Govindarajulu Varadarajan

In servers with more than 1.1 TB of RAM, the existing 40/32 bit DMA
could cause failure as the DMA-able address could go outside the range
addressable using 40/32 bits.

The following patch first tried 64 bit DMA if possible, failover to 32
bit.

Signed-off-by: Sujith Sankar <ssujith@cisco.com>
Signed-off-by: Christian Benvenuti <benve@cisco.com>
Signed-off-by: Govindarajulu Varadarajan <govindarajulu90@gmail.com>
---
 drivers/net/ethernet/cisco/enic/enic_main.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index 93898ba..7b756cf9 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -2080,11 +2080,11 @@ static int enic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	pci_set_master(pdev);
 
 	/* Query PCI controller on system for DMA addressing
-	 * limitation for the device.  Try 40-bit first, and
+	 * limitation for the device.  Try 64-bit first, and
 	 * fail to 32-bit.
 	 */
 
-	err = pci_set_dma_mask(pdev, DMA_BIT_MASK(40));
+	err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
 	if (err) {
 		err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
 		if (err) {
@@ -2098,10 +2098,10 @@ static int enic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 			goto err_out_release_regions;
 		}
 	} else {
-		err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(40));
+		err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
 		if (err) {
 			dev_err(dev, "Unable to obtain %u-bit DMA "
-				"for consistent allocations, aborting\n", 40);
+				"for consistent allocations, aborting\n", 64);
 			goto err_out_release_regions;
 		}
 		using_dac = 1;
-- 
1.8.4


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

* [PATCH net-next 4/5] driver/net: enic: Exposing symbols for Cisco's low latency driver
  2013-09-04  5:47 [PATCH net-next 0/5] driver/net: enic: enic driver updates Govindarajulu Varadarajan
                   ` (2 preceding siblings ...)
  2013-09-04  5:47 ` [PATCH net-next 3/5] driver/net: enic: Try DMA 64 first, then failover to DMA Govindarajulu Varadarajan
@ 2013-09-04  5:47 ` Govindarajulu Varadarajan
  2013-09-04 14:52   ` Ben Hutchings
  2013-09-04  5:47 ` [PATCH net-next 5/5] driver/net: enic: update enic maintainers and driver Govindarajulu Varadarajan
  2013-09-05 16:40 ` [PATCH net-next 0/5] driver/net: enic: enic driver updates David Miller
  5 siblings, 1 reply; 10+ messages in thread
From: Govindarajulu Varadarajan @ 2013-09-04  5:47 UTC (permalink / raw)
  To: davem, netdev, linux-kernel
  Cc: benve, ssujith, nistrive, umalhi, Govindarajulu Varadarajan

This patch exposes symbols for usnic low latency driver that can be used to 
register and unregister vNics as well to traverse the resources on vNics.

Signed-off-by: Upinder Malhi <umalhi@cisco.com>
Signed-off-by: Nishank Trivedi <nistrive@cisco.com>
Signed-off-by: Christian Benvenuti <benve@cisco.com>
---
 drivers/net/ethernet/cisco/enic/vnic_dev.c | 10 ++++++++++
 drivers/net/ethernet/cisco/enic/vnic_dev.h |  1 +
 2 files changed, 11 insertions(+)

diff --git a/drivers/net/ethernet/cisco/enic/vnic_dev.c b/drivers/net/ethernet/cisco/enic/vnic_dev.c
index 97455c5..69dd925 100644
--- a/drivers/net/ethernet/cisco/enic/vnic_dev.c
+++ b/drivers/net/ethernet/cisco/enic/vnic_dev.c
@@ -175,6 +175,7 @@ unsigned int vnic_dev_get_res_count(struct vnic_dev *vdev,
 {
 	return vdev->res[type].count;
 }
+EXPORT_SYMBOL(vnic_dev_get_res_count);
 
 void __iomem *vnic_dev_get_res(struct vnic_dev *vdev, enum vnic_res_type type,
 	unsigned int index)
@@ -193,6 +194,7 @@ void __iomem *vnic_dev_get_res(struct vnic_dev *vdev, enum vnic_res_type type,
 		return (char __iomem *)vdev->res[type].vaddr;
 	}
 }
+EXPORT_SYMBOL(vnic_dev_get_res);
 
 static unsigned int vnic_dev_desc_ring_size(struct vnic_dev_ring *ring,
 	unsigned int desc_count, unsigned int desc_size)
@@ -942,6 +944,7 @@ void vnic_dev_unregister(struct vnic_dev *vdev)
 		kfree(vdev);
 	}
 }
+EXPORT_SYMBOL(vnic_dev_unregister);
 
 struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev,
 	void *priv, struct pci_dev *pdev, struct vnic_dev_bar *bar,
@@ -969,6 +972,13 @@ err_out:
 	vnic_dev_unregister(vdev);
 	return NULL;
 }
+EXPORT_SYMBOL(vnic_dev_register);
+
+struct pci_dev *vnic_dev_get_pdev(struct vnic_dev *vdev)
+{
+	return vdev->pdev;
+}
+EXPORT_SYMBOL(vnic_dev_get_pdev);
 
 int vnic_dev_init_prov2(struct vnic_dev *vdev, u8 *buf, u32 len)
 {
diff --git a/drivers/net/ethernet/cisco/enic/vnic_dev.h b/drivers/net/ethernet/cisco/enic/vnic_dev.h
index f3d9b79..e670029 100644
--- a/drivers/net/ethernet/cisco/enic/vnic_dev.h
+++ b/drivers/net/ethernet/cisco/enic/vnic_dev.h
@@ -127,6 +127,7 @@ int vnic_dev_set_ig_vlan_rewrite_mode(struct vnic_dev *vdev,
 struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev,
 	void *priv, struct pci_dev *pdev, struct vnic_dev_bar *bar,
 	unsigned int num_bars);
+struct pci_dev *vnic_dev_get_pdev(struct vnic_dev *vdev);
 int vnic_dev_init_prov2(struct vnic_dev *vdev, u8 *buf, u32 len);
 int vnic_dev_enable2(struct vnic_dev *vdev, int active);
 int vnic_dev_enable2_done(struct vnic_dev *vdev, int *status);
-- 
1.8.4


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

* [PATCH net-next 5/5] driver/net: enic: update enic maintainers and driver
  2013-09-04  5:47 [PATCH net-next 0/5] driver/net: enic: enic driver updates Govindarajulu Varadarajan
                   ` (3 preceding siblings ...)
  2013-09-04  5:47 ` [PATCH net-next 4/5] driver/net: enic: Exposing symbols for Cisco's low latency driver Govindarajulu Varadarajan
@ 2013-09-04  5:47 ` Govindarajulu Varadarajan
  2013-09-05 16:40 ` [PATCH net-next 0/5] driver/net: enic: enic driver updates David Miller
  5 siblings, 0 replies; 10+ messages in thread
From: Govindarajulu Varadarajan @ 2013-09-04  5:47 UTC (permalink / raw)
  To: davem, netdev, linux-kernel
  Cc: benve, ssujith, nistrive, umalhi, Govindarajulu Varadarajan

Signed-off-by: Govindarajulu Varadarajan <govindarajulu90@gmail.com>
Signed-off-by: Sujith Sankar <ssujith@cisco.com>
Signed-off-by: Nishank Trivedi <nistrive@cisco.com>
Signed-off-by: Christian Benvenuti <benve@cisco.com>
---
 MAINTAINERS                            | 3 ++-
 drivers/net/ethernet/cisco/enic/enic.h | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 705bb96..ecb83cd 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2076,7 +2076,8 @@ F:	drivers/usb/chipidea/
 
 CISCO VIC ETHERNET NIC DRIVER
 M:	Christian Benvenuti <benve@cisco.com>
-M:	Roopa Prabhu <roprabhu@cisco.com>
+M:	Sujith Sankar <ssujith@cisco.com>
+M:	Govindarajulu Varadarajan <govindarajulu90@gmail.com>
 M:	Neel Patel <neepatel@cisco.com>
 M:	Nishank Trivedi <nistrive@cisco.com>
 S:	Supported
diff --git a/drivers/net/ethernet/cisco/enic/enic.h b/drivers/net/ethernet/cisco/enic/enic.h
index 34b637a..e9f7c65 100644
--- a/drivers/net/ethernet/cisco/enic/enic.h
+++ b/drivers/net/ethernet/cisco/enic/enic.h
@@ -32,7 +32,7 @@
 
 #define DRV_NAME		"enic"
 #define DRV_DESCRIPTION		"Cisco VIC Ethernet NIC Driver"
-#define DRV_VERSION		"2.1.1.43"
+#define DRV_VERSION		"2.1.1.50"
 #define DRV_COPYRIGHT		"Copyright 2008-2013 Cisco Systems, Inc"
 
 #define ENIC_BARS_MAX		6
-- 
1.8.4


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

* Re: [PATCH net-next 3/5] driver/net: enic: Try DMA 64 first, then failover to DMA
  2013-09-04  5:47 ` [PATCH net-next 3/5] driver/net: enic: Try DMA 64 first, then failover to DMA Govindarajulu Varadarajan
@ 2013-09-04  6:01   ` Govindarajulu Varadarajan
  0 siblings, 0 replies; 10+ messages in thread
From: Govindarajulu Varadarajan @ 2013-09-04  6:01 UTC (permalink / raw)
  To: Govindarajulu Varadarajan
  Cc: davem, netdev, linux-kernel, benve, ssujith, nistrive, umalhi

Hi Dave

The subject for this should be "driver/net: enic: Try DMA 64 first, then
failover to DMA 32"

The "32" got truncated, please add this while committing. Let me know if
you want me to send another patch.

thanks
//govind

On Wed, 4 Sep 2013, Govindarajulu Varadarajan wrote:

> In servers with more than 1.1 TB of RAM, the existing 40/32 bit DMA
> could cause failure as the DMA-able address could go outside the range
> addressable using 40/32 bits.
>
> The following patch first tried 64 bit DMA if possible, failover to 32
> bit.
>
> Signed-off-by: Sujith Sankar <ssujith@cisco.com>
> Signed-off-by: Christian Benvenuti <benve@cisco.com>
> Signed-off-by: Govindarajulu Varadarajan <govindarajulu90@gmail.com>

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

* Re: [PATCH net-next 4/5] driver/net: enic: Exposing symbols for Cisco's low latency driver
  2013-09-04  5:47 ` [PATCH net-next 4/5] driver/net: enic: Exposing symbols for Cisco's low latency driver Govindarajulu Varadarajan
@ 2013-09-04 14:52   ` Ben Hutchings
  2013-09-04 16:32     ` Christian Benvenuti (benve)
  0 siblings, 1 reply; 10+ messages in thread
From: Ben Hutchings @ 2013-09-04 14:52 UTC (permalink / raw)
  To: Govindarajulu Varadarajan
  Cc: davem, netdev, linux-kernel, benve, ssujith, nistrive, umalhi

On Wed, 2013-09-04 at 11:17 +0530, Govindarajulu Varadarajan wrote:
> This patch exposes symbols for usnic low latency driver that can be used to 
> register and unregister vNics as well to traverse the resources on vNics.
> 
> Signed-off-by: Upinder Malhi <umalhi@cisco.com>
> Signed-off-by: Nishank Trivedi <nistrive@cisco.com>
> Signed-off-by: Christian Benvenuti <benve@cisco.com>

Will usnic, or any other user of these symbols, be submitted for
inclusion in-tree as well?  It is generally expected that exported
functions do have an in-tree user.

Also, header files under drivers/ generally won't be included in
distribution -devel packages, so to support an out-of-tree module the
function prototypes would need to be included in a header under include/
(or else you have to repeat them and hope the types never change).

Ben.

> ---
>  drivers/net/ethernet/cisco/enic/vnic_dev.c | 10 ++++++++++
>  drivers/net/ethernet/cisco/enic/vnic_dev.h |  1 +
>  2 files changed, 11 insertions(+)
> 
> diff --git a/drivers/net/ethernet/cisco/enic/vnic_dev.c b/drivers/net/ethernet/cisco/enic/vnic_dev.c
> index 97455c5..69dd925 100644
> --- a/drivers/net/ethernet/cisco/enic/vnic_dev.c
> +++ b/drivers/net/ethernet/cisco/enic/vnic_dev.c
> @@ -175,6 +175,7 @@ unsigned int vnic_dev_get_res_count(struct vnic_dev *vdev,
>  {
>  	return vdev->res[type].count;
>  }
> +EXPORT_SYMBOL(vnic_dev_get_res_count);
>  
>  void __iomem *vnic_dev_get_res(struct vnic_dev *vdev, enum vnic_res_type type,
>  	unsigned int index)
> @@ -193,6 +194,7 @@ void __iomem *vnic_dev_get_res(struct vnic_dev *vdev, enum vnic_res_type type,
>  		return (char __iomem *)vdev->res[type].vaddr;
>  	}
>  }
> +EXPORT_SYMBOL(vnic_dev_get_res);
>  
>  static unsigned int vnic_dev_desc_ring_size(struct vnic_dev_ring *ring,
>  	unsigned int desc_count, unsigned int desc_size)
> @@ -942,6 +944,7 @@ void vnic_dev_unregister(struct vnic_dev *vdev)
>  		kfree(vdev);
>  	}
>  }
> +EXPORT_SYMBOL(vnic_dev_unregister);
>  
>  struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev,
>  	void *priv, struct pci_dev *pdev, struct vnic_dev_bar *bar,
> @@ -969,6 +972,13 @@ err_out:
>  	vnic_dev_unregister(vdev);
>  	return NULL;
>  }
> +EXPORT_SYMBOL(vnic_dev_register);
> +
> +struct pci_dev *vnic_dev_get_pdev(struct vnic_dev *vdev)
> +{
> +	return vdev->pdev;
> +}
> +EXPORT_SYMBOL(vnic_dev_get_pdev);
>  
>  int vnic_dev_init_prov2(struct vnic_dev *vdev, u8 *buf, u32 len)
>  {
> diff --git a/drivers/net/ethernet/cisco/enic/vnic_dev.h b/drivers/net/ethernet/cisco/enic/vnic_dev.h
> index f3d9b79..e670029 100644
> --- a/drivers/net/ethernet/cisco/enic/vnic_dev.h
> +++ b/drivers/net/ethernet/cisco/enic/vnic_dev.h
> @@ -127,6 +127,7 @@ int vnic_dev_set_ig_vlan_rewrite_mode(struct vnic_dev *vdev,
>  struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev,
>  	void *priv, struct pci_dev *pdev, struct vnic_dev_bar *bar,
>  	unsigned int num_bars);
> +struct pci_dev *vnic_dev_get_pdev(struct vnic_dev *vdev);
>  int vnic_dev_init_prov2(struct vnic_dev *vdev, u8 *buf, u32 len);
>  int vnic_dev_enable2(struct vnic_dev *vdev, int active);
>  int vnic_dev_enable2_done(struct vnic_dev *vdev, int *status);

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


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

* RE: [PATCH net-next 4/5] driver/net: enic: Exposing symbols for Cisco's low latency driver
  2013-09-04 14:52   ` Ben Hutchings
@ 2013-09-04 16:32     ` Christian Benvenuti (benve)
  0 siblings, 0 replies; 10+ messages in thread
From: Christian Benvenuti (benve) @ 2013-09-04 16:32 UTC (permalink / raw)
  To: Ben Hutchings, Govindarajulu Varadarajan
  Cc: davem, netdev, linux-kernel, Sujith Sankar (ssujith),
	Nishank Trivedi (nistrive), Upinder Malhi (umalhi)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 4520 bytes --]

Hi Ben,

> -----Original Message-----
> From: netdev-owner@vger.kernel.org [mailto:netdev-
> owner@vger.kernel.org] On Behalf Of Ben Hutchings
> Sent: Wednesday, September 04, 2013 7:53 AM
> To: Govindarajulu Varadarajan
> Cc: davem@davemloft.net; netdev@vger.kernel.org; linux-
> kernel@vger.kernel.org; Christian Benvenuti (benve); Sujith Sankar
> (ssujith); Nishank Trivedi (nistrive); Upinder Malhi (umalhi)
> Subject: Re: [PATCH net-next 4/5] driver/net: enic: Exposing symbols for
> Cisco's low latency driver
> 
> On Wed, 2013-09-04 at 11:17 +0530, Govindarajulu Varadarajan wrote:
> > This patch exposes symbols for usnic low latency driver that can be
> > used to register and unregister vNics as well to traverse the resources on
> vNics.
> >
> > Signed-off-by: Upinder Malhi <umalhi@cisco.com>
> > Signed-off-by: Nishank Trivedi <nistrive@cisco.com>
> > Signed-off-by: Christian Benvenuti <benve@cisco.com>
> 
> Will usnic, or any other user of these symbols, be submitted for inclusion in-
> tree as well?  It is generally expected that exported functions do have an in-
> tree user.

The usnic driver has been posted yesterday on the rdma list.
(http://www.spinics.net/lists/linux-rdma/msg16999.html)

/Chris

> Also, header files under drivers/ generally won't be included in distribution
> -devel packages, so to support an out-of-tree module the function
> prototypes would need to be included in a header under include/ (or else
> you have to repeat them and hope the types never change).
> 
> Ben.
> 
> > ---
> >  drivers/net/ethernet/cisco/enic/vnic_dev.c | 10 ++++++++++
> > drivers/net/ethernet/cisco/enic/vnic_dev.h |  1 +
> >  2 files changed, 11 insertions(+)
> >
> > diff --git a/drivers/net/ethernet/cisco/enic/vnic_dev.c
> > b/drivers/net/ethernet/cisco/enic/vnic_dev.c
> > index 97455c5..69dd925 100644
> > --- a/drivers/net/ethernet/cisco/enic/vnic_dev.c
> > +++ b/drivers/net/ethernet/cisco/enic/vnic_dev.c
> > @@ -175,6 +175,7 @@ unsigned int vnic_dev_get_res_count(struct
> > vnic_dev *vdev,  {
> >  	return vdev->res[type].count;
> >  }
> > +EXPORT_SYMBOL(vnic_dev_get_res_count);
> >
> >  void __iomem *vnic_dev_get_res(struct vnic_dev *vdev, enum
> vnic_res_type type,
> >  	unsigned int index)
> > @@ -193,6 +194,7 @@ void __iomem *vnic_dev_get_res(struct vnic_dev
> *vdev, enum vnic_res_type type,
> >  		return (char __iomem *)vdev->res[type].vaddr;
> >  	}
> >  }
> > +EXPORT_SYMBOL(vnic_dev_get_res);
> >
> >  static unsigned int vnic_dev_desc_ring_size(struct vnic_dev_ring *ring,
> >  	unsigned int desc_count, unsigned int desc_size) @@ -942,6 +944,7
> @@
> > void vnic_dev_unregister(struct vnic_dev *vdev)
> >  		kfree(vdev);
> >  	}
> >  }
> > +EXPORT_SYMBOL(vnic_dev_unregister);
> >
> >  struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev,
> >  	void *priv, struct pci_dev *pdev, struct vnic_dev_bar *bar, @@
> > -969,6 +972,13 @@ err_out:
> >  	vnic_dev_unregister(vdev);
> >  	return NULL;
> >  }
> > +EXPORT_SYMBOL(vnic_dev_register);
> > +
> > +struct pci_dev *vnic_dev_get_pdev(struct vnic_dev *vdev) {
> > +	return vdev->pdev;
> > +}
> > +EXPORT_SYMBOL(vnic_dev_get_pdev);
> >
> >  int vnic_dev_init_prov2(struct vnic_dev *vdev, u8 *buf, u32 len)  {
> > diff --git a/drivers/net/ethernet/cisco/enic/vnic_dev.h
> > b/drivers/net/ethernet/cisco/enic/vnic_dev.h
> > index f3d9b79..e670029 100644
> > --- a/drivers/net/ethernet/cisco/enic/vnic_dev.h
> > +++ b/drivers/net/ethernet/cisco/enic/vnic_dev.h
> > @@ -127,6 +127,7 @@ int vnic_dev_set_ig_vlan_rewrite_mode(struct
> > vnic_dev *vdev,  struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev,
> >  	void *priv, struct pci_dev *pdev, struct vnic_dev_bar *bar,
> >  	unsigned int num_bars);
> > +struct pci_dev *vnic_dev_get_pdev(struct vnic_dev *vdev);
> >  int vnic_dev_init_prov2(struct vnic_dev *vdev, u8 *buf, u32 len);
> > int vnic_dev_enable2(struct vnic_dev *vdev, int active);  int
> > vnic_dev_enable2_done(struct vnic_dev *vdev, int *status);
> 
> --
> Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer;
> that's the marketing department's job.
> They asked us to note that Solarflare product names are trademarked.
> 
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in the
> body of a message to majordomo@vger.kernel.org More majordomo info at
> http://vger.kernel.org/majordomo-info.html
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

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

* Re: [PATCH net-next 0/5] driver/net: enic: enic driver updates
  2013-09-04  5:47 [PATCH net-next 0/5] driver/net: enic: enic driver updates Govindarajulu Varadarajan
                   ` (4 preceding siblings ...)
  2013-09-04  5:47 ` [PATCH net-next 5/5] driver/net: enic: update enic maintainers and driver Govindarajulu Varadarajan
@ 2013-09-05 16:40 ` David Miller
  5 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2013-09-05 16:40 UTC (permalink / raw)
  To: govindarajulu90; +Cc: netdev, linux-kernel, benve, ssujith, nistrive, umalhi

From: Govindarajulu Varadarajan <govindarajulu90@gmail.com>
Date: Wed,  4 Sep 2013 11:17:13 +0530

> This series includes support for multi-tx, rss_hash, RPS, RFS, DMA64, 
> export symbols for cisco low latency driver and update the driver version and 
> driver maintainers.

Series applied, thanks.

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

end of thread, other threads:[~2013-09-05 16:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-04  5:47 [PATCH net-next 0/5] driver/net: enic: enic driver updates Govindarajulu Varadarajan
2013-09-04  5:47 ` [PATCH net-next 1/5] driver/net: enic: Add multi tx support for enic Govindarajulu Varadarajan
2013-09-04  5:47 ` [PATCH net-next 2/5] driver/net: enic: record q_number and rss_hash for skb Govindarajulu Varadarajan
2013-09-04  5:47 ` [PATCH net-next 3/5] driver/net: enic: Try DMA 64 first, then failover to DMA Govindarajulu Varadarajan
2013-09-04  6:01   ` Govindarajulu Varadarajan
2013-09-04  5:47 ` [PATCH net-next 4/5] driver/net: enic: Exposing symbols for Cisco's low latency driver Govindarajulu Varadarajan
2013-09-04 14:52   ` Ben Hutchings
2013-09-04 16:32     ` Christian Benvenuti (benve)
2013-09-04  5:47 ` [PATCH net-next 5/5] driver/net: enic: update enic maintainers and driver Govindarajulu Varadarajan
2013-09-05 16:40 ` [PATCH net-next 0/5] driver/net: enic: enic driver updates David Miller

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