cxgbe(4): Request high priority filter support explicitly, as required
by recent firmwares. MFC after: 1 week Sponsored by: Chelsio Communications
This commit is contained in:
parent
e96f6eda1b
commit
a098959032
@ -608,6 +608,7 @@ static int cfg_itype_and_nqueues(struct adapter *, struct intrs_and_queues *);
|
||||
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 *);
|
||||
@ -3955,6 +3956,7 @@ apply_cfg_and_initialize(struct adapter *sc, char *cfg_file,
|
||||
}
|
||||
|
||||
t4_tweak_chip_settings(sc);
|
||||
set_params__pre_init(sc);
|
||||
|
||||
/* get basic stuff going */
|
||||
rc = -t4_fw_initialize(sc, sc->mbox);
|
||||
@ -4076,6 +4078,35 @@ get_params__pre_init(struct adapter *sc)
|
||||
return (rc);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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.
|
||||
@ -4119,20 +4150,6 @@ get_params__post_init(struct adapter *sc)
|
||||
|
||||
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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user