Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c5e0809 authored by Moni Shoua's avatar Moni Shoua Committed by Doug Ledford
Browse files

IB/core: Set correct payload length for RoCEv2 over IPv6



For GSI QP traffic, the count of the udp header bytes was missing from
the IPv6 header, fix that.

Fixes: 25f40220 ('IB/core: Initialize UD header structure with IP
                     and UDP headers')
Signed-off-by: default avatarMoni Shoua <monis@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 01581fb8
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -322,6 +322,8 @@ int ib_ud_header_init(int payload_bytes,
		      int    immediate_present,
		      struct ib_ud_header *header)
{
	size_t udp_bytes = udp_present ? IB_UDP_BYTES : 0;

	grh_present = grh_present && !ip_version;
	memset(header, 0, sizeof *header);

@@ -353,7 +355,8 @@ int ib_ud_header_init(int payload_bytes,
	if (ip_version == 6 || grh_present) {
		header->grh.ip_version      = 6;
		header->grh.payload_length  =
			cpu_to_be16((IB_BTH_BYTES     +
			cpu_to_be16((udp_bytes        +
				     IB_BTH_BYTES     +
				     IB_DETH_BYTES    +
				     payload_bytes    +
				     4                + /* ICRC     */
@@ -362,8 +365,6 @@ int ib_ud_header_init(int payload_bytes,
	}

	if (ip_version == 4) {
		int udp_bytes = udp_present ? IB_UDP_BYTES : 0;

		header->ip4.ver = 4; /* version 4 */
		header->ip4.hdr_len = 5; /* 5 words */
		header->ip4.tot_len =