RDMA/rxe: Fix extra copy in prepare_ack_packet
Currently prepare_ack_packet writes almost all the fields of the BTH in
the ack packet twice. Replace code with the subroutine init_bth().
Fixes: 8700e3e7c4
("Soft RoCE driver")
Link: https://lore.kernel.org/r/20210618045742.204195-6-rpearsonhpe@gmail.com
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
ec0fa2445c
commit
3896bde92d
|
@ -637,18 +637,11 @@ static struct sk_buff *prepare_ack_packet(struct rxe_qp *qp,
|
||||||
ack->opcode = opcode;
|
ack->opcode = opcode;
|
||||||
ack->mask = rxe_opcode[opcode].mask;
|
ack->mask = rxe_opcode[opcode].mask;
|
||||||
ack->paylen = paylen;
|
ack->paylen = paylen;
|
||||||
|
|
||||||
/* fill in bth using the request packet headers */
|
|
||||||
memcpy(ack->hdr, pkt->hdr, RXE_BTH_BYTES);
|
|
||||||
|
|
||||||
bth_set_opcode(ack, opcode);
|
|
||||||
bth_set_qpn(ack, qp->attr.dest_qp_num);
|
|
||||||
bth_set_pad(ack, pad);
|
|
||||||
bth_set_se(ack, 0);
|
|
||||||
bth_set_psn(ack, psn);
|
|
||||||
bth_set_ack(ack, 0);
|
|
||||||
ack->psn = psn;
|
ack->psn = psn;
|
||||||
|
|
||||||
|
bth_init(ack, opcode, 0, 0, pad, IB_DEFAULT_PKEY_FULL,
|
||||||
|
qp->attr.dest_qp_num, 0, psn);
|
||||||
|
|
||||||
if (ack->mask & RXE_AETH_MASK) {
|
if (ack->mask & RXE_AETH_MASK) {
|
||||||
aeth_set_syn(ack, syndrome);
|
aeth_set_syn(ack, syndrome);
|
||||||
aeth_set_msn(ack, qp->resp.msn);
|
aeth_set_msn(ack, qp->resp.msn);
|
||||||
|
|
Loading…
Reference in New Issue