Commit ce91a923 authored by Naresh Kumar Inna's avatar Naresh Kumar Inna Committed by James Bottomley

[SCSI] cxgb4/cxgb4vf: Chelsio FCoE offload driver submission (common header updates).

This patch contains updates to firmware/hardware header files shared
between csiostor and cxgb4/cxgb4vf, and the resulting changes to the
cxgb4/cxgb4vf source files.
Signed-off-by: default avatarNaresh Kumar Inna <naresh@chelsio.com>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 53ad570b
...@@ -3203,7 +3203,7 @@ static int adap_init1(struct adapter *adap, struct fw_caps_config_cmd *c) ...@@ -3203,7 +3203,7 @@ static int adap_init1(struct adapter *adap, struct fw_caps_config_cmd *c)
memset(c, 0, sizeof(*c)); memset(c, 0, sizeof(*c));
c->op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) | c->op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
FW_CMD_REQUEST | FW_CMD_READ); FW_CMD_REQUEST | FW_CMD_READ);
c->retval_len16 = htonl(FW_LEN16(*c)); c->cfvalid_to_len16 = htonl(FW_LEN16(*c));
ret = t4_wr_mbox(adap, adap->fn, c, sizeof(*c), c); ret = t4_wr_mbox(adap, adap->fn, c, sizeof(*c), c);
if (ret < 0) if (ret < 0)
return ret; return ret;
...@@ -3397,7 +3397,7 @@ static int adap_init0_config(struct adapter *adapter, int reset) ...@@ -3397,7 +3397,7 @@ static int adap_init0_config(struct adapter *adapter, int reset)
htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) | htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
FW_CMD_REQUEST | FW_CMD_REQUEST |
FW_CMD_READ); FW_CMD_READ);
caps_cmd.retval_len16 = caps_cmd.cfvalid_to_len16 =
htonl(FW_CAPS_CONFIG_CMD_CFVALID | htonl(FW_CAPS_CONFIG_CMD_CFVALID |
FW_CAPS_CONFIG_CMD_MEMTYPE_CF(mtype) | FW_CAPS_CONFIG_CMD_MEMTYPE_CF(mtype) |
FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(maddr >> 16) | FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(maddr >> 16) |
...@@ -3422,7 +3422,7 @@ static int adap_init0_config(struct adapter *adapter, int reset) ...@@ -3422,7 +3422,7 @@ static int adap_init0_config(struct adapter *adapter, int reset)
htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) | htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
FW_CMD_REQUEST | FW_CMD_REQUEST |
FW_CMD_WRITE); FW_CMD_WRITE);
caps_cmd.retval_len16 = htonl(FW_LEN16(caps_cmd)); caps_cmd.cfvalid_to_len16 = htonl(FW_LEN16(caps_cmd));
ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, sizeof(caps_cmd), ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, sizeof(caps_cmd),
NULL); NULL);
if (ret < 0) if (ret < 0)
...@@ -3497,7 +3497,7 @@ static int adap_init0_no_config(struct adapter *adapter, int reset) ...@@ -3497,7 +3497,7 @@ static int adap_init0_no_config(struct adapter *adapter, int reset)
memset(&caps_cmd, 0, sizeof(caps_cmd)); memset(&caps_cmd, 0, sizeof(caps_cmd));
caps_cmd.op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) | caps_cmd.op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
FW_CMD_REQUEST | FW_CMD_READ); FW_CMD_REQUEST | FW_CMD_READ);
caps_cmd.retval_len16 = htonl(FW_LEN16(caps_cmd)); caps_cmd.cfvalid_to_len16 = htonl(FW_LEN16(caps_cmd));
ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, sizeof(caps_cmd), ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, sizeof(caps_cmd),
&caps_cmd); &caps_cmd);
if (ret < 0) if (ret < 0)
...@@ -3929,7 +3929,7 @@ static int adap_init0(struct adapter *adap) ...@@ -3929,7 +3929,7 @@ static int adap_init0(struct adapter *adap)
memset(&caps_cmd, 0, sizeof(caps_cmd)); memset(&caps_cmd, 0, sizeof(caps_cmd));
caps_cmd.op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) | caps_cmd.op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
FW_CMD_REQUEST | FW_CMD_READ); FW_CMD_REQUEST | FW_CMD_READ);
caps_cmd.retval_len16 = htonl(FW_LEN16(caps_cmd)); caps_cmd.cfvalid_to_len16 = htonl(FW_LEN16(caps_cmd));
ret = t4_wr_mbox(adap, adap->mbox, &caps_cmd, sizeof(caps_cmd), ret = t4_wr_mbox(adap, adap->mbox, &caps_cmd, sizeof(caps_cmd),
&caps_cmd); &caps_cmd);
if (ret < 0) if (ret < 0)
......
...@@ -508,7 +508,7 @@ static inline void ring_fl_db(struct adapter *adap, struct sge_fl *q) ...@@ -508,7 +508,7 @@ static inline void ring_fl_db(struct adapter *adap, struct sge_fl *q)
{ {
if (q->pend_cred >= 8) { if (q->pend_cred >= 8) {
wmb(); wmb();
t4_write_reg(adap, MYPF_REG(SGE_PF_KDOORBELL), DBPRIO | t4_write_reg(adap, MYPF_REG(SGE_PF_KDOORBELL), DBPRIO(1) |
QID(q->cntxt_id) | PIDX(q->pend_cred / 8)); QID(q->cntxt_id) | PIDX(q->pend_cred / 8));
q->pend_cred &= 7; q->pend_cred &= 7;
} }
...@@ -2082,10 +2082,10 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq, ...@@ -2082,10 +2082,10 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
goto fl_nomem; goto fl_nomem;
flsz = fl->size / 8 + s->stat_len / sizeof(struct tx_desc); flsz = fl->size / 8 + s->stat_len / sizeof(struct tx_desc);
c.iqns_to_fl0congen = htonl(FW_IQ_CMD_FL0PACKEN | c.iqns_to_fl0congen = htonl(FW_IQ_CMD_FL0PACKEN(1) |
FW_IQ_CMD_FL0FETCHRO(1) | FW_IQ_CMD_FL0FETCHRO(1) |
FW_IQ_CMD_FL0DATARO(1) | FW_IQ_CMD_FL0DATARO(1) |
FW_IQ_CMD_FL0PADEN); FW_IQ_CMD_FL0PADEN(1));
c.fl0dcaen_to_fl0cidxfthresh = htons(FW_IQ_CMD_FL0FBMIN(2) | c.fl0dcaen_to_fl0cidxfthresh = htons(FW_IQ_CMD_FL0FBMIN(2) |
FW_IQ_CMD_FL0FBMAX(3)); FW_IQ_CMD_FL0FBMAX(3));
c.fl0size = htons(flsz); c.fl0size = htons(flsz);
......
...@@ -648,12 +648,12 @@ static int sf1_read(struct adapter *adapter, unsigned int byte_cnt, int cont, ...@@ -648,12 +648,12 @@ static int sf1_read(struct adapter *adapter, unsigned int byte_cnt, int cont,
if (!byte_cnt || byte_cnt > 4) if (!byte_cnt || byte_cnt > 4)
return -EINVAL; return -EINVAL;
if (t4_read_reg(adapter, SF_OP) & BUSY) if (t4_read_reg(adapter, SF_OP) & SF_BUSY)
return -EBUSY; return -EBUSY;
cont = cont ? SF_CONT : 0; cont = cont ? SF_CONT : 0;
lock = lock ? SF_LOCK : 0; lock = lock ? SF_LOCK : 0;
t4_write_reg(adapter, SF_OP, lock | cont | BYTECNT(byte_cnt - 1)); t4_write_reg(adapter, SF_OP, lock | cont | BYTECNT(byte_cnt - 1));
ret = t4_wait_op_done(adapter, SF_OP, BUSY, 0, SF_ATTEMPTS, 5); ret = t4_wait_op_done(adapter, SF_OP, SF_BUSY, 0, SF_ATTEMPTS, 5);
if (!ret) if (!ret)
*valp = t4_read_reg(adapter, SF_DATA); *valp = t4_read_reg(adapter, SF_DATA);
return ret; return ret;
...@@ -676,14 +676,14 @@ static int sf1_write(struct adapter *adapter, unsigned int byte_cnt, int cont, ...@@ -676,14 +676,14 @@ static int sf1_write(struct adapter *adapter, unsigned int byte_cnt, int cont,
{ {
if (!byte_cnt || byte_cnt > 4) if (!byte_cnt || byte_cnt > 4)
return -EINVAL; return -EINVAL;
if (t4_read_reg(adapter, SF_OP) & BUSY) if (t4_read_reg(adapter, SF_OP) & SF_BUSY)
return -EBUSY; return -EBUSY;
cont = cont ? SF_CONT : 0; cont = cont ? SF_CONT : 0;
lock = lock ? SF_LOCK : 0; lock = lock ? SF_LOCK : 0;
t4_write_reg(adapter, SF_DATA, val); t4_write_reg(adapter, SF_DATA, val);
t4_write_reg(adapter, SF_OP, lock | t4_write_reg(adapter, SF_OP, lock |
cont | BYTECNT(byte_cnt - 1) | OP_WR); cont | BYTECNT(byte_cnt - 1) | OP_WR);
return t4_wait_op_done(adapter, SF_OP, BUSY, 0, SF_ATTEMPTS, 5); return t4_wait_op_done(adapter, SF_OP, SF_BUSY, 0, SF_ATTEMPTS, 5);
} }
/** /**
...@@ -2252,14 +2252,14 @@ int t4_wol_pat_enable(struct adapter *adap, unsigned int port, unsigned int map, ...@@ -2252,14 +2252,14 @@ int t4_wol_pat_enable(struct adapter *adap, unsigned int port, unsigned int map,
t4_write_reg(adap, EPIO_REG(DATA0), mask0); t4_write_reg(adap, EPIO_REG(DATA0), mask0);
t4_write_reg(adap, EPIO_REG(OP), ADDRESS(i) | EPIOWR); t4_write_reg(adap, EPIO_REG(OP), ADDRESS(i) | EPIOWR);
t4_read_reg(adap, EPIO_REG(OP)); /* flush */ t4_read_reg(adap, EPIO_REG(OP)); /* flush */
if (t4_read_reg(adap, EPIO_REG(OP)) & BUSY) if (t4_read_reg(adap, EPIO_REG(OP)) & SF_BUSY)
return -ETIMEDOUT; return -ETIMEDOUT;
/* write CRC */ /* write CRC */
t4_write_reg(adap, EPIO_REG(DATA0), crc); t4_write_reg(adap, EPIO_REG(DATA0), crc);
t4_write_reg(adap, EPIO_REG(OP), ADDRESS(i + 32) | EPIOWR); t4_write_reg(adap, EPIO_REG(OP), ADDRESS(i + 32) | EPIOWR);
t4_read_reg(adap, EPIO_REG(OP)); /* flush */ t4_read_reg(adap, EPIO_REG(OP)); /* flush */
if (t4_read_reg(adap, EPIO_REG(OP)) & BUSY) if (t4_read_reg(adap, EPIO_REG(OP)) & SF_BUSY)
return -ETIMEDOUT; return -ETIMEDOUT;
} }
#undef EPIO_REG #undef EPIO_REG
...@@ -2405,7 +2405,7 @@ int t4_fw_hello(struct adapter *adap, unsigned int mbox, unsigned int evt_mbox, ...@@ -2405,7 +2405,7 @@ int t4_fw_hello(struct adapter *adap, unsigned int mbox, unsigned int evt_mbox,
retry: retry:
memset(&c, 0, sizeof(c)); memset(&c, 0, sizeof(c));
INIT_CMD(c, HELLO, WRITE); INIT_CMD(c, HELLO, WRITE);
c.err_to_mbasyncnot = htonl( c.err_to_clearinit = htonl(
FW_HELLO_CMD_MASTERDIS(master == MASTER_CANT) | FW_HELLO_CMD_MASTERDIS(master == MASTER_CANT) |
FW_HELLO_CMD_MASTERFORCE(master == MASTER_MUST) | FW_HELLO_CMD_MASTERFORCE(master == MASTER_MUST) |
FW_HELLO_CMD_MBMASTER(master == MASTER_MUST ? mbox : FW_HELLO_CMD_MBMASTER(master == MASTER_MUST ? mbox :
...@@ -2426,7 +2426,7 @@ int t4_fw_hello(struct adapter *adap, unsigned int mbox, unsigned int evt_mbox, ...@@ -2426,7 +2426,7 @@ int t4_fw_hello(struct adapter *adap, unsigned int mbox, unsigned int evt_mbox,
return ret; return ret;
} }
v = ntohl(c.err_to_mbasyncnot); v = ntohl(c.err_to_clearinit);
master_mbox = FW_HELLO_CMD_MBMASTER_GET(v); master_mbox = FW_HELLO_CMD_MBMASTER_GET(v);
if (state) { if (state) {
if (v & FW_HELLO_CMD_ERR) if (v & FW_HELLO_CMD_ERR)
...@@ -2774,7 +2774,7 @@ int t4_fw_config_file(struct adapter *adap, unsigned int mbox, ...@@ -2774,7 +2774,7 @@ int t4_fw_config_file(struct adapter *adap, unsigned int mbox,
htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) | htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
FW_CMD_REQUEST | FW_CMD_REQUEST |
FW_CMD_READ); FW_CMD_READ);
caps_cmd.retval_len16 = caps_cmd.cfvalid_to_len16 =
htonl(FW_CAPS_CONFIG_CMD_CFVALID | htonl(FW_CAPS_CONFIG_CMD_CFVALID |
FW_CAPS_CONFIG_CMD_MEMTYPE_CF(mtype) | FW_CAPS_CONFIG_CMD_MEMTYPE_CF(mtype) |
FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(maddr >> 16) | FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(maddr >> 16) |
...@@ -2797,7 +2797,7 @@ int t4_fw_config_file(struct adapter *adap, unsigned int mbox, ...@@ -2797,7 +2797,7 @@ int t4_fw_config_file(struct adapter *adap, unsigned int mbox,
htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) | htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
FW_CMD_REQUEST | FW_CMD_REQUEST |
FW_CMD_WRITE); FW_CMD_WRITE);
caps_cmd.retval_len16 = htonl(FW_LEN16(caps_cmd)); caps_cmd.cfvalid_to_len16 = htonl(FW_LEN16(caps_cmd));
return t4_wr_mbox(adap, mbox, &caps_cmd, sizeof(caps_cmd), NULL); return t4_wr_mbox(adap, mbox, &caps_cmd, sizeof(caps_cmd), NULL);
} }
......
...@@ -658,6 +658,7 @@ struct ulptx_sgl { ...@@ -658,6 +658,7 @@ struct ulptx_sgl {
__be32 cmd_nsge; __be32 cmd_nsge;
#define ULPTX_CMD(x) ((x) << 24) #define ULPTX_CMD(x) ((x) << 24)
#define ULPTX_NSGE(x) ((x) << 0) #define ULPTX_NSGE(x) ((x) << 0)
#define ULPTX_MORE (1U << 23)
__be32 len0; __be32 len0;
__be64 addr0; __be64 addr0;
struct ulptx_sge_pair sge[0]; struct ulptx_sge_pair sge[0];
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
#define QID_MASK 0xffff8000U #define QID_MASK 0xffff8000U
#define QID_SHIFT 15 #define QID_SHIFT 15
#define QID(x) ((x) << QID_SHIFT) #define QID(x) ((x) << QID_SHIFT)
#define DBPRIO 0x00004000U #define DBPRIO(x) ((x) << 14)
#define PIDX_MASK 0x00003fffU #define PIDX_MASK 0x00003fffU
#define PIDX_SHIFT 0 #define PIDX_SHIFT 0
#define PIDX(x) ((x) << PIDX_SHIFT) #define PIDX(x) ((x) << PIDX_SHIFT)
...@@ -193,6 +193,12 @@ ...@@ -193,6 +193,12 @@
#define SGE_FL_BUFFER_SIZE1 0x1048 #define SGE_FL_BUFFER_SIZE1 0x1048
#define SGE_FL_BUFFER_SIZE2 0x104c #define SGE_FL_BUFFER_SIZE2 0x104c
#define SGE_FL_BUFFER_SIZE3 0x1050 #define SGE_FL_BUFFER_SIZE3 0x1050
#define SGE_FL_BUFFER_SIZE4 0x1054
#define SGE_FL_BUFFER_SIZE5 0x1058
#define SGE_FL_BUFFER_SIZE6 0x105c
#define SGE_FL_BUFFER_SIZE7 0x1060
#define SGE_FL_BUFFER_SIZE8 0x1064
#define SGE_INGRESS_RX_THRESHOLD 0x10a0 #define SGE_INGRESS_RX_THRESHOLD 0x10a0
#define THRESHOLD_0_MASK 0x3f000000U #define THRESHOLD_0_MASK 0x3f000000U
#define THRESHOLD_0_SHIFT 24 #define THRESHOLD_0_SHIFT 24
...@@ -217,6 +223,17 @@ ...@@ -217,6 +223,17 @@
#define EGRTHRESHOLD(x) ((x) << EGRTHRESHOLDshift) #define EGRTHRESHOLD(x) ((x) << EGRTHRESHOLDshift)
#define EGRTHRESHOLD_GET(x) (((x) & EGRTHRESHOLD_MASK) >> EGRTHRESHOLDshift) #define EGRTHRESHOLD_GET(x) (((x) & EGRTHRESHOLD_MASK) >> EGRTHRESHOLDshift)
#define SGE_DBFIFO_STATUS 0x10a4
#define HP_INT_THRESH_SHIFT 28
#define HP_INT_THRESH_MASK 0xfU
#define HP_INT_THRESH(x) ((x) << HP_INT_THRESH_SHIFT)
#define LP_INT_THRESH_SHIFT 12
#define LP_INT_THRESH_MASK 0xfU
#define LP_INT_THRESH(x) ((x) << LP_INT_THRESH_SHIFT)
#define SGE_DOORBELL_CONTROL 0x10a8
#define ENABLE_DROP (1 << 13)
#define SGE_TIMER_VALUE_0_AND_1 0x10b8 #define SGE_TIMER_VALUE_0_AND_1 0x10b8
#define TIMERVALUE0_MASK 0xffff0000U #define TIMERVALUE0_MASK 0xffff0000U
#define TIMERVALUE0_SHIFT 16 #define TIMERVALUE0_SHIFT 16
...@@ -277,6 +294,10 @@ ...@@ -277,6 +294,10 @@
#define A_SGE_CTXT_CMD 0x11fc #define A_SGE_CTXT_CMD 0x11fc
#define A_SGE_DBQ_CTXT_BADDR 0x1084 #define A_SGE_DBQ_CTXT_BADDR 0x1084
#define PCIE_PF_CFG 0x40
#define AIVEC(x) ((x) << 4)
#define AIVEC_MASK 0x3ffU
#define PCIE_PF_CLI 0x44 #define PCIE_PF_CLI 0x44
#define PCIE_INT_CAUSE 0x3004 #define PCIE_INT_CAUSE 0x3004
#define UNXSPLCPLERR 0x20000000U #define UNXSPLCPLERR 0x20000000U
...@@ -322,6 +343,13 @@ ...@@ -322,6 +343,13 @@
#define PCIE_MEM_ACCESS_OFFSET 0x306c #define PCIE_MEM_ACCESS_OFFSET 0x306c
#define PCIE_FW 0x30b8 #define PCIE_FW 0x30b8
#define PCIE_FW_ERR 0x80000000U
#define PCIE_FW_INIT 0x40000000U
#define PCIE_FW_HALT 0x20000000U
#define PCIE_FW_MASTER_VLD 0x00008000U
#define PCIE_FW_MASTER(x) ((x) << 12)
#define PCIE_FW_MASTER_MASK 0x7
#define PCIE_FW_MASTER_GET(x) (((x) >> 12) & PCIE_FW_MASTER_MASK)
#define PCIE_CORE_UTL_SYSTEM_BUS_AGENT_STATUS 0x5908 #define PCIE_CORE_UTL_SYSTEM_BUS_AGENT_STATUS 0x5908
#define RNPP 0x80000000U #define RNPP 0x80000000U
...@@ -432,6 +460,9 @@ ...@@ -432,6 +460,9 @@
#define MBOWNER(x) ((x) << MBOWNER_SHIFT) #define MBOWNER(x) ((x) << MBOWNER_SHIFT)
#define MBOWNER_GET(x) (((x) & MBOWNER_MASK) >> MBOWNER_SHIFT) #define MBOWNER_GET(x) (((x) & MBOWNER_MASK) >> MBOWNER_SHIFT)
#define CIM_PF_HOST_INT_ENABLE 0x288
#define MBMSGRDYINTEN(x) ((x) << 19)
#define CIM_PF_HOST_INT_CAUSE 0x28c #define CIM_PF_HOST_INT_CAUSE 0x28c
#define MBMSGRDYINT 0x00080000U #define MBMSGRDYINT 0x00080000U
...@@ -922,7 +953,7 @@ ...@@ -922,7 +953,7 @@
#define SF_DATA 0x193f8 #define SF_DATA 0x193f8
#define SF_OP 0x193fc #define SF_OP 0x193fc
#define BUSY 0x80000000U #define SF_BUSY 0x80000000U
#define SF_LOCK 0x00000010U #define SF_LOCK 0x00000010U
#define SF_CONT 0x00000008U #define SF_CONT 0x00000008U
#define BYTECNT_MASK 0x00000006U #define BYTECNT_MASK 0x00000006U
...@@ -981,6 +1012,7 @@ ...@@ -981,6 +1012,7 @@
#define I2CM 0x00000002U #define I2CM 0x00000002U
#define CIM 0x00000001U #define CIM 0x00000001U
#define PL_INT_ENABLE 0x19410
#define PL_INT_MAP0 0x19414 #define PL_INT_MAP0 0x19414
#define PL_RST 0x19428 #define PL_RST 0x19428
#define PIORST 0x00000002U #define PIORST 0x00000002U
......
...@@ -68,6 +68,7 @@ struct fw_wr_hdr { ...@@ -68,6 +68,7 @@ struct fw_wr_hdr {
}; };
#define FW_WR_OP(x) ((x) << 24) #define FW_WR_OP(x) ((x) << 24)
#define FW_WR_OP_GET(x) (((x) >> 24) & 0xff)
#define FW_WR_ATOMIC(x) ((x) << 23) #define FW_WR_ATOMIC(x) ((x) << 23)
#define FW_WR_FLUSH(x) ((x) << 22) #define FW_WR_FLUSH(x) ((x) << 22)
#define FW_WR_COMPL(x) ((x) << 21) #define FW_WR_COMPL(x) ((x) << 21)
...@@ -222,6 +223,7 @@ struct fw_cmd_hdr { ...@@ -222,6 +223,7 @@ struct fw_cmd_hdr {
#define FW_CMD_OP(x) ((x) << 24) #define FW_CMD_OP(x) ((x) << 24)
#define FW_CMD_OP_GET(x) (((x) >> 24) & 0xff) #define FW_CMD_OP_GET(x) (((x) >> 24) & 0xff)
#define FW_CMD_REQUEST (1U << 23) #define FW_CMD_REQUEST (1U << 23)
#define FW_CMD_REQUEST_GET(x) (((x) >> 23) & 0x1)
#define FW_CMD_READ (1U << 22) #define FW_CMD_READ (1U << 22)
#define FW_CMD_WRITE (1U << 21) #define FW_CMD_WRITE (1U << 21)
#define FW_CMD_EXEC (1U << 20) #define FW_CMD_EXEC (1U << 20)
...@@ -229,6 +231,7 @@ struct fw_cmd_hdr { ...@@ -229,6 +231,7 @@ struct fw_cmd_hdr {
#define FW_CMD_RETVAL(x) ((x) << 8) #define FW_CMD_RETVAL(x) ((x) << 8)
#define FW_CMD_RETVAL_GET(x) (((x) >> 8) & 0xff) #define FW_CMD_RETVAL_GET(x) (((x) >> 8) & 0xff)
#define FW_CMD_LEN16(x) ((x) << 0) #define FW_CMD_LEN16(x) ((x) << 0)
#define FW_LEN16(fw_struct) FW_CMD_LEN16(sizeof(fw_struct) / 16)
enum fw_ldst_addrspc { enum fw_ldst_addrspc {
FW_LDST_ADDRSPC_FIRMWARE = 0x0001, FW_LDST_ADDRSPC_FIRMWARE = 0x0001,
...@@ -241,7 +244,8 @@ enum fw_ldst_addrspc { ...@@ -241,7 +244,8 @@ enum fw_ldst_addrspc {
FW_LDST_ADDRSPC_TP_MIB = 0x0012, FW_LDST_ADDRSPC_TP_MIB = 0x0012,
FW_LDST_ADDRSPC_MDIO = 0x0018, FW_LDST_ADDRSPC_MDIO = 0x0018,
FW_LDST_ADDRSPC_MPS = 0x0020, FW_LDST_ADDRSPC_MPS = 0x0020,
FW_LDST_ADDRSPC_FUNC = 0x0028 FW_LDST_ADDRSPC_FUNC = 0x0028,
FW_LDST_ADDRSPC_FUNC_PCIE = 0x0029,
}; };
enum fw_ldst_mps_fid { enum fw_ldst_mps_fid {
...@@ -303,6 +307,16 @@ struct fw_ldst_cmd { ...@@ -303,6 +307,16 @@ struct fw_ldst_cmd {
__be64 data0; __be64 data0;
__be64 data1; __be64 data1;
} func; } func;
struct fw_ldst_pcie {
u8 ctrl_to_fn;
u8 bnum;
u8 r;
u8 ext_r;
u8 select_naccess;
u8 pcie_fn;
__be16 nset_pkd;
__be32 data[12];
} pcie;
} u; } u;
}; };
...@@ -312,6 +326,9 @@ struct fw_ldst_cmd { ...@@ -312,6 +326,9 @@ struct fw_ldst_cmd {
#define FW_LDST_CMD_FID(x) ((x) << 15) #define FW_LDST_CMD_FID(x) ((x) << 15)
#define FW_LDST_CMD_CTL(x) ((x) << 0) #define FW_LDST_CMD_CTL(x) ((x) << 0)
#define FW_LDST_CMD_RPLCPF(x) ((x) << 0) #define FW_LDST_CMD_RPLCPF(x) ((x) << 0)
#define FW_LDST_CMD_LC (1U << 4)
#define FW_LDST_CMD_NACCESS(x) ((x) << 0)
#define FW_LDST_CMD_FN(x) ((x) << 0)
struct fw_reset_cmd { struct fw_reset_cmd {
__be32 op_to_write; __be32 op_to_write;
...@@ -333,7 +350,7 @@ enum fw_hellow_cmd { ...@@ -333,7 +350,7 @@ enum fw_hellow_cmd {
struct fw_hello_cmd { struct fw_hello_cmd {
__be32 op_to_write; __be32 op_to_write;
__be32 retval_len16; __be32 retval_len16;
__be32 err_to_mbasyncnot; __be32 err_to_clearinit;
#define FW_HELLO_CMD_ERR (1U << 31) #define FW_HELLO_CMD_ERR (1U << 31)
#define FW_HELLO_CMD_INIT (1U << 30) #define FW_HELLO_CMD_INIT (1U << 30)
#define FW_HELLO_CMD_MASTERDIS(x) ((x) << 29) #define FW_HELLO_CMD_MASTERDIS(x) ((x) << 29)
...@@ -343,6 +360,7 @@ struct fw_hello_cmd { ...@@ -343,6 +360,7 @@ struct fw_hello_cmd {
#define FW_HELLO_CMD_MBMASTER(x) ((x) << FW_HELLO_CMD_MBMASTER_SHIFT) #define FW_HELLO_CMD_MBMASTER(x) ((x) << FW_HELLO_CMD_MBMASTER_SHIFT)
#define FW_HELLO_CMD_MBMASTER_GET(x) \ #define FW_HELLO_CMD_MBMASTER_GET(x) \
(((x) >> FW_HELLO_CMD_MBMASTER_SHIFT) & FW_HELLO_CMD_MBMASTER_MASK) (((x) >> FW_HELLO_CMD_MBMASTER_SHIFT) & FW_HELLO_CMD_MBMASTER_MASK)
#define FW_HELLO_CMD_MBASYNCNOTINT(x) ((x) << 23)
#define FW_HELLO_CMD_MBASYNCNOT(x) ((x) << 20) #define FW_HELLO_CMD_MBASYNCNOT(x) ((x) << 20)
#define FW_HELLO_CMD_STAGE(x) ((x) << 17) #define FW_HELLO_CMD_STAGE(x) ((x) << 17)
#define FW_HELLO_CMD_CLEARINIT (1U << 16) #define FW_HELLO_CMD_CLEARINIT (1U << 16)
...@@ -428,6 +446,7 @@ enum fw_caps_config_iscsi { ...@@ -428,6 +446,7 @@ enum fw_caps_config_iscsi {
enum fw_caps_config_fcoe { enum fw_caps_config_fcoe {
FW_CAPS_CONFIG_FCOE_INITIATOR = 0x00000001, FW_CAPS_CONFIG_FCOE_INITIATOR = 0x00000001,
FW_CAPS_CONFIG_FCOE_TARGET = 0x00000002, FW_CAPS_CONFIG_FCOE_TARGET = 0x00000002,
FW_CAPS_CONFIG_FCOE_CTRL_OFLD = 0x00000004,
}; };
enum fw_memtype_cf { enum fw_memtype_cf {
...@@ -440,7 +459,7 @@ enum fw_memtype_cf { ...@@ -440,7 +459,7 @@ enum fw_memtype_cf {
struct fw_caps_config_cmd { struct fw_caps_config_cmd {
__be32 op_to_write; __be32 op_to_write;
__be32 retval_len16; __be32 cfvalid_to_len16;
__be32 r2; __be32 r2;
__be32 hwmbitmap; __be32 hwmbitmap;
__be16 nbmcaps; __be16 nbmcaps;
...@@ -701,8 +720,8 @@ struct fw_iq_cmd { ...@@ -701,8 +720,8 @@ struct fw_iq_cmd {
#define FW_IQ_CMD_FL0FETCHRO(x) ((x) << 6) #define FW_IQ_CMD_FL0FETCHRO(x) ((x) << 6)
#define FW_IQ_CMD_FL0HOSTFCMODE(x) ((x) << 4) #define FW_IQ_CMD_FL0HOSTFCMODE(x) ((x) << 4)
#define FW_IQ_CMD_FL0CPRIO(x) ((x) << 3) #define FW_IQ_CMD_FL0CPRIO(x) ((x) << 3)
#define FW_IQ_CMD_FL0PADEN (1U << 2) #define FW_IQ_CMD_FL0PADEN(x) ((x) << 2)
#define FW_IQ_CMD_FL0PACKEN (1U << 1) #define FW_IQ_CMD_FL0PACKEN(x) ((x) << 1)
#define FW_IQ_CMD_FL0CONGEN (1U << 0) #define FW_IQ_CMD_FL0CONGEN (1U << 0)
#define FW_IQ_CMD_FL0DCAEN(x) ((x) << 15) #define FW_IQ_CMD_FL0DCAEN(x) ((x) << 15)
...@@ -1190,6 +1209,14 @@ enum fw_port_dcb_cfg_rc { ...@@ -1190,6 +1209,14 @@ enum fw_port_dcb_cfg_rc {
FW_PORT_DCB_CFG_ERROR = 0x1 FW_PORT_DCB_CFG_ERROR = 0x1
}; };
enum fw_port_dcb_type {
FW_PORT_DCB_TYPE_PGID = 0x00,
FW_PORT_DCB_TYPE_PGRATE = 0x01,
FW_PORT_DCB_TYPE_PRIORATE = 0x02,
FW_PORT_DCB_TYPE_PFC = 0x03,
FW_PORT_DCB_TYPE_APP_ID = 0x04,
};
struct fw_port_cmd { struct fw_port_cmd {
__be32 op_to_portid; __be32 op_to_portid;
__be32 action_to_len16; __be32 action_to_len16;
...@@ -1257,6 +1284,7 @@ struct fw_port_cmd { ...@@ -1257,6 +1284,7 @@ struct fw_port_cmd {
#define FW_PORT_CMD_TXIPG(x) ((x) << 19) #define FW_PORT_CMD_TXIPG(x) ((x) << 19)
#define FW_PORT_CMD_LSTATUS (1U << 31) #define FW_PORT_CMD_LSTATUS (1U << 31)
#define FW_PORT_CMD_LSTATUS_GET(x) (((x) >> 31) & 0x1)
#define FW_PORT_CMD_LSPEED(x) ((x) << 24) #define FW_PORT_CMD_LSPEED(x) ((x) << 24)
#define FW_PORT_CMD_LSPEED_GET(x) (((x) >> 24) & 0x3f) #define FW_PORT_CMD_LSPEED_GET(x) (((x) >> 24) & 0x3f)
#define FW_PORT_CMD_TXPAUSE (1U << 23) #define FW_PORT_CMD_TXPAUSE (1U << 23)
...@@ -1305,6 +1333,9 @@ enum fw_port_module_type { ...@@ -1305,6 +1333,9 @@ enum fw_port_module_type {
FW_PORT_MOD_TYPE_TWINAX_PASSIVE, FW_PORT_MOD_TYPE_TWINAX_PASSIVE,
FW_PORT_MOD_TYPE_TWINAX_ACTIVE, FW_PORT_MOD_TYPE_TWINAX_ACTIVE,
FW_PORT_MOD_TYPE_LRM, FW_PORT_MOD_TYPE_LRM,
FW_PORT_MOD_TYPE_ERROR = FW_PORT_CMD_MODTYPE_MASK - 3,
FW_PORT_MOD_TYPE_UNKNOWN = FW_PORT_CMD_MODTYPE_MASK - 2,
FW_PORT_MOD_TYPE_NOTSUPPORTED = FW_PORT_CMD_MODTYPE_MASK - 1,
FW_PORT_MOD_TYPE_NONE = FW_PORT_CMD_MODTYPE_MASK FW_PORT_MOD_TYPE_NONE = FW_PORT_CMD_MODTYPE_MASK
}; };
......
...@@ -536,7 +536,7 @@ static inline void ring_fl_db(struct adapter *adapter, struct sge_fl *fl) ...@@ -536,7 +536,7 @@ static inline void ring_fl_db(struct adapter *adapter, struct sge_fl *fl)
if (fl->pend_cred >= FL_PER_EQ_UNIT) { if (fl->pend_cred >= FL_PER_EQ_UNIT) {
wmb(); wmb();
t4_write_reg(adapter, T4VF_SGE_BASE_ADDR + SGE_VF_KDOORBELL, t4_write_reg(adapter, T4VF_SGE_BASE_ADDR + SGE_VF_KDOORBELL,
DBPRIO | DBPRIO(1) |
QID(fl->cntxt_id) | QID(fl->cntxt_id) |
PIDX(fl->pend_cred / FL_PER_EQ_UNIT)); PIDX(fl->pend_cred / FL_PER_EQ_UNIT));
fl->pend_cred %= FL_PER_EQ_UNIT; fl->pend_cred %= FL_PER_EQ_UNIT;
...@@ -952,7 +952,7 @@ static inline void ring_tx_db(struct adapter *adapter, struct sge_txq *tq, ...@@ -952,7 +952,7 @@ static inline void ring_tx_db(struct adapter *adapter, struct sge_txq *tq,
* Warn if we write doorbells with the wrong priority and write * Warn if we write doorbells with the wrong priority and write
* descriptors before telling HW. * descriptors before telling HW.
*/ */
WARN_ON((QID(tq->cntxt_id) | PIDX(n)) & DBPRIO); WARN_ON((QID(tq->cntxt_id) | PIDX(n)) & DBPRIO(1));
wmb(); wmb();
t4_write_reg(adapter, T4VF_SGE_BASE_ADDR + SGE_VF_KDOORBELL, t4_write_reg(adapter, T4VF_SGE_BASE_ADDR + SGE_VF_KDOORBELL,
QID(tq->cntxt_id) | PIDX(n)); QID(tq->cntxt_id) | PIDX(n));
...@@ -2126,8 +2126,8 @@ int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq, ...@@ -2126,8 +2126,8 @@ int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq,
cmd.iqns_to_fl0congen = cmd.iqns_to_fl0congen =
cpu_to_be32( cpu_to_be32(
FW_IQ_CMD_FL0HOSTFCMODE(SGE_HOSTFCMODE_NONE) | FW_IQ_CMD_FL0HOSTFCMODE(SGE_HOSTFCMODE_NONE) |
FW_IQ_CMD_FL0PACKEN | FW_IQ_CMD_FL0PACKEN(1) |
FW_IQ_CMD_FL0PADEN); FW_IQ_CMD_FL0PADEN(1));
cmd.fl0dcaen_to_fl0cidxfthresh = cmd.fl0dcaen_to_fl0cidxfthresh =
cpu_to_be16( cpu_to_be16(
FW_IQ_CMD_FL0FBMIN(SGE_FETCHBURSTMIN_64B) | FW_IQ_CMD_FL0FBMIN(SGE_FETCHBURSTMIN_64B) |
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment