@@ -2566,11 +2566,6 @@ static int bnxt_re_build_inv_wqe(const struct ib_send_wr *wr,
2566
2566
wqe -> type = BNXT_QPLIB_SWQE_TYPE_LOCAL_INV ;
2567
2567
wqe -> local_inv .inv_l_key = wr -> ex .invalidate_rkey ;
2568
2568
2569
- /* Need unconditional fence for local invalidate
2570
- * opcode to work as expected.
2571
- */
2572
- wqe -> flags |= BNXT_QPLIB_SWQE_FLAGS_UC_FENCE ;
2573
-
2574
2569
if (wr -> send_flags & IB_SEND_SIGNALED )
2575
2570
wqe -> flags |= BNXT_QPLIB_SWQE_FLAGS_SIGNAL_COMP ;
2576
2571
if (wr -> send_flags & IB_SEND_SOLICITED )
@@ -2593,12 +2588,6 @@ static int bnxt_re_build_reg_wqe(const struct ib_reg_wr *wr,
2593
2588
wqe -> frmr .levels = qplib_frpl -> hwq .level ;
2594
2589
wqe -> type = BNXT_QPLIB_SWQE_TYPE_REG_MR ;
2595
2590
2596
- /* Need unconditional fence for reg_mr
2597
- * opcode to function as expected.
2598
- */
2599
-
2600
- wqe -> flags |= BNXT_QPLIB_SWQE_FLAGS_UC_FENCE ;
2601
-
2602
2591
if (wr -> wr .send_flags & IB_SEND_SIGNALED )
2603
2592
wqe -> flags |= BNXT_QPLIB_SWQE_FLAGS_SIGNAL_COMP ;
2604
2593
@@ -2729,6 +2718,18 @@ static int bnxt_re_post_send_shadow_qp(struct bnxt_re_dev *rdev,
2729
2718
return rc ;
2730
2719
}
2731
2720
2721
+ static void bnxt_re_legacy_set_uc_fence (struct bnxt_qplib_swqe * wqe )
2722
+ {
2723
+ /* Need unconditional fence for non-wire memory opcode
2724
+ * to work as expected.
2725
+ */
2726
+ if (wqe -> type == BNXT_QPLIB_SWQE_TYPE_LOCAL_INV ||
2727
+ wqe -> type == BNXT_QPLIB_SWQE_TYPE_FAST_REG_MR ||
2728
+ wqe -> type == BNXT_QPLIB_SWQE_TYPE_REG_MR ||
2729
+ wqe -> type == BNXT_QPLIB_SWQE_TYPE_BIND_MW )
2730
+ wqe -> flags |= BNXT_QPLIB_SWQE_FLAGS_UC_FENCE ;
2731
+ }
2732
+
2732
2733
int bnxt_re_post_send (struct ib_qp * ib_qp , const struct ib_send_wr * wr ,
2733
2734
const struct ib_send_wr * * bad_wr )
2734
2735
{
@@ -2808,8 +2809,11 @@ int bnxt_re_post_send(struct ib_qp *ib_qp, const struct ib_send_wr *wr,
2808
2809
rc = - EINVAL ;
2809
2810
goto bad ;
2810
2811
}
2811
- if (!rc )
2812
+ if (!rc ) {
2813
+ if (!bnxt_qplib_is_chip_gen_p5_p7 (qp -> rdev -> chip_ctx ))
2814
+ bnxt_re_legacy_set_uc_fence (& wqe );
2812
2815
rc = bnxt_qplib_post_send (& qp -> qplib_qp , & wqe );
2816
+ }
2813
2817
bad :
2814
2818
if (rc ) {
2815
2819
ibdev_err (& qp -> rdev -> ibdev ,
0 commit comments