diff --git a/sys/dev/cxgbe/common/common.h b/sys/dev/cxgbe/common/common.h index fcc728a8bf31..4833678ceff1 100644 --- a/sys/dev/cxgbe/common/common.h +++ b/sys/dev/cxgbe/common/common.h @@ -470,6 +470,7 @@ struct adapter_params { bool fr_nsmr_tpte_wr_support; /* FW support for FR_NSMR_TPTE_WR */ bool dev_512sgl_mr; /* FW support for 512 SGL per FR MR */ bool viid_smt_extn_support; /* FW returns vin, vfvld & smt index? */ + bool write_w_imm_support; /* FW supports WRITE_WITH_IMMEDIATE */ unsigned int max_pkts_per_eth_tx_pkts_wr; uint8_t nsched_cls; /* # of usable sched classes per port */ diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index 573c8f71b084..fb3be3d1e71d 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -5973,6 +5973,11 @@ get_params__post_init(struct adapter *sc) sc->vres.srq.size = val[3] - val[2] + 1; sc->params.max_ordird_qp = val[4]; sc->params.max_ird_adapter = val[5]; + + param[0] = FW_PARAM_DEV(RDMA_WRITE_WITH_IMM); + rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 1, param, val); + if (rc == 0 && val[0] != 0) + sc->params.write_w_imm_support = true; } if (sc->iscsicaps) { param[0] = FW_PARAM_PFVF(ISCSI_START);