[ewg] [PATCH] RDMA/nes: Fix for OFED-3.12-1 RC3

2014-10-24 Thread Tatyana Nikolova
Date: Fri, 24 Oct 2014 14:09:04 -0500
Subject: [PATCH] RDMA/nes: Fix for register mr with zero length

Signed-off-by: Tatyana Nikolova 
---
 ...008-RDMA-nes-Fix-for-register-zero-len-mr.patch |   40 
 1 files changed, 40 insertions(+), 0 deletions(-)
 create mode 100644 
linux-next-pending/0008-RDMA-nes-Fix-for-register-zero-len-mr.patch

diff --git 
a/linux-next-pending/0008-RDMA-nes-Fix-for-register-zero-len-mr.patch 
b/linux-next-pending/0008-RDMA-nes-Fix-for-register-zero-len-mr.patch
new file mode 100644
index 000..2bc70bf
--- /dev/null
+++ b/linux-next-pending/0008-RDMA-nes-Fix-for-register-zero-len-mr.patch
@@ -0,0 +1,40 @@
+RDMA/nes: Fix for a crash when registering a user mr with zero length
+
+Note: The return value ibmr has been previously initialized to 
ERR_PTR(-EINVAL),
+independent of this patch. 
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_verbs.c |9 -
+ 1 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_verbs.c 
b/drivers/infiniband/hw/nes/nes_verbs.c
+index 5b53ca5..e08d175 100644
+--- a/drivers/infiniband/hw/nes/nes_verbs.c
 b/drivers/infiniband/hw/nes/nes_verbs.c
+@@ -2331,6 +2331,10 @@ static struct ib_mr *nes_reg_user_mr(struct ib_pd *pd, 
u64 start, u64 length,
+   u8 single_page = 1;
+   u8 stag_key;
+ 
++  if (length == 0) {
++  nes_debug(NES_DBG_MR, "Unable to register zero length 
region\n");
++  return ibmr;
++  }
+   region = ib_umem_get(pd->uobject->context, start, length, acc, 0);
+   if (IS_ERR(region)) {
+   return (struct ib_mr *)region;
+@@ -2565,11 +2569,6 @@ static struct ib_mr *nes_reg_user_mr(struct ib_pd *pd, 
u64 start, u64 length,
+   return ibmr;
+   case IWNES_MEMREG_TYPE_QP:
+   case IWNES_MEMREG_TYPE_CQ:
+-  if (!region->length) {
+-  nes_debug(NES_DBG_MR, "Unable to register zero 
length region for CQ\n");
+-  ib_umem_release(region);
+-  return ERR_PTR(-EINVAL);
+-  }
+   nespbl = kzalloc(sizeof(*nespbl), GFP_KERNEL);
+   if (!nespbl) {
+   nes_debug(NES_DBG_MR, "Unable to allocate 
PBL\n");
+-- 
+1.7.1
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Update to OFED-3.5 nes release notes

2013-01-02 Thread Tatyana Nikolova
RDMA/nes: Update to OFED 3.5 nes release notes.

Signed-off-by: Tatyana Nikolova 
---
 release_notes/nes_release_notes.txt |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/release_notes/nes_release_notes.txt 
b/release_notes/nes_release_notes.txt
index e6f1ff6..bf6d6c3 100644
--- a/release_notes/nes_release_notes.txt
+++ b/release_notes/nes_release_notes.txt
@@ -32,6 +32,7 @@ OFED 3.5 contains several important bug fixes for iw_nes 
driver:
- Fixed an incorrect setting of a multicast address in the perfect 
filter table. 
- Fixed a problem when adding timer and a timer is already pending.
- Fixed a problem when initializing terminate timer more than once.
+   - Fixed a problem when establishing iWarp connection and tx checksum 
offload is disabled.
- Added backports for Linux 2.6 and 3.0 kernels
- iw_nes driver version is changed to 1.5.0.1
 
@@ -92,8 +93,8 @@ NOTE: Assuming NetEffect Ethernet Cluster Server Adapter is 
assigned eth2.
 
 ifconfig eth2 mtu 9000 - largest mtu supported
 
-ethtool -K eth2 tso on - enables TSO  (Operation not supported 
for rhel6.2/rhel6.3)
-ethtool -K eth2 tso off- disables TSO (Operation not supported 
for rhel6.2/rhel6.3)
+ethtool -K eth2 tso on - enables TSO
+ethtool -K eth2 tso off- disables TSO
 
 ethtool -C eth2 rx-usecs-irq 128   - set static interrupt moderation
 
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fixes for OFED-3.5 RC3

2012-12-13 Thread Tatyana Nikolova
RDMA/nes: Fixes for OFED-3.5 RC3

1. Backports for ethtool ops (which allow turning on/off tx, rx, sg, tso)
   are added for RHEL 6.2 and 6.3
2. Fix for crash caused by improper skb ip_summed field setting
   when tx checksum is disabled
3. Fix for crash when registering MR with zero length

Signed-off-by: Tatyana Nikolova 
---
 ...033-RDMA-nes-Fix-for-tx-checksum-disabled.patch |   39 ++
 ...34-RDMA-nes-Fix-for-memreg-cq-zero-length.patch |   26 
 ...RDMA-nes-Backports-update-for-ethtool-ops.patch |  122 
 3 files changed, 187 insertions(+), 0 deletions(-)
 create mode 100644 
linux-next-pending/0033-RDMA-nes-Fix-for-tx-checksum-disabled.patch
 create mode 100644 
linux-next-pending/0034-RDMA-nes-Fix-for-memreg-cq-zero-length.patch
 create mode 100644 patches/0029-RDMA-nes-Backports-update-for-ethtool-ops.patch

diff --git 
a/linux-next-pending/0033-RDMA-nes-Fix-for-tx-checksum-disabled.patch 
b/linux-next-pending/0033-RDMA-nes-Fix-for-tx-checksum-disabled.patch
new file mode 100644
index 000..a1aa7e8
--- /dev/null
+++ b/linux-next-pending/0033-RDMA-nes-Fix-for-tx-checksum-disabled.patch
@@ -0,0 +1,39 @@
+Fix for sending mini cm packets with tx checksum offload disabled.
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_cm.c  |2 ++
+ drivers/infiniband/hw/nes/nes_nic.c |4 +++-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index 43d91b0..4084dd3 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -430,6 +430,8 @@ static void form_cm_frame(struct sk_buff *skb,
+   buf += sizeof(*tcph);
+ 
+   skb->ip_summed = CHECKSUM_PARTIAL;
++  if (!(cm_node->netdev->features & NETIF_F_IP_CSUM))
++  skb->ip_summed = CHECKSUM_UNNECESSARY;  
+   skb->protocol = htons(0x800);
+   skb->data_len = 0;
+   skb->mac_len = ETH_HLEN;
+diff --git a/drivers/infiniband/hw/nes/nes_nic.c 
b/drivers/infiniband/hw/nes/nes_nic.c
+index d113dac..300192f 100644
+--- a/drivers/infiniband/hw/nes/nes_nic.c
 b/drivers/infiniband/hw/nes/nes_nic.c
+@@ -400,7 +400,9 @@ static int nes_nic_send(struct sk_buff *skb, struct 
net_device *netdev)
+   wqe_misc |= NES_NIC_SQ_WQE_COMPLETION;
+   }
+   } else {/* CHECKSUM_HW */
+-  wqe_misc |= NES_NIC_SQ_WQE_DISABLE_CHKSUM | 
NES_NIC_SQ_WQE_COMPLETION;
++  wqe_misc |= NES_NIC_SQ_WQE_COMPLETION;
++  if (skb->ip_summed != CHECKSUM_UNNECESSARY)
++   wqe_misc |= NES_NIC_SQ_WQE_DISABLE_CHKSUM;
+   }
+ 
+   set_wqe_32bit_value(nic_sqe->wqe_words, NES_NIC_SQ_WQE_TOTAL_LENGTH_IDX,
+-- 
+1.7.4.2
+
diff --git 
a/linux-next-pending/0034-RDMA-nes-Fix-for-memreg-cq-zero-length.patch 
b/linux-next-pending/0034-RDMA-nes-Fix-for-memreg-cq-zero-length.patch
new file mode 100644
index 000..8f423b9
--- /dev/null
+++ b/linux-next-pending/0034-RDMA-nes-Fix-for-memreg-cq-zero-length.patch
@@ -0,0 +1,26 @@
+Fix for crash when registering zero length MR for CQ.
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_verbs.c |5 +
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_verbs.c 
b/drivers/infiniband/hw/nes/nes_verbs.c
+index c47ec25..07e4fba 100644
+--- a/drivers/infiniband/hw/nes/nes_verbs.c
 b/drivers/infiniband/hw/nes/nes_verbs.c
+@@ -2561,6 +2561,11 @@ static struct ib_mr *nes_reg_user_mr(struct ib_pd *pd, 
u64 start, u64 length,
+   return ibmr;
+   case IWNES_MEMREG_TYPE_QP:
+   case IWNES_MEMREG_TYPE_CQ:
++  if (!region->length) {
++  nes_debug(NES_DBG_MR, "Unable to register zero 
length region for CQ\n");
++  ib_umem_release(region);
++  return ERR_PTR(-EINVAL);
++  }
+   nespbl = kzalloc(sizeof(*nespbl), GFP_KERNEL);
+   if (!nespbl) {
+   nes_debug(NES_DBG_MR, "Unable to allocate 
PBL\n");
+-- 
+1.7.4.2
+
diff --git a/patches/0029-RDMA-nes-Backports-update-for-ethtool-ops.patch 
b/patches/0029-RDMA-nes-Backports-update-for-ethtool-ops.patch
new file mode 100644
index 000..e380389
--- /dev/null
+++ b/patches/0029-RDMA-nes-Backports-update-for-ethtool-ops.patch
@@ -0,0 +1,122 @@
+Added backports for RHEL 6.2 and 6.3 ethtool ops.
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_hw.c  |   10 
+ drivers/infiniband/hw/nes/nes_hw.h  |3 ++
+ drivers/infiniband/hw/nes/nes_nic.c |   43 +++
+ 3 files changed, 56 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c 
b/drivers/infiniband/hw/nes/nes_hw.c
+index ef

[ewg] [PATCH] RDMA/nes: Updated release notes

2012-12-11 Thread Tatyana Nikolova
RDMA/nes: Updated release notes

Signed-off-by: Tatyana Nikolova 
---
 release_notes/nes_release_notes.txt |  218 ---
 1 files changed, 75 insertions(+), 143 deletions(-)

diff --git a/release_notes/nes_release_notes.txt 
b/release_notes/nes_release_notes.txt
index bb750ff..8359e55 100644
--- a/release_notes/nes_release_notes.txt
+++ b/release_notes/nes_release_notes.txt
@@ -1,43 +1,39 @@
 Open Fabrics Enterprise Distribution (OFED)
   NetEffect Ethernet Cluster Server Adapter Release Notes
-   January 2012
-
+   December 2012
 
 
 The iw_nes module and libnes user library provide RDMA and L2IF
-support for the NetEffect Ethernet Cluster Server Adapters.
+support for the NetEffect Ethernet Cluster Server Adapters.
+
+=
+Supported Architectures and Operating Systems
+=
+
+* CPU architectures:
+- x86_64
+- x86
+ 
+* Linux Operating Systems:
+   - RedHat EL6.2  2.6.32-220.el6
+   - RedHat EL6.3  2.6.32-279.el6
+   - SLES11 SP23.0.13-0.27-default
+   - kernel.org3.5 (minimal QA for this version)
 
 ==
 What's New
 ==
 
-OFED 1.5.4.1 contains bug fixes for iw_nes driver.
-
-* Fixed a problem with QP destroy timer and improved AE handling.
-* Fixed a problem with sending MPA reject message.
-* Fixed fast memory registration issues.
-
-OFED 1.5.4 contains several enhancements and bug fixes to iw_nes driver.
-
-* Added backports for 2.6.35 to 3.0 kernels.
-* Fixed a couple of problems which caused IMA to crash.
-* Fixed a problem with VLAN flag for IMA.
-* Enabled bonding with iw_nes.
-* Fixed a couple of IB_EVENT issues.
-* Fixed an SFP+ link status issue.
-* Added support for Chelsio Interoperability.
-* Added support for MPA version 2.
-
-
-
-Required Setting - RDMA Unify TCP port space
-
-RDMA connections use the same TCP port space as the host stack.  To avoid
-conflicts, set rdma_cm module option unify_tcp_port_space to 1 by adding
-the following to /etc/modprobe.conf:
-
-options rdma_cm unify_tcp_port_space=1
+OFED 3.5 contains several important bug fixes for iw_nes driver:
 
+   - Removed an incorrect macro routine from the loopback code. 
+   - Fixed a couple of problems when unlinking skbs (interoperability with 
Chelsio).
+   - Added a lock, so that FPDUs are forwarded in order to iw_nes hardware 
(interoperability with Chelsio).
+   - Fixed an incorrect setting of a multicast address in the perfect 
filter table. 
+   - Fixed a problem when adding timer and a timer is already pending.
+   - Fixed a problem when initializing terminate timer more than once.
+   - Added backports for Linux 2.6 and 3.0 kernels
+   - iw_nes driver version is changed to 1.5.0.1
 
 
 Required Setting - Power Management Mode
@@ -51,7 +47,7 @@ If possible, disable Active State Power Management in the 
BIOS, e.g.:
 Loadable Module Options
 ===
 The following options can be used when loading the iw_nes module by modifying
-/etc/modprobe.conf file.
+/etc/modprobe.conf.local file in the SLES hosts and /etc/modprobe.d/rnic.conf 
file in the RHEL hosts.
 
 wide_ppm_offset=0
 Set to 1 will increase CX4 interface clock ppm offset to 300ppm.
@@ -76,7 +72,7 @@ nes_drv_opt=0x0100
 0x0200 - Disable Virtual Work Queue
 0x1000 - Disable extra doorbell read after write
 
-nes_debug_level=0
+debug_level=0
 Specify debug output level.
 
 wqm_quanta=65536
@@ -85,6 +81,8 @@ wqm_quanta=65536
 limit_maxrdreqsz=0
 Limit PCI read request size to 256 bytes.
 
+nes_lro_max_aggr=64
+Max number of LRO packets to be aggregated.
 
 ===
 Runtime Options
@@ -92,30 +90,25 @@ Runtime Options
 The following options can be used to alter the behavior of the iw_nes module:
 NOTE: Assuming NetEffect Ethernet Cluster Server Adapter is assigned eth2.
 
-ifconfig eth2 mtu 9000  - largest mtu supported
+ifconfig eth2 mtu 9000 - largest mtu supported
 
-ethtool -K eth2 tso on  - enables TSO
-ethtool -K eth2 tso off - disables TSO
+ethtool -K eth2 tso on - enables TSO  (Operation not supported 
for rhel6.2/rhel6.3)
+ethtool -K eth2 tso off- disables TSO (Operation not supported 
for rhel6.2/rhel6.3)
 
-ethtool -C eth2 rx-usecs-irq 128 - set static interrupt moderation
+ethtool -C eth2 rx-usecs-irq 128   - set static interrupt moderation
 
-ethtool -C eth2 adaptive-rx on  - enable dynamic interrupt moderation
-ethtool -C eth2 adaptive-rx off - disable dynamic interrupt moderation
-ethtool -C eth2 rx-frames-low 16 - low watermark of rx queue for dy

[ewg] [PATCH] RDMA/nes: Fix for terminate timer crash

2012-11-24 Thread Tatyana Nikolova
Fix for terminate timer crash.

Signed-off-by: Tatyana Nikolova  
---
 ...-nes-Fix-for-initializing-terminate-timer.patch |   81 
 1 files changed, 81 insertions(+), 0 deletions(-)
 create mode 100644 
linux-next-pending/0030-RDMA-nes-Fix-for-initializing-terminate-timer.patch

diff --git 
a/linux-next-pending/0030-RDMA-nes-Fix-for-initializing-terminate-timer.patch 
b/linux-next-pending/0030-RDMA-nes-Fix-for-initializing-terminate-timer.patch
new file mode 100644
index 000..16be677
--- /dev/null
+++ 
b/linux-next-pending/0030-RDMA-nes-Fix-for-initializing-terminate-timer.patch
@@ -0,0 +1,81 @@
+Fix for terminate timer crash.
+Nes terminate timer needs to be initialized just once.
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes.h   |1 +
+ drivers/infiniband/hw/nes/nes_hw.c|9 ++---
+ drivers/infiniband/hw/nes/nes_verbs.c |4 +++-
+ 3 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
+index 5cac29e..33cc589 100644
+--- a/drivers/infiniband/hw/nes/nes.h
 b/drivers/infiniband/hw/nes/nes.h
+@@ -532,6 +532,7 @@ void nes_iwarp_ce_handler(struct nes_device *, struct 
nes_hw_cq *);
+ int nes_destroy_cqp(struct nes_device *);
+ int nes_nic_cm_xmit(struct sk_buff *, struct net_device *);
+ void nes_recheck_link_status(struct work_struct *work);
++void nes_terminate_timeout(unsigned long context);
+ 
+ /* nes_nic.c */
+ struct net_device *nes_netdev_init(struct nes_device *, void __iomem *);
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c 
b/drivers/infiniband/hw/nes/nes_hw.c
+index fe7965e..67647e2 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
 b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -75,7 +75,6 @@ static void nes_process_iwarp_aeqe(struct nes_device *nesdev,
+ static void process_critical_error(struct nes_device *nesdev);
+ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number);
+ static unsigned int nes_reset_adapter_ne020(struct nes_device *nesdev, u8 
*OneG_Mode);
+-static void nes_terminate_timeout(unsigned long context);
+ static void nes_terminate_start_timer(struct nes_qp *nesqp);
+ 
+ #ifdef CONFIG_INFINIBAND_NES_DEBUG
+@@ -3520,7 +3519,7 @@ static void nes_terminate_received(struct nes_device 
*nesdev,
+ }
+ 
+ /* Timeout routine in case terminate fails to complete */
+-static void nes_terminate_timeout(unsigned long context)
++void nes_terminate_timeout(unsigned long context)
+ {
+   struct nes_qp *nesqp = (struct nes_qp *)(unsigned long)context;
+ 
+@@ -3530,11 +3529,7 @@ static void nes_terminate_timeout(unsigned long context)
+ /* Set a timer in case hw cannot complete the terminate sequence */
+ static void nes_terminate_start_timer(struct nes_qp *nesqp)
+ {
+-  init_timer(&nesqp->terminate_timer);
+-  nesqp->terminate_timer.function = nes_terminate_timeout;
+-  nesqp->terminate_timer.expires = jiffies + HZ;
+-  nesqp->terminate_timer.data = (unsigned long)nesqp;
+-  add_timer(&nesqp->terminate_timer);
++  mod_timer(&nesqp->terminate_timer, (jiffies + HZ));
+ }
+ 
+ /**
+diff --git a/drivers/infiniband/hw/nes/nes_verbs.c 
b/drivers/infiniband/hw/nes/nes_verbs.c
+index cd0ecb2..c47ec25 100644
+--- a/drivers/infiniband/hw/nes/nes_verbs.c
 b/drivers/infiniband/hw/nes/nes_verbs.c
+@@ -1404,6 +1404,9 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd,
+   }
+ 
+   nesqp->sig_all = (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR);
++  init_timer(&nesqp->terminate_timer);
++  nesqp->terminate_timer.function = nes_terminate_timeout;
++  nesqp->terminate_timer.data = (unsigned long)nesqp;
+ 
+   /* update the QP table */
+   nesdev->nesadapter->qp_table[nesqp->hwqp.qp_id-NES_FIRST_QPN] = nesqp;
+@@ -1413,7 +1416,6 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd,
+   return &nesqp->ibqp;
+ }
+ 
+-
+ /**
+  * nes_clean_cq
+  */
+-- 
+1.7.4.2
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fix for crash when adding timer and timer is pending

2012-11-24 Thread Tatyana Nikolova
RDMA/nes: Replace with 0025-RDMA-nes-Fix-for-adding-timer.patch with
0025-RDMA-nes-Fix-for-modifying-tcp-timer.patch

Signed-off-by: Tatyana Nikolova 
---
 .../0025-RDMA-nes-Fix-for-adding-timer.patch   |   23 --
 ...0025-RDMA-nes-Fix-for-modifying-tcp-timer.patch |   74 
 2 files changed, 74 insertions(+), 23 deletions(-)
 delete mode 100644 linux-next-pending/0025-RDMA-nes-Fix-for-adding-timer.patch
 create mode 100644 
linux-next-pending/0025-RDMA-nes-Fix-for-modifying-tcp-timer.patch

diff --git a/linux-next-pending/0025-RDMA-nes-Fix-for-adding-timer.patch 
b/linux-next-pending/0025-RDMA-nes-Fix-for-adding-timer.patch
deleted file mode 100644
index 13f9a29..000
--- a/linux-next-pending/0025-RDMA-nes-Fix-for-adding-timer.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Fix for kernel panic caused by adding a timer when a timer is already pending.
-
-Signed-off-by: Tatyana Nikolova 

- drivers/infiniband/hw/nes/nes_cm.c |2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
-index cfaacaf..c04bfca 100644
 a/drivers/infiniband/hw/nes/nes_cm.c
-+++ b/drivers/infiniband/hw/nes/nes_cm.c
-@@ -727,7 +727,7 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct 
sk_buff *skb,
- 
-   if (!was_timer_set) {
-   cm_core->tcp_timer.expires = new_send->timetosend;
--  add_timer(&cm_core->tcp_timer);
-+  mod_timer(&cm_core->tcp_timer, cm_core->tcp_timer.expires);
-   }
- 
-   return ret;
--- 
-1.7.4.2
-
diff --git a/linux-next-pending/0025-RDMA-nes-Fix-for-modifying-tcp-timer.patch 
b/linux-next-pending/0025-RDMA-nes-Fix-for-modifying-tcp-timer.patch
new file mode 100644
index 000..129ccec
--- /dev/null
+++ b/linux-next-pending/0025-RDMA-nes-Fix-for-modifying-tcp-timer.patch
@@ -0,0 +1,74 @@
+Fix for kernel BUG_ON when adding timer and a timer is already pending.
+To avoid nes tcp_timer crash for SMP architectures, add_timer is replaced with 
mod_timer.
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_cm.c |   24 ++--
+ 1 files changed, 6 insertions(+), 18 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index cfaacaf..7bee158 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -671,7 +671,6 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct 
sk_buff *skb,
+   struct nes_cm_core *cm_core = cm_node->cm_core;
+   struct nes_timer_entry *new_send;
+   int ret = 0;
+-  u32 was_timer_set;
+ 
+   new_send = kzalloc(sizeof(*new_send), GFP_ATOMIC);
+   if (!new_send)
+@@ -723,12 +722,8 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, 
struct sk_buff *skb,
+   }
+   }
+ 
+-  was_timer_set = timer_pending(&cm_core->tcp_timer);
+-
+-  if (!was_timer_set) {
+-  cm_core->tcp_timer.expires = new_send->timetosend;
+-  add_timer(&cm_core->tcp_timer);
+-  }
++  if (!timer_pending(&cm_core->tcp_timer))
++  mod_timer(&cm_core->tcp_timer, new_send->timetosend);
+ 
+   return ret;
+ }
+@@ -946,10 +941,8 @@ static void nes_cm_timer_tick(unsigned long pass)
+   }
+ 
+   if (settimer) {
+-  if (!timer_pending(&cm_core->tcp_timer)) {
+-  cm_core->tcp_timer.expires = nexttimeout;
+-  add_timer(&cm_core->tcp_timer);
+-  }
++  if (!timer_pending(&cm_core->tcp_timer))
++  mod_timer(&cm_core->tcp_timer, nexttimeout);
+   }
+ }
+ 
+@@ -1314,8 +1307,6 @@ static int mini_cm_del_listen(struct nes_cm_core 
*cm_core,
+ static inline int mini_cm_accelerated(struct nes_cm_core *cm_core,
+ struct nes_cm_node *cm_node)
+ {
+-  u32 was_timer_set;
+-
+   cm_node->accelerated = 1;
+ 
+   if (cm_node->accept_pend) {
+@@ -1325,11 +1316,8 @@ static inline int mini_cm_accelerated(struct 
nes_cm_core *cm_core,
+   BUG_ON(atomic_read(&cm_node->listener->pend_accepts_cnt) < 0);
+   }
+ 
+-  was_timer_set = timer_pending(&cm_core->tcp_timer);
+-  if (!was_timer_set) {
+-  cm_core->tcp_timer.expires = jiffies + NES_SHORT_TIME;
+-  add_timer(&cm_core->tcp_timer);
+-  }
++  if (!timer_pending(&cm_core->tcp_timer))
++  mod_timer(&cm_core->tcp_timer, (jiffies + NES_SHORT_TIME));
+ 
+   return 0;
+ }
+-- 
+1.7.4.2
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fix for incorrect multicast address

2012-11-13 Thread Tatyana Nikolova
Fix for incorrect multicast address

Signed-off-by: Tatyana Nikolova 
---
 .../0026-RDMA-nes-Fix-for-multicast-addr.patch |   34 
 1 files changed, 34 insertions(+), 0 deletions(-)
 create mode 100644 
linux-next-pending/0026-RDMA-nes-Fix-for-multicast-addr.patch

diff --git a/linux-next-pending/0026-RDMA-nes-Fix-for-multicast-addr.patch 
b/linux-next-pending/0026-RDMA-nes-Fix-for-multicast-addr.patch
new file mode 100644
index 000..defa75d
--- /dev/null
+++ b/linux-next-pending/0026-RDMA-nes-Fix-for-multicast-addr.patch
@@ -0,0 +1,34 @@
+RDMA/nes: Fix for incorrect multicast address in the perfect filter table
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_nic.c |   13 +++--
+ 1 files changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_nic.c 
b/drivers/infiniband/hw/nes/nes_nic.c
+index 0564be7..9542e16 100644
+--- a/drivers/infiniband/hw/nes/nes_nic.c
 b/drivers/infiniband/hw/nes/nes_nic.c
+@@ -944,12 +944,13 @@ static void nes_netdev_set_multicast_list(struct 
net_device *netdev)
+ addr,
+ 
perfect_filter_register_address+(mc_index * 8),
+ mc_nic_index);
+-  macaddr_high  = ((u16) addr[0]) << 8;
+-  macaddr_high += (u16) addr[1];
+-  macaddr_low   = ((u32) addr[2]) << 24;
+-  macaddr_low  += ((u32) addr[3]) << 16;
+-  macaddr_low  += ((u32) addr[4]) << 8;
+-  macaddr_low  += (u32) addr[5];
++  macaddr_high  = ((u8) addr[0]) << 8;
++  macaddr_high += (u8) addr[1];
++  macaddr_low   = ((u8) addr[2]) << 24;
++  macaddr_low  += ((u8) addr[3]) << 16;
++  macaddr_low  += ((u8) addr[4]) << 8;
++  macaddr_low  += (u8) addr[5];
++
+   nes_write_indexed(nesdev,
+   
perfect_filter_register_address+(mc_index * 8),
+   macaddr_low);
+-- 
+1.7.4.2
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fix for crash when adding timer

2012-11-09 Thread Tatyana Nikolova
Fix for adding timer when a timer is pending

Signed-off-by: Tatyana Nikolova 
---
 .../0025-RDMA-nes-Fix-for-adding-timer.patch   |   23 
 1 files changed, 23 insertions(+), 0 deletions(-)
 create mode 100644 linux-next-pending/0025-RDMA-nes-Fix-for-adding-timer.patch

diff --git a/linux-next-pending/0025-RDMA-nes-Fix-for-adding-timer.patch 
b/linux-next-pending/0025-RDMA-nes-Fix-for-adding-timer.patch
new file mode 100644
index 000..5154da2
--- /dev/null
+++ b/linux-next-pending/0025-RDMA-nes-Fix-for-adding-timer.patch
@@ -0,0 +1,23 @@
+Fix for kernel panic caused by adding a timer when a timer is already pending.
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_cm.c |2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index cfaacaf..c04bfca 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -727,7 +727,7 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct 
sk_buff *skb,
+ 
+   if (!was_timer_set) {
+   cm_core->tcp_timer.expires = new_send->timetosend;
+-  add_timer(&cm_core->tcp_timer);
++  mod_timer(&cm_core->tcp_timer, cm_core->tcp_timer.expires);
+   }
+ 
+   return ret;
+-- 
+1.7.4.2
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Changing nes driver version

2012-11-02 Thread Tatyana Nikolova
RDMA/nes: Changing nes driver version

Signed-off-by: Tatyana Nikolova 
---
 .../0006-RDMA-nes-Changing-driver-version.patch|   23 
 1 files changed, 23 insertions(+), 0 deletions(-)
 create mode 100644 
linux-next-pending/0006-RDMA-nes-Changing-driver-version.patch

diff --git a/linux-next-pending/0006-RDMA-nes-Changing-driver-version.patch 
b/linux-next-pending/0006-RDMA-nes-Changing-driver-version.patch
new file mode 100644
index 000..3ee922b
--- /dev/null
+++ b/linux-next-pending/0006-RDMA-nes-Changing-driver-version.patch
@@ -0,0 +1,23 @@
+Changing the version of the nes driver to reflect recent fixes
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes.h |2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
+index c438e46..0418bc0 100644
+--- a/drivers/infiniband/hw/nes/nes.h
 b/drivers/infiniband/hw/nes/nes.h
+@@ -57,7 +57,7 @@
+ #define QUEUE_DISCONNECTS
+ 
+ #define DRV_NAME"iw_nes"
+-#define DRV_VERSION "1.5.0.0"
++#define DRV_VERSION "1.5.0.1"
+ #define PFX DRV_NAME ": "
+ 
+ /*
+-- 
+1.7.4.2
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Locking fix to prevent race conditions

2012-11-02 Thread Tatyana Nikolova
RDMA/nes: Replace 0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch with 
0009-RDMA-nes-Forward-fpdus-inorder.patch
Locking fix to prevent race conditions.
It forces all fpdus per QP to be forwarded to hardware in order of their tcp 
sequence numbers.

Signed-off-by: Tatyana Nikolova 
---
 .../0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch |   62 
 .../0009-RDMA-nes-Forward-fpdus-inorder.patch  |  100 
 2 files changed, 100 insertions(+), 62 deletions(-)
 delete mode 100644 
linux-next-pending/0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch
 create mode 100644 linux-next-pending/0009-RDMA-nes-Forward-fpdus-inorder.patch

diff --git a/linux-next-pending/0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch 
b/linux-next-pending/0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch
deleted file mode 100644
index f2250fd..000
--- a/linux-next-pending/0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-Fix for unlinking NULL skb because of race condition
-
-Signed-off-by: Tatyana Nikolova 

- drivers/infiniband/hw/nes/nes_mgt.c |8 
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/infiniband/hw/nes/nes_mgt.c 
b/drivers/infiniband/hw/nes/nes_mgt.c
-index 2d710e1..9d0fd2b 100644
 a/drivers/infiniband/hw/nes/nes_mgt.c
-+++ b/drivers/infiniband/hw/nes/nes_mgt.c
-@@ -322,11 +322,10 @@ static int get_fpdu_info(struct nes_device *nesdev, 
struct nes_qp *nesqp,
-   frag_cnt = 1;
-   }
- 
--  spin_unlock_irqrestore(&nesqp->pau_lock, flags);
--
-   /* Found one */
-   fpdu_info = kzalloc(sizeof(*fpdu_info), GFP_ATOMIC);
-   if (fpdu_info == NULL) {
-+  spin_unlock_irqrestore(&nesqp->pau_lock, flags);
-   nes_debug(NES_DBG_PAU, "Failed to alloc a fpdu_info.\n");
-   rc = -ENOMEM;
-   goto out;
-@@ -334,6 +333,7 @@ static int get_fpdu_info(struct nes_device *nesdev, struct 
nes_qp *nesqp,
- 
-   fpdu_info->cqp_request = nes_get_cqp_request(nesdev);
-   if (fpdu_info->cqp_request == NULL) {
-+  spin_unlock_irqrestore(&nesqp->pau_lock, flags);
-   nes_debug(NES_DBG_PAU, "Failed to get a cqp_request.\n");
-   rc = -ENOMEM;
-   goto out;
-@@ -353,6 +353,7 @@ static int get_fpdu_info(struct nes_device *nesdev, struct 
nes_qp *nesqp,
-   fpdu_info->hdr_vbase = pci_alloc_consistent(nesdev->pcidev,
-   fpdu_info->hdr_len, 
&fpdu_info->hdr_pbase);
-   if (!fpdu_info->hdr_vbase) {
-+  spin_unlock_irqrestore(&nesqp->pau_lock, flags);
-   nes_debug(NES_DBG_PAU, "Unable to allocate memory for 
pau first frag\n");
-   rc = -ENOMEM;
-   goto out;
-@@ -385,10 +386,8 @@ static int get_fpdu_info(struct nes_device *nesdev, 
struct nes_qp *nesqp,
- 
-   if (frags[i].skb->len == 0) {
-   /* Pull skb off the list - it will be freed in the 
callback */
--  spin_lock_irqsave(&nesqp->pau_lock, flags);
-   if (!skb_queue_empty(&nesqp->pau_list))
-   skb_unlink(frags[i].skb, &nesqp->pau_list);
--  spin_unlock_irqrestore(&nesqp->pau_lock, flags);
-   } else {
-   /* Last skb still has data so update the seq */
-   iph = (struct iphdr *)(cb->data_start + ETH_HLEN);
-@@ -396,6 +395,7 @@ static int get_fpdu_info(struct nes_device *nesdev, struct 
nes_qp *nesqp,
-   tcph->seq = cpu_to_be32(nesqp->pau_rcv_nxt);
-   }
-   }
-+  spin_unlock_irqrestore(&nesqp->pau_lock, flags);
- 
- out:
-   if (rc) {
--- 
-1.7.4.2
-
diff --git a/linux-next-pending/0009-RDMA-nes-Forward-fpdus-inorder.patch 
b/linux-next-pending/0009-RDMA-nes-Forward-fpdus-inorder.patch
new file mode 100644
index 000..a2a3a4f
--- /dev/null
+++ b/linux-next-pending/0009-RDMA-nes-Forward-fpdus-inorder.patch
@@ -0,0 +1,100 @@
+Locking fix to prevent race conditions, forcing fpdus (per qp) to be forwarded 
+to hardware in the order of their sequence numbers.
+
+Signed-off-by: Tatyana Nikolova 
+Signed-off-by: Donald Wood 
+---
+ drivers/infiniband/hw/nes/nes_mgt.c |   23 ++-
+ 1 files changed, 10 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_mgt.c 
b/drivers/infiniband/hw/nes/nes_mgt.c
+index 2d710e1..07cbf86 100644
+--- a/drivers/infiniband/hw/nes/nes_mgt.c
 b/drivers/infiniband/hw/nes/nes_mgt.c
+@@ -247,7 +247,6 @@ static int get_fpdu_info(struct nes_device *nesdev, struct 
nes_qp *nesqp,
+   struct nes_rskb_cb *cb;
+   struct pau_fpdu_info *fpdu_info = NULL;
+   struct pau_fpdu_frag frags[MAX_FPDU

[ewg] [PATCH] RDMA/nes: Fixes for PAU handling

2012-10-20 Thread Tatyana Nikolova
Fixes for packed and unaligned fpdu handling

Signed-off-by: Tatyana Nikolova 
---
 .../0007-RDMA-nes-Fix-for-pau-hdr_pbase.patch  |   23 +++
 .../0008-RDMA-nes-Check-for-empty-skb-list.patch   |   51 
 .../0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch |   62 
 3 files changed, 136 insertions(+), 0 deletions(-)
 create mode 100644 linux-next-pending/0007-RDMA-nes-Fix-for-pau-hdr_pbase.patch
 create mode 100644 
linux-next-pending/0008-RDMA-nes-Check-for-empty-skb-list.patch
 create mode 100644 
linux-next-pending/0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch

diff --git a/linux-next-pending/0007-RDMA-nes-Fix-for-pau-hdr_pbase.patch 
b/linux-next-pending/0007-RDMA-nes-Fix-for-pau-hdr_pbase.patch
new file mode 100644
index 000..706deff
--- /dev/null
+++ b/linux-next-pending/0007-RDMA-nes-Fix-for-pau-hdr_pbase.patch
@@ -0,0 +1,23 @@
+Fix for incorrect hdr_pbase when forwarding fpdus to hardware 
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_mgt.c |2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_mgt.c 
b/drivers/infiniband/hw/nes/nes_mgt.c
+index 3ba7be3..8cf74fd 100644
+--- a/drivers/infiniband/hw/nes/nes_mgt.c
 b/drivers/infiniband/hw/nes/nes_mgt.c
+@@ -447,7 +447,7 @@ static int forward_fpdus(struct nes_vnic *nesvnic, struct 
nes_qp *nesqp)
+   set_wqe_32bit_value(cqp_wqe->wqe_words, 
NES_NIC_SQ_WQE_FRAG0_LOW_IDX,
+   lower_32_bits(u64tmp));
+   set_wqe_32bit_value(cqp_wqe->wqe_words, 
NES_NIC_SQ_WQE_FRAG0_HIGH_IDX,
+-  upper_32_bits(u64tmp >> 32));
++  upper_32_bits(u64tmp));
+ 
+   set_wqe_32bit_value(cqp_wqe->wqe_words, 
NES_NIC_SQ_WQE_FRAG1_LOW_IDX,
+   
lower_32_bits(fpdu_info->frags[0].physaddr));
+-- 
+1.7.4.2
+
diff --git a/linux-next-pending/0008-RDMA-nes-Check-for-empty-skb-list.patch 
b/linux-next-pending/0008-RDMA-nes-Check-for-empty-skb-list.patch
new file mode 100644
index 000..d42b67a
--- /dev/null
+++ b/linux-next-pending/0008-RDMA-nes-Check-for-empty-skb-list.patch
@@ -0,0 +1,51 @@
+Fix for unlinking skbs from empty list
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_mgt.c |   11 +++
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_mgt.c 
b/drivers/infiniband/hw/nes/nes_mgt.c
+index 8cf74fd..2d710e1 100644
+--- a/drivers/infiniband/hw/nes/nes_mgt.c
 b/drivers/infiniband/hw/nes/nes_mgt.c
+@@ -210,6 +210,9 @@ static struct sk_buff *nes_get_next_skb(struct nes_device 
*nesdev, struct nes_qp
+   }
+ 
+   while (1) {
++  if (skb_queue_empty(&nesqp->pau_list))
++  goto out;
++
+   seq = nes_get_seq(skb, ack, wnd, fin_rcvd, rst_rcvd);
+   if (seq == nextseq) {
+   if (skb->len || processacks)
+@@ -218,14 +221,13 @@ static struct sk_buff *nes_get_next_skb(struct 
nes_device *nesdev, struct nes_qp
+   goto out;
+   }
+ 
+-  if (skb->next == (struct sk_buff *)&nesqp->pau_list)
+-  goto out;
+-
+   old_skb = skb;
+   skb = skb->next;
+   skb_unlink(old_skb, &nesqp->pau_list);
+   nes_mgt_free_skb(nesdev, old_skb, PCI_DMA_TODEVICE);
+   nes_rem_ref_cm_node(nesqp->cm_node);
++  if (skb == (struct sk_buff *)&nesqp->pau_list)
++  goto out;
+   }
+   return skb;
+ 
+@@ -384,7 +386,8 @@ static int get_fpdu_info(struct nes_device *nesdev, struct 
nes_qp *nesqp,
+   if (frags[i].skb->len == 0) {
+   /* Pull skb off the list - it will be freed in the 
callback */
+   spin_lock_irqsave(&nesqp->pau_lock, flags);
+-  skb_unlink(frags[i].skb, &nesqp->pau_list);
++  if (!skb_queue_empty(&nesqp->pau_list))
++  skb_unlink(frags[i].skb, &nesqp->pau_list);
+   spin_unlock_irqrestore(&nesqp->pau_lock, flags);
+   } else {
+   /* Last skb still has data so update the seq */
+-- 
+1.7.4.2
+
diff --git a/linux-next-pending/0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch 
b/linux-next-pending/0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch
new file mode 100644
index 000..f2250fd
--- /dev/null
+++ b/linux-next-pending/0009-RDMA-nes-Fix-for-unlinking-NULL-skb.patch
@@ -0,0 +1,62 @@
+Fix for unlinking NULL skb because of race condition
+
+Signed-off-by: Tatyana Nikolova 
+---
+ drivers/infiniband/hw/nes/nes_mgt.c |8 
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_mgt.c 
b

[ewg] [PATCH] RDMA/nes: TSO is enabled again for linux-3.5 - Backport change

2012-09-07 Thread Tatyana Nikolova
RDMA/nes: TSO is enabled again for linux-3.5
(the patch should be applied on top of previous backports)

Signed-off-by: Tatyana Nikolova 
---
 drivers/infiniband/hw/nes/nes_nic.c |2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_nic.c 
b/drivers/infiniband/hw/nes/nes_nic.c
index 5242294..4f73965 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -1758,12 +1758,10 @@ struct net_device *nes_netdev_init(struct nes_device 
*nesdev,
netdev->features |= NETIF_F_HIGHDMA | NETIF_F_HW_VLAN_TX;
 
if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != 
NE020_REV)) {
-#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3,3,0))
netdev->features |= NETIF_F_TSO;
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
netdev->hw_features |= NETIF_F_TSO;
 #endif
-#endif
}
 
nes_debug(NES_DBG_INIT, "nesvnic = %p, reported features = 0x%lX, QPid 
= %d,"
-- 
1.7.4.2

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fix for loopback MAC address - Backport change

2012-09-07 Thread Tatyana Nikolova
RDMA/nes: Fix for resolving correctly the MAC address for loopback connection
(the patch should be applied on top of previous backports) 

Signed-off-by: Tatyana Nikolova 
---
 drivers/infiniband/hw/nes/nes_cm.c |5 +
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
index e3535c1..8a2c301 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -1363,11 +1363,8 @@ static int nes_addr_resolve_neigh(struct nes_vnic 
*nesvnic, u32 dst_ip, int arpi
else
netdev = nesvnic->netdev;
 
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, netdev);
-#else
-   neigh = dst_neigh_lookup(&rt->dst, &dst_ip);
-#endif
+
rcu_read_lock();
if (neigh) {
if (neigh->nud_state & NUD_VALID) {
-- 
1.7.4.2

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fix for TSO low nic throughput - linux-next-pending

2012-09-07 Thread Tatyana Nikolova
Fix for TSO low nic throughput with linux-3.5
skb_is_gso() is changed to bool and returns 1 instead of MSS.
The gso_size from skb_shared_info is now used to pass MSS to hardware.

(the patch is linux-next-pending) 
 
Signed-off-by: Tatyana Nikolova 
---
 drivers/infiniband/hw/nes/nes_nic.c |   28 +---
 1 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_nic.c 
b/drivers/infiniband/hw/nes/nes_nic.c
index 696b80e..5242294 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -388,18 +388,16 @@ static int nes_nic_send(struct sk_buff *skb, struct 
net_device *netdev)
 
if (skb->ip_summed == CHECKSUM_PARTIAL) {
tcph = tcp_hdr(skb);
-   if (1) {
-   if (skb_is_gso(skb)) {
-   /* nes_debug(NES_DBG_NIC_TX, "%s: TSO 
request... seg size = %u\n",
-   netdev->name, skb_is_gso(skb)); 
*/
-   wqe_misc |= NES_NIC_SQ_WQE_LSO_ENABLE |
-   NES_NIC_SQ_WQE_COMPLETION | 
(u16)skb_is_gso(skb);
-   set_wqe_32bit_value(nic_sqe->wqe_words, 
NES_NIC_SQ_WQE_LSO_INFO_IDX,
-   ((u32)tcph->doff) |
-   (((u32)(((unsigned char *)tcph) 
- skb->data)) << 4));
-   } else {
-   wqe_misc |= NES_NIC_SQ_WQE_COMPLETION;
-   }
+   if (skb_is_gso(skb)) {
+   nes_debug(NES_DBG_NIC_TX, "%s: TSO request... seg size 
= %u\n",
+   netdev->name, 
skb_shinfo(skb)->gso_size);
+   wqe_misc |= NES_NIC_SQ_WQE_LSO_ENABLE |
+   NES_NIC_SQ_WQE_COMPLETION | 
(u16)skb_shinfo(skb)->gso_size;
+   set_wqe_32bit_value(nic_sqe->wqe_words, 
NES_NIC_SQ_WQE_LSO_INFO_IDX,
+   ((u32)tcph->doff) |
+   (((u32)(((unsigned char *)tcph) - 
skb->data)) << 4));
+   } else {
+   wqe_misc |= NES_NIC_SQ_WQE_COMPLETION;
}
} else {/* CHECKSUM_HW */
wqe_misc |= NES_NIC_SQ_WQE_DISABLE_CHKSUM | 
NES_NIC_SQ_WQE_COMPLETION;
@@ -600,7 +598,7 @@ tso_sq_no_longer_full:
" (%u frags), 
tso_size=%u\n",
netdev->name,
skb->len, 
skb_headlen(skb),
-   
skb_shinfo(skb)->nr_frags, skb_is_gso(skb));
+   
skb_shinfo(skb)->nr_frags, skb_shinfo(skb)->gso_size);
}

memcpy(&nesnic->first_frag_vbase[nesnic->sq_head].buffer,
skb->data, min(((unsigned 
int)NES_FIRST_FRAG_SIZE),
@@ -652,8 +650,8 @@ tso_sq_no_longer_full:
} else {
nesnic->tx_skb[nesnic->sq_head] = NULL;
}
-   wqe_misc |= NES_NIC_SQ_WQE_COMPLETION | 
(u16)skb_is_gso(skb);
-   if ((tso_wqe_length + original_first_length) > 
skb_is_gso(skb)) {
+   wqe_misc |= NES_NIC_SQ_WQE_COMPLETION | 
(u16)skb_shinfo(skb)->gso_size;
+   if ((tso_wqe_length + original_first_length) > 
skb_shinfo(skb)->gso_size) {
wqe_misc |= NES_NIC_SQ_WQE_LSO_ENABLE;
} else {
iph->tot_len = htons(tso_wqe_length + 
original_first_length - nhoffset);
-- 
1.7.4.2

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Loopback clean up - linux-next-pending

2012-09-07 Thread Tatyana Nikolova
Necessary clean up for the loopback code 

(the patch is linux-next-pending) 

Signed-off-by: Tatyana Nikolova 
---
 drivers/infiniband/hw/nes/nes_cm.c |   30 ++
 1 files changed, 6 insertions(+), 24 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
index 0b5b1a9..e3535c1 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -1475,12 +1475,8 @@ static struct nes_cm_node *make_cm_node(struct 
nes_cm_core *cm_core,
cm_node->loopbackpartner = NULL;
 
/* get the mac addr for the remote node */
-   if (ipv4_is_loopback(htonl(cm_node->rem_addr))) {
-   arpindex = nes_arp_table(nesdev, ntohl(nesvnic->local_ipaddr), 
NULL, NES_ARP_RESOLVE);
-   } else {
-   oldarpindex = nes_arp_table(nesdev, cm_node->rem_addr, NULL, 
NES_ARP_RESOLVE);
-   arpindex = nes_addr_resolve_neigh(nesvnic, cm_info->rem_addr, 
oldarpindex);
-   }
+   oldarpindex = nes_arp_table(nesdev, cm_node->rem_addr, NULL, 
NES_ARP_RESOLVE);
+   arpindex = nes_addr_resolve_neigh(nesvnic, cm_info->rem_addr, 
oldarpindex);
if (arpindex < 0) {
kfree(cm_node);
return NULL;
@@ -3163,11 +3159,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct 
iw_cm_conn_param *conn_param)
nesqp->nesqp_context->tcpPorts[1] =
cpu_to_le16(ntohs(cm_id->remote_addr.sin_port));
 
-   if (ipv4_is_loopback(cm_id->remote_addr.sin_addr.s_addr))
-   nesqp->nesqp_context->ip0 =
-   cpu_to_le32(ntohl(nesvnic->local_ipaddr));
-   else
-   nesqp->nesqp_context->ip0 =
+   nesqp->nesqp_context->ip0 =
cpu_to_le32(ntohl(cm_id->remote_addr.sin_addr.s_addr));
 
nesqp->nesqp_context->misc2 |= cpu_to_le32(
@@ -3192,10 +3184,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct 
iw_cm_conn_param *conn_param)
memset(&nes_quad, 0, sizeof(nes_quad));
nes_quad.DstIpAdrIndex =
cpu_to_le32((u32)PCI_FUNC(nesdev->pcidev->devfn) << 24);
-   if (ipv4_is_loopback(cm_id->remote_addr.sin_addr.s_addr))
-   nes_quad.SrcIpadr = nesvnic->local_ipaddr;
-   else
-   nes_quad.SrcIpadr = cm_id->remote_addr.sin_addr.s_addr;
+   nes_quad.SrcIpadr = cm_id->remote_addr.sin_addr.s_addr;
nes_quad.TcpPorts[0] = cm_id->remote_addr.sin_port;
nes_quad.TcpPorts[1] = cm_id->local_addr.sin_port;
 
@@ -3548,11 +3537,7 @@ static void cm_event_connected(struct nes_cm_event 
*event)
cpu_to_le16(ntohs(cm_id->local_addr.sin_port));
nesqp->nesqp_context->tcpPorts[1] =
cpu_to_le16(ntohs(cm_id->remote_addr.sin_port));
-   if (ipv4_is_loopback(cm_id->remote_addr.sin_addr.s_addr))
-   nesqp->nesqp_context->ip0 =
-   cpu_to_le32(ntohl(nesvnic->local_ipaddr));
-   else
-   nesqp->nesqp_context->ip0 =
+   nesqp->nesqp_context->ip0 =
cpu_to_le32(ntohl(cm_id->remote_addr.sin_addr.s_addr));
 
nesqp->nesqp_context->misc2 |= cpu_to_le32(
@@ -3581,10 +3566,7 @@ static void cm_event_connected(struct nes_cm_event 
*event)
 
nes_quad.DstIpAdrIndex =
cpu_to_le32((u32)PCI_FUNC(nesdev->pcidev->devfn) << 24);
-   if (ipv4_is_loopback(cm_id->remote_addr.sin_addr.s_addr))
-   nes_quad.SrcIpadr = nesvnic->local_ipaddr;
-   else
-   nes_quad.SrcIpadr = cm_id->remote_addr.sin_addr.s_addr;
+   nes_quad.SrcIpadr = cm_id->remote_addr.sin_addr.s_addr;
nes_quad.TcpPorts[0] = cm_id->remote_addr.sin_port;
nes_quad.TcpPorts[1] = cm_id->local_addr.sin_port;
 
-- 
1.7.4.2

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Updated backports

2012-08-25 Thread Tatyana Nikolova
OFED-3.5/NES: Updated backports to be applied on top of the previously 
submitted backport patch.

Signed-off-by: Tatyana Nikolova 
---
 drivers/infiniband/hw/nes/nes_hw.c  |   11 
 drivers/infiniband/hw/nes/nes_hw.h  |3 ++
 drivers/infiniband/hw/nes/nes_nic.c |   49 --
 3 files changed, 54 insertions(+), 9 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_hw.c 
b/drivers/infiniband/hw/nes/nes_hw.c
index d42c9f4..151cefe 100644
--- a/drivers/infiniband/hw/nes/nes_hw.c
+++ b/drivers/infiniband/hw/nes/nes_hw.c
@@ -2951,7 +2951,18 @@ void nes_nic_ce_handler(struct nes_device *nesdev, 
struct nes_hw_nic_cq *cq)
nes_debug(NES_DBG_CQ, "%s: Reporting 
stripped VLAN packet. Tag = 0x%04X\n",
nesvnic->netdev->name, 
vlan_tag);
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
+   if (nesvnic->vlan_grp != NULL) {
+   if (nes_use_lro)
+   
lro_vlan_hwaccel_receive_skb(&nesvnic->lro_mgr, rx_skb,
+   
nesvnic->vlan_grp, vlan_tag, NULL);
+   else
+   
vlan_hwaccel_receive_skb(rx_skb, nesvnic->vlan_grp, vlan_tag);
+   goto skip_rx_indicate0;
+   }
+#endif
__vlan_hwaccel_put_tag(rx_skb, 
vlan_tag);
+
}
if (nes_use_lro)
lro_receive_skb(&nesvnic->lro_mgr, 
rx_skb, NULL);
diff --git a/drivers/infiniband/hw/nes/nes_hw.h 
b/drivers/infiniband/hw/nes/nes_hw.h
index d748e4b..b4a31de 100644
--- a/drivers/infiniband/hw/nes/nes_hw.h
+++ b/drivers/infiniband/hw/nes/nes_hw.h
@@ -1236,6 +1236,9 @@ struct nes_vnic {
/* void *mem; */
struct nes_device *nesdev;
struct net_device *netdev;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
+   struct vlan_group *vlan_grp;
+#endif
atomic_t  rx_skbs_needed;
atomic_t  rx_skb_timer_running;
int   budget;
diff --git a/drivers/infiniband/hw/nes/nes_nic.c 
b/drivers/infiniband/hw/nes/nes_nic.c
index 8544d0a..864469f 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -1597,6 +1597,33 @@ static const struct ethtool_ops nes_ethtool_ops = {
.set_pauseparam = nes_netdev_set_pauseparam,
 };
 
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
+static void nes_netdev_vlan_rx_register(struct net_device *netdev, struct 
vlan_group *grp)
+{
+   struct nes_vnic *nesvnic = netdev_priv(netdev);
+   struct nes_device *nesdev = nesvnic->nesdev;
+   struct nes_adapter *nesadapter = nesdev->nesadapter;
+   u32 u32temp;
+   unsigned long flags;
+
+   spin_lock_irqsave(&nesadapter->phy_lock, flags);
+   nesvnic->vlan_grp = grp;
+
+   nes_debug(NES_DBG_NETDEV, "%s: %s\n", __func__, netdev->name);
+
+   /* Enable/Disable VLAN Stripping */
+   u32temp = nes_read_indexed(nesdev, NES_IDX_PCIX_DIAG);
+   if (grp)
+   u32temp &= 0xfdff;
+   else
+   u32temp |= 0x0200;
+
+   nes_write_indexed(nesdev, NES_IDX_PCIX_DIAG, u32temp);
+   spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
+}
+#endif
+
 static void nes_vlan_mode(struct net_device *netdev, struct nes_device 
*nesdev, netdev_features_t features)
 {
struct nes_adapter *nesadapter = nesdev->nesadapter;
@@ -1618,6 +1645,7 @@ static void nes_vlan_mode(struct net_device *netdev, 
struct nes_device *nesdev,
spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
 }
 
+
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
 static netdev_features_t nes_fix_features(struct net_device *netdev, 
netdev_features_t features)
 {
@@ -1656,6 +1684,9 @@ static const struct net_device_ops nes_netdev_ops = {
.ndo_set_rx_mode= nes_netdev_set_multicast_list,
.ndo_change_mtu = nes_netdev_change_mtu,
.ndo_validate_addr  = eth_validate_addr,
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
+   .ndo_vlan_rx_register   = nes_netdev_vlan_rx_register,
+#endif
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
.ndo_fix_features   = nes_fix_features,
.ndo_set_features   = nes_set_features,
@@ -1691,12 +1722,10 @@ struct net_device *nes_netdev_init(struct nes_device 
*nesdev,
netdev->hard_header_len = ETH_HLEN;
netdev->addr_len = ETH_ALEN;
netdev->type = ARPHRD_ETHER;
-   netdev->f

[ewg] [PATCH] RDMA/ucma.c: Different fix for ucma context uid=0, causing iWarp RDMA applications to fail in connection establishment

2012-08-07 Thread Tatyana Nikolova
Fix for ucma context uid=0, causing iWarp RDMA applications to fail in 
connection establishment.

This is a new patch addressing the librdmacm segfault when 
RDMA_CM_EVENT_ESTABLISHED event shows up with evt->id_priv = NULL
In the ucma_event_handler(), ctx->file->mut is moved up to prevent race 
conditions and protect from assigning zero ucma ctx->uid to asynchronously 
generated events.

Signed-off-by: Tatyana Nikolova 
Signed-off-by: Sean Hefty 
---
 drivers/infiniband/core/ucma.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index 8002ae6..88c50d2 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -267,6 +267,7 @@ static int ucma_event_handler(struct rdma_cm_id *cm_id,
if (!uevent)
return event->event == RDMA_CM_EVENT_CONNECT_REQUEST;
 
+   mutex_lock(&ctx->file->mut);
uevent->cm_id = cm_id;
ucma_set_event_context(ctx, event, uevent);
uevent->resp.event = event->event;
@@ -277,7 +278,6 @@ static int ucma_event_handler(struct rdma_cm_id *cm_id,
ucma_copy_conn_event(&uevent->resp.param.conn,
 &event->param.conn);
 
-   mutex_lock(&ctx->file->mut);
if (event->event == RDMA_CM_EVENT_CONNECT_REQUEST) {
if (!ctx->backlog) {
ret = -ENOMEM;
-- 
1.7.4.2

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/ucma.c: Fix for ucma context uid=0, causing iWarp RDMA applications to fail in connection establishment

2012-08-02 Thread Tatyana Nikolova
Fix for ucma context uid=0, causing iWarp RDMA applications to fail in 
connection establishment.

If the context uid is not set before calling rdma_accept(), the 
RDMA_CM_EVENT_ESTABLISHED event generated asynchronously by successfull 
rdma_accept ends up with zero ucma context uid, resulting in segfault at 
librdmacm.so 

Signed-off-by: Tatyana Nikolova 
---
 drivers/infiniband/core/ucma.c |3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index 8002ae6..6cc40de 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -803,9 +803,8 @@ static ssize_t ucma_accept(struct ucma_file *file, const 
char __user *inbuf,
if (cmd.conn_param.valid) {
ucma_copy_conn_param(&conn_param, &cmd.conn_param);
mutex_lock(&file->mut);
+   ctx->uid = cmd.uid;
ret = rdma_accept(ctx->cm_id, &conn_param);
-   if (!ret)
-   ctx->uid = cmd.uid;
mutex_unlock(&file->mut);
} else
ret = rdma_accept(ctx->cm_id, NULL);
-- 
1.7.4.2

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] compat-rdma-3.5: Changes to makefile

2012-07-24 Thread Tatyana Nikolova
CONFIG_COMPAT_SKB_FRAG_NEEDED is defined in the makefile. 
It is necessary for kernels < linux-3.2 except for RHEL 6.3 
(linux-2.6.32-279.el6) where CONFIG_COMPAT_SKB_FRAG_NEEDED should not be 
defined.

Signed-off-by: Tatyana Nikolova 
---
 makefile |7 +++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/makefile b/makefile
index 19a668c..d609f23 100644
--- a/makefile
+++ b/makefile
@@ -54,6 +54,12 @@ ifneq ($(kconfig_h),)
 KCONFIG_H = -include $(kconfig_h)
 endif
 
+#ifdef CONFIG_COMPAT_KERNEL_3_2
+ifneq ("$(KVERSION)","2.6.32-279.el6.x86_64")
+COMPAT_3_2_SKB_FRAG = 1
+endif
+#endif
+
 V ?= 1
 
 #
@@ -137,6 +143,7 @@ kernel:
-I$(CWD)/drivers/infiniband/ulp/srpt \
$$(if 
$$(CONFIG_XEN),-D__XEN_INTERFACE_VERSION__=$$(CONFIG_XEN_INTERFACE_VERSION)) \
$$(if $$(CONFIG_XEN),-I$$(srctree)/arch/x86/include/mach-xen) \
+   $$(if $$(COMPAT_3_2_SKB_FRAG),-DCONFIG_COMPAT_SKB_FRAG_NEEDED) \
-I$$(srctree)/arch/$$(SRCARCH)/include \
-Iarch/$$(SRCARCH)/include/generated -Iinclude \
$$(if $$(KBUILD_SRC),-Iinclude2 -I$$(srctree)/include) \
-- 
1.7.4.2

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] compat-rdma-3.5: Changes to makefile

2012-07-24 Thread Tatyana Nikolova
CONFIG_COMPAT_SKB_FRAG_NEEDED is defined in the makefile. 
It is necessary for kernels < linux-3.2 except for RHEL 6.3 
(linux-2.6.32-279.el6) where CONFIG_COMPAT_SKB_FRAG_NEEDED should not be 
defined.

Signed-off-by: Tatyana Nikolova 
---
 makefile |7 +++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/makefile b/makefile
index 19a668c..d609f23 100644
--- a/makefile
+++ b/makefile
@@ -54,6 +54,12 @@ ifneq ($(kconfig_h),)
 KCONFIG_H = -include $(kconfig_h)
 endif
 
+#ifdef CONFIG_COMPAT_KERNEL_3_2
+ifneq ("$(KVERSION)","2.6.32-279.el6.x86_64")
+COMPAT_3_2_SKB_FRAG = 1
+endif
+#endif
+
 V ?= 1
 
 #
@@ -137,6 +143,7 @@ kernel:
-I$(CWD)/drivers/infiniband/ulp/srpt \
$$(if 
$$(CONFIG_XEN),-D__XEN_INTERFACE_VERSION__=$$(CONFIG_XEN_INTERFACE_VERSION)) \
$$(if $$(CONFIG_XEN),-I$$(srctree)/arch/x86/include/mach-xen) \
+   $$(if $$(COMPAT_3_2_SKB_FRAG),-DCONFIG_COMPAT_SKB_FRAG_NEEDED) \
-I$$(srctree)/arch/$$(SRCARCH)/include \
-Iarch/$$(SRCARCH)/include/generated -Iinclude \
$$(if $$(KBUILD_SRC),-Iinclude2 -I$$(srctree)/include) \
-- 
1.7.4.2

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Backports for RHEL 6.2 and 6.3

2012-07-13 Thread Tatyana Nikolova
Backports for linux-3.5 nes to RHEL-6.2 and RHEL-6.3 

Signed-off-by: Tatyana Nikolova 
---
 drivers/infiniband/hw/nes/nes_cm.c  |   12 +++-
 drivers/infiniband/hw/nes/nes_nic.c |   26 +++---
 2 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
index 020e95c..0b5b1a9 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -1343,9 +1343,16 @@ static int nes_addr_resolve_neigh(struct nes_vnic 
*nesvnic, u32 dst_ip, int arpi
int rc = arpindex;
struct net_device *netdev;
struct nes_adapter *nesadapter = nesvnic->nesdev->nesadapter;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
+   struct flowi fl;
 
+   memset(&fl, 0, sizeof fl);
+   fl.nl_u.ip4_u.daddr = htonl(dst_ip);
+   if (ip_route_output_key(&init_net, &rt, &fl)) {
+#else
rt = ip_route_output(&init_net, htonl(dst_ip), 0, 0, 0);
if (IS_ERR(rt)) {
+#endif
printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n",
   __func__, dst_ip);
return rc;
@@ -1356,8 +1363,11 @@ static int nes_addr_resolve_neigh(struct nes_vnic 
*nesvnic, u32 dst_ip, int arpi
else
netdev = nesvnic->netdev;
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
+   neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, netdev);
+#else
neigh = dst_neigh_lookup(&rt->dst, &dst_ip);
-
+#endif
rcu_read_lock();
if (neigh) {
if (neigh->nud_state & NUD_VALID) {
diff --git a/drivers/infiniband/hw/nes/nes_nic.c 
b/drivers/infiniband/hw/nes/nes_nic.c
index f3a3ecf..8544d0a 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -909,7 +909,11 @@ static void nes_netdev_set_multicast_list(struct 
net_device *netdev)
if (!mc_all_on) {
char *addrs;
int i;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
struct netdev_hw_addr *ha;
+#else
+   struct dev_mc_list *mcaddr;
+#endif
 
addrs = kmalloc(ETH_ALEN * mc_count, GFP_ATOMIC);
if (!addrs) {
@@ -917,9 +921,13 @@ static void nes_netdev_set_multicast_list(struct 
net_device *netdev)
goto unlock;
}
i = 0;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
netdev_for_each_mc_addr(ha, netdev)
memcpy(get_addr(addrs, i++), ha->addr, ETH_ALEN);
-
+#else
+   netdev_for_each_mc_addr(mcaddr, netdev)
+   memcpy(get_addr(addrs, i++), mcaddr->dmi_addr, 
ETH_ALEN);
+#endif
perfect_filter_register_address = NES_IDX_PERFECT_FILTER_LOW +
pft_entries_preallocated * 0x8;
for (i = 0, mc_index = 0; mc_index < max_pft_entries_avaiable;
@@ -1610,6 +1618,7 @@ static void nes_vlan_mode(struct net_device *netdev, 
struct nes_device *nesdev,
spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
 }
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
 static netdev_features_t nes_fix_features(struct net_device *netdev, 
netdev_features_t features)
 {
/*
@@ -1635,6 +1644,7 @@ static int nes_set_features(struct net_device *netdev, 
netdev_features_t feature
 
return 0;
 }
+#endif
 
 static const struct net_device_ops nes_netdev_ops = {
.ndo_open   = nes_netdev_open,
@@ -1646,8 +1656,10 @@ static const struct net_device_ops nes_netdev_ops = {
.ndo_set_rx_mode= nes_netdev_set_multicast_list,
.ndo_change_mtu = nes_netdev_change_mtu,
.ndo_validate_addr  = eth_validate_addr,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
.ndo_fix_features   = nes_fix_features,
.ndo_set_features   = nes_set_features,
+#endif
 };
 
 /**
@@ -1711,12 +1723,20 @@ struct net_device *nes_netdev_init(struct nes_device 
*nesdev,
netdev->dev_addr[5] = (u8)u64temp;
memcpy(netdev->perm_addr, netdev->dev_addr, 6);
 
+   netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
netdev->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM |
  NETIF_F_HW_VLAN_RX;
-   if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != 
NE020_REV))
-   netdev->hw_features |= NETIF_F_TSO;
netdev->features |= netdev->hw_features;
netdev->hw_features |= NETIF_F_LRO;
+#endif
+   if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != 
NE020_REV)) {
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+   netdev->hw_features |

[ewg] [PATCH] RDMA/nes: Backport for RHEL-6.3

2012-07-12 Thread Tatyana Nikolova
Backport for linux-3.5 nes to RHEL-6.3 

Signed-off-by: Tatyana Nikolova 
---
 drivers/infiniband/hw/nes/nes_cm.c  |8 +++--
 drivers/infiniband/hw/nes/nes_nic.c |   51 +++
 2 files changed, 15 insertions(+), 44 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
index 020e95c..68dbf10 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -1339,13 +1339,15 @@ static inline int mini_cm_accelerated(struct 
nes_cm_core *cm_core,
 static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int 
arpindex)
 {
struct rtable *rt;
+   struct flowi fl;
struct neighbour *neigh;
int rc = arpindex;
struct net_device *netdev;
struct nes_adapter *nesadapter = nesvnic->nesdev->nesadapter;
 
-   rt = ip_route_output(&init_net, htonl(dst_ip), 0, 0, 0);
-   if (IS_ERR(rt)) {
+   memset(&fl, 0, sizeof fl);
+   fl.nl_u.ip4_u.daddr = htonl(dst_ip);
+   if (ip_route_output_key(&init_net, &rt, &fl)) {
printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n",
   __func__, dst_ip);
return rc;
@@ -1356,7 +1358,7 @@ static int nes_addr_resolve_neigh(struct nes_vnic 
*nesvnic, u32 dst_ip, int arpi
else
netdev = nesvnic->netdev;
 
-   neigh = dst_neigh_lookup(&rt->dst, &dst_ip);
+   neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, netdev);
 
rcu_read_lock();
if (neigh) {
diff --git a/drivers/infiniband/hw/nes/nes_nic.c 
b/drivers/infiniband/hw/nes/nes_nic.c
index f3a3ecf..c7a2f78 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -909,7 +909,7 @@ static void nes_netdev_set_multicast_list(struct net_device 
*netdev)
if (!mc_all_on) {
char *addrs;
int i;
-   struct netdev_hw_addr *ha;
+   struct dev_mc_list *mcaddr;
 
addrs = kmalloc(ETH_ALEN * mc_count, GFP_ATOMIC);
if (!addrs) {
@@ -917,8 +917,8 @@ static void nes_netdev_set_multicast_list(struct net_device 
*netdev)
goto unlock;
}
i = 0;
-   netdev_for_each_mc_addr(ha, netdev)
-   memcpy(get_addr(addrs, i++), ha->addr, ETH_ALEN);
+   netdev_for_each_mc_addr(mcaddr, netdev)
+   memcpy(get_addr(addrs, i++), mcaddr->dmi_addr, 
ETH_ALEN);
 
perfect_filter_register_address = NES_IDX_PERFECT_FILTER_LOW +
pft_entries_preallocated * 0x8;
@@ -1589,7 +1589,7 @@ static const struct ethtool_ops nes_ethtool_ops = {
.set_pauseparam = nes_netdev_set_pauseparam,
 };
 
-static void nes_vlan_mode(struct net_device *netdev, struct nes_device 
*nesdev, netdev_features_t features)
+static void nes_vlan_mode(struct net_device *netdev, struct nes_device *nesdev)
 {
struct nes_adapter *nesadapter = nesdev->nesadapter;
u32 u32temp;
@@ -1601,7 +1601,7 @@ static void nes_vlan_mode(struct net_device *netdev, 
struct nes_device *nesdev,
 
/* Enable/Disable VLAN Stripping */
u32temp = nes_read_indexed(nesdev, NES_IDX_PCIX_DIAG);
-   if (features & NETIF_F_HW_VLAN_RX)
+   if (netdev->features & NETIF_F_HW_VLAN_RX)
u32temp &= 0xfdff;
else
u32temp |= 0x0200;
@@ -1610,32 +1610,6 @@ static void nes_vlan_mode(struct net_device *netdev, 
struct nes_device *nesdev,
spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
 }
 
-static netdev_features_t nes_fix_features(struct net_device *netdev, 
netdev_features_t features)
-{
-   /*
-* Since there is no support for separate rx/tx vlan accel
-* enable/disable make sure tx flag is always in same state as rx.
-*/
-   if (features & NETIF_F_HW_VLAN_RX)
-   features |= NETIF_F_HW_VLAN_TX;
-   else
-   features &= ~NETIF_F_HW_VLAN_TX;
-
-   return features;
-}
-
-static int nes_set_features(struct net_device *netdev, netdev_features_t 
features)
-{
-   struct nes_vnic *nesvnic = netdev_priv(netdev);
-   struct nes_device *nesdev = nesvnic->nesdev;
-   u32 changed = netdev->features ^ features;
-
-   if (changed & NETIF_F_HW_VLAN_RX)
-   nes_vlan_mode(netdev, nesdev, features);
-
-   return 0;
-}
-
 static const struct net_device_ops nes_netdev_ops = {
.ndo_open   = nes_netdev_open,
.ndo_stop   = nes_netdev_stop,
@@ -1646,8 +1620,6 @@ static const struct net_device_ops nes_netdev_ops = {
.ndo_set_rx_mode= nes_netdev_set_multicast_list,
.ndo_change_mtu = nes_netdev_chang

[ewg] [PATCH] RDMA/nes: Backport for RHEL-6.2

2012-07-12 Thread Tatyana Nikolova
Backport for linux-3.5 nes to RHEL-6.2

Signed-off-by: Tatyana Nikolova 
---
 drivers/infiniband/hw/nes/nes_cm.c  |8 --
 drivers/infiniband/hw/nes/nes_nic.c |   45 +-
 2 files changed, 12 insertions(+), 41 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
index 020e95c..68dbf10 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -1339,13 +1339,15 @@ static inline int mini_cm_accelerated(struct 
nes_cm_core *cm_core,
 static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int 
arpindex)
 {
struct rtable *rt;
+   struct flowi fl;
struct neighbour *neigh;
int rc = arpindex;
struct net_device *netdev;
struct nes_adapter *nesadapter = nesvnic->nesdev->nesadapter;
 
-   rt = ip_route_output(&init_net, htonl(dst_ip), 0, 0, 0);
-   if (IS_ERR(rt)) {
+   memset(&fl, 0, sizeof fl);
+   fl.nl_u.ip4_u.daddr = htonl(dst_ip);
+   if (ip_route_output_key(&init_net, &rt, &fl)) {
printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n",
   __func__, dst_ip);
return rc;
@@ -1356,7 +1358,7 @@ static int nes_addr_resolve_neigh(struct nes_vnic 
*nesvnic, u32 dst_ip, int arpi
else
netdev = nesvnic->netdev;
 
-   neigh = dst_neigh_lookup(&rt->dst, &dst_ip);
+   neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, netdev);
 
rcu_read_lock();
if (neigh) {
diff --git a/drivers/infiniband/hw/nes/nes_nic.c 
b/drivers/infiniband/hw/nes/nes_nic.c
index f3a3ecf..d2d9e6f 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -909,7 +909,7 @@ static void nes_netdev_set_multicast_list(struct net_device 
*netdev)
if (!mc_all_on) {
char *addrs;
int i;
-   struct netdev_hw_addr *ha;
+   struct dev_mc_list *mcaddr;
 
addrs = kmalloc(ETH_ALEN * mc_count, GFP_ATOMIC);
if (!addrs) {
@@ -917,8 +917,8 @@ static void nes_netdev_set_multicast_list(struct net_device 
*netdev)
goto unlock;
}
i = 0;
-   netdev_for_each_mc_addr(ha, netdev)
-   memcpy(get_addr(addrs, i++), ha->addr, ETH_ALEN);
+   netdev_for_each_mc_addr(mcaddr, netdev)
+   memcpy(get_addr(addrs, i++), mcaddr->dmi_addr, 
ETH_ALEN);
 
perfect_filter_register_address = NES_IDX_PERFECT_FILTER_LOW +
pft_entries_preallocated * 0x8;
@@ -1610,32 +1610,6 @@ static void nes_vlan_mode(struct net_device *netdev, 
struct nes_device *nesdev,
spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
 }
 
-static netdev_features_t nes_fix_features(struct net_device *netdev, 
netdev_features_t features)
-{
-   /*
-* Since there is no support for separate rx/tx vlan accel
-* enable/disable make sure tx flag is always in same state as rx.
-*/
-   if (features & NETIF_F_HW_VLAN_RX)
-   features |= NETIF_F_HW_VLAN_TX;
-   else
-   features &= ~NETIF_F_HW_VLAN_TX;
-
-   return features;
-}
-
-static int nes_set_features(struct net_device *netdev, netdev_features_t 
features)
-{
-   struct nes_vnic *nesvnic = netdev_priv(netdev);
-   struct nes_device *nesdev = nesvnic->nesdev;
-   u32 changed = netdev->features ^ features;
-
-   if (changed & NETIF_F_HW_VLAN_RX)
-   nes_vlan_mode(netdev, nesdev, features);
-
-   return 0;
-}
-
 static const struct net_device_ops nes_netdev_ops = {
.ndo_open   = nes_netdev_open,
.ndo_stop   = nes_netdev_stop,
@@ -1646,8 +1620,6 @@ static const struct net_device_ops nes_netdev_ops = {
.ndo_set_rx_mode= nes_netdev_set_multicast_list,
.ndo_change_mtu = nes_netdev_change_mtu,
.ndo_validate_addr  = eth_validate_addr,
-   .ndo_fix_features   = nes_fix_features,
-   .ndo_set_features   = nes_set_features,
 };
 
 /**
@@ -1711,13 +1683,10 @@ struct net_device *nes_netdev_init(struct nes_device 
*nesdev,
netdev->dev_addr[5] = (u8)u64temp;
memcpy(netdev->perm_addr, netdev->dev_addr, 6);
 
-   netdev->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM |
- NETIF_F_HW_VLAN_RX;
-   if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != 
NE020_REV))
-   netdev->hw_features |= NETIF_F_TSO;
-   netdev->features |= netdev->hw_features;
-   netdev->hw_features |= NETIF_F_LRO;
-
+   netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
+   if ((nesvni

[ewg] [PATCH] compat: Addition to compat-2.6.39.h

2012-05-30 Thread Tatyana Nikolova
backport netif_is_bond_slave() < 2.6.39

Signed-off-by: Tatyana Nikolova 
---
 include/linux/compat-2.6.39.h |5 +
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/include/linux/compat-2.6.39.h b/include/linux/compat-2.6.39.h
index 961e91c..92edbd4 100644
--- a/include/linux/compat-2.6.39.h
+++ b/include/linux/compat-2.6.39.h
@@ -8,6 +8,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #define tiocmget(tty) tiocmget(tty, NULL)
 #define tiocmset(tty, set, clear) tiocmset(tty, NULL, set, clear)
@@ -16,6 +17,10 @@
 extern int tty_set_termios(struct tty_struct *tty, struct ktermios *kt);
 #endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) */
 
+static inline int netif_is_bond_slave(struct net_device *dev)
+{
+   return dev->flags & IFF_SLAVE && dev->priv_flags & IFF_BONDING;
+}
 static inline int irq_set_irq_wake(unsigned int irq, unsigned int on)
 {
return set_irq_wake(irq, on);
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] compat-rdma/nes: Fixes

2012-05-30 Thread Tatyana Nikolova
Fixes for NES driver which have been accepted upstream.

Signed-off-by: Tatyana Nikolova 
---
 patches/nes-0001-Fix-for-mpa-reject.patch |   31 +
 patches/nes-0002-Fix-for-terminate-timer.patch|   37 +
 patches/nes-0003-Fix-for-ibqp-event-handler.patch |   25 ++
 patches/nes-0004-Fix-for-ord-size.patch   |   26 ++
 4 files changed, 119 insertions(+), 0 deletions(-)
 create mode 100644 patches/nes-0001-Fix-for-mpa-reject.patch
 create mode 100644 patches/nes-0002-Fix-for-terminate-timer.patch
 create mode 100644 patches/nes-0003-Fix-for-ibqp-event-handler.patch
 create mode 100644 patches/nes-0004-Fix-for-ord-size.patch

diff --git a/patches/nes-0001-Fix-for-mpa-reject.patch 
b/patches/nes-0001-Fix-for-mpa-reject.patch
new file mode 100644
index 000..8228f85
--- /dev/null
+++ b/patches/nes-0001-Fix-for-mpa-reject.patch
@@ -0,0 +1,31 @@
+Set a reject flag, when sending MPA reject message to inform the peer
+that the application has rejected the connection.
+
+Signed-off-by: Tatyana Nikolova 
+Signed-off-by: Faisal Latif 
+---
+
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index 47713f2..53c7e32 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -233,6 +233,7 @@ static int send_mpa_reject(struct nes_cm_node *cm_node)
+   u8 *start_ptr = &start_addr;
+   u8 **start_buff = &start_ptr;
+   u16 buff_len = 0;
++  struct ietf_mpa_v1 *mpa_frame;
+
+   skb = dev_alloc_skb(MAX_CM_BUFFER);
+   if (!skb) {
+@@ -242,6 +243,8 @@ static int send_mpa_reject(struct nes_cm_node *cm_node)
+
+   /* send an MPA reject frame */
+   cm_build_mpa_frame(cm_node, start_buff, &buff_len, NULL, MPA_KEY_REPLY);
++  mpa_frame = (struct ietf_mpa_v1 *)*start_buff;
++  mpa_frame->flags |= IETF_MPA_FLAGS_REJECT;
+   form_cm_frame(skb, cm_node, NULL, 0, *start_buff, buff_len, SET_ACK | 
SET_FIN);
+
+   cm_node->state = NES_CM_STATE_FIN_WAIT1;
+--
+1.7.1
+
diff --git a/patches/nes-0002-Fix-for-terminate-timer.patch 
b/patches/nes-0002-Fix-for-terminate-timer.patch
new file mode 100644
index 000..f45c178
--- /dev/null
+++ b/patches/nes-0002-Fix-for-terminate-timer.patch
@@ -0,0 +1,37 @@
+Fix for reset which happens right after sending a terminate message.
+Terminate timer is not deleted when the connection is closed.
+
+Signed-off-by: Tatyana Nikolova 
+Signed-off-by: Faisal Latif 
+---
+
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index fc050aa..793ccd6 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -2841,6 +2841,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
+   issue_disconn = 1;
+   issue_close = 1;
+   nesqp->cm_id = NULL;
++  del_timer(&nesqp->terminate_timer);
+   if (nesqp->flush_issued == 0) {
+   nesqp->flush_issued = 1;
+   issue_flush = 1;
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c 
b/drivers/infiniband/hw/nes/nes_hw.c
+index 355786c..5bcd645 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
 b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -3619,10 +3619,6 @@ static void nes_process_iwarp_aeqe(struct nes_device 
*nesdev,
+   }
+   break;
+   case NES_AEQE_AEID_LLP_CLOSE_COMPLETE:
+-  if (nesqp->term_flags) {
+-  nes_terminate_done(nesqp, 0);
+-  return;
+-  }
+   spin_lock_irqsave(&nesqp->lock, flags);
+   nesqp->hw_iwarp_state = iwarp_state;
+   nesqp->hw_tcp_state = tcp_state;
+--
+1.7.1
+
diff --git a/patches/nes-0003-Fix-for-ibqp-event-handler.patch 
b/patches/nes-0003-Fix-for-ibqp-event-handler.patch
new file mode 100644
index 000..9d3f2f4
--- /dev/null
+++ b/patches/nes-0003-Fix-for-ibqp-event-handler.patch
@@ -0,0 +1,25 @@
+Fix for ibqp event handler in the case it was NULL (not initialized by ULP).
+
+Signed-off-by: Tatyana Nikolova 
+Signed-off-by: Donald Wood 
+---
+ drivers/infiniband/hw/nes/nes_cm.c |3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index da2c67d..a9899b1 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -2878,7 +2878,8 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
+   ibevent.device = nesqp->ibqp.device;
+   ibevent.event = nesqp->terminate_eventtype;
+   ibevent.element.qp = &nesqp->ibqp;
+-  nesqp->ibqp.event_handler(&ibevent, 
nesqp-&g

[ewg] [PATCH] RDMA/nes: Fixes for Sparse Endian related warnings

2012-01-31 Thread Tatyana Nikolova
Fixes for Endian Sparse Warnings introduced with the enhanced MPA patch 

Reported-by: Dan Carpenter 
Signed-off-by: Tatyana Nikolova 
Signed-off-by: Faisal Latif 
---
 .../fixes/nes_0070_sparse_endian_fix.patch |   97 
 1 files changed, 97 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0070_sparse_endian_fix.patch

diff --git a/kernel_patches/fixes/nes_0070_sparse_endian_fix.patch 
b/kernel_patches/fixes/nes_0070_sparse_endian_fix.patch
new file mode 100644
index 000..59ee486
--- /dev/null
+++ b/kernel_patches/fixes/nes_0070_sparse_endian_fix.patch
@@ -0,0 +1,97 @@
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index a4972ab..da2c67d 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -338,18 +338,21 @@ static int parse_mpa(struct nes_cm_node *cm_node, u8 
*buffer, u32 *type,
+   case IETF_MPA_V2: {
+   u16 ird_size;
+   u16 ord_size;
++  u16 rtr_ctrl_ird;
++  u16 rtr_ctrl_ord;
++
+   mpa_v2_frame = (struct ietf_mpa_v2 *)buffer;
+   mpa_hdr_len += IETF_RTR_MSG_SIZE;
+   cm_node->mpa_frame_size -= IETF_RTR_MSG_SIZE;
+   rtr_msg = &mpa_v2_frame->rtr_msg;
+
+   /* parse rtr message */
+-  rtr_msg->ctrl_ird = ntohs(rtr_msg->ctrl_ird);
+-  rtr_msg->ctrl_ord = ntohs(rtr_msg->ctrl_ord);
+-  ird_size = rtr_msg->ctrl_ird & IETF_NO_IRD_ORD;
+-  ord_size = rtr_msg->ctrl_ord & IETF_NO_IRD_ORD;
++  rtr_ctrl_ird = ntohs(rtr_msg->ctrl_ird);
++  rtr_ctrl_ord = ntohs(rtr_msg->ctrl_ord);
++  ird_size = rtr_ctrl_ird & IETF_NO_IRD_ORD;
++  ord_size = rtr_ctrl_ord & IETF_NO_IRD_ORD;
+
+-  if (!(rtr_msg->ctrl_ird & IETF_PEER_TO_PEER)) {
++  if (!(rtr_ctrl_ird & IETF_PEER_TO_PEER)) {
+   /* send reset */
+   return -EINVAL;
+   }
+@@ -370,9 +373,9 @@ static int parse_mpa(struct nes_cm_node *cm_node, u8 
*buffer, u32 *type,
+   }
+   }
+
+-  if (rtr_msg->ctrl_ord & IETF_RDMA0_READ) {
++  if (rtr_ctrl_ord & IETF_RDMA0_READ) {
+   cm_node->send_rdma0_op = SEND_RDMA_READ_ZERO;
+-  } else if (rtr_msg->ctrl_ord & IETF_RDMA0_WRITE) {
++  } else if (rtr_ctrl_ord & IETF_RDMA0_WRITE) {
+   cm_node->send_rdma0_op = SEND_RDMA_WRITE_ZERO;
+   } else {/* Not supported RDMA0 operation */
+   return -EINVAL;
+@@ -543,6 +546,8 @@ static void build_mpa_v2(struct nes_cm_node *cm_node,
+ {
+   struct ietf_mpa_v2 *mpa_frame = (struct ietf_mpa_v2 *)start_addr;
+   struct ietf_rtr_msg *rtr_msg = &mpa_frame->rtr_msg;
++  u16 ctrl_ird;
++  u16 ctrl_ord;
+
+   /* initialize the upper 5 bytes of the frame */
+   build_mpa_v1(cm_node, start_addr, mpa_key);
+@@ -550,31 +555,31 @@ static void build_mpa_v2(struct nes_cm_node *cm_node,
+   mpa_frame->priv_data_len += htons(IETF_RTR_MSG_SIZE);
+
+   /* initialize RTR msg */
+-  rtr_msg->ctrl_ird = (cm_node->ird_size > IETF_NO_IRD_ORD) ?
++  ctrl_ird = (cm_node->ird_size > IETF_NO_IRD_ORD) ?
+   IETF_NO_IRD_ORD : cm_node->ird_size;
+-  rtr_msg->ctrl_ord = (cm_node->ord_size > IETF_NO_IRD_ORD) ?
++  ctrl_ord = (cm_node->ord_size > IETF_NO_IRD_ORD) ?
+   IETF_NO_IRD_ORD : cm_node->ord_size;
+
+-  rtr_msg->ctrl_ird |= IETF_PEER_TO_PEER;
+-  rtr_msg->ctrl_ird |= IETF_FLPDU_ZERO_LEN;
++  ctrl_ird |= IETF_PEER_TO_PEER;
++  ctrl_ird |= IETF_FLPDU_ZERO_LEN;
+
+   switch (mpa_key) {
+   case MPA_KEY_REQUEST:
+-  rtr_msg->ctrl_ord |= IETF_RDMA0_WRITE;
+-  rtr_msg->ctrl_ord |= IETF_RDMA0_READ;
++  ctrl_ord |= IETF_RDMA0_WRITE;
++  ctrl_ord |= IETF_RDMA0_READ;
+   break;
+   case MPA_KEY_REPLY:
+   switch (cm_node->send_rdma0_op) {
+   case SEND_RDMA_WRITE_ZERO:
+-  rtr_msg->ctrl_ord |= IETF_RDMA0_WRITE;
++  ctrl_ord |= IETF_RDMA0_WRITE;
+   break;
+   case SEND_RDMA_READ_ZERO:
+-  rtr_msg->ctrl_ord |= IETF_RDMA0_READ;
++  ctrl_ord |= IETF_RDMA0_READ;
+   break;
+   }
+   }
+-  rtr_msg->ctrl_ird = htons(rtr_msg->ctrl_ird);
+-  rtr_msg->ctrl_ord = htons(rtr_msg->ctrl_ord);
++  rtr_msg->ctrl_ird = htons(ctrl_ird);
++  rtr_msg->ctrl_ord = htons(ctrl_ord);
+ }
+
+ /**
+--
+1.7.1
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Update nes release notes

2012-01-23 Thread Tatyana Nikolova
Update nes_release_notes.txt for OFED-1.5.4.1

Signed-off-by: Tatyana Nikolova 
Signed-off-by: Faisal Latif 
---
 release_notes/nes_release_notes.txt |9 -
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/release_notes/nes_release_notes.txt 
b/release_notes/nes_release_notes.txt
index 6033895..bfbe7b8 100644
--- a/release_notes/nes_release_notes.txt
+++ b/release_notes/nes_release_notes.txt
@@ -1,6 +1,6 @@
 Open Fabrics Enterprise Distribution (OFED)
   NetEffect Ethernet Cluster Server Adapter Release Notes
-   November 2011
+   January 2012
 
 
 
@@ -10,6 +10,13 @@ support for the NetEffect Ethernet Cluster Server Adapters.
 ==
 What's New
 ==
+
+OFED 1.5.4.1 contains bug fixes for iw_nes driver.
+
+* Fixed a problem with QP destroy timer and improved AE handling.
+* Fixed a problem with sending MPA reject message.
+* Fixed fast memory registration issues.
+
 OFED 1.5.4 contains several enhancements and bug fixes to iw_nes driver.
 
 * Added backports for 2.6.35 to 3.0 kernels.
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fix for sending MPA reject frame

2012-01-17 Thread Tatyana Nikolova
Set a reject flag, when sending MPA reject message to inform the peer
that the application has rejected the connection.

Signed-off-by: Tatyana Nikolova 
Signed-off-by: Faisal Latif 
---
 kernel_patches/fixes/nes_0069_mpa_reject_fix.patch |   24 
 1 files changed, 24 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0069_mpa_reject_fix.patch

diff --git a/kernel_patches/fixes/nes_0069_mpa_reject_fix.patch 
b/kernel_patches/fixes/nes_0069_mpa_reject_fix.patch
new file mode 100644
index 000..1f06b88
--- /dev/null
+++ b/kernel_patches/fixes/nes_0069_mpa_reject_fix.patch
@@ -0,0 +1,24 @@
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index 47713f2..53c7e32 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -233,6 +233,7 @@ static int send_mpa_reject(struct nes_cm_node *cm_node)
+   u8 *start_ptr = &start_addr;
+   u8 **start_buff = &start_ptr;
+   u16 buff_len = 0;
++  struct ietf_mpa_v1 *mpa_frame;
+
+   skb = dev_alloc_skb(MAX_CM_BUFFER);
+   if (!skb) {
+@@ -242,6 +243,8 @@ static int send_mpa_reject(struct nes_cm_node *cm_node)
+
+   /* send an MPA reject frame */
+   cm_build_mpa_frame(cm_node, start_buff, &buff_len, NULL, MPA_KEY_REPLY);
++  mpa_frame = (struct ietf_mpa_v1 *)*start_buff;
++  mpa_frame->flags |= IETF_MPA_FLAGS_REJECT;
+   form_cm_frame(skb, cm_node, NULL, 0, *start_buff, buff_len, SET_ACK | 
SET_FIN);
+
+   cm_node->state = NES_CM_STATE_FIN_WAIT1;
+--
+1.7.1
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fix for fast memory registration opcode

2012-01-06 Thread Tatyana Nikolova
Fixes fast memory registration incorrect opcode for local 
invalidate completion.

Signed-off-by: Tatyana Nikolova 
Signed-off-by: Donald Wood 
---
 kernel_patches/fixes/nes_0068_fmr_compl_fix.patch |   16 
 1 files changed, 16 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0068_fmr_compl_fix.patch

diff --git a/kernel_patches/fixes/nes_0068_fmr_compl_fix.patch 
b/kernel_patches/fixes/nes_0068_fmr_compl_fix.patch
new file mode 100644
index 000..0108b94
--- /dev/null
+++ b/kernel_patches/fixes/nes_0068_fmr_compl_fix.patch
@@ -0,0 +1,16 @@
+diff --git a/drivers/infiniband/hw/nes/nes_verbs.c 
b/drivers/infiniband/hw/nes/nes_verbs.c
+index d33f563..bd09a19 100644
+--- a/drivers/infiniband/hw/nes/nes_verbs.c
 b/drivers/infiniband/hw/nes/nes_verbs.c
+@@ -3947,7 +3949,7 @@ static int nes_poll_cq(struct ib_cq *ibcq, int 
num_entries, struct ib_wc *entry)
+   entry->opcode = IB_WC_SEND;
+   break;
+   case NES_IWARP_SQ_OP_LOCINV:
+-  entry->opcode = IB_WR_LOCAL_INV;
++  entry->opcode = IB_WC_LOCAL_INV;
+   break;
+   case NES_IWARP_SQ_OP_FAST_REG:
+   entry->opcode = 
IB_WC_FAST_REG_MR;
+--
+1.7.1
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fix for fast memory registration length

2012-01-06 Thread Tatyana Nikolova
Zero high order word of fast memory registration (FMR) length field.
FMR length field is 32 bits, so high word should always be zero.

Signed-off-by: Tatyana Nikolova 
Signed-off-by: Donald Wood 
---
 kernel_patches/fixes/nes_0067_fmr_length_fix.patch |   16 
 1 files changed, 16 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0067_fmr_length_fix.patch

diff --git a/kernel_patches/fixes/nes_0067_fmr_length_fix.patch 
b/kernel_patches/fixes/nes_0067_fmr_length_fix.patch
new file mode 100644
index 000..a5ae034
--- /dev/null
+++ b/kernel_patches/fixes/nes_0067_fmr_length_fix.patch
@@ -0,0 +1,16 @@
+diff --git a/drivers/infiniband/hw/nes/nes_verbs.c 
b/drivers/infiniband/hw/nes/nes_verbs.c
+index d33f563..bd09a19 100644
+--- a/drivers/infiniband/hw/nes/nes_verbs.c
 b/drivers/infiniband/hw/nes/nes_verbs.c
+@@ -3651,6 +3651,8 @@ static int nes_post_send(struct ib_qp *ibqp, struct 
ib_send_wr *ib_wr,
+   NES_IWARP_SQ_FMR_WQE_LENGTH_LOW_IDX,
+   ib_wr->wr.fast_reg.length);
+   set_wqe_32bit_value(wqe->wqe_words,
++  
NES_IWARP_SQ_FMR_WQE_LENGTH_HIGH_IDX, 0);
++  set_wqe_32bit_value(wqe->wqe_words,
+   NES_IWARP_SQ_FMR_WQE_MR_STAG_IDX,
+   ib_wr->wr.fast_reg.rkey);
+   /* Set page size: */
+--
+1.7.1
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Change for phy SFP+ clock divisor

2011-12-07 Thread Tatyana Nikolova
Change phy SFP+ clock divisor

Signed-off-by: Tatyana Nikolova 
Signed-off-by: Faisal Latif 
---
 kernel_patches/fixes/nes_0066_phy_clk_div.patch |   16 
 1 files changed, 16 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0066_phy_clk_div.patch

diff --git a/kernel_patches/fixes/nes_0066_phy_clk_div.patch 
b/kernel_patches/fixes/nes_0066_phy_clk_div.patch
new file mode 100644
index 000..aaa2627
--- /dev/null
+++ b/kernel_patches/fixes/nes_0066_phy_clk_div.patch
@@ -0,0 +1,16 @@
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c 
b/drivers/infiniband/hw/nes/nes_hw.c
+index 2398c2d..66bda69 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
 b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -1529,7 +1529,7 @@ int nes_init_phy(struct nes_device *nesdev)
+   } else {
+   /* setup 10G MDIO operation */
+   tx_config &= 0xFFE3;
+-  tx_config |= 0x15;
++  tx_config |= 0x1D;
+   }
+   nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
+
+--
+1.7.1
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Fixes for Sparse generated warnings

2011-12-07 Thread Tatyana Nikolova
Fix source code warnings generated by Sparse

Signed-off-by: Tatyana Nikolova 
Signed-off-by: Faisal Latif 
---
 kernel_patches/fixes/nes_0065_sparse_fix.patch |  217 
 1 files changed, 217 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0065_sparse_fix.patch

diff --git a/kernel_patches/fixes/nes_0065_sparse_fix.patch 
b/kernel_patches/fixes/nes_0065_sparse_fix.patch
new file mode 100644
index 000..e1daf3f
--- /dev/null
+++ b/kernel_patches/fixes/nes_0065_sparse_fix.patch
@@ -0,0 +1,217 @@
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index 3fb164d..47713f2 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -2802,7 +2802,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
+   u16 last_ae;
+   u8 original_hw_tcp_state;
+   u8 original_ibqp_state;
+-  enum iw_cm_event_type disconn_status = IW_CM_EVENT_STATUS_OK;
++  enum iw_cm_event_status disconn_status = IW_CM_EVENT_STATUS_OK;
+   int issue_disconn = 0;
+   int issue_close = 0;
+   int issue_flush = 0;
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c 
b/drivers/infiniband/hw/nes/nes_hw.c
+index 1b4d61d..2398c2d 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
 b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -1305,7 +1305,7 @@ int nes_destroy_cqp(struct nes_device *nesdev)
+ /**
+  * nes_init_1g_phy
+  */
+-int nes_init_1g_phy(struct nes_device *nesdev, u8 phy_type, u8 phy_index)
++static int nes_init_1g_phy(struct nes_device *nesdev, u8 phy_type, u8 
phy_index)
+ {
+   u32 counter = 0;
+   u16 phy_data;
+@@ -1359,7 +1359,7 @@ int nes_init_1g_phy(struct nes_device *nesdev, u8 
phy_type, u8 phy_index)
+ /**
+  * nes_init_2025_phy
+  */
+-int nes_init_2025_phy(struct nes_device *nesdev, u8 phy_type, u8 phy_index)
++static int nes_init_2025_phy(struct nes_device *nesdev, u8 phy_type, u8 
phy_index)
+ {
+   u32 temp_phy_data = 0;
+   u32 temp_phy_data2 = 0;
+diff --git a/drivers/infiniband/hw/nes/nes_mgt.c 
b/drivers/infiniband/hw/nes/nes_mgt.c
+index e46b000..8d95ed2 100644
+--- a/drivers/infiniband/hw/nes/nes_mgt.c
 b/drivers/infiniband/hw/nes/nes_mgt.c
+@@ -40,7 +40,7 @@
+ #include "nes.h"
+ #include "nes_mgt.h"
+
+-void nes_replenish_mgt_rq(struct nes_vnic_mgt *mgtvnic)
++static void nes_replenish_mgt_rq(struct nes_vnic_mgt *mgtvnic)
+ {
+   unsigned long flags;
+   dma_addr_t bus_address;
+@@ -119,7 +119,7 @@ void nes_replenish_mgt_rq(struct nes_vnic_mgt *mgtvnic)
+ /**
+  * nes_mgt_rq_wqes_timeout
+  */
+-void nes_mgt_rq_wqes_timeout(unsigned long parm)
++static void nes_mgt_rq_wqes_timeout(unsigned long parm)
+ {
+   struct nes_vnic_mgt *mgtvnic = (struct nes_vnic_mgt *)parm;
+
+@@ -131,7 +131,7 @@ void nes_mgt_rq_wqes_timeout(unsigned long parm)
+ /**
+  * nes_mgt_free_skb - unmap and free skb
+  */
+-void nes_mgt_free_skb(struct nes_device *nesdev, struct sk_buff *skb, u32 dir)
++static void nes_mgt_free_skb(struct nes_device *nesdev, struct sk_buff *skb, 
u32 dir)
+ {
+   struct nes_rskb_cb *cb;
+
+@@ -144,7 +144,7 @@ void nes_mgt_free_skb(struct nes_device *nesdev, struct 
sk_buff *skb, u32 dir)
+ /**
+  * nes_download_callback - handle download completions
+  */
+-void nes_download_callback(struct nes_device *nesdev, struct nes_cqp_request 
*cqp_request)
++static void nes_download_callback(struct nes_device *nesdev, struct 
nes_cqp_request *cqp_request)
+ {
+   struct pau_fpdu_info *fpdu_info = cqp_request->cqp_callback_pointer;
+   struct nes_qp *nesqp = fpdu_info->nesqp;
+@@ -168,7 +168,7 @@ void nes_download_callback(struct nes_device *nesdev, 
struct nes_cqp_request *cq
+ /**
+  * nes_get_seq - Get the seq, ack_seq and window from the packet
+  */
+-u32 nes_get_seq(struct sk_buff *skb, u32 *ack, u16 *wnd, u32 *fin_rcvd, u32 
*rst_rcvd)
++static u32 nes_get_seq(struct sk_buff *skb, u32 *ack, u16 *wnd, u32 
*fin_rcvd, u32 *rst_rcvd)
+ {
+   struct nes_rskb_cb *cb = (struct nes_rskb_cb *)&skb->cb[0];
+   struct iphdr *iph = (struct iphdr *)(cb->data_start + ETH_HLEN);
+@@ -184,7 +184,7 @@ u32 nes_get_seq(struct sk_buff *skb, u32 *ack, u16 *wnd, 
u32 *fin_rcvd, u32 *rst
+ /**
+  * nes_get_next_skb - Get the next skb based on where current skb is in the 
queue
+  */
+-struct sk_buff *nes_get_next_skb(struct nes_device *nesdev, struct nes_qp 
*nesqp, struct sk_buff *skb,
++static struct sk_buff *nes_get_next_skb(struct nes_device *nesdev, struct 
nes_qp *nesqp, struct sk_buff *skb,
+u32 nextseq, u32 *ack, u16 *wnd, u32 
*fin_rcvd, u32 *rst_rcvd)
+ {
+   u32 seq;
+@@ -232,7 +232,7 @@ out:
+ /**
+  * get_fpdu_info - Find the next complete fpdu and return its fragments.
+  */
+-int get_fpdu_info(struct nes_device *nesdev, struct nes_qp *nesqp, struct 
pau_fpdu_info **pau_fpdu_info)
++static int get_fpdu_info(struct nes_device *nesdev, struct nes_qp *nesqp, 

[ewg] [PATCH] RDMA/nes: Fix terminate during fatal AE

2011-12-05 Thread Tatyana Nikolova
Fix for reset which happens right after sending a terminate message.
Terminate timer is not deleted when the connection is closed.

Signed-off-by: Tatyana Nikolova 
Signed-off-by: Faisal Latif 
---
 kernel_patches/fixes/nes_0064_term_rst_fix.patch |   30 ++
 1 files changed, 30 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0064_term_rst_fix.patch

diff --git a/kernel_patches/fixes/nes_0064_term_rst_fix.patch 
b/kernel_patches/fixes/nes_0064_term_rst_fix.patch
new file mode 100644
index 000..802e90d
--- /dev/null
+++ b/kernel_patches/fixes/nes_0064_term_rst_fix.patch
@@ -0,0 +1,30 @@
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index 597b993..3fb164d 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -2835,6 +2835,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
+   issue_disconn = 1;
+   issue_close = 1;
+   nesqp->cm_id = NULL;
++  del_timer(&nesqp->terminate_timer);
+   if (nesqp->flush_issued == 0) {
+   nesqp->flush_issued = 1;
+   issue_flush = 1;
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c 
b/drivers/infiniband/hw/nes/nes_hw.c
+index 485a1b3..1b4d61d 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
 b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -3627,10 +3627,6 @@ static void nes_process_iwarp_aeqe(struct nes_device 
*nesdev,
+   }
+   break;
+   case NES_AEQE_AEID_LLP_CLOSE_COMPLETE:
+-  if (nesqp->term_flags) {
+-  nes_terminate_done(nesqp, 0);
+-  return;
+-  }
+   spin_lock_irqsave(&nesqp->lock, flags);
+   nesqp->hw_iwarp_state = iwarp_state;
+   nesqp->hw_tcp_state = tcp_state;
+--
+1.7.1
+
-- 
1.7.1

___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCH] RDMA/nes: Update nes release notes

2011-11-29 Thread Tatyana Nikolova
Update nes_release_notes.txt file 

Signed-off-by: Jakub Fedoruk 
Signed-off-by: Tatyana Nikolova 
---
 release_notes/nes_release_notes.txt |   94 ---
 1 files changed, 32 insertions(+), 62 deletions(-)

diff --git a/release_notes/nes_release_notes.txt 
b/release_notes/nes_release_notes.txt
index 73628e2..a19b7a1 100644
--- a/release_notes/nes_release_notes.txt
+++ b/release_notes/nes_release_notes.txt
@@ -1,6 +1,6 @@
 Open Fabrics Enterprise Distribution (OFED)
   NetEffect Ethernet Cluster Server Adapter Release Notes
-   February 2011
+   November 2011
 
 
 
@@ -10,20 +10,17 @@ support for the NetEffect Ethernet Cluster Server Adapters.
 ==
 What's New
 ==
-OFED 1.5.3 contains several enhancements and bug fixes to iw_nes driver.
-
-* Correct AEQE operation.
-* Add backports for 2.6.35 and 2.6.36 kernels.
-* Fix for problem of lack of HW limit checking for MG attach for IMA.
-* Fix for a problem with non-aligned buffers crash during post_recv for IMA.
-* Fix for possible crash when RAW QP resources are destroyed.
-* Fix for problem of RAW QP transition state toERR.
-* Fix a problem with sending packets with VLAN flag for IMA.
-* Enable bonds on iw_nes.
-* Fix hazard of sending ibevent for unregistered device.
-* Fix for sending IB_EVENT_PORT_ERR/PORT_ACTIVEevent on link state 
interrupt.
-* Fix SFP link down detection issue with switch port disable.
-* Fix incorrect SFP link status detection on driver init.
+OFED 1.5.4 contains several enhancements and bug fixes to iw_nes driver.
+
+* Added backports for 2.6.35 to 3.0 kernels.
+* Fixed a couple of problems which caused IMA to crash.
+* Fixed a problem with VLAN flag for IMA.
+* Enabled bonding with iw_nes.
+* Fixed a couple of IB_EVENT issues.
+* Fixed an SFP+ link status issue.
+* Added support for Chelsio Interoperability.
+* Added support for MPA version 2.
+
 
 
 Required Setting - RDMA Unify TCP port space
@@ -47,14 +44,14 @@ If possible, disable Active State Power Management in the 
BIOS, e.g.:
 Loadable Module Options
 ===
 The following options can be used when loading the iw_nes module by modifying
-modprobe.conf file.
+/etc/modprobe.conf file.
 
 wide_ppm_offset=0
 Set to 1 will increase CX4 interface clock ppm offset to 300ppm.
 Default setting 0 is 100ppm.
 
 mpa_version=1
-MPA version to be used int MPA Req/Resp (0 or 1).
+MPA version to be used int MPA Req/Resp (1 or 2).
 
 disable_mpa_crc=0
 Disable checking of MPA CRC.
@@ -109,12 +106,17 @@ NOTE: Assuming NetEffect Ethernet Cluster Server Adapter 
is assigned eth2.
 ===
 uDAPL Configuration
 ===
-Rest of the document assumes the following uDAPL settings in dat.conf:
+Rest of the document assumes the following uDAPL settings in /etc/dat.conf:
 
 OpenIB-iwarp u1.2 nonthreadsafe default libdaplcma.so.1 dapl.1.2 "eth2 0" 
""
 ofa-v2-iwarp u2.0 nonthreadsafe default libdaplofa.so.2 dapl.2.0 "eth2 0" 
""
 
-
+
+Chelsio Interoperability
+
+The firmware version supporting interoperability with Chelsio is 3.23 or 
greater.
+The load time Chelsio parameter peer2peer must be set to 1.
+
 ==
 mpd.hosts file
 ==
@@ -130,63 +132,35 @@ This operational mode can cause 100% CPU utilization.
 To switch to Event Driven mode and lower CPU utilization please refer to 
README or 
 Release Notes for specific application.
 
-
-Recommended Settings for Platform MPI 7.1 (formerly HP-MPI)
-
-Add the following to mpirun command:
-
--1sided
-
-Example mpirun command with uDAPL-2.0:
-
-mpirun -np 2 -hostfile /opt/mpd.hosts 
-   -UDAPL -prot -intra=shm
-   -e MPI_HASIC_UDAPL=ofa-v2-iwarp
-   -1sided
-   /opt/platform_mpi/help/hello_world
-
-Example mpirun command with uDAPL-1.2:
-
-mpirun -np 2 -hostfile /opt/mpd.hosts 
-   -UDAPL -prot -intra=shm
-   -e MPI_HASIC_UDAPL=OpenIB-iwarp
-   -1sided
-   /opt/platform_mpi/help/hello_world
-   
-
 ==
 Recommended Settings for Intel MPI 4.0.x
 ==
 Add the following to mpiexec command:
 
 -genv I_MPI_FALLBACK_DEVICE 0
--genv I_MPI_FABRICS shm:dapl 
--genv I_MPI_DAPL_PROVIDER ofa-v2-iwarp
+-genv I_MPI_DEVICE rdma:ofa-v2-iwarp
 -genv I_MPI_USE_RENDEZVOUS_RDMA_WRITE 1
 
 Example mpiexec command line for uDAPL-2.0:
 
 mpiexec -genv I_MPI_FALLBACK_DEVICE 0
--genv I_MPI_DEVICE shm:dapl
--genv I_MPI_DAPL_PROVIDER OpenIB-iwarp
--genv I_MPI_DAPL_PROVIDER ofa-v2-iwarp
+   

[ewg] [PATCH] RDMA/nes: Copyright Update

2011-11-28 Thread Tatyana Nikolova
Update Copyright information in the source files.

Signed-off-by: Tatyana Nikolova 
Signed-off-by: Faisal Latif 
---
 .../fixes/nes_0063_copyright_update.patch  |  179 
 1 files changed, 179 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0063_copyright_update.patch

diff --git a/kernel_patches/fixes/nes_0063_copyright_update.patch 
b/kernel_patches/fixes/nes_0063_copyright_update.patch
new file mode 100644
index 000..386bddd
--- /dev/null
+++ b/kernel_patches/fixes/nes_0063_copyright_update.patch
@@ -0,0 +1,179 @@
+diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
+index ec809f7..7bd1e75 100644
+--- a/drivers/infiniband/hw/nes/nes.c
 b/drivers/infiniband/hw/nes/nes.c
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006 - 2009 Intel Corporation.  All rights reserved.
++ * Copyright (c) 2006 - 2011 Intel Corporation.  All rights reserved.
+  * Copyright (c) 2005 Open Grid Computing, Inc. All rights reserved.
+  *
+  * This software is available to you under a choice of one of two
+diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
+index 4bf44aa..390eb42 100644
+--- a/drivers/infiniband/hw/nes/nes.h
 b/drivers/infiniband/hw/nes/nes.h
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006 - 2009 Intel Corporation.  All rights reserved.
++ * Copyright (c) 2006 - 2011 Intel Corporation.  All rights reserved.
+  * Copyright (c) 2005 Open Grid Computing, Inc. All rights reserved.
+  *
+  * This software is available to you under a choice of one of two
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index 230974d..597b993 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
 b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006 - 2009 Intel Corporation.  All rights reserved.
++ * Copyright (c) 2006 - 2011 Intel Corporation.  All rights reserved.
+  *
+  * This software is available to you under a choice of one of two
+  * licenses.  You may choose to be licensed under the terms of the GNU
+diff --git a/drivers/infiniband/hw/nes/nes_cm.h 
b/drivers/infiniband/hw/nes/nes_cm.h
+index bdfa1fb..4646e66 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.h
 b/drivers/infiniband/hw/nes/nes_cm.h
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006 - 2009 Intel Corporation.  All rights reserved.
++ * Copyright (c) 2006 - 2011 Intel Corporation.  All rights reserved.
+  *
+  * This software is available to you under a choice of one of two
+  * licenses.  You may choose to be licensed under the terms of the GNU
+diff --git a/drivers/infiniband/hw/nes/nes_context.h 
b/drivers/infiniband/hw/nes/nes_context.h
+index b4393a1..a69eef1 100644
+--- a/drivers/infiniband/hw/nes/nes_context.h
 b/drivers/infiniband/hw/nes/nes_context.h
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006 - 2009 Intel Corporation.  All rights reserved.
++ * Copyright (c) 2006 - 2011 Intel Corporation.  All rights reserved.
+  *
+  * This software is available to you under a choice of one of two
+  * licenses.  You may choose to be licensed under the terms of the GNU
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c 
b/drivers/infiniband/hw/nes/nes_hw.c
+index e9ee74d..485a1b3 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
 b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006 - 2009 Intel Corporation.  All rights reserved.
++ * Copyright (c) 2006 - 2011 Intel Corporation.  All rights reserved.
+  *
+  * This software is available to you under a choice of one of two
+  * licenses.  You may choose to be licensed under the terms of the GNU
+diff --git a/drivers/infiniband/hw/nes/nes_hw.h 
b/drivers/infiniband/hw/nes/nes_hw.h
+index 11012e5..5b41161 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.h
 b/drivers/infiniband/hw/nes/nes_hw.h
+@@ -1,5 +1,5 @@
+ /*
+-* Copyright (c) 2006 - 2009 Intel Corporation.  All rights reserved.
++* Copyright (c) 2006 - 2011 Intel Corporation.  All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+diff --git a/drivers/infiniband/hw/nes/nes_mgt.c 
b/drivers/infiniband/hw/nes/nes_mgt.c
+index 6af74ed..e46b000 100644
+--- a/drivers/infiniband/hw/nes/nes_mgt.c
 b/drivers/infiniband/hw/nes/nes_mgt.c
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006 - 2009 Intel-NE, Inc.  All rights reserved.
++ * Copyright (c) 2006 - 2011 Intel-NE, Inc.  All rights reserved.
+  *
+  * This software is available to you under a choice of one of two
+  * licenses.  You may choose to be licensed under the terms of the GNU
+diff --git a/drivers/infiniband/hw/nes/nes_mgt.h 
b/drivers/infiniband/hw/nes/nes_mgt.h
+index b4a56cc..4e42145 100644
+--- a/drivers/infiniband/hw/nes/nes_mgt.h
 b/drivers/infiniband/hw/nes/nes_mgt.h
+@@ -1,5 +1,5 @@
+ /*
+-* Copyright (c) 2010 Intel-NE, Inc.  All rights reserved.
++* Copyright (c) 2006 - 2011 Intel