Fixes for NES driver which have been accepted upstream.

Signed-off-by: Tatyana Nikolova <tatyana.e.nikol...@intel.com>
---
 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 0000000..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 <tatyana.e.nikol...@intel.com>
+Signed-off-by: Faisal Latif <faisal.la...@intel.com>
+---
+
+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 0000000..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 <tatyana.e.nikol...@intel.com>
+Signed-off-by: Faisal Latif <faisal.la...@intel.com>
+---
+
+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 0000000..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 <tatyana.e.nikol...@intel.com>
+Signed-off-by: Donald Wood <donald.e.w...@intel.com>
+---
+ 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->ibqp.qp_context);
++                      if (nesqp->ibqp.event_handler)
++                              nesqp->ibqp.event_handler(&ibevent, 
nesqp->ibqp.qp_context);
+               }
+       }
+
+--
+1.7.1
+
diff --git a/patches/nes-0004-Fix-for-ord-size.patch 
b/patches/nes-0004-Fix-for-ord-size.patch
new file mode 100644
index 0000000..3c9ad5f
--- /dev/null
+++ b/patches/nes-0004-Fix-for-ord-size.patch
@@ -0,0 +1,26 @@
+Set ORD size to be at least one in order to accommodate RDMA READ Request 
message.
+
+Signed-off-by: Tatyana Nikolova <tatyana.e.nikol...@intel.com>
+Signed-off-by: Donald Wood <donald.e.w...@intel.com>
+---
+ drivers/infiniband/hw/nes/nes_cm.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c 
b/drivers/infiniband/hw/nes/nes_cm.c
+index da2c67d..7cdcefd 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
++++ b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -3315,6 +3315,10 @@ int nes_connect(struct iw_cm_id *cm_id, struct 
iw_cm_conn_param *conn_param)
+
+       nesqp->private_data_len = conn_param->private_data_len;
+       nesqp->nesqp_context->ird_ord_sizes |= 
cpu_to_le32((u32)conn_param->ord);
++      /* space for rdma0 read msg*/
++      if (conn_param->ord == 0)
++              nesqp->nesqp_context->ird_ord_sizes |= cpu_to_le32(1);
++
+       nes_debug(NES_DBG_CM, "requested ord = 0x%08X.\n", 
(u32)conn_param->ord);
+       nes_debug(NES_DBG_CM, "mpa private data len =%u\n",
+                 conn_param->private_data_len);
+--
+1.7.1
+
-- 
1.7.1

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

Reply via email to