svn commit: r346966 - stable/11/sys/dev/cxgbe
Navdeep Parhar
np at FreeBSD.org
Tue Apr 30 17:20:40 UTC 2019
Author: np
Date: Tue Apr 30 17:20:38 2019
New Revision: 346966
URL: https://svnweb.freebsd.org/changeset/base/346966
Log:
MFC r344654:
cxgbe(4): Request high priority filter support explicitly, as required
by recent firmwares.
Sponsored by: Chelsio Communications
Modified:
stable/11/sys/dev/cxgbe/t4_main.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/dev/cxgbe/t4_main.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_main.c Tue Apr 30 17:18:05 2019 (r346965)
+++ stable/11/sys/dev/cxgbe/t4_main.c Tue Apr 30 17:20:38 2019 (r346966)
@@ -603,6 +603,7 @@ static int cfg_itype_and_nqueues(struct adapter *, str
static int contact_firmware(struct adapter *);
static int partition_resources(struct adapter *);
static int get_params__pre_init(struct adapter *);
+static int set_params__pre_init(struct adapter *);
static int get_params__post_init(struct adapter *);
static int set_params__post_init(struct adapter *);
static void t4_set_desc(struct adapter *);
@@ -3914,6 +3915,7 @@ apply_cfg_and_initialize(struct adapter *sc, char *cfg
}
t4_tweak_chip_settings(sc);
+ set_params__pre_init(sc);
/* get basic stuff going */
rc = -t4_fw_initialize(sc, sc->mbox);
@@ -4036,6 +4038,35 @@ get_params__pre_init(struct adapter *sc)
}
/*
+ * Any params that need to be set before FW_INITIALIZE.
+ */
+static int
+set_params__pre_init(struct adapter *sc)
+{
+ int rc = 0;
+ uint32_t param, val;
+
+ if (chip_id(sc) >= CHELSIO_T6) {
+ param = FW_PARAM_DEV(HPFILTER_REGION_SUPPORT);
+ val = 1;
+ rc = -t4_set_params(sc, sc->mbox, sc->pf, 0, 1, ¶m, &val);
+ /* firmwares < 1.20.1.0 do not have this param. */
+ if (rc == FW_EINVAL && sc->params.fw_vers <
+ (V_FW_HDR_FW_VER_MAJOR(1) | V_FW_HDR_FW_VER_MINOR(20) |
+ V_FW_HDR_FW_VER_MICRO(1) | V_FW_HDR_FW_VER_BUILD(0))) {
+ rc = 0;
+ }
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to enable high priority filters :%d.\n",
+ rc);
+ }
+ }
+
+ return (rc);
+}
+
+/*
* Retrieve various parameters that are of interest to the driver. The device
* has been initialized by the firmware at this point.
*/
@@ -4077,20 +4108,6 @@ get_params__post_init(struct adapter *sc)
sc->params.core_vdd = val[6];
if (chip_id(sc) >= CHELSIO_T6) {
-
-#ifdef INVARIANTS
- if (sc->params.fw_vers >=
- (V_FW_HDR_FW_VER_MAJOR(1) | V_FW_HDR_FW_VER_MINOR(20) |
- V_FW_HDR_FW_VER_MICRO(1) | V_FW_HDR_FW_VER_BUILD(0))) {
- /*
- * Note that the code to enable the region should run
- * before t4_fw_initialize and not here. This is just a
- * reminder to add said code.
- */
- device_printf(sc->dev,
- "hpfilter region not enabled.\n");
- }
-#endif
sc->tids.tid_base = t4_read_reg(sc,
A_LE_DB_ACTIVE_TABLE_START_INDEX);
More information about the svn-src-stable
mailing list