Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
Pull more rdma updates from Doug Ledford: "Items of note: - two patches fix a regression in the 4.15 kernel. The 4.14 kernel worked fine with NVMe over Fabrics and mlx5 adapters. That broke in 4.15. The fix is here. - one of the patches (the endian notation patch from Lijun) looks like a lot of lines of change, but it's mostly mechanical in nature. It amounts to the biggest chunk of change in it (it's about 2/3rds of the overall pull request). Summary: - Clean up some function signatures in rxe for clarity - Tidy the RDMA netlink header to remove unimplemented constants - bnxt_re driver fixes, one is a regression this window. - Minor hns driver fixes - Various fixes from Dan Carpenter and his tool - Fix IRQ cleanup race in HFI1 - HF1 performance optimizations and a fix to report counters in the right units - Fix for an IPoIB startup sequence race with the external manager - Oops fix for the new kabi path - Endian cleanups for hns - Fix for mlx5 related to the new automatic affinity support" * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (38 commits) net/mlx5: increase async EQ to avoid EQ overrun mlx5: fix mlx5_get_vector_affinity to start from completion vector 0 RDMA/hns: Fix the endian problem for hns IB/uverbs: Use the standard kConfig format for experimental IB: Update references to libibverbs IB/hfi1: Add 16B rcvhdr trace support IB/hfi1: Convert kzalloc_node and kcalloc to use kcalloc_node IB/core: Avoid a potential OOPs for an unused optional parameter IB/core: Map iWarp AH type to undefined in rdma_ah_find_type IB/ipoib: Fix for potential no-carrier state IB/hfi1: Show fault stats in both TX and RX directions IB/hfi1: Remove blind constants from 16B update IB/hfi1: Convert PortXmitWait/PortVLXmitWait counters to flit times IB/hfi1: Do not override given pcie_pset value IB/hfi1: Optimize process_receive_ib() IB/hfi1: Remove unnecessary fecn and becn fields IB/hfi1: Look up ibport using a pointer in receive path IB/hfi1: Optimize packet type comparison using 9B and bypass code paths IB/hfi1: Compute BTH only for RDMA_WRITE_LAST/SEND_LAST packet IB/hfi1: Remove dependence on qp->s_hdrwords ...
This commit is contained in:
@@ -225,19 +225,8 @@ int hfi1_ruc_check_hdr(struct hfi1_ibport *ibp, struct hfi1_packet *packet)
|
||||
u32 dlid = packet->dlid;
|
||||
u32 slid = packet->slid;
|
||||
u32 sl = packet->sl;
|
||||
int migrated;
|
||||
u32 bth0, bth1;
|
||||
u16 pkey;
|
||||
|
||||
bth0 = be32_to_cpu(packet->ohdr->bth[0]);
|
||||
bth1 = be32_to_cpu(packet->ohdr->bth[1]);
|
||||
if (packet->etype == RHF_RCV_TYPE_BYPASS) {
|
||||
pkey = hfi1_16B_get_pkey(packet->hdr);
|
||||
migrated = bth1 & OPA_BTH_MIG_REQ;
|
||||
} else {
|
||||
pkey = ib_bth_get_pkey(packet->ohdr);
|
||||
migrated = bth0 & IB_BTH_MIG_REQ;
|
||||
}
|
||||
bool migrated = packet->migrated;
|
||||
u16 pkey = packet->pkey;
|
||||
|
||||
if (qp->s_mig_state == IB_MIG_ARMED && migrated) {
|
||||
if (!packet->grh) {
|
||||
@@ -756,19 +745,18 @@ static inline void hfi1_make_ruc_header_16B(struct rvt_qp *qp,
|
||||
u32 slid;
|
||||
u16 pkey = hfi1_get_pkey(ibp, qp->s_pkey_index);
|
||||
u8 l4 = OPA_16B_L4_IB_LOCAL;
|
||||
u8 extra_bytes = hfi1_get_16b_padding((qp->s_hdrwords << 2),
|
||||
ps->s_txreq->s_cur_size);
|
||||
u8 extra_bytes = hfi1_get_16b_padding(
|
||||
(ps->s_txreq->hdr_dwords << 2),
|
||||
ps->s_txreq->s_cur_size);
|
||||
u32 nwords = SIZE_OF_CRC + ((ps->s_txreq->s_cur_size +
|
||||
extra_bytes + SIZE_OF_LT) >> 2);
|
||||
u8 becn = 0;
|
||||
bool becn = false;
|
||||
|
||||
if (unlikely(rdma_ah_get_ah_flags(&qp->remote_ah_attr) & IB_AH_GRH) &&
|
||||
hfi1_check_mcast(rdma_ah_get_dlid(&qp->remote_ah_attr))) {
|
||||
struct ib_grh *grh;
|
||||
struct ib_global_route *grd =
|
||||
rdma_ah_retrieve_grh(&qp->remote_ah_attr);
|
||||
int hdrwords;
|
||||
|
||||
/*
|
||||
* Ensure OPA GIDs are transformed to IB gids
|
||||
* before creating the GRH.
|
||||
@@ -777,9 +765,10 @@ static inline void hfi1_make_ruc_header_16B(struct rvt_qp *qp,
|
||||
grd->sgid_index = 0;
|
||||
grh = &ps->s_txreq->phdr.hdr.opah.u.l.grh;
|
||||
l4 = OPA_16B_L4_IB_GLOBAL;
|
||||
hdrwords = qp->s_hdrwords - 4;
|
||||
qp->s_hdrwords += hfi1_make_grh(ibp, grh, grd,
|
||||
hdrwords, nwords);
|
||||
ps->s_txreq->hdr_dwords +=
|
||||
hfi1_make_grh(ibp, grh, grd,
|
||||
ps->s_txreq->hdr_dwords - LRH_16B_DWORDS,
|
||||
nwords);
|
||||
middle = 0;
|
||||
}
|
||||
|
||||
@@ -798,7 +787,7 @@ static inline void hfi1_make_ruc_header_16B(struct rvt_qp *qp,
|
||||
if (qp->s_flags & RVT_S_ECN) {
|
||||
qp->s_flags &= ~RVT_S_ECN;
|
||||
/* we recently received a FECN, so return a BECN */
|
||||
becn = 1;
|
||||
becn = true;
|
||||
}
|
||||
hfi1_make_ruc_bth(qp, ohdr, bth0, bth1, bth2);
|
||||
|
||||
@@ -813,7 +802,7 @@ static inline void hfi1_make_ruc_header_16B(struct rvt_qp *qp,
|
||||
slid,
|
||||
opa_get_lid(rdma_ah_get_dlid(&qp->remote_ah_attr),
|
||||
16B),
|
||||
(qp->s_hdrwords + nwords) >> 1,
|
||||
(ps->s_txreq->hdr_dwords + nwords) >> 1,
|
||||
pkey, becn, 0, l4, priv->s_sc);
|
||||
}
|
||||
|
||||
@@ -833,13 +822,13 @@ static inline void hfi1_make_ruc_header_9B(struct rvt_qp *qp,
|
||||
|
||||
if (unlikely(rdma_ah_get_ah_flags(&qp->remote_ah_attr) & IB_AH_GRH)) {
|
||||
struct ib_grh *grh = &ps->s_txreq->phdr.hdr.ibh.u.l.grh;
|
||||
int hdrwords = qp->s_hdrwords - 2;
|
||||
|
||||
lrh0 = HFI1_LRH_GRH;
|
||||
qp->s_hdrwords +=
|
||||
ps->s_txreq->hdr_dwords +=
|
||||
hfi1_make_grh(ibp, grh,
|
||||
rdma_ah_read_grh(&qp->remote_ah_attr),
|
||||
hdrwords, nwords);
|
||||
ps->s_txreq->hdr_dwords - LRH_9B_DWORDS,
|
||||
nwords);
|
||||
middle = 0;
|
||||
}
|
||||
lrh0 |= (priv->s_sc & 0xf) << 12 |
|
||||
@@ -865,7 +854,7 @@ static inline void hfi1_make_ruc_header_9B(struct rvt_qp *qp,
|
||||
hfi1_make_ruc_bth(qp, ohdr, bth0, bth1, bth2);
|
||||
hfi1_make_ib_hdr(&ps->s_txreq->phdr.hdr.ibh,
|
||||
lrh0,
|
||||
qp->s_hdrwords + nwords,
|
||||
ps->s_txreq->hdr_dwords + nwords,
|
||||
opa_get_lid(rdma_ah_get_dlid(&qp->remote_ah_attr), 9B),
|
||||
ppd_from_ibp(ibp)->lid |
|
||||
rdma_ah_get_path_bits(&qp->remote_ah_attr));
|
||||
@@ -1030,7 +1019,7 @@ void hfi1_do_send(struct rvt_qp *qp, bool in_thread)
|
||||
ps.s_txreq = get_waiting_verbs_txreq(qp);
|
||||
do {
|
||||
/* Check for a constructed packet to be sent. */
|
||||
if (qp->s_hdrwords != 0) {
|
||||
if (ps.s_txreq) {
|
||||
spin_unlock_irqrestore(&qp->s_lock, ps.flags);
|
||||
/*
|
||||
* If the packet cannot be sent now, return and
|
||||
@@ -1038,8 +1027,6 @@ void hfi1_do_send(struct rvt_qp *qp, bool in_thread)
|
||||
*/
|
||||
if (hfi1_verbs_send(qp, &ps))
|
||||
return;
|
||||
/* Record that s_ahg is empty. */
|
||||
qp->s_hdrwords = 0;
|
||||
/* allow other tasks to run */
|
||||
if (schedule_send_yield(qp, &ps))
|
||||
return;
|
||||
|
مرجع در شماره جدید
Block a user