rdma-core/bnxt_re-lib-increment-psn-in-case-of-0-length-packets.patch
Nicolas Morey-Chaisemartin 6c79bc4c77 Accepting request 540247 from home:NMoreyChaisemartin:branches:science:HPC
- Backport upstream patches
  * bnxt_re-lib-fix-the-memory-barrier-call-during-poll-cq.patch
    Fix memory ordering issue
  * bnxt_re-lib-increment-psn-in-case-of-0-length-packets.patch
    Fix PSN getting out of sync when sending 0 length packet
  * verbs-Do-not-block-QP-attr_masks-used-by-older-kernels.patch
    Fix bits detection to allow RDMA CM to work on older kernsl
- Refresh older patches to include commit logs:
  * ibacm-Incorrect-list-used-for-subnet-list-causes-a-segfault.patch
  * ibacm-Incorrect-usage-of-BE-byte-order-of-MLID-attach-detach_mcast.patch
  * libibumad-umad.c-In-get_port-ignore-sysfs-rate-file-errors.patch
  * libqedr-fix-inline-data-copy.patch

OBS-URL: https://build.opensuse.org/request/show/540247
OBS-URL: https://build.opensuse.org/package/show/science:HPC/rdma-core?expand=0&rev=59
2017-11-09 15:20:02 +00:00

30 lines
1.1 KiB
Diff

commit 093dadc78984c9e44ea1c86ca4527a592a42417e
Author: Devesh Sharma <devesh.sharma@broadcom.com>
Date: Thu Nov 9 02:42:29 2017 -0500
bnxt_re/lib: increment psn in case of 0 length packets
If application posts a 0 length packet, post send routine
is skipping to increment the psn number. This will cause
PSN number to go out of sync and eventually connection would
terminate due to sequence error.
post_send routine must increment the psn number by 1 even
for zero length packets.
Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
diff --git providers/bnxt_re/verbs.c providers/bnxt_re/verbs.c
index 4d9b044a..9d4e02bb 100644
--- providers/bnxt_re/verbs.c
+++ providers/bnxt_re/verbs.c
@@ -1048,6 +1048,8 @@ static void bnxt_re_fill_psns(struct bnxt_re_qp *qp, struct bnxt_re_psns *psns,
pkt_cnt = (len / qp->mtu);
if (len % qp->mtu)
pkt_cnt++;
+ if (len == 0)
+ pkt_cnt = 1;
nxt_psn = ((qp->sq_psn + pkt_cnt) & BNXT_RE_PSNS_NPSN_MASK);
psns->flg_npsn = htole32(nxt_psn);
qp->sq_psn = nxt_psn;