[ewg] [PATCH 2/4] RDMA/nes: send IB_EVENT_PORT_ERR/PORT_ACTIVE event on link state interrupt

Maciej Sosnowski maciej.sosnowski at intel.com
Fri Dec 3 07:53:31 PST 2010


Depending on link state change IB_EVENT_PORT_ERR or IB_EVENT_PORT_ACTIVE
should be dispatched in processing of mac interrupt.
Plug in the cable happen to result in series of interrupts
changing driver's link state for a number of times before finally
staying at link up (e.g. link up, link down, link up, link down, ..., link up).
To prevent sending series of redundant IB_EVENT_PORT_ACTIVE
and IB_EVENT_PORT_ERR events they get filtered out by timer based
nes_port_ibevent() routine.

Signed-off-by: Maciej Sosnowski <maciej.sosnowski at intel.com>
---

 .../2.6.16_sles10_sp2/iw_nes_880_to_2_6_23.patch   |   56 +++----
 .../2.6.16_sles10_sp3/iw_nes_880_to_2_6_23.patch   |   56 +++----
 .../2.6.18-EL5.2/iw_nes_880_to_2_6_23.patch        |   56 +++----
 .../2.6.18-EL5.3/iw_nes_880_to_2_6_23.patch        |   56 +++----
 .../2.6.18-EL5.4/iw_nes_880_to_2_6_23.patch        |   56 +++----
 .../2.6.18-EL5.5/iw_nes_880_to_2_6_23.patch        |   56 +++----
 .../backport/2.6.18/iw_nes_880_to_2_6_23.patch     |   56 +++----
 .../backport/2.6.19/iw_nes_880_to_2_6_23.patch     |   56 +++----
 .../backport/2.6.20/iw_nes_880_to_2_6_23.patch     |   56 +++----
 .../backport/2.6.21/iw_nes_880_to_2_6_23.patch     |   56 +++----
 .../backport/2.6.22/iw_nes_880_to_2_6_23.patch     |   56 +++----
 .../2.6.22_slert10_sp2/iw_nes_880_to_2_6_23.patch  |   56 +++----
 .../backport/2.6.23/iw_nes_880_to_2_6_23.patch     |   56 +++----
 .../backport/2.6.9_U6/iw_nes_880_to_2_6_23.patch   |   56 +++----
 .../backport/2.6.9_U7/iw_nes_880_to_2_6_23.patch   |   56 +++----
 .../backport/2.6.9_U8/iw_nes_880_to_2_6_23.patch   |   56 +++----
 .../fixes/nes_0048_port_state_events_fix.patch     |  196 +++++++++++++++++++++++
 17 files changed, 644 insertions(+), 448 deletions(-)

diff --git a/kernel_patches/backport/2.6.16_sles10_sp2/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.16_sles10_sp2/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.16_sles10_sp2/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.16_sles10_sp2/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.16_sles10_sp3/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.16_sles10_sp3/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.16_sles10_sp3/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.16_sles10_sp3/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.18-EL5.2/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.18-EL5.2/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.18-EL5.2/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.18-EL5.2/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.18-EL5.3/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.18-EL5.3/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.18-EL5.3/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.18-EL5.3/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.18-EL5.4/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.18-EL5.4/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.18-EL5.4/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.18-EL5.4/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.18-EL5.5/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.18-EL5.5/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.18-EL5.5/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.18-EL5.5/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.18/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.18/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.18/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.18/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.19/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.19/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.19/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.19/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.20/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.20/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.20/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.20/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.21/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.21/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.21/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.21/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.22/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.22/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.22/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.22/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.22_slert10_sp2/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.22_slert10_sp2/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.22_slert10_sp2/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.22_slert10_sp2/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.23/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.23/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.23/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.23/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.9_U6/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.9_U6/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.9_U6/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.9_U6/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.9_U7/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.9_U7/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.9_U7/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.9_U7/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/backport/2.6.9_U8/iw_nes_880_to_2_6_23.patch b/kernel_patches/backport/2.6.9_U8/iw_nes_880_to_2_6_23.patch
index 9545aa8..3fb71c6 100644
--- a/kernel_patches/backport/2.6.9_U8/iw_nes_880_to_2_6_23.patch
+++ b/kernel_patches/backport/2.6.9_U8/iw_nes_880_to_2_6_23.patch
@@ -1,6 +1,6 @@
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/Kconfig nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig
---- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:20:10.882363000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-05-10 11:21:29.731487000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/Kconfig	2010-11-25 14:10:32.000000000 +0100
 @@ -2,7 +2,6 @@ config INFINIBAND_NES
  	tristate "NetEffect RNIC Driver"
  	depends on PCI && INET && INFINIBAND
