Merge tag 'v5.2-rc6' into rdma.git for-next
For dependencies in next patches. Resolve conflicts: - Use uverbs_get_cleared_udata() with new cq allocation flow - Continue to delete nes despite SPDX conflict - Resolve list appends in mlx5_command_str() - Use u16 for vport_rule stuff - Resolve list appends in struct ib_client Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
@@ -1432,7 +1432,7 @@ void hfi1_send_rc_ack(struct hfi1_packet *packet, bool is_fecn)
|
||||
pbc = create_pbc(ppd, pbc_flags, qp->srate_mbps,
|
||||
sc_to_vlt(ppd->dd, sc5), plen);
|
||||
pbuf = sc_buffer_alloc(rcd->sc, plen, NULL, NULL);
|
||||
if (!pbuf) {
|
||||
if (IS_ERR_OR_NULL(pbuf)) {
|
||||
/*
|
||||
* We have no room to send at the moment. Pass
|
||||
* responsibility for sending the ACK to the send engine
|
||||
@@ -1701,6 +1701,36 @@ static void reset_sending_psn(struct rvt_qp *qp, u32 psn)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* hfi1_rc_verbs_aborted - handle abort status
|
||||
* @qp: the QP
|
||||
* @opah: the opa header
|
||||
*
|
||||
* This code modifies both ACK bit in BTH[2]
|
||||
* and the s_flags to go into send one mode.
|
||||
*
|
||||
* This serves to throttle the send engine to only
|
||||
* send a single packet in the likely case the
|
||||
* a link has gone down.
|
||||
*/
|
||||
void hfi1_rc_verbs_aborted(struct rvt_qp *qp, struct hfi1_opa_header *opah)
|
||||
{
|
||||
struct ib_other_headers *ohdr = hfi1_get_rc_ohdr(opah);
|
||||
u8 opcode = ib_bth_get_opcode(ohdr);
|
||||
u32 psn;
|
||||
|
||||
/* ignore responses */
|
||||
if ((opcode >= OP(RDMA_READ_RESPONSE_FIRST) &&
|
||||
opcode <= OP(ATOMIC_ACKNOWLEDGE)) ||
|
||||
opcode == TID_OP(READ_RESP) ||
|
||||
opcode == TID_OP(WRITE_RESP))
|
||||
return;
|
||||
|
||||
psn = ib_bth_get_psn(ohdr) | IB_BTH_REQ_ACK;
|
||||
ohdr->bth[2] = cpu_to_be32(psn);
|
||||
qp->s_flags |= RVT_S_SEND_ONE;
|
||||
}
|
||||
|
||||
/*
|
||||
* This should be called with the QP s_lock held and interrupts disabled.
|
||||
*/
|
||||
@@ -1709,8 +1739,6 @@ void hfi1_rc_send_complete(struct rvt_qp *qp, struct hfi1_opa_header *opah)
|
||||
struct ib_other_headers *ohdr;
|
||||
struct hfi1_qp_priv *priv = qp->priv;
|
||||
struct rvt_swqe *wqe;
|
||||
struct ib_header *hdr = NULL;
|
||||
struct hfi1_16b_header *hdr_16b = NULL;
|
||||
u32 opcode, head, tail;
|
||||
u32 psn;
|
||||
struct tid_rdma_request *req;
|
||||
@@ -1719,24 +1747,7 @@ void hfi1_rc_send_complete(struct rvt_qp *qp, struct hfi1_opa_header *opah)
|
||||
if (!(ib_rvt_state_ops[qp->state] & RVT_SEND_OR_FLUSH_OR_RECV_OK))
|
||||
return;
|
||||
|
||||
/* Find out where the BTH is */
|
||||
if (priv->hdr_type == HFI1_PKT_TYPE_9B) {
|
||||
hdr = &opah->ibh;
|
||||
if (ib_get_lnh(hdr) == HFI1_LRH_BTH)
|
||||
ohdr = &hdr->u.oth;
|
||||
else
|
||||
ohdr = &hdr->u.l.oth;
|
||||
} else {
|
||||
u8 l4;
|
||||
|
||||
hdr_16b = &opah->opah;
|
||||
l4 = hfi1_16B_get_l4(hdr_16b);
|
||||
if (l4 == OPA_16B_L4_IB_LOCAL)
|
||||
ohdr = &hdr_16b->u.oth;
|
||||
else
|
||||
ohdr = &hdr_16b->u.l.oth;
|
||||
}
|
||||
|
||||
ohdr = hfi1_get_rc_ohdr(opah);
|
||||
opcode = ib_bth_get_opcode(ohdr);
|
||||
if ((opcode >= OP(RDMA_READ_RESPONSE_FIRST) &&
|
||||
opcode <= OP(ATOMIC_ACKNOWLEDGE)) ||
|
||||
|
Reference in New Issue
Block a user