|
|
@@ -14586,7 +14586,7 @@ void hfi1_deinit_vnic_rsm(struct hfi1_devdata *dd)
|
|
|
clear_rcvctrl(dd, RCV_CTRL_RCV_RSM_ENABLE_SMASK);
|
|
|
}
|
|
|
|
|
|
-static void init_rxe(struct hfi1_devdata *dd)
|
|
|
+static int init_rxe(struct hfi1_devdata *dd)
|
|
|
{
|
|
|
struct rsm_map_table *rmt;
|
|
|
u64 val;
|
|
|
@@ -14595,6 +14595,9 @@ static void init_rxe(struct hfi1_devdata *dd)
|
|
|
write_csr(dd, RCV_ERR_MASK, ~0ull);
|
|
|
|
|
|
rmt = alloc_rsm_map_table(dd);
|
|
|
+ if (!rmt)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
/* set up QOS, including the QPN map table */
|
|
|
init_qos(dd, rmt);
|
|
|
init_user_fecn_handling(dd, rmt);
|
|
|
@@ -14621,6 +14624,7 @@ static void init_rxe(struct hfi1_devdata *dd)
|
|
|
val |= ((4ull & RCV_BYPASS_HDR_SIZE_MASK) <<
|
|
|
RCV_BYPASS_HDR_SIZE_SHIFT);
|
|
|
write_csr(dd, RCV_BYPASS, val);
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
static void init_other(struct hfi1_devdata *dd)
|
|
|
@@ -15163,7 +15167,10 @@ struct hfi1_devdata *hfi1_init_dd(struct pci_dev *pdev,
|
|
|
goto bail_cleanup;
|
|
|
|
|
|
/* set initial RXE CSRs */
|
|
|
- init_rxe(dd);
|
|
|
+ ret = init_rxe(dd);
|
|
|
+ if (ret)
|
|
|
+ goto bail_cleanup;
|
|
|
+
|
|
|
/* set initial TXE CSRs */
|
|
|
init_txe(dd);
|
|
|
/* set initial non-RXE, non-TXE CSRs */
|