--- /dev/null
+From b880a954b9e2585ce325aedd76e4741880cab180 Mon Sep 17 00:00:00 2001
+From: Vasanthy Kolluri <vkolluri@cisco.com>
+Date: Thu, 9 Jun 2011 10:37:07 +0000
+Subject: enic: Bug Fix: Fix hardware transmit queue indexing in enic_poll_controller
+
+From: Vasanthy Kolluri <vkolluri@cisco.com>
+
+commit b880a954b9e2585ce325aedd76e4741880cab180 upstream.
+
+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>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Chun-Yi Lee <jlee@suse.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/enic/enic_main.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/enic/enic_main.c
++++ b/drivers/net/enic/enic_main.c
+@@ -1718,8 +1718,12 @@ static void enic_poll_controller(struct
+ 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);