From db57e55bb79c19822237e5675e693bfa977438b9 Mon Sep 17 00:00:00 2001 From: Tatyana Nikolova Date: Sun, 14 May 2017 16:28:49 -0700 Subject: [PATCH] Interop related fixes for iWarp drivers i40iw and nes The fixes are discovered and tested in the OFA Interop Debug event at the UNH-IOL. --- ...0-length-FULPDU-RTR-indication-contr.patch | 29 ++++++++++++++++++ .../0002-i40iw-ACK-MPA-Reject-frame.patch | 30 +++++++++++++++++++ ...length-FULPDU-RTR-indication-control.patch | 29 ++++++++++++++++++ .../0004-nes-ACK-MPA-Reply-frame.patch | 29 ++++++++++++++++++ 4 files changed, 117 insertions(+) create mode 100644 linux-next-pending/0001-i40iw-Don-t-set-0-length-FULPDU-RTR-indication-contr.patch create mode 100644 linux-next-pending/0002-i40iw-ACK-MPA-Reject-frame.patch create mode 100644 linux-next-pending/0003-nes-Don-t-set-0-length-FULPDU-RTR-indication-control.patch create mode 100644 linux-next-pending/0004-nes-ACK-MPA-Reply-frame.patch diff --git a/linux-next-pending/0001-i40iw-Don-t-set-0-length-FULPDU-RTR-indication-contr.patch b/linux-next-pending/0001-i40iw-Don-t-set-0-length-FULPDU-RTR-indication-contr.patch new file mode 100644 index 0000000..5c5a3d2 --- /dev/null +++ b/linux-next-pending/0001-i40iw-Don-t-set-0-length-FULPDU-RTR-indication-contr.patch @@ -0,0 +1,29 @@ +From 769fee69761ae285cf8b59f55d4cbb1de5a89b9f Mon Sep 17 00:00:00 2001 +From: Tatyana Nikolova +Date: Sun, 14 May 2017 17:28:30 -0500 +Subject: [PATCH 1/4] i40iw: Don't set 0-length FULPDU RTR indication control + flag + +Don't set control flag for 0-length FULPDU (Send) RTR indication +in the enhanced MPA Request/Reply frames, because it isn't supported. + +Signed-off-by: Tatyana Nikolova +--- + drivers/infiniband/hw/i40iw/i40iw_cm.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.c b/drivers/infiniband/hw/i40iw/i40iw_cm.c +index 95a0586..2155fd8 100644 +--- a/drivers/infiniband/hw/i40iw/i40iw_cm.c ++++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c +@@ -784,7 +784,6 @@ static void i40iw_build_mpa_v2(struct i40iw_cm_node *cm_node, + } + + ctrl_ird |= IETF_PEER_TO_PEER; +- ctrl_ird |= IETF_FLPDU_ZERO_LEN; + + switch (mpa_key) { + case MPA_KEY_REQUEST: +-- +1.8.3.1 + diff --git a/linux-next-pending/0002-i40iw-ACK-MPA-Reject-frame.patch b/linux-next-pending/0002-i40iw-ACK-MPA-Reject-frame.patch new file mode 100644 index 0000000..f97082c --- /dev/null +++ b/linux-next-pending/0002-i40iw-ACK-MPA-Reject-frame.patch @@ -0,0 +1,30 @@ +From dedc71c76797eaf154735d160c0d3720af41428e Mon Sep 17 00:00:00 2001 +From: Tatyana Nikolova +Date: Sun, 14 May 2017 17:30:48 -0500 +Subject: [PATCH 2/4] i40iw: ACK MPA Reject frame + +Explicitly ACK the MPA Reject frame so the peer +does not retransmit the frame. + +Signed-off-by: Tatyana Nikolova +--- + drivers/infiniband/hw/i40iw/i40iw_cm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.c b/drivers/infiniband/hw/i40iw/i40iw_cm.c +index 2155fd8..29c335f 100644 +--- a/drivers/infiniband/hw/i40iw/i40iw_cm.c ++++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c +@@ -2445,8 +2445,8 @@ static void i40iw_handle_rcv_mpa(struct i40iw_cm_node *cm_node, + } else { + type = I40IW_CM_EVENT_CONNECTED; + cm_node->state = I40IW_CM_STATE_OFFLOADED; +- i40iw_send_ack(cm_node); + } ++ i40iw_send_ack(cm_node); + break; + default: + pr_err("%s wrong cm_node state =%d\n", __func__, cm_node->state); +-- +1.8.3.1 + diff --git a/linux-next-pending/0003-nes-Don-t-set-0-length-FULPDU-RTR-indication-control.patch b/linux-next-pending/0003-nes-Don-t-set-0-length-FULPDU-RTR-indication-control.patch new file mode 100644 index 0000000..6551702 --- /dev/null +++ b/linux-next-pending/0003-nes-Don-t-set-0-length-FULPDU-RTR-indication-control.patch @@ -0,0 +1,29 @@ +From eea2e975cec4184e7fe237f2a1c6a32a4bcb26c6 Mon Sep 17 00:00:00 2001 +From: Tatyana Nikolova +Date: Sun, 14 May 2017 17:42:04 -0500 +Subject: [PATCH 3/4] nes: Don't set 0-length FULPDU RTR indication control + flag + +Don't set control flag for 0-length FULPDU (Send) RTR indication +in the enhanced MPA Request/Reply frames, because it isn't supported. + +Signed-off-by: Tatyana Nikolova +--- + drivers/infiniband/hw/nes/nes_cm.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c +index 7f0aa23..b5ea25a 100644 +--- a/drivers/infiniband/hw/nes/nes_cm.c ++++ b/drivers/infiniband/hw/nes/nes_cm.c +@@ -610,7 +610,6 @@ static void build_mpa_v2(struct nes_cm_node *cm_node, + ctrl_ord = cm_node->ord_size & IETF_NO_IRD_ORD; + } + ctrl_ird |= IETF_PEER_TO_PEER; +- ctrl_ird |= IETF_FLPDU_ZERO_LEN; + + switch (mpa_key) { + case MPA_KEY_REQUEST: +-- +1.8.3.1 + diff --git a/linux-next-pending/0004-nes-ACK-MPA-Reply-frame.patch b/linux-next-pending/0004-nes-ACK-MPA-Reply-frame.patch new file mode 100644 index 0000000..7e6cf27 --- /dev/null +++ b/linux-next-pending/0004-nes-ACK-MPA-Reply-frame.patch @@ -0,0 +1,29 @@ +From 1b70e0c71095b51bfeeed94520cb79ec5d7660dc Mon Sep 17 00:00:00 2001 +From: Tatyana Nikolova +Date: Sun, 14 May 2017 17:50:51 -0500 +Subject: [PATCH 4/4] nes: ACK MPA Reply frame + +Explicitly ACK the MPA Reply frame so the peer +does not retransmit the frame. + +Signed-off-by: Tatyana Nikolova +--- + drivers/infiniband/hw/nes/nes_cm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c +index b5ea25a..7def192 100644 +--- a/drivers/infiniband/hw/nes/nes_cm.c ++++ b/drivers/infiniband/hw/nes/nes_cm.c +@@ -1825,7 +1825,7 @@ static void handle_rcv_mpa(struct nes_cm_node *cm_node, struct sk_buff *skb) + type = NES_CM_EVENT_CONNECTED; + cm_node->state = NES_CM_STATE_TSA; + } +- ++ send_ack(cm_node, NULL); + break; + default: + WARN_ON(1); +-- +1.8.3.1 + -- 2.46.0