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: 25f40220e5
('IB/core: Initialize UD header structure with IP
and UDP headers')
Signed-off-by: Moni Shoua <monis@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
01581fb89e
commit
1c5e080990
|
@ -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 =
|
||||
|
|
Loading…
Reference in New Issue