mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 05:24:12 +08:00
IB/hfi1: Create inline to get extended headers
This paves the way for another patch that reacts to a
flush sdma completion for RC.
Fixes: 81cd3891f0
("IB/hfi1: Add support for 16B Management Packets")
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
3230f4a8d4
commit
9755f72496
@ -539,6 +539,37 @@ static inline void hfi1_16B_set_qpn(struct opa_16b_mgmt *mgmt,
|
||||
mgmt->src_qpn = cpu_to_be32(src_qp & OPA_16B_MGMT_QPN_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* hfi1_get_rc_ohdr - get extended header
|
||||
* @opah - the opaheader
|
||||
*/
|
||||
static inline struct ib_other_headers *
|
||||
hfi1_get_rc_ohdr(struct hfi1_opa_header *opah)
|
||||
{
|
||||
struct ib_other_headers *ohdr;
|
||||
struct ib_header *hdr = NULL;
|
||||
struct hfi1_16b_header *hdr_16b = NULL;
|
||||
|
||||
/* Find out where the BTH is */
|
||||
if (opah->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;
|
||||
}
|
||||
return ohdr;
|
||||
}
|
||||
|
||||
struct rvt_sge_state;
|
||||
|
||||
/*
|
||||
|
@ -1709,8 +1709,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 +1717,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)) ||
|
||||
|
Loading…
Reference in New Issue
Block a user