mirror of
https://github.com/torvalds/linux.git
synced 2024-12-24 11:51:27 +00:00
cxgb4: Query firmware for T5 ULPTX MEMWRITE DSGL capabilities
Query firmware to see whether we're allowed to use T5 ULPTX MEMWRITE DSGL capabilities. Also pass that information to Upper Layer Drivers via the new (struct cxgb4_lld_info).ulptx_memwrite_dsgl boolean. Based on original work by Casey Leedom <leedom@chelsio.com> Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4fe44dd776
commit
1ac0f09563
@ -308,6 +308,7 @@ struct adapter_params {
|
|||||||
unsigned char bypass;
|
unsigned char bypass;
|
||||||
|
|
||||||
unsigned int ofldq_wr_cred;
|
unsigned int ofldq_wr_cred;
|
||||||
|
bool ulptx_memwrite_dsgl; /* use of T5 DSGL allowed */
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "t4fw_api.h"
|
#include "t4fw_api.h"
|
||||||
|
@ -3776,6 +3776,7 @@ static void uld_attach(struct adapter *adap, unsigned int uld)
|
|||||||
lli.dbfifo_int_thresh = dbfifo_int_thresh;
|
lli.dbfifo_int_thresh = dbfifo_int_thresh;
|
||||||
lli.sge_pktshift = adap->sge.pktshift;
|
lli.sge_pktshift = adap->sge.pktshift;
|
||||||
lli.enable_fw_ofld_conn = adap->flags & FW_OFLD_CONN;
|
lli.enable_fw_ofld_conn = adap->flags & FW_OFLD_CONN;
|
||||||
|
lli.ulptx_memwrite_dsgl = adap->params.ulptx_memwrite_dsgl;
|
||||||
|
|
||||||
handle = ulds[uld].add(&lli);
|
handle = ulds[uld].add(&lli);
|
||||||
if (IS_ERR(handle)) {
|
if (IS_ERR(handle)) {
|
||||||
@ -5380,6 +5381,21 @@ static int adap_init0(struct adapter *adap)
|
|||||||
val[0] = 1;
|
val[0] = 1;
|
||||||
(void) t4_set_params(adap, adap->mbox, adap->fn, 0, 1, params, val);
|
(void) t4_set_params(adap, adap->mbox, adap->fn, 0, 1, params, val);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Find out whether we're allowed to use the T5+ ULPTX MEMWRITE DSGL
|
||||||
|
* capability. Earlier versions of the firmware didn't have the
|
||||||
|
* ULPTX_MEMWRITE_DSGL so we'll interpret a query failure as no
|
||||||
|
* permission to use ULPTX MEMWRITE DSGL.
|
||||||
|
*/
|
||||||
|
if (is_t4(adap->params.chip)) {
|
||||||
|
adap->params.ulptx_memwrite_dsgl = false;
|
||||||
|
} else {
|
||||||
|
params[0] = FW_PARAM_DEV(ULPTX_MEMWRITE_DSGL);
|
||||||
|
ret = t4_query_params(adap, adap->mbox, adap->fn, 0,
|
||||||
|
1, params, val);
|
||||||
|
adap->params.ulptx_memwrite_dsgl = (ret == 0 && val[0] != 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get device capabilities so we can determine what resources we need
|
* Get device capabilities so we can determine what resources we need
|
||||||
* to manage.
|
* to manage.
|
||||||
|
@ -253,6 +253,7 @@ struct cxgb4_lld_info {
|
|||||||
/* packet data */
|
/* packet data */
|
||||||
bool enable_fw_ofld_conn; /* Enable connection through fw */
|
bool enable_fw_ofld_conn; /* Enable connection through fw */
|
||||||
/* WR */
|
/* WR */
|
||||||
|
bool ulptx_memwrite_dsgl; /* use of T5 DSGL allowed */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cxgb4_uld_info {
|
struct cxgb4_uld_info {
|
||||||
|
@ -932,6 +932,7 @@ enum fw_params_param_dev {
|
|||||||
FW_PARAMS_PARAM_DEV_FWREV = 0x0B,
|
FW_PARAMS_PARAM_DEV_FWREV = 0x0B,
|
||||||
FW_PARAMS_PARAM_DEV_TPREV = 0x0C,
|
FW_PARAMS_PARAM_DEV_TPREV = 0x0C,
|
||||||
FW_PARAMS_PARAM_DEV_CF = 0x0D,
|
FW_PARAMS_PARAM_DEV_CF = 0x0D,
|
||||||
|
FW_PARAMS_PARAM_DEV_ULPTX_MEMWRITE_DSGL = 0x17,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user