]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.7.7/i40iw-send-last-streaming-mode-message-for-loopback-connections.patch
fixes for 4.19
[thirdparty/kernel/stable-queue.git] / releases / 4.7.7 / i40iw-send-last-streaming-mode-message-for-loopback-connections.patch
1 From 07c72d7d54d138eb2ca37709a5a3d55fbcc01536 Mon Sep 17 00:00:00 2001
2 From: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
3 Date: Wed, 24 Aug 2016 13:59:17 -0500
4 Subject: i40iw: Send last streaming mode message for loopback connections
5
6 From: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
7
8 commit 07c72d7d54d138eb2ca37709a5a3d55fbcc01536 upstream.
9
10 Send a zero length last streaming mode message for loopback
11 connections to synchronize between accepting QP and connecting QP.
12 This avoids data transfer to start on the accepting QP before
13 the connecting QP is in RTS. Also remove function i40iw_loopback_nop()
14 as it is no longer used.
15
16 Fixes: f27b4746f378 ("i40iw: add connection management code")
17
18 Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
19 Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
20 Signed-off-by: Doug Ledford <dledford@redhat.com>
21 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22
23 ---
24 drivers/infiniband/hw/i40iw/i40iw_cm.c | 22 +---------------------
25 1 file changed, 1 insertion(+), 21 deletions(-)
26
27 --- a/drivers/infiniband/hw/i40iw/i40iw_cm.c
28 +++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c
29 @@ -3347,26 +3347,6 @@ int i40iw_cm_disconn(struct i40iw_qp *iw
30 }
31
32 /**
33 - * i40iw_loopback_nop - Send a nop
34 - * @qp: associated hw qp
35 - */
36 -static void i40iw_loopback_nop(struct i40iw_sc_qp *qp)
37 -{
38 - u64 *wqe;
39 - u64 header;
40 -
41 - wqe = qp->qp_uk.sq_base->elem;
42 - set_64bit_val(wqe, 0, 0);
43 - set_64bit_val(wqe, 8, 0);
44 - set_64bit_val(wqe, 16, 0);
45 -
46 - header = LS_64(I40IWQP_OP_NOP, I40IWQPSQ_OPCODE) |
47 - LS_64(0, I40IWQPSQ_SIGCOMPL) |
48 - LS_64(qp->qp_uk.swqe_polarity, I40IWQPSQ_VALID);
49 - set_64bit_val(wqe, 24, header);
50 -}
51 -
52 -/**
53 * i40iw_qp_disconnect - free qp and close cm
54 * @iwqp: associate qp for the connection
55 */
56 @@ -3638,7 +3618,7 @@ int i40iw_accept(struct iw_cm_id *cm_id,
57 } else {
58 if (iwqp->page)
59 iwqp->sc_qp.qp_uk.sq_base = kmap(iwqp->page);
60 - i40iw_loopback_nop(&iwqp->sc_qp);
61 + dev->iw_priv_qp_ops->qp_send_lsmm(&iwqp->sc_qp, NULL, 0, 0);
62 }
63
64 if (iwqp->page)