* [net-next-2.6 PATCH 1/4] enic: Pass 802.1p bits for packets tagged with vlan zero
2011-06-09 20:36 [net-next-2.6 PATCH 0/4] enic: updates to version 2.1.1.20 Vasanthy Kolluri
@ 2011-06-09 20:36 ` Vasanthy Kolluri
2011-06-09 20:36 ` [net-next-2.6 PATCH 2/4] enic: Log device configuration in detail during driver load Vasanthy Kolluri
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Vasanthy Kolluri @ 2011-06-09 20:36 UTC (permalink / raw)
To: netdev, davem
From: Vasanthy Kolluri <vkolluri@cisco.com>
enic driver currently passes 802.1p bits to the upper layers for packets
tagged with non-zero vlan ids only. This patch extends such behaviour to
zero vlan tagged packets also.
The patch is dependant on the following kernel patches:
1) vlan_dev: VLAN 0 should be treated as "no vlan tag" (802.1p packet)
- net-next-2.6 git commit: ad1afb00393915a51c21b1ae8704562bf036855f
- Available 2.6.36 and later
2) vlan: Centralize handling of hardware acceleration.
- net-next-2.6 git commit: 3701e51382a026cba10c60b03efabe534fba4ca4
- Available 2.6.37 and later
Signed-off-by: Christian Benvenuti <benve@cisco.com>
Signed-off-by: Danny Guo <dannguo@cisco.com>
Signed-off-by: Vasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: Roopa Prabhu <roprabhu@cisco.com>
Signed-off-by: David Wang <dwang2@cisco.com>
---
drivers/net/enic/enic_main.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
index 9600f43..e990988 100644
--- a/drivers/net/enic/enic_main.c
+++ b/drivers/net/enic/enic_main.c
@@ -1266,8 +1266,7 @@ static void enic_rq_indicate_buf(struct vnic_rq *rq,
skb->dev = netdev;
- if (enic->vlan_group && vlan_stripped &&
- (vlan_tci & CQ_ENET_RQ_DESC_VLAN_TCI_VLAN_MASK)) {
+ if (vlan_stripped) {
if (netdev->features & NETIF_F_GRO)
vlan_gro_receive(&enic->napi[q_number],
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [net-next-2.6 PATCH 2/4] enic: Log device configuration in detail during driver load
2011-06-09 20:36 [net-next-2.6 PATCH 0/4] enic: updates to version 2.1.1.20 Vasanthy Kolluri
2011-06-09 20:36 ` [net-next-2.6 PATCH 1/4] enic: Pass 802.1p bits for packets tagged with vlan zero Vasanthy Kolluri
@ 2011-06-09 20:36 ` Vasanthy Kolluri
2011-06-09 20:37 ` [net-next-2.6 PATCH 3/4] enic: Get/Set interrupt resource index for transmit and receive queues Vasanthy Kolluri
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Vasanthy Kolluri @ 2011-06-09 20:36 UTC (permalink / raw)
To: netdev, davem
From: Vasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: Christian Benvenuti <benve@cisco.com>
Signed-off-by: Danny Guo <dannguo@cisco.com>
Signed-off-by: Vasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: Roopa Prabhu <roprabhu@cisco.com>
Signed-off-by: David Wang <dwang2@cisco.com>
---
drivers/net/enic/enic.h | 2 +-
drivers/net/enic/enic_res.c | 23 ++++++++++++++++++-----
drivers/net/enic/vnic_enet.h | 7 +++++++
3 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h
index e0d2ad1..23e2103 100644
--- a/drivers/net/enic/enic.h
+++ b/drivers/net/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.16"
+#define DRV_VERSION "2.1.1.17"
#define DRV_COPYRIGHT "Copyright 2008-2011 Cisco Systems, Inc"
#define ENIC_BARS_MAX 6
diff --git a/drivers/net/enic/enic_res.c b/drivers/net/enic/enic_res.c
index 6e5c635..34f4207 100644
--- a/drivers/net/enic/enic_res.c
+++ b/drivers/net/enic/enic_res.c
@@ -97,11 +97,24 @@ int enic_get_vnic_config(struct enic *enic)
dev_info(enic_get_dev(enic),
"vNIC MAC addr %pM wq/rq %d/%d mtu %d\n",
enic->mac_addr, c->wq_desc_count, c->rq_desc_count, c->mtu);
- dev_info(enic_get_dev(enic), "vNIC csum tx/rx %d/%d "
- "tso %d intr timer %d usec rss %d\n",
- ENIC_SETTING(enic, TXCSUM), ENIC_SETTING(enic, RXCSUM),
- ENIC_SETTING(enic, TSO),
- c->intr_timer_usec, ENIC_SETTING(enic, RSS));
+
+ dev_info(enic_get_dev(enic), "vNIC csum tx/rx %s/%s "
+ "tso/lro %s/%s rss %s intr mode %s type %s timer %d usec "
+ "loopback tag 0x%04x\n",
+ ENIC_SETTING(enic, TXCSUM) ? "yes" : "no",
+ ENIC_SETTING(enic, RXCSUM) ? "yes" : "no",
+ ENIC_SETTING(enic, TSO) ? "yes" : "no",
+ ENIC_SETTING(enic, LRO) ? "yes" : "no",
+ ENIC_SETTING(enic, RSS) ? "yes" : "no",
+ c->intr_mode == VENET_INTR_MODE_INTX ? "INTx" :
+ c->intr_mode == VENET_INTR_MODE_MSI ? "MSI" :
+ c->intr_mode == VENET_INTR_MODE_ANY ? "any" :
+ "unknown",
+ c->intr_timer_type == VENET_INTR_TYPE_MIN ? "min" :
+ c->intr_timer_type == VENET_INTR_TYPE_IDLE ? "idle" :
+ "unknown",
+ c->intr_timer_usec,
+ c->loop_tag);
return 0;
}
diff --git a/drivers/net/enic/vnic_enet.h b/drivers/net/enic/vnic_enet.h
index e8740e3..061ad87 100644
--- a/drivers/net/enic/vnic_enet.h
+++ b/drivers/net/enic/vnic_enet.h
@@ -51,4 +51,11 @@ struct vnic_enet_config {
#define VENETF_RSSHASH_TCPIPV6_EX 0x400 /* Hash on TCP + IPv6 ext. fields */
#define VENETF_LOOP 0x800 /* Loopback enabled */
+#define VENET_INTR_TYPE_MIN 0 /* Timer specs min interrupt spacing */
+#define VENET_INTR_TYPE_IDLE 1 /* Timer specs idle time before irq */
+
+#define VENET_INTR_MODE_ANY 0 /* Try MSI-X, then MSI, then INTx */
+#define VENET_INTR_MODE_MSI 1 /* Try MSI then INTx */
+#define VENET_INTR_MODE_INTX 2 /* Try INTx only */
+
#endif /* _VNIC_ENIC_H_ */
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [net-next-2.6 PATCH 3/4] enic: Get/Set interrupt resource index for transmit and receive queues
2011-06-09 20:36 [net-next-2.6 PATCH 0/4] enic: updates to version 2.1.1.20 Vasanthy Kolluri
2011-06-09 20:36 ` [net-next-2.6 PATCH 1/4] enic: Pass 802.1p bits for packets tagged with vlan zero Vasanthy Kolluri
2011-06-09 20:36 ` [net-next-2.6 PATCH 2/4] enic: Log device configuration in detail during driver load Vasanthy Kolluri
@ 2011-06-09 20:37 ` Vasanthy Kolluri
2011-06-09 20:37 ` [net-next-2.6 PATCH 4/4] enic: Bug Fix: Fix hardware transmit queue indexing in enic_poll_controller Vasanthy Kolluri
2011-06-09 21:58 ` [net-next-2.6 PATCH 0/4] enic: updates to version 2.1.1.20 David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Vasanthy Kolluri @ 2011-06-09 20:37 UTC (permalink / raw)
To: netdev, davem
From: Vasanthy Kolluri <vkolluri@cisco.com>
Instead of deriving the index of a transmit/receive interrupt resource
from the transmit/receive queue index, always save and retrieve it
using an additional variable.
Signed-off-by: Christian Benvenuti <benve@cisco.com>
Signed-off-by: Danny Guo <dannguo@cisco.com>
Signed-off-by: Vasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: Roopa Prabhu <roprabhu@cisco.com>
Signed-off-by: David Wang <dwang2@cisco.com>
---
drivers/net/enic/enic.h | 2 +-
drivers/net/enic/enic_main.c | 4 ++--
drivers/net/enic/vnic_cq.c | 2 ++
drivers/net/enic/vnic_cq.h | 1 +
4 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h
index 23e2103..2dcf310 100644
--- a/drivers/net/enic/enic.h
+++ b/drivers/net/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.17"
+#define DRV_VERSION "2.1.1.19"
#define DRV_COPYRIGHT "Copyright 2008-2011 Cisco Systems, Inc"
#define ENIC_BARS_MAX 6
diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
index e990988..eee2526 100644
--- a/drivers/net/enic/enic_main.c
+++ b/drivers/net/enic/enic_main.c
@@ -153,12 +153,12 @@ static inline unsigned int enic_legacy_notify_intr(void)
static inline unsigned int enic_msix_rq_intr(struct enic *enic, unsigned int rq)
{
- return rq;
+ return enic->cq[enic_cq_rq(enic, rq)].interrupt_offset;
}
static inline unsigned int enic_msix_wq_intr(struct enic *enic, unsigned int wq)
{
- return enic->rq_count + wq;
+ return enic->cq[enic_cq_wq(enic, wq)].interrupt_offset;
}
static inline unsigned int enic_msix_err_intr(struct enic *enic)
diff --git a/drivers/net/enic/vnic_cq.c b/drivers/net/enic/vnic_cq.c
index b86d6ef..0daa1c7 100644
--- a/drivers/net/enic/vnic_cq.c
+++ b/drivers/net/enic/vnic_cq.c
@@ -74,6 +74,8 @@ void vnic_cq_init(struct vnic_cq *cq, unsigned int flow_control_enable,
iowrite32(cq_message_enable, &cq->ctrl->cq_message_enable);
iowrite32(interrupt_offset, &cq->ctrl->interrupt_offset);
writeq(cq_message_addr, &cq->ctrl->cq_message_addr);
+
+ cq->interrupt_offset = interrupt_offset;
}
void vnic_cq_clean(struct vnic_cq *cq)
diff --git a/drivers/net/enic/vnic_cq.h b/drivers/net/enic/vnic_cq.h
index 552d3da..579315c 100644
--- a/drivers/net/enic/vnic_cq.h
+++ b/drivers/net/enic/vnic_cq.h
@@ -57,6 +57,7 @@ struct vnic_cq {
struct vnic_dev_ring ring;
unsigned int to_clean;
unsigned int last_color;
+ unsigned int interrupt_offset;
};
static inline unsigned int vnic_cq_service(struct vnic_cq *cq,
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [net-next-2.6 PATCH 4/4] enic: Bug Fix: Fix hardware transmit queue indexing in enic_poll_controller
2011-06-09 20:36 [net-next-2.6 PATCH 0/4] enic: updates to version 2.1.1.20 Vasanthy Kolluri
` (2 preceding siblings ...)
2011-06-09 20:37 ` [net-next-2.6 PATCH 3/4] enic: Get/Set interrupt resource index for transmit and receive queues Vasanthy Kolluri
@ 2011-06-09 20:37 ` Vasanthy Kolluri
2011-06-09 21:58 ` [net-next-2.6 PATCH 0/4] enic: updates to version 2.1.1.20 David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Vasanthy Kolluri @ 2011-06-09 20:37 UTC (permalink / raw)
To: netdev, davem
From: Vasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: Christian Benvenuti <benve@cisco.com>
Signed-off-by: Danny Guo <dannguo@cisco.com>
Signed-off-by: Vasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: Roopa Prabhu <roprabhu@cisco.com>
Signed-off-by: David Wang <dwang2@cisco.com>
---
drivers/net/enic/enic.h | 2 +-
drivers/net/enic/enic_main.c | 8 ++++++--
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h
index 2dcf310..f747bce 100644
--- a/drivers/net/enic/enic.h
+++ b/drivers/net/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.19"
+#define DRV_VERSION "2.1.1.20"
#define DRV_COPYRIGHT "Copyright 2008-2011 Cisco Systems, Inc"
#define ENIC_BARS_MAX 6
diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
index eee2526..4c5546d 100644
--- a/drivers/net/enic/enic_main.c
+++ b/drivers/net/enic/enic_main.c
@@ -1777,8 +1777,12 @@ static void enic_poll_controller(struct net_device *netdev)
enic_isr_msix_rq(enic->msix_entry[intr].vector,
&enic->napi[i]);
}
- intr = enic_msix_wq_intr(enic, i);
- enic_isr_msix_wq(enic->msix_entry[intr].vector, enic);
+
+ for (i = 0; i < enic->wq_count; i++) {
+ intr = enic_msix_wq_intr(enic, i);
+ enic_isr_msix_wq(enic->msix_entry[intr].vector, enic);
+ }
+
break;
case VNIC_DEV_INTR_MODE_MSI:
enic_isr_msi(enic->pdev->irq, enic);
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [net-next-2.6 PATCH 0/4] enic: updates to version 2.1.1.20
2011-06-09 20:36 [net-next-2.6 PATCH 0/4] enic: updates to version 2.1.1.20 Vasanthy Kolluri
` (3 preceding siblings ...)
2011-06-09 20:37 ` [net-next-2.6 PATCH 4/4] enic: Bug Fix: Fix hardware transmit queue indexing in enic_poll_controller Vasanthy Kolluri
@ 2011-06-09 21:58 ` David Miller
4 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2011-06-09 21:58 UTC (permalink / raw)
To: vkolluri; +Cc: netdev
From: Vasanthy Kolluri <vkolluri@cisco.com>
Date: Thu, 09 Jun 2011 13:36:46 -0700
> The following series implements enic driver updates:
>
> 1/4 - Pass 802.1p bits for packets tagged with vlan zero
> 2/4 - Change log message during driver load
> 3/4 - Get/Set interrupt resource index for transmit and receive queues
> 4/4 - Bug Fix: Fix hardware transmit queue indexing in enic_poll_controller
>
> Signed-off-by: Christian Benvenuti <benve@cisco.com>
> Signed-off-by: Danny Guo <dannguo@cisco.com>
> Signed-off-by: Vasanthy Kolluri <vkolluri@cisco.com>
> Signed-off-by: Roopa Prabhu <roprabhu@cisco.com>
> Signed-off-by: David Wang <dwang2@cisco.com>
All applied, thank you.
^ permalink raw reply [flat|nested] 6+ messages in thread