@@ -10,8 +10,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	  This is the RDMA Network Interface Card (RNIC) driver for
  	  NetEffect Ethernet Cluster Server Adapters.
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 16:43:23.149014000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-05-10 11:21:29.739491000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.c	2010-11-25 14:10:32.000000000 +0100
 @@ -38,14 +38,9 @@
  #include <linux/ip.h>
  #include <linux/tcp.h>
@@ -68,7 +68,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	return 0;
  }
  
-@@ -2647,7 +2615,7 @@ static void nes_nic_napi_ce_handler(stru
+@@ -2743,7 +2711,7 @@ static void nes_nic_napi_ce_handler(stru
  {
  	struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq);
  
@@ -77,7 +77,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -2682,13 +2650,10 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2778,13 +2746,10 @@ void nes_nic_ce_handler(struct nes_devic
  	u16 pkt_type;
  	u16 rqes_processed = 0;
  	u8 sq_cqes = 0;
@@ -91,7 +91,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	do {
  		if (le32_to_cpu(cq->cq_vbase[head].cqe_words[NES_NIC_CQE_MISC_IDX]) &
  				NES_NIC_CQE_VALID) {
-@@ -2820,17 +2785,9 @@ void nes_nic_ce_handler(struct nes_devic
+@@ -2916,17 +2881,9 @@ void nes_nic_ce_handler(struct nes_devic
  							>> 16);
  					nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
  							nesvnic->netdev->name, vlan_tag);
@@ -112,7 +112,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  skip_rx_indicate0:
  				;
-@@ -2861,8 +2818,6 @@ skip_rx_indicate0:
+@@ -2957,8 +2914,6 @@ skip_rx_indicate0:
  
  	} while (1);
  
@@ -122,8 +122,8 @@ diff -Nurp linux-2.6/drivers/infiniband/
  		barrier();
  		/* restart the queue if it had been stopped */
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_hw.h nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h
---- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:20:11.037369000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-05-10 11:21:29.744492000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:09:57.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_hw.h	2010-11-25 14:23:56.000000000 +0100
 @@ -33,8 +33,6 @@
  #ifndef __NES_HW_H
  #define __NES_HW_H
@@ -133,7 +133,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  #define NES_PHY_TYPE_CX4       1
  #define NES_PHY_TYPE_1G        2
  #define NES_PHY_TYPE_ARGUS     4
-@@ -1024,8 +1022,6 @@ struct nes_hw_tune_timer {
+@@ -1025,8 +1023,6 @@ struct nes_hw_tune_timer {
  #define NES_TIMER_ENABLE_LIMIT      4
  #define NES_MAX_LINK_INTERRUPTS     128
  #define NES_MAX_LINK_CHECK          200
@@ -142,7 +142,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  
  struct nes_adapter {
  	u64              fw_ver;
-@@ -1201,7 +1197,6 @@ struct nes_vnic {
+@@ -1205,7 +1201,6 @@ struct nes_vnic {
  	u32               msg_enable;
  	/* u32 tx_avail; */
  	__be32            local_ipaddr;
@@ -150,19 +150,19 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	spinlock_t           tx_lock;	/* could use netdev tx lock? */
  	struct timer_list    rq_wqes_timer;
  	u32                  nic_mem_size;
-@@ -1229,9 +1224,6 @@ struct nes_vnic {
+@@ -1233,9 +1228,6 @@ struct nes_vnic {
  	u8  of_device_registered;
  	u8  rdma_enabled;
  	u8  rx_checksum_disabled;
 -	u32 lro_max_aggr;
 -	struct net_lro_mgr lro_mgr;
 -	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
- };
- 
- struct nes_ib_device {
+ 	struct timer_list event_timer;
+ 	enum ib_event_type delayed_event;
+ 	enum ib_event_type last_dispatched_event;
 diff -Nurp linux-2.6/drivers/infiniband/hw/nes/nes_nic.c nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c
---- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 16:43:23.155011000 +0200
-+++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-05-10 11:21:29.752485000 +0200
+--- linux-2.6/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:34:51.000000000 +0100
++++ nes.2_6_23_patch/drivers/infiniband/hw/nes/nes_nic.c	2010-11-25 14:27:03.000000000 +0100
 @@ -96,35 +96,38 @@ static int nics_per_function = 1;
  /**
   * nes_netdev_poll
@@ -210,23 +210,23 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  
-@@ -238,7 +241,6 @@ static int nes_netdev_open(struct net_de
- 		netif_start_queue(netdev);
- 		netif_carrier_on(netdev);
+@@ -264,7 +267,6 @@ static int nes_netdev_open(struct net_de
  	}
+ 	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
+ 
 -	napi_enable(&nesvnic->napi);
  	nesvnic->netdev_open = 1;
  
  	return 0;
-@@ -266,7 +268,6 @@ static int nes_netdev_stop(struct net_de
- 		printk(KERN_INFO PFX "%s: disabling interface\n", netdev->name);
+@@ -294,7 +296,6 @@ static int nes_netdev_stop(struct net_de
+ 	netif_carrier_off(netdev);
  
  	/* Disable network packets */
 -	napi_disable(&nesvnic->napi);
  	netif_stop_queue(netdev);
  	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
  		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
-@@ -1038,9 +1039,6 @@ static const char nes_ethtool_stringset[
+@@ -1071,9 +1072,6 @@ static const char nes_ethtool_stringset[
  	"Free 4Kpbls",
  	"Free 256pbls",
  	"Timer Inits",
@@ -236,7 +236,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset)
  
-@@ -1278,9 +1276,6 @@ static void nes_netdev_get_ethtool_stats
+@@ -1311,9 +1309,6 @@ static void nes_netdev_get_ethtool_stats
  	target_stat_values[++index] = nesadapter->free_4kpbl;
  	target_stat_values[++index] = nesadapter->free_256pbl;
  	target_stat_values[++index] = int_mod_timer_init;
@@ -246,7 +246,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  }
  
  /**
-@@ -1567,8 +1562,6 @@ static struct ethtool_ops nes_ethtool_op
+@@ -1600,8 +1595,6 @@ static struct ethtool_ops nes_ethtool_op
  	.set_sg = ethtool_op_set_sg,
  	.get_tso = ethtool_op_get_tso,
  	.set_tso = ethtool_op_set_tso,
@@ -255,7 +255,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  };
  
  
-@@ -1639,7 +1632,8 @@ struct net_device *nes_netdev_init(struc
+@@ -1672,7 +1665,8 @@ struct net_device *nes_netdev_init(struc
  	netdev->type = ARPHRD_ETHER;
  	netdev->features = NETIF_F_HIGHDMA;
  	netdev->ethtool_ops = &nes_ethtool_ops;
@@ -265,7 +265,7 @@ diff -Nurp linux-2.6/drivers/infiniband/
  	nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
  	netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
  	netdev->vlan_rx_register = nes_netdev_vlan_rx_register;
-@@ -1671,7 +1665,6 @@ struct net_device *nes_netdev_init(struc
+@@ -1704,7 +1698,6 @@ struct net_device *nes_netdev_init(struc
  
  	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
  		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
diff --git a/kernel_patches/fixes/nes_0048_port_state_events_fix.patch b/kernel_patches/fixes/nes_0048_port_state_events_fix.patch
new file mode 100644
index 0000000..faeea30
--- /dev/null
+++ b/kernel_patches/fixes/nes_0048_port_state_events_fix.patch
@@ -0,0 +1,196 @@
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c
+index ef4efaa..d605393 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
++++ b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -2607,6 +2607,13 @@ static void nes_process_mac_intr(struct 
+ 						netif_start_queue(nesvnic->netdev);
+ 					nesvnic->linkup = 1;
+ 					netif_carrier_on(nesvnic->netdev);
++
++					spin_lock(&nesvnic->port_ibevent_lock);
++					if (nesdev->iw_status == 0) {
++						nesdev->iw_status = 1;
++						nes_port_ibevent(nesvnic);
++					}
++					spin_unlock(&nesvnic->port_ibevent_lock);
+ 				}
+ 			}
+ 		} else {
+@@ -2632,6 +2639,13 @@ static void nes_process_mac_intr(struct 
+ 						netif_stop_queue(nesvnic->netdev);
+ 					nesvnic->linkup = 0;
+ 					netif_carrier_off(nesvnic->netdev);
++
++					spin_lock(&nesvnic->port_ibevent_lock);
++					if (nesdev->iw_status == 1) {
++						nesdev->iw_status = 0;
++						nes_port_ibevent(nesvnic);
++					}
++					spin_unlock(&nesvnic->port_ibevent_lock);
+ 				}
+ 			}
+ 		}
+diff --git a/drivers/infiniband/hw/nes/nes_hw.h b/drivers/infiniband/hw/nes/nes_hw.h
+index 19c5633..2a4b7e2 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.h
++++ b/drivers/infiniband/hw/nes/nes_hw.h
+@@ -1180,6 +1180,8 @@ struct nes_ib_fast_reg_page_list {
+ 
+ struct nes_ib_device;
+ 
++#define NES_EVENT_DELAY msecs_to_jiffies(100)
++
+ struct nes_vnic {
+ 	struct nes_ib_device *nesibdev;
+ 	u64 sq_full;
+@@ -1234,6 +1236,10 @@ struct nes_vnic {
+ 	u32 lro_max_aggr;
+ 	struct net_lro_mgr lro_mgr;
+ 	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS];
++	struct timer_list event_timer;
++	enum ib_event_type delayed_event;
++	enum ib_event_type last_dispatched_event;
++	spinlock_t port_ibevent_lock;
+ };
+ 
+ struct nes_ib_device {
+diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
+index 97def4d..9500cb0 100644
+--- a/drivers/infiniband/hw/nes/nes_nic.c
++++ b/drivers/infiniband/hw/nes/nes_nic.c
+@@ -143,6 +143,7 @@ static int nes_netdev_open(struct net_de
+ 	u32 nic_active_bit;
+ 	u32 nic_active;
+ 	struct list_head *list_pos, *list_temp;
++	unsigned long flags;
+ 
+ 	assert(nesdev != NULL);
+ 
+@@ -232,18 +233,27 @@ static int nes_netdev_open(struct net_de
+ 		first_nesvnic = nesvnic;
+ 	}
+ 
+-	if (nesvnic->of_device_registered) {
+-		nesdev->iw_status = 1;
+-		nesdev->nesadapter->send_term_ok = 1;
+-		nes_port_ibevent(nesvnic);
+-	}
+-
+ 	if (first_nesvnic->linkup) {
+ 		/* Enable network packets */
+ 		nesvnic->linkup = 1;
+ 		netif_start_queue(netdev);
+ 		netif_carrier_on(netdev);
+ 	}
++
++	spin_lock_irqsave(&nesvnic->port_ibevent_lock, flags);
++	if (nesvnic->of_device_registered) {
++		nesdev->nesadapter->send_term_ok = 1;
++		if (nesvnic->linkup == 1) {
++			if (nesdev->iw_status == 0) {
++				nesdev->iw_status = 1;
++				nes_port_ibevent(nesvnic);
++			}
++		} else {
++			nesdev->iw_status = 0;
++		}
++	}
++	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
++
+ 	napi_enable(&nesvnic->napi);
+ 	nesvnic->netdev_open = 1;
+ 
+@@ -262,6 +272,7 @@ static int nes_netdev_stop(struct net_de
+ 	u32 nic_active;
+ 	struct nes_vnic *first_nesvnic = NULL;
+ 	struct list_head *list_pos, *list_temp;
++	unsigned long flags;
+ 
+ 	nes_debug(NES_DBG_SHUTDOWN, "nesvnic=%p, nesdev=%p, netdev=%p %s\n",
+ 			nesvnic, nesdev, netdev, netdev->name);
+@@ -314,12 +325,17 @@ static int nes_netdev_stop(struct net_de
+ 	nic_active &= nic_active_mask;
+ 	nes_write_indexed(nesdev, NES_IDX_NIC_BROADCAST_ON, nic_active);
+ 
+-
++	spin_lock_irqsave(&nesvnic->port_ibevent_lock, flags);
+ 	if (nesvnic->of_device_registered) {
+ 		nesdev->nesadapter->send_term_ok = 0;
+ 		nesdev->iw_status = 0;
+-		nes_port_ibevent(nesvnic);
++		if (nesvnic->linkup == 1)
++			nes_port_ibevent(nesvnic);
+ 	}
++	del_timer_sync(&nesvnic->event_timer);
++	nesvnic->event_timer.function = NULL;
++	spin_unlock_irqrestore(&nesvnic->port_ibevent_lock, flags);
++
+ 	nes_destroy_nic_qp(nesvnic);
+ 
+ 	nesvnic->netdev_open = 0;
+@@ -1728,7 +1744,10 @@ struct net_device *nes_netdev_init(struc
+ 		nesvnic->rdma_enabled = 0;
+ 	}
+ 	nesvnic->nic_cq.cq_number = nesvnic->nic.qp_id;
++	init_timer(&nesvnic->event_timer);
++	nesvnic->event_timer.function = NULL;
+ 	spin_lock_init(&nesvnic->tx_lock);
++	spin_lock_init(&nesvnic->port_ibevent_lock);
+ 	nesdev->netdev[nesdev->netdev_count] = netdev;
+ 
+ 	nes_debug(NES_DBG_INIT, "Adding nesvnic (%p) to the adapters nesvnic_list for MAC%d.\n",
+diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
+index edaa824..50e9d37 100644
+--- a/drivers/infiniband/hw/nes/nes_verbs.c
++++ b/drivers/infiniband/hw/nes/nes_verbs.c
+@@ -4149,6 +4149,30 @@ struct nes_ib_device *nes_init_ofa_devic
+ 	return nesibdev;
+ }
+ 
++
++/**
++ * nes_handle_delayed_event
++ */
++static void nes_handle_delayed_event(unsigned long data)
++{
++	struct nes_vnic *nesvnic = (void *) data;
++
++	if (nesvnic->delayed_event != nesvnic->last_dispatched_event) {
++		struct ib_event event;
++
++		event.device = &nesvnic->nesibdev->ibdev;
++		if (!event.device)
++			goto stop_timer;
++		event.event = nesvnic->delayed_event;
++		event.element.port_num = nesvnic->logical_port + 1;
++		ib_dispatch_event(&event);
++	}
++
++stop_timer:
++	nesvnic->event_timer.function = NULL;
++}
++
++
+ void  nes_port_ibevent(struct nes_vnic *nesvnic)
+ {
+ 	struct nes_ib_device *nesibdev = nesvnic->nesibdev;
+@@ -4157,7 +4181,18 @@ void  nes_port_ibevent(struct nes_vnic *
+ 	event.device = &nesibdev->ibdev;
+ 	event.element.port_num = nesvnic->logical_port + 1;
+ 	event.event = nesdev->iw_status ? IB_EVENT_PORT_ACTIVE : IB_EVENT_PORT_ERR;
+-	ib_dispatch_event(&event);
++
++	if (!nesvnic->event_timer.function) {
++		ib_dispatch_event(&event);
++		nesvnic->last_dispatched_event = event.event;
++		nesvnic->event_timer.function = nes_handle_delayed_event;
++		nesvnic->event_timer.data = (unsigned long) nesvnic;
++		nesvnic->event_timer.expires = jiffies + NES_EVENT_DELAY;
++		add_timer(&nesvnic->event_timer);
++	} else {
++		mod_timer(&nesvnic->event_timer, jiffies + NES_EVENT_DELAY);
++	}
++	nesvnic->delayed_event = event.event;
+ }
+ 
+ 




More information about the ewg mailing list