RDMA/rxe: Don't set BTH_ACK_MASK for UC or UD QPs
[ Upstream commit 4adcaf969d77d3d3aa3871bbadc196258a38aec6 ]
BTH_ACK_MASK bit is used to indicate that an acknowledge
(for this packet) should be scheduled by the responder.
Both UC and UD QPs are unacknowledged, so don't set
BTH_ACK_MASK for UC or UD QPs.
Fixes: 8700e3e7c4
("Soft RoCE driver")
Signed-off-by: Honggang LI <honggangli@163.com>
Link: https://lore.kernel.org/r/20240624020348.494338-1-honggangli@163.com
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
9189c23067
Коммит
1e3829f6e0
|
@ -374,7 +374,7 @@ static struct sk_buff *init_req_packet(struct rxe_qp *qp,
|
||||||
int solicited;
|
int solicited;
|
||||||
u16 pkey;
|
u16 pkey;
|
||||||
u32 qp_num;
|
u32 qp_num;
|
||||||
int ack_req;
|
int ack_req = 0;
|
||||||
|
|
||||||
/* length from start of bth to end of icrc */
|
/* length from start of bth to end of icrc */
|
||||||
paylen = rxe_opcode[opcode].length + payload + pad + RXE_ICRC_SIZE;
|
paylen = rxe_opcode[opcode].length + payload + pad + RXE_ICRC_SIZE;
|
||||||
|
@ -407,6 +407,7 @@ static struct sk_buff *init_req_packet(struct rxe_qp *qp,
|
||||||
qp_num = (pkt->mask & RXE_DETH_MASK) ? ibwr->wr.ud.remote_qpn :
|
qp_num = (pkt->mask & RXE_DETH_MASK) ? ibwr->wr.ud.remote_qpn :
|
||||||
qp->attr.dest_qp_num;
|
qp->attr.dest_qp_num;
|
||||||
|
|
||||||
|
if (qp_type(qp) != IB_QPT_UD && qp_type(qp) != IB_QPT_UC)
|
||||||
ack_req = ((pkt->mask & RXE_END_MASK) ||
|
ack_req = ((pkt->mask & RXE_END_MASK) ||
|
||||||
(qp->req.noack_pkts++ > RXE_MAX_PKT_PER_ACK));
|
(qp->req.noack_pkts++ > RXE_MAX_PKT_PER_ACK));
|
||||||
if (ack_req)
|
if (ack_req)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче