mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 22:02:28 +00:00
Merge branch 'cxgb4-next'
Hariprasad Shenai says: ==================== RDMA/cxgb4,cxgb4vf,cxgb4i,csiostor: Cleanup macros This series moves the debugfs code to a new file debugfs.c and cleans up macros/register defines. Various patches have ended up changing the style of the symbolic macros/register defines and some of them used the macros/register defines that matches the output of the script from the hardware team. As a result, the current kernel.org files are a mix of different macro styles. Since this macro/register defines is used by five different drivers, a few patch series have ended up adding duplicate macro/register define entries with different styles. This makes these register define/macro files a complete mess and we want to make them clean and consistent. Will post few more series so that we can cover all the macros so that they all follow the same style to be consistent. The patches series is created against 'net-next' tree. And includes patches on cxgb4, cxgb4vf, iw_cxgb4, csiostor and cxgb4i driver. We have included all the maintainers of respective drivers. Kindly review the change and let us know in case of any review comments. V3: Use suffix instead of prefix for macros/register defines V2: Changes the description and cover-letter content to answer David Miller's question ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
c42e253351
@ -472,10 +472,10 @@ static void send_flowc(struct c4iw_ep *ep, struct sk_buff *skb)
|
||||
skb = get_skb(skb, flowclen, GFP_KERNEL);
|
||||
flowc = (struct fw_flowc_wr *)__skb_put(skb, flowclen);
|
||||
|
||||
flowc->op_to_nparams = cpu_to_be32(FW_WR_OP(FW_FLOWC_WR) |
|
||||
FW_FLOWC_WR_NPARAMS(8));
|
||||
flowc->flowid_len16 = cpu_to_be32(FW_WR_LEN16(DIV_ROUND_UP(flowclen,
|
||||
16)) | FW_WR_FLOWID(ep->hwtid));
|
||||
flowc->op_to_nparams = cpu_to_be32(FW_WR_OP_V(FW_FLOWC_WR) |
|
||||
FW_FLOWC_WR_NPARAMS_V(8));
|
||||
flowc->flowid_len16 = cpu_to_be32(FW_WR_LEN16_V(DIV_ROUND_UP(flowclen,
|
||||
16)) | FW_WR_FLOWID_V(ep->hwtid));
|
||||
|
||||
flowc->mnemval[0].mnemonic = FW_FLOWC_MNEM_PFNVFN;
|
||||
flowc->mnemval[0].val = cpu_to_be32(FW_PFVF_CMD_PFN
|
||||
@ -803,16 +803,16 @@ static void send_mpa_req(struct c4iw_ep *ep, struct sk_buff *skb,
|
||||
req = (struct fw_ofld_tx_data_wr *)skb_put(skb, wrlen);
|
||||
memset(req, 0, wrlen);
|
||||
req->op_to_immdlen = cpu_to_be32(
|
||||
FW_WR_OP(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL(1) |
|
||||
FW_WR_IMMDLEN(mpalen));
|
||||
FW_WR_OP_V(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL_F |
|
||||
FW_WR_IMMDLEN_V(mpalen));
|
||||
req->flowid_len16 = cpu_to_be32(
|
||||
FW_WR_FLOWID(ep->hwtid) |
|
||||
FW_WR_LEN16(wrlen >> 4));
|
||||
FW_WR_FLOWID_V(ep->hwtid) |
|
||||
FW_WR_LEN16_V(wrlen >> 4));
|
||||
req->plen = cpu_to_be32(mpalen);
|
||||
req->tunnel_to_proxy = cpu_to_be32(
|
||||
FW_OFLD_TX_DATA_WR_FLUSH(1) |
|
||||
FW_OFLD_TX_DATA_WR_SHOVE(1));
|
||||
FW_OFLD_TX_DATA_WR_FLUSH_F |
|
||||
FW_OFLD_TX_DATA_WR_SHOVE_F);
|
||||
|
||||
mpa = (struct mpa_message *)(req + 1);
|
||||
memcpy(mpa->key, MPA_KEY_REQ, sizeof(mpa->key));
|
||||
@ -897,16 +897,16 @@ static int send_mpa_reject(struct c4iw_ep *ep, const void *pdata, u8 plen)
|
||||
req = (struct fw_ofld_tx_data_wr *)skb_put(skb, wrlen);
|
||||
memset(req, 0, wrlen);
|
||||
req->op_to_immdlen = cpu_to_be32(
|
||||
FW_WR_OP(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL(1) |
|
||||
FW_WR_IMMDLEN(mpalen));
|
||||
FW_WR_OP_V(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL_F |
|
||||
FW_WR_IMMDLEN_V(mpalen));
|
||||
req->flowid_len16 = cpu_to_be32(
|
||||
FW_WR_FLOWID(ep->hwtid) |
|
||||
FW_WR_LEN16(wrlen >> 4));
|
||||
FW_WR_FLOWID_V(ep->hwtid) |
|
||||
FW_WR_LEN16_V(wrlen >> 4));
|
||||
req->plen = cpu_to_be32(mpalen);
|
||||
req->tunnel_to_proxy = cpu_to_be32(
|
||||
FW_OFLD_TX_DATA_WR_FLUSH(1) |
|
||||
FW_OFLD_TX_DATA_WR_SHOVE(1));
|
||||
FW_OFLD_TX_DATA_WR_FLUSH_F |
|
||||
FW_OFLD_TX_DATA_WR_SHOVE_F);
|
||||
|
||||
mpa = (struct mpa_message *)(req + 1);
|
||||
memset(mpa, 0, sizeof(*mpa));
|
||||
@ -977,16 +977,16 @@ static int send_mpa_reply(struct c4iw_ep *ep, const void *pdata, u8 plen)
|
||||
req = (struct fw_ofld_tx_data_wr *) skb_put(skb, wrlen);
|
||||
memset(req, 0, wrlen);
|
||||
req->op_to_immdlen = cpu_to_be32(
|
||||
FW_WR_OP(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL(1) |
|
||||
FW_WR_IMMDLEN(mpalen));
|
||||
FW_WR_OP_V(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL_F |
|
||||
FW_WR_IMMDLEN_V(mpalen));
|
||||
req->flowid_len16 = cpu_to_be32(
|
||||
FW_WR_FLOWID(ep->hwtid) |
|
||||
FW_WR_LEN16(wrlen >> 4));
|
||||
FW_WR_FLOWID_V(ep->hwtid) |
|
||||
FW_WR_LEN16_V(wrlen >> 4));
|
||||
req->plen = cpu_to_be32(mpalen);
|
||||
req->tunnel_to_proxy = cpu_to_be32(
|
||||
FW_OFLD_TX_DATA_WR_FLUSH(1) |
|
||||
FW_OFLD_TX_DATA_WR_SHOVE(1));
|
||||
FW_OFLD_TX_DATA_WR_FLUSH_F |
|
||||
FW_OFLD_TX_DATA_WR_SHOVE_F);
|
||||
|
||||
mpa = (struct mpa_message *)(req + 1);
|
||||
memset(mpa, 0, sizeof(*mpa));
|
||||
@ -1751,7 +1751,7 @@ static void send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
|
||||
req = (struct fw_ofld_connection_wr *)__skb_put(skb, sizeof(*req));
|
||||
memset(req, 0, sizeof(*req));
|
||||
req->op_compl = htonl(V_WR_OP(FW_OFLD_CONNECTION_WR));
|
||||
req->len16_pkd = htonl(FW_WR_LEN16(DIV_ROUND_UP(sizeof(*req), 16)));
|
||||
req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));
|
||||
req->le.filter = cpu_to_be32(cxgb4_select_ntuple(
|
||||
ep->com.dev->rdev.lldi.ports[0],
|
||||
ep->l2t));
|
||||
@ -3537,8 +3537,8 @@ static void send_fw_pass_open_req(struct c4iw_dev *dev, struct sk_buff *skb,
|
||||
req_skb = alloc_skb(sizeof(struct fw_ofld_connection_wr), GFP_KERNEL);
|
||||
req = (struct fw_ofld_connection_wr *)__skb_put(req_skb, sizeof(*req));
|
||||
memset(req, 0, sizeof(*req));
|
||||
req->op_compl = htonl(V_WR_OP(FW_OFLD_CONNECTION_WR) | FW_WR_COMPL(1));
|
||||
req->len16_pkd = htonl(FW_WR_LEN16(DIV_ROUND_UP(sizeof(*req), 16)));
|
||||
req->op_compl = htonl(V_WR_OP(FW_OFLD_CONNECTION_WR) | FW_WR_COMPL_F);
|
||||
req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));
|
||||
req->le.version_cpl = htonl(F_FW_OFLD_CONNECTION_WR_CPL);
|
||||
req->le.filter = (__force __be32) filter;
|
||||
req->le.lport = lport;
|
||||
|
@ -51,9 +51,9 @@ static int destroy_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
|
||||
res_wr = (struct fw_ri_res_wr *)__skb_put(skb, wr_len);
|
||||
memset(res_wr, 0, wr_len);
|
||||
res_wr->op_nres = cpu_to_be32(
|
||||
FW_WR_OP(FW_RI_RES_WR) |
|
||||
FW_WR_OP_V(FW_RI_RES_WR) |
|
||||
V_FW_RI_RES_WR_NRES(1) |
|
||||
FW_WR_COMPL(1));
|
||||
FW_WR_COMPL_F);
|
||||
res_wr->len16_pkd = cpu_to_be32(DIV_ROUND_UP(wr_len, 16));
|
||||
res_wr->cookie = (unsigned long) &wr_wait;
|
||||
res = res_wr->res;
|
||||
@ -121,9 +121,9 @@ static int create_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
|
||||
res_wr = (struct fw_ri_res_wr *)__skb_put(skb, wr_len);
|
||||
memset(res_wr, 0, wr_len);
|
||||
res_wr->op_nres = cpu_to_be32(
|
||||
FW_WR_OP(FW_RI_RES_WR) |
|
||||
FW_WR_OP_V(FW_RI_RES_WR) |
|
||||
V_FW_RI_RES_WR_NRES(1) |
|
||||
FW_WR_COMPL(1));
|
||||
FW_WR_COMPL_F);
|
||||
res_wr->len16_pkd = cpu_to_be32(DIV_ROUND_UP(wr_len, 16));
|
||||
res_wr->cookie = (unsigned long) &wr_wait;
|
||||
res = res_wr->res;
|
||||
|
@ -74,10 +74,10 @@ static int _c4iw_write_mem_dma_aligned(struct c4iw_rdev *rdev, u32 addr,
|
||||
req = (struct ulp_mem_io *)__skb_put(skb, wr_len);
|
||||
memset(req, 0, wr_len);
|
||||
INIT_ULPTX_WR(req, wr_len, 0, 0);
|
||||
req->wr.wr_hi = cpu_to_be32(FW_WR_OP(FW_ULPTX_WR) |
|
||||
(wait ? FW_WR_COMPL(1) : 0));
|
||||
req->wr.wr_hi = cpu_to_be32(FW_WR_OP_V(FW_ULPTX_WR) |
|
||||
(wait ? FW_WR_COMPL_F : 0));
|
||||
req->wr.wr_lo = wait ? (__force __be64)(unsigned long) &wr_wait : 0L;
|
||||
req->wr.wr_mid = cpu_to_be32(FW_WR_LEN16(DIV_ROUND_UP(wr_len, 16)));
|
||||
req->wr.wr_mid = cpu_to_be32(FW_WR_LEN16_V(DIV_ROUND_UP(wr_len, 16)));
|
||||
req->cmd = cpu_to_be32(ULPTX_CMD(ULP_TX_MEM_WRITE));
|
||||
req->cmd |= cpu_to_be32(V_T5_ULP_MEMIO_ORDER(1));
|
||||
req->dlen = cpu_to_be32(ULP_MEMIO_DATA_LEN(len>>5));
|
||||
@ -135,13 +135,13 @@ static int _c4iw_write_mem_inline(struct c4iw_rdev *rdev, u32 addr, u32 len,
|
||||
INIT_ULPTX_WR(req, wr_len, 0, 0);
|
||||
|
||||
if (i == (num_wqe-1)) {
|
||||
req->wr.wr_hi = cpu_to_be32(FW_WR_OP(FW_ULPTX_WR) |
|
||||
FW_WR_COMPL(1));
|
||||
req->wr.wr_hi = cpu_to_be32(FW_WR_OP_V(FW_ULPTX_WR) |
|
||||
FW_WR_COMPL_F);
|
||||
req->wr.wr_lo = (__force __be64)(unsigned long) &wr_wait;
|
||||
} else
|
||||
req->wr.wr_hi = cpu_to_be32(FW_WR_OP(FW_ULPTX_WR));
|
||||
req->wr.wr_hi = cpu_to_be32(FW_WR_OP_V(FW_ULPTX_WR));
|
||||
req->wr.wr_mid = cpu_to_be32(
|
||||
FW_WR_LEN16(DIV_ROUND_UP(wr_len, 16)));
|
||||
FW_WR_LEN16_V(DIV_ROUND_UP(wr_len, 16)));
|
||||
|
||||
req->cmd = cmd;
|
||||
req->dlen = cpu_to_be32(ULP_MEMIO_DATA_LEN(
|
||||
|
@ -271,9 +271,9 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
|
||||
res_wr = (struct fw_ri_res_wr *)__skb_put(skb, wr_len);
|
||||
memset(res_wr, 0, wr_len);
|
||||
res_wr->op_nres = cpu_to_be32(
|
||||
FW_WR_OP(FW_RI_RES_WR) |
|
||||
FW_WR_OP_V(FW_RI_RES_WR) |
|
||||
V_FW_RI_RES_WR_NRES(2) |
|
||||
FW_WR_COMPL(1));
|
||||
FW_WR_COMPL_F);
|
||||
res_wr->len16_pkd = cpu_to_be32(DIV_ROUND_UP(wr_len, 16));
|
||||
res_wr->cookie = (unsigned long) &wr_wait;
|
||||
res = res_wr->res;
|
||||
@ -1082,10 +1082,10 @@ static void post_terminate(struct c4iw_qp *qhp, struct t4_cqe *err_cqe,
|
||||
|
||||
wqe = (struct fw_ri_wr *)__skb_put(skb, sizeof(*wqe));
|
||||
memset(wqe, 0, sizeof *wqe);
|
||||
wqe->op_compl = cpu_to_be32(FW_WR_OP(FW_RI_INIT_WR));
|
||||
wqe->op_compl = cpu_to_be32(FW_WR_OP_V(FW_RI_INIT_WR));
|
||||
wqe->flowid_len16 = cpu_to_be32(
|
||||
FW_WR_FLOWID(qhp->ep->hwtid) |
|
||||
FW_WR_LEN16(DIV_ROUND_UP(sizeof *wqe, 16)));
|
||||
FW_WR_FLOWID_V(qhp->ep->hwtid) |
|
||||
FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*wqe), 16)));
|
||||
|
||||
wqe->u.terminate.type = FW_RI_TYPE_TERMINATE;
|
||||
wqe->u.terminate.immdlen = cpu_to_be32(sizeof *term);
|
||||
@ -1204,11 +1204,11 @@ static int rdma_fini(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
|
||||
wqe = (struct fw_ri_wr *)__skb_put(skb, sizeof(*wqe));
|
||||
memset(wqe, 0, sizeof *wqe);
|
||||
wqe->op_compl = cpu_to_be32(
|
||||
FW_WR_OP(FW_RI_INIT_WR) |
|
||||
FW_WR_COMPL(1));
|
||||
FW_WR_OP_V(FW_RI_INIT_WR) |
|
||||
FW_WR_COMPL_F);
|
||||
wqe->flowid_len16 = cpu_to_be32(
|
||||
FW_WR_FLOWID(ep->hwtid) |
|
||||
FW_WR_LEN16(DIV_ROUND_UP(sizeof *wqe, 16)));
|
||||
FW_WR_FLOWID_V(ep->hwtid) |
|
||||
FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*wqe), 16)));
|
||||
wqe->cookie = (unsigned long) &ep->com.wr_wait;
|
||||
|
||||
wqe->u.fini.type = FW_RI_TYPE_FINI;
|
||||
@ -1273,11 +1273,11 @@ static int rdma_init(struct c4iw_dev *rhp, struct c4iw_qp *qhp)
|
||||
wqe = (struct fw_ri_wr *)__skb_put(skb, sizeof(*wqe));
|
||||
memset(wqe, 0, sizeof *wqe);
|
||||
wqe->op_compl = cpu_to_be32(
|
||||
FW_WR_OP(FW_RI_INIT_WR) |
|
||||
FW_WR_COMPL(1));
|
||||
FW_WR_OP_V(FW_RI_INIT_WR) |
|
||||
FW_WR_COMPL_F);
|
||||
wqe->flowid_len16 = cpu_to_be32(
|
||||
FW_WR_FLOWID(qhp->ep->hwtid) |
|
||||
FW_WR_LEN16(DIV_ROUND_UP(sizeof *wqe, 16)));
|
||||
FW_WR_FLOWID_V(qhp->ep->hwtid) |
|
||||
FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*wqe), 16)));
|
||||
|
||||
wqe->cookie = (unsigned long) &qhp->ep->com.wr_wait;
|
||||
|
||||
|
@ -6,3 +6,4 @@ obj-$(CONFIG_CHELSIO_T4) += cxgb4.o
|
||||
|
||||
cxgb4-objs := cxgb4_main.o l2t.o t4_hw.o sge.o
|
||||
cxgb4-$(CONFIG_CHELSIO_T4_DCB) += cxgb4_dcb.o
|
||||
cxgb4-$(CONFIG_DEBUG_FS) += cxgb4_debugfs.o
|
||||
|
@ -354,7 +354,7 @@ struct link_config {
|
||||
unsigned char link_ok; /* link up? */
|
||||
};
|
||||
|
||||
#define FW_LEN16(fw_struct) FW_CMD_LEN16(sizeof(fw_struct) / 16)
|
||||
#define FW_LEN16(fw_struct) FW_CMD_LEN16_V(sizeof(fw_struct) / 16)
|
||||
|
||||
enum {
|
||||
MAX_ETH_QSETS = 32, /* # of Ethernet Tx/Rx queue sets */
|
||||
@ -1085,4 +1085,5 @@ void t4_db_dropped(struct adapter *adapter);
|
||||
int t4_fwaddrspace_write(struct adapter *adap, unsigned int mbox,
|
||||
u32 addr, u32 val);
|
||||
void t4_sge_decode_idma_state(struct adapter *adapter, int state);
|
||||
void t4_free_mem(void *addr);
|
||||
#endif /* __CXGB4_H__ */
|
||||
|
@ -42,9 +42,9 @@
|
||||
do { \
|
||||
memset(&(__pcmd), 0, sizeof(__pcmd)); \
|
||||
(__pcmd).op_to_portid = \
|
||||
cpu_to_be32(FW_CMD_OP(FW_PORT_CMD) | \
|
||||
FW_CMD_REQUEST | \
|
||||
FW_CMD_##__op | \
|
||||
cpu_to_be32(FW_CMD_OP_V(FW_PORT_CMD) | \
|
||||
FW_CMD_REQUEST_F | \
|
||||
FW_CMD_##__op##_F | \
|
||||
FW_PORT_CMD_PORTID(__port)); \
|
||||
(__pcmd).action_to_len16 = \
|
||||
cpu_to_be32(FW_PORT_CMD_ACTION(__action) | \
|
||||
|
158
drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
Normal file
158
drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
Normal file
@ -0,0 +1,158 @@
|
||||
/*
|
||||
* This file is part of the Chelsio T4 Ethernet driver for Linux.
|
||||
*
|
||||
* Copyright (c) 2003-2014 Chelsio Communications, Inc. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
* General Public License (GPL) Version 2, available from the file
|
||||
* COPYING in the main directory of this source tree, or the
|
||||
* OpenIB.org BSD license below:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following
|
||||
* conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/string_helpers.h>
|
||||
#include <linux/sort.h>
|
||||
|
||||
#include "cxgb4.h"
|
||||
#include "t4_regs.h"
|
||||
#include "t4fw_api.h"
|
||||
#include "cxgb4_debugfs.h"
|
||||
#include "l2t.h"
|
||||
|
||||
static ssize_t mem_read(struct file *file, char __user *buf, size_t count,
|
||||
loff_t *ppos)
|
||||
{
|
||||
loff_t pos = *ppos;
|
||||
loff_t avail = file_inode(file)->i_size;
|
||||
unsigned int mem = (uintptr_t)file->private_data & 3;
|
||||
struct adapter *adap = file->private_data - mem;
|
||||
__be32 *data;
|
||||
int ret;
|
||||
|
||||
if (pos < 0)
|
||||
return -EINVAL;
|
||||
if (pos >= avail)
|
||||
return 0;
|
||||
if (count > avail - pos)
|
||||
count = avail - pos;
|
||||
|
||||
data = t4_alloc_mem(count);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
spin_lock(&adap->win0_lock);
|
||||
ret = t4_memory_rw(adap, 0, mem, pos, count, data, T4_MEMORY_READ);
|
||||
spin_unlock(&adap->win0_lock);
|
||||
if (ret) {
|
||||
t4_free_mem(data);
|
||||
return ret;
|
||||
}
|
||||
ret = copy_to_user(buf, data, count);
|
||||
|
||||
t4_free_mem(data);
|
||||
if (ret)
|
||||
return -EFAULT;
|
||||
|
||||
*ppos = pos + count;
|
||||
return count;
|
||||
}
|
||||
|
||||
static const struct file_operations mem_debugfs_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = simple_open,
|
||||
.read = mem_read,
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
static void add_debugfs_mem(struct adapter *adap, const char *name,
|
||||
unsigned int idx, unsigned int size_mb)
|
||||
{
|
||||
struct dentry *de;
|
||||
|
||||
de = debugfs_create_file(name, S_IRUSR, adap->debugfs_root,
|
||||
(void *)adap + idx, &mem_debugfs_fops);
|
||||
if (de && de->d_inode)
|
||||
de->d_inode->i_size = size_mb << 20;
|
||||
}
|
||||
|
||||
/* Add an array of Debug FS files.
|
||||
*/
|
||||
void add_debugfs_files(struct adapter *adap,
|
||||
struct t4_debugfs_entry *files,
|
||||
unsigned int nfiles)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* debugfs support is best effort */
|
||||
for (i = 0; i < nfiles; i++)
|
||||
debugfs_create_file(files[i].name, files[i].mode,
|
||||
adap->debugfs_root,
|
||||
(void *)adap + files[i].data,
|
||||
files[i].ops);
|
||||
}
|
||||
|
||||
int t4_setup_debugfs(struct adapter *adap)
|
||||
{
|
||||
int i;
|
||||
u32 size;
|
||||
|
||||
static struct t4_debugfs_entry t4_debugfs_files[] = {
|
||||
{ "l2t", &t4_l2t_fops, S_IRUSR, 0},
|
||||
};
|
||||
|
||||
add_debugfs_files(adap,
|
||||
t4_debugfs_files,
|
||||
ARRAY_SIZE(t4_debugfs_files));
|
||||
|
||||
i = t4_read_reg(adap, MA_TARGET_MEM_ENABLE_A);
|
||||
if (i & EDRAM0_ENABLE_F) {
|
||||
size = t4_read_reg(adap, MA_EDRAM0_BAR_A);
|
||||
add_debugfs_mem(adap, "edc0", MEM_EDC0, EDRAM0_SIZE_G(size));
|
||||
}
|
||||
if (i & EDRAM1_ENABLE_F) {
|
||||
size = t4_read_reg(adap, MA_EDRAM1_BAR_A);
|
||||
add_debugfs_mem(adap, "edc1", MEM_EDC1, EDRAM1_SIZE_G(size));
|
||||
}
|
||||
if (is_t4(adap->params.chip)) {
|
||||
size = t4_read_reg(adap, MA_EXT_MEMORY_BAR_A);
|
||||
if (i & EXT_MEM_ENABLE_F)
|
||||
add_debugfs_mem(adap, "mc", MEM_MC,
|
||||
EXT_MEM_SIZE_G(size));
|
||||
} else {
|
||||
if (i & EXT_MEM0_ENABLE_F) {
|
||||
size = t4_read_reg(adap, MA_EXT_MEMORY0_BAR_A);
|
||||
add_debugfs_mem(adap, "mc0", MEM_MC0,
|
||||
EXT_MEM0_SIZE_G(size));
|
||||
}
|
||||
if (i & EXT_MEM1_ENABLE_F) {
|
||||
size = t4_read_reg(adap, MA_EXT_MEMORY1_BAR_A);
|
||||
add_debugfs_mem(adap, "mc1", MEM_MC1,
|
||||
EXT_MEM1_SIZE_G(size));
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
52
drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.h
Normal file
52
drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.h
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* This file is part of the Chelsio T4 Ethernet driver for Linux.
|
||||
*
|
||||
* Copyright (c) 2003-2014 Chelsio Communications, Inc. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
* General Public License (GPL) Version 2, available from the file
|
||||
* COPYING in the main directory of this source tree, or the
|
||||
* OpenIB.org BSD license below:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following
|
||||
* conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef __CXGB4_DEBUGFS_H
|
||||
#define __CXGB4_DEBUGFS_H
|
||||
|
||||
#include <linux/export.h>
|
||||
|
||||
struct t4_debugfs_entry {
|
||||
const char *name;
|
||||
const struct file_operations *ops;
|
||||
mode_t mode;
|
||||
unsigned char data;
|
||||
};
|
||||
|
||||
int t4_setup_debugfs(struct adapter *adap);
|
||||
void add_debugfs_files(struct adapter *adap,
|
||||
struct t4_debugfs_entry *files,
|
||||
unsigned int nfiles);
|
||||
|
||||
#endif
|
@ -68,6 +68,7 @@
|
||||
#include "t4_msg.h"
|
||||
#include "t4fw_api.h"
|
||||
#include "cxgb4_dcb.h"
|
||||
#include "cxgb4_debugfs.h"
|
||||
#include "l2t.h"
|
||||
|
||||
#include <../drivers/net/bonding/bonding.h>
|
||||
@ -832,7 +833,7 @@ static int fwevtq_handler(struct sge_rspq *q, const __be64 *rsp,
|
||||
|
||||
#ifdef CONFIG_CHELSIO_T4_DCB
|
||||
const struct fw_port_cmd *pcmd = (const void *)p->data;
|
||||
unsigned int cmd = FW_CMD_OP_GET(ntohl(pcmd->op_to_portid));
|
||||
unsigned int cmd = FW_CMD_OP_G(ntohl(pcmd->op_to_portid));
|
||||
unsigned int action =
|
||||
FW_PORT_CMD_ACTION_GET(ntohl(pcmd->action_to_len16));
|
||||
|
||||
@ -1287,7 +1288,7 @@ void *t4_alloc_mem(size_t size)
|
||||
/*
|
||||
* Free memory allocated through alloc_mem().
|
||||
*/
|
||||
static void t4_free_mem(void *addr)
|
||||
void t4_free_mem(void *addr)
|
||||
{
|
||||
if (is_vmalloc_addr(addr))
|
||||
vfree(addr);
|
||||
@ -1339,8 +1340,8 @@ static int set_filter_wr(struct adapter *adapter, int fidx)
|
||||
* filter specification structure but for now it's easiest to simply
|
||||
* put this fairly direct code in line ...
|
||||
*/
|
||||
fwr->op_pkd = htonl(FW_WR_OP(FW_FILTER_WR));
|
||||
fwr->len16_pkd = htonl(FW_WR_LEN16(sizeof(*fwr)/16));
|
||||
fwr->op_pkd = htonl(FW_WR_OP_V(FW_FILTER_WR));
|
||||
fwr->len16_pkd = htonl(FW_WR_LEN16_V(sizeof(*fwr)/16));
|
||||
fwr->tid_to_iq =
|
||||
htonl(V_FW_FILTER_WR_TID(ftid) |
|
||||
V_FW_FILTER_WR_RQTYPE(f->fs.type) |
|
||||
@ -3127,102 +3128,14 @@ static const struct ethtool_ops cxgb_ethtool_ops = {
|
||||
.flash_device = set_flash,
|
||||
};
|
||||
|
||||
/*
|
||||
* debugfs support
|
||||
*/
|
||||
static ssize_t mem_read(struct file *file, char __user *buf, size_t count,
|
||||
loff_t *ppos)
|
||||
{
|
||||
loff_t pos = *ppos;
|
||||
loff_t avail = file_inode(file)->i_size;
|
||||
unsigned int mem = (uintptr_t)file->private_data & 3;
|
||||
struct adapter *adap = file->private_data - mem;
|
||||
__be32 *data;
|
||||
int ret;
|
||||
|
||||
if (pos < 0)
|
||||
return -EINVAL;
|
||||
if (pos >= avail)
|
||||
return 0;
|
||||
if (count > avail - pos)
|
||||
count = avail - pos;
|
||||
|
||||
data = t4_alloc_mem(count);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
spin_lock(&adap->win0_lock);
|
||||
ret = t4_memory_rw(adap, 0, mem, pos, count, data, T4_MEMORY_READ);
|
||||
spin_unlock(&adap->win0_lock);
|
||||
if (ret) {
|
||||
t4_free_mem(data);
|
||||
return ret;
|
||||
}
|
||||
ret = copy_to_user(buf, data, count);
|
||||
|
||||
t4_free_mem(data);
|
||||
if (ret)
|
||||
return -EFAULT;
|
||||
|
||||
*ppos = pos + count;
|
||||
return count;
|
||||
}
|
||||
|
||||
static const struct file_operations mem_debugfs_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = simple_open,
|
||||
.read = mem_read,
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
static void add_debugfs_mem(struct adapter *adap, const char *name,
|
||||
unsigned int idx, unsigned int size_mb)
|
||||
{
|
||||
struct dentry *de;
|
||||
|
||||
de = debugfs_create_file(name, S_IRUSR, adap->debugfs_root,
|
||||
(void *)adap + idx, &mem_debugfs_fops);
|
||||
if (de && de->d_inode)
|
||||
de->d_inode->i_size = size_mb << 20;
|
||||
}
|
||||
|
||||
static int setup_debugfs(struct adapter *adap)
|
||||
{
|
||||
int i;
|
||||
u32 size;
|
||||
|
||||
if (IS_ERR_OR_NULL(adap->debugfs_root))
|
||||
return -1;
|
||||
|
||||
i = t4_read_reg(adap, MA_TARGET_MEM_ENABLE);
|
||||
if (i & EDRAM0_ENABLE) {
|
||||
size = t4_read_reg(adap, MA_EDRAM0_BAR);
|
||||
add_debugfs_mem(adap, "edc0", MEM_EDC0, EDRAM_SIZE_GET(size));
|
||||
}
|
||||
if (i & EDRAM1_ENABLE) {
|
||||
size = t4_read_reg(adap, MA_EDRAM1_BAR);
|
||||
add_debugfs_mem(adap, "edc1", MEM_EDC1, EDRAM_SIZE_GET(size));
|
||||
}
|
||||
if (is_t4(adap->params.chip)) {
|
||||
size = t4_read_reg(adap, MA_EXT_MEMORY_BAR);
|
||||
if (i & EXT_MEM_ENABLE)
|
||||
add_debugfs_mem(adap, "mc", MEM_MC,
|
||||
EXT_MEM_SIZE_GET(size));
|
||||
} else {
|
||||
if (i & EXT_MEM_ENABLE) {
|
||||
size = t4_read_reg(adap, MA_EXT_MEMORY_BAR);
|
||||
add_debugfs_mem(adap, "mc0", MEM_MC0,
|
||||
EXT_MEM_SIZE_GET(size));
|
||||
}
|
||||
if (i & EXT_MEM1_ENABLE) {
|
||||
size = t4_read_reg(adap, MA_EXT_MEMORY1_BAR);
|
||||
add_debugfs_mem(adap, "mc1", MEM_MC1,
|
||||
EXT_MEM_SIZE_GET(size));
|
||||
}
|
||||
}
|
||||
if (adap->l2t)
|
||||
debugfs_create_file("l2t", S_IRUSR, adap->debugfs_root, adap,
|
||||
&t4_l2t_fops);
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
t4_setup_debugfs(adap);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3504,8 +3417,8 @@ int cxgb4_clip_get(const struct net_device *dev,
|
||||
|
||||
adap = netdev2adap(dev);
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_write = htonl(FW_CMD_OP(FW_CLIP_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE);
|
||||
c.op_to_write = htonl(FW_CMD_OP_V(FW_CLIP_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F);
|
||||
c.alloc_to_len16 = htonl(F_FW_CLIP_CMD_ALLOC | FW_LEN16(c));
|
||||
c.ip_hi = *(__be64 *)(lip->s6_addr);
|
||||
c.ip_lo = *(__be64 *)(lip->s6_addr + 8);
|
||||
@ -3521,8 +3434,8 @@ int cxgb4_clip_release(const struct net_device *dev,
|
||||
|
||||
adap = netdev2adap(dev);
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_write = htonl(FW_CMD_OP(FW_CLIP_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_READ);
|
||||
c.op_to_write = htonl(FW_CMD_OP_V(FW_CLIP_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_READ_F);
|
||||
c.alloc_to_len16 = htonl(F_FW_CLIP_CMD_FREE | FW_LEN16(c));
|
||||
c.ip_hi = *(__be64 *)(lip->s6_addr);
|
||||
c.ip_lo = *(__be64 *)(lip->s6_addr + 8);
|
||||
@ -3889,7 +3802,7 @@ int cxgb4_read_tpte(struct net_device *dev, u32 stag, __be32 *tpte)
|
||||
{
|
||||
struct adapter *adap;
|
||||
u32 offset, memtype, memaddr;
|
||||
u32 edc0_size, edc1_size, mc0_size, mc1_size;
|
||||
u32 edc0_size, edc1_size, mc0_size, mc1_size, size;
|
||||
u32 edc0_end, edc1_end, mc0_end, mc1_end;
|
||||
int ret;
|
||||
|
||||
@ -3903,9 +3816,12 @@ int cxgb4_read_tpte(struct net_device *dev, u32 stag, __be32 *tpte)
|
||||
* and EDC1. Some cards will have neither MC0 nor MC1, most cards have
|
||||
* MC0, and some have both MC0 and MC1.
|
||||
*/
|
||||
edc0_size = EDRAM_SIZE_GET(t4_read_reg(adap, MA_EDRAM0_BAR)) << 20;
|
||||
edc1_size = EDRAM_SIZE_GET(t4_read_reg(adap, MA_EDRAM1_BAR)) << 20;
|
||||
mc0_size = EXT_MEM_SIZE_GET(t4_read_reg(adap, MA_EXT_MEMORY_BAR)) << 20;
|
||||
size = t4_read_reg(adap, MA_EDRAM0_BAR_A);
|
||||
edc0_size = EDRAM0_SIZE_G(size) << 20;
|
||||
size = t4_read_reg(adap, MA_EDRAM1_BAR_A);
|
||||
edc1_size = EDRAM1_SIZE_G(size) << 20;
|
||||
size = t4_read_reg(adap, MA_EXT_MEMORY0_BAR_A);
|
||||
mc0_size = EXT_MEM0_SIZE_G(size) << 20;
|
||||
|
||||
edc0_end = edc0_size;
|
||||
edc1_end = edc0_end + edc1_size;
|
||||
@ -3925,9 +3841,8 @@ int cxgb4_read_tpte(struct net_device *dev, u32 stag, __be32 *tpte)
|
||||
/* T4 only has a single memory channel */
|
||||
goto err;
|
||||
} else {
|
||||
mc1_size = EXT_MEM_SIZE_GET(
|
||||
t4_read_reg(adap,
|
||||
MA_EXT_MEMORY1_BAR)) << 20;
|
||||
size = t4_read_reg(adap, MA_EXT_MEMORY1_BAR_A);
|
||||
mc1_size = EXT_MEM1_SIZE_G(size) << 20;
|
||||
mc1_end = mc0_end + mc1_size;
|
||||
if (offset < mc1_end) {
|
||||
memtype = MEM_MC1;
|
||||
@ -4956,9 +4871,9 @@ static u32 t4_read_pcie_cfg4(struct adapter *adap, int reg)
|
||||
*/
|
||||
memset(&ldst_cmd, 0, sizeof(ldst_cmd));
|
||||
ldst_cmd.op_to_addrspace =
|
||||
htonl(FW_CMD_OP(FW_LDST_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ |
|
||||
htonl(FW_CMD_OP_V(FW_LDST_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F |
|
||||
FW_LDST_CMD_ADDRSPACE(FW_LDST_ADDRSPC_FUNC_PCIE));
|
||||
ldst_cmd.cycles_to_len16 = htonl(FW_LEN16(ldst_cmd));
|
||||
ldst_cmd.u.pcie.select_naccess = FW_LDST_CMD_NACCESS(1);
|
||||
@ -5050,8 +4965,8 @@ static int adap_init1(struct adapter *adap, struct fw_caps_config_cmd *c)
|
||||
|
||||
/* get device capabilities */
|
||||
memset(c, 0, sizeof(*c));
|
||||
c->op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_READ);
|
||||
c->op_to_write = htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_READ_F);
|
||||
c->cfvalid_to_len16 = htonl(FW_LEN16(*c));
|
||||
ret = t4_wr_mbox(adap, adap->fn, c, sizeof(*c), c);
|
||||
if (ret < 0)
|
||||
@ -5067,8 +4982,8 @@ static int adap_init1(struct adapter *adap, struct fw_caps_config_cmd *c)
|
||||
dev_err(adap->pdev_dev, "virtualization ACLs not supported");
|
||||
return ret;
|
||||
}
|
||||
c->op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE);
|
||||
c->op_to_write = htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F);
|
||||
ret = t4_wr_mbox(adap, adap->fn, c, sizeof(*c), NULL);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@ -5294,9 +5209,9 @@ static int adap_init0_config(struct adapter *adapter, int reset)
|
||||
*/
|
||||
memset(&caps_cmd, 0, sizeof(caps_cmd));
|
||||
caps_cmd.op_to_write =
|
||||
htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ);
|
||||
htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F);
|
||||
caps_cmd.cfvalid_to_len16 =
|
||||
htonl(FW_CAPS_CONFIG_CMD_CFVALID |
|
||||
FW_CAPS_CONFIG_CMD_MEMTYPE_CF(mtype) |
|
||||
@ -5314,9 +5229,9 @@ static int adap_init0_config(struct adapter *adapter, int reset)
|
||||
if (ret == -ENOENT) {
|
||||
memset(&caps_cmd, 0, sizeof(caps_cmd));
|
||||
caps_cmd.op_to_write =
|
||||
htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ);
|
||||
htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F);
|
||||
caps_cmd.cfvalid_to_len16 = htonl(FW_LEN16(caps_cmd));
|
||||
ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd,
|
||||
sizeof(caps_cmd), &caps_cmd);
|
||||
@ -5339,9 +5254,9 @@ static int adap_init0_config(struct adapter *adapter, int reset)
|
||||
* And now tell the firmware to use the configuration we just loaded.
|
||||
*/
|
||||
caps_cmd.op_to_write =
|
||||
htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE);
|
||||
htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F);
|
||||
caps_cmd.cfvalid_to_len16 = htonl(FW_LEN16(caps_cmd));
|
||||
ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, sizeof(caps_cmd),
|
||||
NULL);
|
||||
@ -5412,8 +5327,8 @@ static int adap_init0_no_config(struct adapter *adapter, int reset)
|
||||
* Get device capabilities and select which we'll be using.
|
||||
*/
|
||||
memset(&caps_cmd, 0, sizeof(caps_cmd));
|
||||
caps_cmd.op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_READ);
|
||||
caps_cmd.op_to_write = htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_READ_F);
|
||||
caps_cmd.cfvalid_to_len16 = htonl(FW_LEN16(caps_cmd));
|
||||
ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, sizeof(caps_cmd),
|
||||
&caps_cmd);
|
||||
@ -5429,8 +5344,8 @@ static int adap_init0_no_config(struct adapter *adapter, int reset)
|
||||
dev_err(adapter->pdev_dev, "virtualization ACLs not supported");
|
||||
goto bye;
|
||||
}
|
||||
caps_cmd.op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE);
|
||||
caps_cmd.op_to_write = htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F);
|
||||
ret = t4_wr_mbox(adapter, adapter->mbox, &caps_cmd, sizeof(caps_cmd),
|
||||
NULL);
|
||||
if (ret < 0)
|
||||
@ -5798,7 +5713,6 @@ static int adap_init0(struct adapter *adap)
|
||||
} else {
|
||||
dev_info(adap->pdev_dev, "Coming up as MASTER: "\
|
||||
"Initializing adapter\n");
|
||||
|
||||
/*
|
||||
* If the firmware doesn't support Configuration
|
||||
* Files warn user and exit,
|
||||
@ -5842,6 +5756,7 @@ static int adap_init0(struct adapter *adap)
|
||||
"No Configuration File present "
|
||||
"on adapter. Using hard-wired "
|
||||
"configuration parameters.\n");
|
||||
goto bye;
|
||||
ret = adap_init0_no_config(adap, reset);
|
||||
}
|
||||
}
|
||||
@ -5941,8 +5856,8 @@ static int adap_init0(struct adapter *adap)
|
||||
* to manage.
|
||||
*/
|
||||
memset(&caps_cmd, 0, sizeof(caps_cmd));
|
||||
caps_cmd.op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_READ);
|
||||
caps_cmd.op_to_write = htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_READ_F);
|
||||
caps_cmd.cfvalid_to_len16 = htonl(FW_LEN16(caps_cmd));
|
||||
ret = t4_wr_mbox(adap, adap->mbox, &caps_cmd, sizeof(caps_cmd),
|
||||
&caps_cmd);
|
||||
|
@ -52,10 +52,10 @@ enum {
|
||||
};
|
||||
|
||||
#define INIT_TP_WR(w, tid) do { \
|
||||
(w)->wr.wr_hi = htonl(FW_WR_OP(FW_TP_WR) | \
|
||||
FW_WR_IMMDLEN(sizeof(*w) - sizeof(w->wr))); \
|
||||
(w)->wr.wr_mid = htonl(FW_WR_LEN16(DIV_ROUND_UP(sizeof(*w), 16)) | \
|
||||
FW_WR_FLOWID(tid)); \
|
||||
(w)->wr.wr_hi = htonl(FW_WR_OP_V(FW_TP_WR) | \
|
||||
FW_WR_IMMDLEN_V(sizeof(*w) - sizeof(w->wr))); \
|
||||
(w)->wr.wr_mid = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*w), 16)) | \
|
||||
FW_WR_FLOWID_V(tid)); \
|
||||
(w)->wr.wr_lo = cpu_to_be64(0); \
|
||||
} while (0)
|
||||
|
||||
@ -65,9 +65,10 @@ enum {
|
||||
} while (0)
|
||||
|
||||
#define INIT_ULPTX_WR(w, wrlen, atomic, tid) do { \
|
||||
(w)->wr.wr_hi = htonl(FW_WR_OP(FW_ULPTX_WR) | FW_WR_ATOMIC(atomic)); \
|
||||
(w)->wr.wr_mid = htonl(FW_WR_LEN16(DIV_ROUND_UP(wrlen, 16)) | \
|
||||
FW_WR_FLOWID(tid)); \
|
||||
(w)->wr.wr_hi = htonl(FW_WR_OP_V(FW_ULPTX_WR) | \
|
||||
FW_WR_ATOMIC_V(atomic)); \
|
||||
(w)->wr.wr_mid = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(wrlen, 16)) | \
|
||||
FW_WR_FLOWID_V(tid)); \
|
||||
(w)->wr.wr_lo = cpu_to_be64(0); \
|
||||
} while (0)
|
||||
|
||||
|
@ -1092,10 +1092,10 @@ out_free: dev_kfree_skb_any(skb);
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
wr_mid = FW_WR_LEN16(DIV_ROUND_UP(flits, 2));
|
||||
wr_mid = FW_WR_LEN16_V(DIV_ROUND_UP(flits, 2));
|
||||
if (unlikely(credits < ETHTXQ_STOP_THRES)) {
|
||||
eth_txq_stop(q);
|
||||
wr_mid |= FW_WR_EQUEQ | FW_WR_EQUIQ;
|
||||
wr_mid |= FW_WR_EQUEQ_F | FW_WR_EQUIQ_F;
|
||||
}
|
||||
|
||||
wr = (void *)&q->q.desc[q->q.pidx];
|
||||
@ -1112,8 +1112,8 @@ out_free: dev_kfree_skb_any(skb);
|
||||
int eth_xtra_len = skb_network_offset(skb) - ETH_HLEN;
|
||||
|
||||
len += sizeof(*lso);
|
||||
wr->op_immdlen = htonl(FW_WR_OP(FW_ETH_TX_PKT_WR) |
|
||||
FW_WR_IMMDLEN(len));
|
||||
wr->op_immdlen = htonl(FW_WR_OP_V(FW_ETH_TX_PKT_WR) |
|
||||
FW_WR_IMMDLEN_V(len));
|
||||
lso->c.lso_ctrl = htonl(LSO_OPCODE(CPL_TX_PKT_LSO) |
|
||||
LSO_FIRST_SLICE | LSO_LAST_SLICE |
|
||||
LSO_IPV6(v6) |
|
||||
@ -1135,8 +1135,8 @@ out_free: dev_kfree_skb_any(skb);
|
||||
q->tx_cso += ssi->gso_segs;
|
||||
} else {
|
||||
len += sizeof(*cpl);
|
||||
wr->op_immdlen = htonl(FW_WR_OP(FW_ETH_TX_PKT_WR) |
|
||||
FW_WR_IMMDLEN(len));
|
||||
wr->op_immdlen = htonl(FW_WR_OP_V(FW_ETH_TX_PKT_WR) |
|
||||
FW_WR_IMMDLEN_V(len));
|
||||
cpl = (void *)(wr + 1);
|
||||
if (skb->ip_summed == CHECKSUM_PARTIAL) {
|
||||
cntrl = hwcsum(skb) | TXPKT_IPCSUM_DIS;
|
||||
@ -1224,7 +1224,7 @@ static void ctrlq_check_stop(struct sge_ctrl_txq *q, struct fw_wr_hdr *wr)
|
||||
{
|
||||
reclaim_completed_tx_imm(&q->q);
|
||||
if (unlikely(txq_avail(&q->q) < TXQ_STOP_THRES)) {
|
||||
wr->lo |= htonl(FW_WR_EQUEQ | FW_WR_EQUIQ);
|
||||
wr->lo |= htonl(FW_WR_EQUEQ_F | FW_WR_EQUIQ_F);
|
||||
q->q.stops++;
|
||||
q->full = 1;
|
||||
}
|
||||
@ -1406,7 +1406,7 @@ static void ofldtxq_stop(struct sge_ofld_txq *q, struct sk_buff *skb)
|
||||
{
|
||||
struct fw_wr_hdr *wr = (struct fw_wr_hdr *)skb->data;
|
||||
|
||||
wr->lo |= htonl(FW_WR_EQUEQ | FW_WR_EQUIQ);
|
||||
wr->lo |= htonl(FW_WR_EQUEQ_F | FW_WR_EQUIQ_F);
|
||||
q->q.stops++;
|
||||
q->full = 1;
|
||||
}
|
||||
@ -2297,8 +2297,8 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
|
||||
return -ENOMEM;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_IQ_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_CMD_EXEC |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_IQ_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_CMD_EXEC_F |
|
||||
FW_IQ_CMD_PFN(adap->fn) | FW_IQ_CMD_VFN(0));
|
||||
c.alloc_to_len16 = htonl(FW_IQ_CMD_ALLOC | FW_IQ_CMD_IQSTART(1) |
|
||||
FW_LEN16(c));
|
||||
@ -2423,8 +2423,8 @@ int t4_sge_alloc_eth_txq(struct adapter *adap, struct sge_eth_txq *txq,
|
||||
return -ENOMEM;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_EQ_ETH_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_CMD_EXEC |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_EQ_ETH_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_CMD_EXEC_F |
|
||||
FW_EQ_ETH_CMD_PFN(adap->fn) | FW_EQ_ETH_CMD_VFN(0));
|
||||
c.alloc_to_len16 = htonl(FW_EQ_ETH_CMD_ALLOC |
|
||||
FW_EQ_ETH_CMD_EQSTART | FW_LEN16(c));
|
||||
@ -2476,8 +2476,8 @@ int t4_sge_alloc_ctrl_txq(struct adapter *adap, struct sge_ctrl_txq *txq,
|
||||
if (!txq->q.desc)
|
||||
return -ENOMEM;
|
||||
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_EQ_CTRL_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_CMD_EXEC |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_EQ_CTRL_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_CMD_EXEC_F |
|
||||
FW_EQ_CTRL_CMD_PFN(adap->fn) |
|
||||
FW_EQ_CTRL_CMD_VFN(0));
|
||||
c.alloc_to_len16 = htonl(FW_EQ_CTRL_CMD_ALLOC |
|
||||
@ -2530,8 +2530,8 @@ int t4_sge_alloc_ofld_txq(struct adapter *adap, struct sge_ofld_txq *txq,
|
||||
return -ENOMEM;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_EQ_OFLD_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_CMD_EXEC |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_EQ_OFLD_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_CMD_EXEC_F |
|
||||
FW_EQ_OFLD_CMD_PFN(adap->fn) |
|
||||
FW_EQ_OFLD_CMD_VFN(0));
|
||||
c.alloc_to_len16 = htonl(FW_EQ_OFLD_CMD_ALLOC |
|
||||
|
@ -310,16 +310,17 @@ int t4_wr_mbox_meat(struct adapter *adap, int mbox, const void *cmd, int size,
|
||||
}
|
||||
|
||||
res = t4_read_reg64(adap, data_reg);
|
||||
if (FW_CMD_OP_GET(res >> 32) == FW_DEBUG_CMD) {
|
||||
if (FW_CMD_OP_G(res >> 32) == FW_DEBUG_CMD) {
|
||||
fw_asrt(adap, data_reg);
|
||||
res = FW_CMD_RETVAL(EIO);
|
||||
} else if (rpl)
|
||||
res = FW_CMD_RETVAL_V(EIO);
|
||||
} else if (rpl) {
|
||||
get_mbox_rpl(adap, rpl, size / 8, data_reg);
|
||||
}
|
||||
|
||||
if (FW_CMD_RETVAL_GET((int)res))
|
||||
if (FW_CMD_RETVAL_G((int)res))
|
||||
dump_mbox(adap, mbox, data_reg);
|
||||
t4_write_reg(adap, ctl_reg, 0);
|
||||
return -FW_CMD_RETVAL_GET((int)res);
|
||||
return -FW_CMD_RETVAL_G((int)res);
|
||||
}
|
||||
}
|
||||
|
||||
@ -483,12 +484,12 @@ int t4_memory_rw(struct adapter *adap, int win, int mtype, u32 addr,
|
||||
* MEM_MC0 = 2 -- For T5
|
||||
* MEM_MC1 = 3 -- For T5
|
||||
*/
|
||||
edc_size = EDRAM_SIZE_GET(t4_read_reg(adap, MA_EDRAM0_BAR));
|
||||
edc_size = EDRAM0_SIZE_G(t4_read_reg(adap, MA_EDRAM0_BAR_A));
|
||||
if (mtype != MEM_MC1)
|
||||
memoffset = (mtype * (edc_size * 1024 * 1024));
|
||||
else {
|
||||
mc_size = EXT_MEM_SIZE_GET(t4_read_reg(adap,
|
||||
MA_EXT_MEMORY_BAR));
|
||||
mc_size = EXT_MEM0_SIZE_G(t4_read_reg(adap,
|
||||
MA_EXT_MEMORY1_BAR_A));
|
||||
memoffset = (MEM_MC0 * edc_size + mc_size) * 1024 * 1024;
|
||||
}
|
||||
|
||||
@ -1245,8 +1246,8 @@ int t4_link_start(struct adapter *adap, unsigned int mbox, unsigned int port,
|
||||
fc |= FW_PORT_CAP_FC_TX;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_portid = htonl(FW_CMD_OP(FW_PORT_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC | FW_PORT_CMD_PORTID(port));
|
||||
c.op_to_portid = htonl(FW_CMD_OP_V(FW_PORT_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F | FW_PORT_CMD_PORTID(port));
|
||||
c.action_to_len16 = htonl(FW_PORT_CMD_ACTION(FW_PORT_ACTION_L1_CFG) |
|
||||
FW_LEN16(c));
|
||||
|
||||
@ -1275,8 +1276,8 @@ int t4_restart_aneg(struct adapter *adap, unsigned int mbox, unsigned int port)
|
||||
struct fw_port_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_portid = htonl(FW_CMD_OP(FW_PORT_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC | FW_PORT_CMD_PORTID(port));
|
||||
c.op_to_portid = htonl(FW_CMD_OP_V(FW_PORT_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F | FW_PORT_CMD_PORTID(port));
|
||||
c.action_to_len16 = htonl(FW_PORT_CMD_ACTION(FW_PORT_ACTION_L1_CFG) |
|
||||
FW_LEN16(c));
|
||||
c.u.l1cfg.rcap = htonl(FW_PORT_CAP_ANEG);
|
||||
@ -2071,8 +2072,8 @@ int t4_config_rss_range(struct adapter *adapter, int mbox, unsigned int viid,
|
||||
struct fw_rss_ind_tbl_cmd cmd;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = htonl(FW_CMD_OP(FW_RSS_IND_TBL_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE |
|
||||
cmd.op_to_viid = htonl(FW_CMD_OP_V(FW_RSS_IND_TBL_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F |
|
||||
FW_RSS_IND_TBL_CMD_VIID(viid));
|
||||
cmd.retval_len16 = htonl(FW_LEN16(cmd));
|
||||
|
||||
@ -2126,8 +2127,8 @@ int t4_config_glbl_rss(struct adapter *adapter, int mbox, unsigned int mode,
|
||||
struct fw_rss_glb_config_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_write = htonl(FW_CMD_OP(FW_RSS_GLB_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE);
|
||||
c.op_to_write = htonl(FW_CMD_OP_V(FW_RSS_GLB_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F);
|
||||
c.retval_len16 = htonl(FW_LEN16(c));
|
||||
if (mode == FW_RSS_GLB_CONFIG_CMD_MODE_MANUAL) {
|
||||
c.u.manual.mode_pkd = htonl(FW_RSS_GLB_CONFIG_CMD_MODE(mode));
|
||||
@ -2553,8 +2554,8 @@ int t4_wol_pat_enable(struct adapter *adap, unsigned int port, unsigned int map,
|
||||
void t4_mk_filtdelwr(unsigned int ftid, struct fw_filter_wr *wr, int qid)
|
||||
{
|
||||
memset(wr, 0, sizeof(*wr));
|
||||
wr->op_pkd = htonl(FW_WR_OP(FW_FILTER_WR));
|
||||
wr->len16_pkd = htonl(FW_WR_LEN16(sizeof(*wr) / 16));
|
||||
wr->op_pkd = htonl(FW_WR_OP_V(FW_FILTER_WR));
|
||||
wr->len16_pkd = htonl(FW_WR_LEN16_V(sizeof(*wr) / 16));
|
||||
wr->tid_to_iq = htonl(V_FW_FILTER_WR_TID(ftid) |
|
||||
V_FW_FILTER_WR_NOREPLY(qid < 0));
|
||||
wr->del_filter_to_l2tix = htonl(F_FW_FILTER_WR_DEL_FILTER);
|
||||
@ -2563,8 +2564,8 @@ void t4_mk_filtdelwr(unsigned int ftid, struct fw_filter_wr *wr, int qid)
|
||||
}
|
||||
|
||||
#define INIT_CMD(var, cmd, rd_wr) do { \
|
||||
(var).op_to_write = htonl(FW_CMD_OP(FW_##cmd##_CMD) | \
|
||||
FW_CMD_REQUEST | FW_CMD_##rd_wr); \
|
||||
(var).op_to_write = htonl(FW_CMD_OP_V(FW_##cmd##_CMD) | \
|
||||
FW_CMD_REQUEST_F | FW_CMD_##rd_wr##_F); \
|
||||
(var).retval_len16 = htonl(FW_LEN16(var)); \
|
||||
} while (0)
|
||||
|
||||
@ -2574,8 +2575,8 @@ int t4_fwaddrspace_write(struct adapter *adap, unsigned int mbox,
|
||||
struct fw_ldst_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_addrspace = htonl(FW_CMD_OP(FW_LDST_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
c.op_to_addrspace = htonl(FW_CMD_OP_V(FW_LDST_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_LDST_CMD_ADDRSPACE(FW_LDST_ADDRSPC_FIRMWARE));
|
||||
c.cycles_to_len16 = htonl(FW_LEN16(c));
|
||||
c.u.addrval.addr = htonl(addr);
|
||||
@ -2602,8 +2603,8 @@ int t4_mdio_rd(struct adapter *adap, unsigned int mbox, unsigned int phy_addr,
|
||||
struct fw_ldst_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_addrspace = htonl(FW_CMD_OP(FW_LDST_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_READ | FW_LDST_CMD_ADDRSPACE(FW_LDST_ADDRSPC_MDIO));
|
||||
c.op_to_addrspace = htonl(FW_CMD_OP_V(FW_LDST_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F | FW_LDST_CMD_ADDRSPACE(FW_LDST_ADDRSPC_MDIO));
|
||||
c.cycles_to_len16 = htonl(FW_LEN16(c));
|
||||
c.u.mdio.paddr_mmd = htons(FW_LDST_CMD_PADDR(phy_addr) |
|
||||
FW_LDST_CMD_MMD(mmd));
|
||||
@ -2632,8 +2633,8 @@ int t4_mdio_wr(struct adapter *adap, unsigned int mbox, unsigned int phy_addr,
|
||||
struct fw_ldst_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_addrspace = htonl(FW_CMD_OP(FW_LDST_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_LDST_CMD_ADDRSPACE(FW_LDST_ADDRSPC_MDIO));
|
||||
c.op_to_addrspace = htonl(FW_CMD_OP_V(FW_LDST_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_LDST_CMD_ADDRSPACE(FW_LDST_ADDRSPC_MDIO));
|
||||
c.cycles_to_len16 = htonl(FW_LEN16(c));
|
||||
c.u.mdio.paddr_mmd = htons(FW_LDST_CMD_PADDR(phy_addr) |
|
||||
FW_LDST_CMD_MMD(mmd));
|
||||
@ -3211,8 +3212,8 @@ int t4_query_params(struct adapter *adap, unsigned int mbox, unsigned int pf,
|
||||
return -EINVAL;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_PARAMS_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_READ | FW_PARAMS_CMD_PFN(pf) |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_PARAMS_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F | FW_PARAMS_CMD_PFN(pf) |
|
||||
FW_PARAMS_CMD_VFN(vf));
|
||||
c.retval_len16 = htonl(FW_LEN16(c));
|
||||
for (i = 0; i < nparams; i++, p += 2)
|
||||
@ -3251,8 +3252,8 @@ int t4_set_params_nosleep(struct adapter *adap, unsigned int mbox,
|
||||
return -EINVAL;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_PARAMS_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE |
|
||||
c.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PARAMS_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F |
|
||||
FW_PARAMS_CMD_PFN(pf) |
|
||||
FW_PARAMS_CMD_VFN(vf));
|
||||
c.retval_len16 = cpu_to_be32(FW_LEN16(c));
|
||||
@ -3289,8 +3290,8 @@ int t4_set_params(struct adapter *adap, unsigned int mbox, unsigned int pf,
|
||||
return -EINVAL;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_PARAMS_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_PARAMS_CMD_PFN(pf) |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_PARAMS_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_PARAMS_CMD_PFN(pf) |
|
||||
FW_PARAMS_CMD_VFN(vf));
|
||||
c.retval_len16 = htonl(FW_LEN16(c));
|
||||
while (nparams--) {
|
||||
@ -3331,8 +3332,8 @@ int t4_cfg_pfvf(struct adapter *adap, unsigned int mbox, unsigned int pf,
|
||||
struct fw_pfvf_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_PFVF_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_PFVF_CMD_PFN(pf) |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_PFVF_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_PFVF_CMD_PFN(pf) |
|
||||
FW_PFVF_CMD_VFN(vf));
|
||||
c.retval_len16 = htonl(FW_LEN16(c));
|
||||
c.niqflint_niq = htonl(FW_PFVF_CMD_NIQFLINT(rxqi) |
|
||||
@ -3373,8 +3374,8 @@ int t4_alloc_vi(struct adapter *adap, unsigned int mbox, unsigned int port,
|
||||
struct fw_vi_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_VI_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_CMD_EXEC |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_VI_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_CMD_EXEC_F |
|
||||
FW_VI_CMD_PFN(pf) | FW_VI_CMD_VFN(vf));
|
||||
c.alloc_to_len16 = htonl(FW_VI_CMD_ALLOC | FW_LEN16(c));
|
||||
c.portid_pkd = FW_VI_CMD_PORTID(port);
|
||||
@ -3435,8 +3436,8 @@ int t4_set_rxmode(struct adapter *adap, unsigned int mbox, unsigned int viid,
|
||||
vlanex = FW_VI_RXMODE_CMD_VLANEXEN_MASK;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_viid = htonl(FW_CMD_OP(FW_VI_RXMODE_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_VI_RXMODE_CMD_VIID(viid));
|
||||
c.op_to_viid = htonl(FW_CMD_OP_V(FW_VI_RXMODE_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_VI_RXMODE_CMD_VIID(viid));
|
||||
c.retval_len16 = htonl(FW_LEN16(c));
|
||||
c.mtu_to_vlanexen = htonl(FW_VI_RXMODE_CMD_MTU(mtu) |
|
||||
FW_VI_RXMODE_CMD_PROMISCEN(promisc) |
|
||||
@ -3483,11 +3484,11 @@ int t4_alloc_mac_filt(struct adapter *adap, unsigned int mbox,
|
||||
return -EINVAL;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_viid = htonl(FW_CMD_OP(FW_VI_MAC_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | (free ? FW_CMD_EXEC : 0) |
|
||||
c.op_to_viid = htonl(FW_CMD_OP_V(FW_VI_MAC_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | (free ? FW_CMD_EXEC_F : 0) |
|
||||
FW_VI_MAC_CMD_VIID(viid));
|
||||
c.freemacs_to_len16 = htonl(FW_VI_MAC_CMD_FREEMACS(free) |
|
||||
FW_CMD_LEN16((naddr + 2) / 2));
|
||||
FW_CMD_LEN16_V((naddr + 2) / 2));
|
||||
|
||||
for (i = 0, p = c.u.exact; i < naddr; i++, p++) {
|
||||
p->valid_to_idx = htons(FW_VI_MAC_CMD_VALID |
|
||||
@ -3546,9 +3547,9 @@ int t4_change_mac(struct adapter *adap, unsigned int mbox, unsigned int viid,
|
||||
mode = add_smt ? FW_VI_MAC_SMT_AND_MPSTCAM : FW_VI_MAC_MPS_TCAM_ENTRY;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_viid = htonl(FW_CMD_OP(FW_VI_MAC_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_VI_MAC_CMD_VIID(viid));
|
||||
c.freemacs_to_len16 = htonl(FW_CMD_LEN16(1));
|
||||
c.op_to_viid = htonl(FW_CMD_OP_V(FW_VI_MAC_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_VI_MAC_CMD_VIID(viid));
|
||||
c.freemacs_to_len16 = htonl(FW_CMD_LEN16_V(1));
|
||||
p->valid_to_idx = htons(FW_VI_MAC_CMD_VALID |
|
||||
FW_VI_MAC_CMD_SMAC_RESULT(mode) |
|
||||
FW_VI_MAC_CMD_IDX(idx));
|
||||
@ -3580,11 +3581,11 @@ int t4_set_addr_hash(struct adapter *adap, unsigned int mbox, unsigned int viid,
|
||||
struct fw_vi_mac_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_viid = htonl(FW_CMD_OP(FW_VI_MAC_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE | FW_VI_ENABLE_CMD_VIID(viid));
|
||||
c.op_to_viid = htonl(FW_CMD_OP_V(FW_VI_MAC_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F | FW_VI_ENABLE_CMD_VIID(viid));
|
||||
c.freemacs_to_len16 = htonl(FW_VI_MAC_CMD_HASHVECEN |
|
||||
FW_VI_MAC_CMD_HASHUNIEN(ucast) |
|
||||
FW_CMD_LEN16(1));
|
||||
FW_CMD_LEN16_V(1));
|
||||
c.u.hash.hashvec = cpu_to_be64(vec);
|
||||
return t4_wr_mbox_meat(adap, mbox, &c, sizeof(c), NULL, sleep_ok);
|
||||
}
|
||||
@ -3607,8 +3608,8 @@ int t4_enable_vi_params(struct adapter *adap, unsigned int mbox,
|
||||
struct fw_vi_enable_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_viid = htonl(FW_CMD_OP(FW_VI_ENABLE_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC | FW_VI_ENABLE_CMD_VIID(viid));
|
||||
c.op_to_viid = htonl(FW_CMD_OP_V(FW_VI_ENABLE_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F | FW_VI_ENABLE_CMD_VIID(viid));
|
||||
|
||||
c.ien_to_len16 = htonl(FW_VI_ENABLE_CMD_IEN(rx_en) |
|
||||
FW_VI_ENABLE_CMD_EEN(tx_en) | FW_LEN16(c) |
|
||||
@ -3647,8 +3648,8 @@ int t4_identify_port(struct adapter *adap, unsigned int mbox, unsigned int viid,
|
||||
struct fw_vi_enable_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_viid = htonl(FW_CMD_OP(FW_VI_ENABLE_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC | FW_VI_ENABLE_CMD_VIID(viid));
|
||||
c.op_to_viid = htonl(FW_CMD_OP_V(FW_VI_ENABLE_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F | FW_VI_ENABLE_CMD_VIID(viid));
|
||||
c.ien_to_len16 = htonl(FW_VI_ENABLE_CMD_LED | FW_LEN16(c));
|
||||
c.blinkdur = htons(nblinks);
|
||||
return t4_wr_mbox(adap, mbox, &c, sizeof(c), NULL);
|
||||
@ -3674,8 +3675,8 @@ int t4_iq_free(struct adapter *adap, unsigned int mbox, unsigned int pf,
|
||||
struct fw_iq_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_IQ_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC | FW_IQ_CMD_PFN(pf) |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_IQ_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F | FW_IQ_CMD_PFN(pf) |
|
||||
FW_IQ_CMD_VFN(vf));
|
||||
c.alloc_to_len16 = htonl(FW_IQ_CMD_FREE | FW_LEN16(c));
|
||||
c.type_to_iqandstindex = htonl(FW_IQ_CMD_TYPE(iqtype));
|
||||
@ -3701,8 +3702,8 @@ int t4_eth_eq_free(struct adapter *adap, unsigned int mbox, unsigned int pf,
|
||||
struct fw_eq_eth_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_EQ_ETH_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC | FW_EQ_ETH_CMD_PFN(pf) |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_EQ_ETH_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F | FW_EQ_ETH_CMD_PFN(pf) |
|
||||
FW_EQ_ETH_CMD_VFN(vf));
|
||||
c.alloc_to_len16 = htonl(FW_EQ_ETH_CMD_FREE | FW_LEN16(c));
|
||||
c.eqid_pkd = htonl(FW_EQ_ETH_CMD_EQID(eqid));
|
||||
@ -3725,8 +3726,8 @@ int t4_ctrl_eq_free(struct adapter *adap, unsigned int mbox, unsigned int pf,
|
||||
struct fw_eq_ctrl_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_EQ_CTRL_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC | FW_EQ_CTRL_CMD_PFN(pf) |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_EQ_CTRL_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F | FW_EQ_CTRL_CMD_PFN(pf) |
|
||||
FW_EQ_CTRL_CMD_VFN(vf));
|
||||
c.alloc_to_len16 = htonl(FW_EQ_CTRL_CMD_FREE | FW_LEN16(c));
|
||||
c.cmpliqid_eqid = htonl(FW_EQ_CTRL_CMD_EQID(eqid));
|
||||
@ -3749,8 +3750,8 @@ int t4_ofld_eq_free(struct adapter *adap, unsigned int mbox, unsigned int pf,
|
||||
struct fw_eq_ofld_cmd c;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.op_to_vfn = htonl(FW_CMD_OP(FW_EQ_OFLD_CMD) | FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC | FW_EQ_OFLD_CMD_PFN(pf) |
|
||||
c.op_to_vfn = htonl(FW_CMD_OP_V(FW_EQ_OFLD_CMD) | FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F | FW_EQ_OFLD_CMD_PFN(pf) |
|
||||
FW_EQ_OFLD_CMD_VFN(vf));
|
||||
c.alloc_to_len16 = htonl(FW_EQ_OFLD_CMD_FREE | FW_LEN16(c));
|
||||
c.eqid_pkd = htonl(FW_EQ_OFLD_CMD_EQID(eqid));
|
||||
@ -4082,8 +4083,8 @@ int t4_port_init(struct adapter *adap, int mbox, int pf, int vf)
|
||||
while ((adap->params.portvec & (1 << j)) == 0)
|
||||
j++;
|
||||
|
||||
c.op_to_portid = htonl(FW_CMD_OP(FW_PORT_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_READ |
|
||||
c.op_to_portid = htonl(FW_CMD_OP_V(FW_PORT_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_READ_F |
|
||||
FW_PORT_CMD_PORTID(j));
|
||||
c.action_to_len16 = htonl(
|
||||
FW_PORT_CMD_ACTION(FW_PORT_ACTION_GET_PORT_INFO) |
|
||||
@ -4109,8 +4110,8 @@ int t4_port_init(struct adapter *adap, int mbox, int pf, int vf)
|
||||
p->port_type = FW_PORT_CMD_PTYPE_GET(ret);
|
||||
p->mod_type = FW_PORT_MOD_TYPE_NA;
|
||||
|
||||
rvc.op_to_viid = htonl(FW_CMD_OP(FW_RSS_VI_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_READ |
|
||||
rvc.op_to_viid = htonl(FW_CMD_OP_V(FW_RSS_VI_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_READ_F |
|
||||
FW_RSS_VI_CONFIG_CMD_VIID(p->viid));
|
||||
rvc.retval_len16 = htonl(FW_LEN16(rvc));
|
||||
ret = t4_wr_mbox(adap, mbox, &rvc, sizeof(rvc), &rvc);
|
||||
|
@ -501,21 +501,62 @@
|
||||
|
||||
#define MC_BIST_STATUS_RDATA 0x7688
|
||||
|
||||
#define MA_EDRAM0_BAR 0x77c0
|
||||
#define MA_EDRAM1_BAR 0x77c4
|
||||
#define EDRAM_SIZE_MASK 0xfffU
|
||||
#define EDRAM_SIZE_GET(x) ((x) & EDRAM_SIZE_MASK)
|
||||
#define MA_EDRAM0_BAR_A 0x77c0
|
||||
|
||||
#define MA_EXT_MEMORY_BAR 0x77c8
|
||||
#define EXT_MEM_SIZE_MASK 0x00000fffU
|
||||
#define EXT_MEM_SIZE_SHIFT 0
|
||||
#define EXT_MEM_SIZE_GET(x) (((x) & EXT_MEM_SIZE_MASK) >> EXT_MEM_SIZE_SHIFT)
|
||||
#define EDRAM0_SIZE_S 0
|
||||
#define EDRAM0_SIZE_M 0xfffU
|
||||
#define EDRAM0_SIZE_V(x) ((x) << EDRAM0_SIZE_S)
|
||||
#define EDRAM0_SIZE_G(x) (((x) >> EDRAM0_SIZE_S) & EDRAM0_SIZE_M)
|
||||
|
||||
#define MA_TARGET_MEM_ENABLE 0x77d8
|
||||
#define EXT_MEM1_ENABLE 0x00000010U
|
||||
#define EXT_MEM_ENABLE 0x00000004U
|
||||
#define EDRAM1_ENABLE 0x00000002U
|
||||
#define EDRAM0_ENABLE 0x00000001U
|
||||
#define MA_EDRAM1_BAR_A 0x77c4
|
||||
|
||||
#define EDRAM1_SIZE_S 0
|
||||
#define EDRAM1_SIZE_M 0xfffU
|
||||
#define EDRAM1_SIZE_V(x) ((x) << EDRAM1_SIZE_S)
|
||||
#define EDRAM1_SIZE_G(x) (((x) >> EDRAM1_SIZE_S) & EDRAM1_SIZE_M)
|
||||
|
||||
#define MA_EXT_MEMORY_BAR_A 0x77c8
|
||||
|
||||
#define EXT_MEM_SIZE_S 0
|
||||
#define EXT_MEM_SIZE_M 0xfffU
|
||||
#define EXT_MEM_SIZE_V(x) ((x) << EXT_MEM_SIZE_S)
|
||||
#define EXT_MEM_SIZE_G(x) (((x) >> EXT_MEM_SIZE_S) & EXT_MEM_SIZE_M)
|
||||
|
||||
#define MA_EXT_MEMORY1_BAR_A 0x7808
|
||||
|
||||
#define EXT_MEM1_SIZE_S 0
|
||||
#define EXT_MEM1_SIZE_M 0xfffU
|
||||
#define EXT_MEM1_SIZE_V(x) ((x) << EXT_MEM1_SIZE_S)
|
||||
#define EXT_MEM1_SIZE_G(x) (((x) >> EXT_MEM1_SIZE_S) & EXT_MEM1_SIZE_M)
|
||||
|
||||
#define MA_EXT_MEMORY0_BAR_A 0x77c8
|
||||
|
||||
#define EXT_MEM0_SIZE_S 0
|
||||
#define EXT_MEM0_SIZE_M 0xfffU
|
||||
#define EXT_MEM0_SIZE_V(x) ((x) << EXT_MEM0_SIZE_S)
|
||||
#define EXT_MEM0_SIZE_G(x) (((x) >> EXT_MEM0_SIZE_S) & EXT_MEM0_SIZE_M)
|
||||
|
||||
#define MA_TARGET_MEM_ENABLE_A 0x77d8
|
||||
|
||||
#define EXT_MEM_ENABLE_S 2
|
||||
#define EXT_MEM_ENABLE_V(x) ((x) << EXT_MEM_ENABLE_S)
|
||||
#define EXT_MEM_ENABLE_F EXT_MEM_ENABLE_V(1U)
|
||||
|
||||
#define EDRAM1_ENABLE_S 1
|
||||
#define EDRAM1_ENABLE_V(x) ((x) << EDRAM1_ENABLE_S)
|
||||
#define EDRAM1_ENABLE_F EDRAM1_ENABLE_V(1U)
|
||||
|
||||
#define EDRAM0_ENABLE_S 0
|
||||
#define EDRAM0_ENABLE_V(x) ((x) << EDRAM0_ENABLE_S)
|
||||
#define EDRAM0_ENABLE_F EDRAM0_ENABLE_V(1U)
|
||||
|
||||
#define EXT_MEM1_ENABLE_S 4
|
||||
#define EXT_MEM1_ENABLE_V(x) ((x) << EXT_MEM1_ENABLE_S)
|
||||
#define EXT_MEM1_ENABLE_F EXT_MEM1_ENABLE_V(1U)
|
||||
|
||||
#define EXT_MEM0_ENABLE_S 2
|
||||
#define EXT_MEM0_ENABLE_V(x) ((x) << EXT_MEM0_ENABLE_S)
|
||||
#define EXT_MEM0_ENABLE_F EXT_MEM0_ENABLE_V(1U)
|
||||
|
||||
#define MA_INT_CAUSE 0x77e0
|
||||
#define MEM_PERR_INT_CAUSE 0x00000002U
|
||||
@ -532,7 +573,6 @@
|
||||
#define MA_PARITY_ERROR_STATUS 0x77f4
|
||||
#define MA_PARITY_ERROR_STATUS2 0x7804
|
||||
|
||||
#define MA_EXT_MEMORY1_BAR 0x7808
|
||||
#define EDC_0_BASE_ADDR 0x7900
|
||||
|
||||
#define EDC_BIST_CMD 0x7904
|
||||
|
@ -109,18 +109,49 @@ struct fw_wr_hdr {
|
||||
__be32 lo;
|
||||
};
|
||||
|
||||
#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_FLUSH(x) ((x) << 22)
|
||||
#define FW_WR_COMPL(x) ((x) << 21)
|
||||
#define FW_WR_IMMDLEN_MASK 0xff
|
||||
#define FW_WR_IMMDLEN(x) ((x) << 0)
|
||||
/* work request opcode (hi) */
|
||||
#define FW_WR_OP_S 24
|
||||
#define FW_WR_OP_M 0xff
|
||||
#define FW_WR_OP_V(x) ((x) << FW_WR_OP_S)
|
||||
#define FW_WR_OP_G(x) (((x) >> FW_WR_OP_S) & FW_WR_OP_M)
|
||||
|
||||
#define FW_WR_EQUIQ (1U << 31)
|
||||
#define FW_WR_EQUEQ (1U << 30)
|
||||
#define FW_WR_FLOWID(x) ((x) << 8)
|
||||
#define FW_WR_LEN16(x) ((x) << 0)
|
||||
/* atomic flag (hi) - firmware encapsulates CPLs in CPL_BARRIER */
|
||||
#define FW_WR_ATOMIC_S 23
|
||||
#define FW_WR_ATOMIC_V(x) ((x) << FW_WR_ATOMIC_S)
|
||||
|
||||
/* flush flag (hi) - firmware flushes flushable work request buffered
|
||||
* in the flow context.
|
||||
*/
|
||||
#define FW_WR_FLUSH_S 22
|
||||
#define FW_WR_FLUSH_V(x) ((x) << FW_WR_FLUSH_S)
|
||||
|
||||
/* completion flag (hi) - firmware generates a cpl_fw6_ack */
|
||||
#define FW_WR_COMPL_S 21
|
||||
#define FW_WR_COMPL_V(x) ((x) << FW_WR_COMPL_S)
|
||||
#define FW_WR_COMPL_F FW_WR_COMPL_V(1U)
|
||||
|
||||
/* work request immediate data length (hi) */
|
||||
#define FW_WR_IMMDLEN_S 0
|
||||
#define FW_WR_IMMDLEN_M 0xff
|
||||
#define FW_WR_IMMDLEN_V(x) ((x) << FW_WR_IMMDLEN_S)
|
||||
|
||||
/* egress queue status update to associated ingress queue entry (lo) */
|
||||
#define FW_WR_EQUIQ_S 31
|
||||
#define FW_WR_EQUIQ_V(x) ((x) << FW_WR_EQUIQ_S)
|
||||
#define FW_WR_EQUIQ_F FW_WR_EQUIQ_V(1U)
|
||||
|
||||
/* egress queue status update to egress queue status entry (lo) */
|
||||
#define FW_WR_EQUEQ_S 30
|
||||
#define FW_WR_EQUEQ_V(x) ((x) << FW_WR_EQUEQ_S)
|
||||
#define FW_WR_EQUEQ_F FW_WR_EQUEQ_V(1U)
|
||||
|
||||
/* flow context identifier (lo) */
|
||||
#define FW_WR_FLOWID_S 8
|
||||
#define FW_WR_FLOWID_V(x) ((x) << FW_WR_FLOWID_S)
|
||||
|
||||
/* length in units of 16-bytes (lo) */
|
||||
#define FW_WR_LEN16_S 0
|
||||
#define FW_WR_LEN16_V(x) ((x) << FW_WR_LEN16_S)
|
||||
|
||||
#define HW_TPL_FR_MT_PR_IV_P_FC 0X32B
|
||||
#define HW_TPL_FR_MT_PR_OV_P_FC 0X327
|
||||
@ -539,26 +570,47 @@ struct fw_flowc_mnemval {
|
||||
|
||||
struct fw_flowc_wr {
|
||||
__be32 op_to_nparams;
|
||||
#define FW_FLOWC_WR_NPARAMS(x) ((x) << 0)
|
||||
__be32 flowid_len16;
|
||||
struct fw_flowc_mnemval mnemval[0];
|
||||
};
|
||||
|
||||
#define FW_FLOWC_WR_NPARAMS_S 0
|
||||
#define FW_FLOWC_WR_NPARAMS_V(x) ((x) << FW_FLOWC_WR_NPARAMS_S)
|
||||
|
||||
struct fw_ofld_tx_data_wr {
|
||||
__be32 op_to_immdlen;
|
||||
__be32 flowid_len16;
|
||||
__be32 plen;
|
||||
__be32 tunnel_to_proxy;
|
||||
#define FW_OFLD_TX_DATA_WR_TUNNEL(x) ((x) << 19)
|
||||
#define FW_OFLD_TX_DATA_WR_SAVE(x) ((x) << 18)
|
||||
#define FW_OFLD_TX_DATA_WR_FLUSH(x) ((x) << 17)
|
||||
#define FW_OFLD_TX_DATA_WR_URGENT(x) ((x) << 16)
|
||||
#define FW_OFLD_TX_DATA_WR_MORE(x) ((x) << 15)
|
||||
#define FW_OFLD_TX_DATA_WR_SHOVE(x) ((x) << 14)
|
||||
#define FW_OFLD_TX_DATA_WR_ULPMODE(x) ((x) << 10)
|
||||
#define FW_OFLD_TX_DATA_WR_ULPSUBMODE(x) ((x) << 6)
|
||||
};
|
||||
|
||||
#define FW_OFLD_TX_DATA_WR_TUNNEL_S 19
|
||||
#define FW_OFLD_TX_DATA_WR_TUNNEL_V(x) ((x) << FW_OFLD_TX_DATA_WR_TUNNEL_S)
|
||||
|
||||
#define FW_OFLD_TX_DATA_WR_SAVE_S 18
|
||||
#define FW_OFLD_TX_DATA_WR_SAVE_V(x) ((x) << FW_OFLD_TX_DATA_WR_SAVE_S)
|
||||
|
||||
#define FW_OFLD_TX_DATA_WR_FLUSH_S 17
|
||||
#define FW_OFLD_TX_DATA_WR_FLUSH_V(x) ((x) << FW_OFLD_TX_DATA_WR_FLUSH_S)
|
||||
#define FW_OFLD_TX_DATA_WR_FLUSH_F FW_OFLD_TX_DATA_WR_FLUSH_V(1U)
|
||||
|
||||
#define FW_OFLD_TX_DATA_WR_URGENT_S 16
|
||||
#define FW_OFLD_TX_DATA_WR_URGENT_V(x) ((x) << FW_OFLD_TX_DATA_WR_URGENT_S)
|
||||
|
||||
#define FW_OFLD_TX_DATA_WR_MORE_S 15
|
||||
#define FW_OFLD_TX_DATA_WR_MORE_V(x) ((x) << FW_OFLD_TX_DATA_WR_MORE_S)
|
||||
|
||||
#define FW_OFLD_TX_DATA_WR_SHOVE_S 14
|
||||
#define FW_OFLD_TX_DATA_WR_SHOVE_V(x) ((x) << FW_OFLD_TX_DATA_WR_SHOVE_S)
|
||||
#define FW_OFLD_TX_DATA_WR_SHOVE_F FW_OFLD_TX_DATA_WR_SHOVE_V(1U)
|
||||
|
||||
#define FW_OFLD_TX_DATA_WR_ULPMODE_S 10
|
||||
#define FW_OFLD_TX_DATA_WR_ULPMODE_V(x) ((x) << FW_OFLD_TX_DATA_WR_ULPMODE_S)
|
||||
|
||||
#define FW_OFLD_TX_DATA_WR_ULPSUBMODE_S 6
|
||||
#define FW_OFLD_TX_DATA_WR_ULPSUBMODE_V(x) \
|
||||
((x) << FW_OFLD_TX_DATA_WR_ULPSUBMODE_S)
|
||||
|
||||
struct fw_cmd_wr {
|
||||
__be32 op_dma;
|
||||
#define FW_CMD_WR_DMA (1U << 17)
|
||||
@ -566,6 +618,9 @@ struct fw_cmd_wr {
|
||||
__be64 cookie_daddr;
|
||||
};
|
||||
|
||||
#define FW_CMD_WR_DMA_S 17
|
||||
#define FW_CMD_WR_DMA_V(x) ((x) << FW_CMD_WR_DMA_S)
|
||||
|
||||
struct fw_eth_tx_pkt_vm_wr {
|
||||
__be32 op_immdlen;
|
||||
__be32 equiq_to_len16;
|
||||
@ -641,18 +696,39 @@ struct fw_cmd_hdr {
|
||||
__be32 lo;
|
||||
};
|
||||
|
||||
#define FW_CMD_OP(x) ((x) << 24)
|
||||
#define FW_CMD_OP_GET(x) (((x) >> 24) & 0xff)
|
||||
#define FW_CMD_REQUEST (1U << 23)
|
||||
#define FW_CMD_REQUEST_GET(x) (((x) >> 23) & 0x1)
|
||||
#define FW_CMD_READ (1U << 22)
|
||||
#define FW_CMD_WRITE (1U << 21)
|
||||
#define FW_CMD_EXEC (1U << 20)
|
||||
#define FW_CMD_RAMASK(x) ((x) << 20)
|
||||
#define FW_CMD_RETVAL(x) ((x) << 8)
|
||||
#define FW_CMD_RETVAL_GET(x) (((x) >> 8) & 0xff)
|
||||
#define FW_CMD_LEN16(x) ((x) << 0)
|
||||
#define FW_LEN16(fw_struct) FW_CMD_LEN16(sizeof(fw_struct) / 16)
|
||||
#define FW_CMD_OP_S 24
|
||||
#define FW_CMD_OP_M 0xff
|
||||
#define FW_CMD_OP_V(x) ((x) << FW_CMD_OP_S)
|
||||
#define FW_CMD_OP_G(x) (((x) >> FW_CMD_OP_S) & FW_CMD_OP_M)
|
||||
|
||||
#define FW_CMD_REQUEST_S 23
|
||||
#define FW_CMD_REQUEST_V(x) ((x) << FW_CMD_REQUEST_S)
|
||||
#define FW_CMD_REQUEST_F FW_CMD_REQUEST_V(1U)
|
||||
|
||||
#define FW_CMD_READ_S 22
|
||||
#define FW_CMD_READ_V(x) ((x) << FW_CMD_READ_S)
|
||||
#define FW_CMD_READ_F FW_CMD_READ_V(1U)
|
||||
|
||||
#define FW_CMD_WRITE_S 21
|
||||
#define FW_CMD_WRITE_V(x) ((x) << FW_CMD_WRITE_S)
|
||||
#define FW_CMD_WRITE_F FW_CMD_WRITE_V(1U)
|
||||
|
||||
#define FW_CMD_EXEC_S 20
|
||||
#define FW_CMD_EXEC_V(x) ((x) << FW_CMD_EXEC_S)
|
||||
#define FW_CMD_EXEC_F FW_CMD_EXEC_V(1U)
|
||||
|
||||
#define FW_CMD_RAMASK_S 20
|
||||
#define FW_CMD_RAMASK_V(x) ((x) << FW_CMD_RAMASK_S)
|
||||
|
||||
#define FW_CMD_RETVAL_S 8
|
||||
#define FW_CMD_RETVAL_M 0xff
|
||||
#define FW_CMD_RETVAL_V(x) ((x) << FW_CMD_RETVAL_S)
|
||||
#define FW_CMD_RETVAL_G(x) (((x) >> FW_CMD_RETVAL_S) & FW_CMD_RETVAL_M)
|
||||
|
||||
#define FW_CMD_LEN16_S 0
|
||||
#define FW_CMD_LEN16_V(x) ((x) << FW_CMD_LEN16_S)
|
||||
|
||||
#define FW_LEN16(fw_struct) FW_CMD_LEN16_V(sizeof(fw_struct) / 16)
|
||||
|
||||
enum fw_ldst_addrspc {
|
||||
FW_LDST_ADDRSPC_FIRMWARE = 0x0001,
|
||||
|
@ -132,7 +132,7 @@ enum {
|
||||
* we can specify for immediate data in the firmware Ethernet TX
|
||||
* Work Request.
|
||||
*/
|
||||
MAX_IMM_TX_PKT_LEN = FW_WR_IMMDLEN_MASK,
|
||||
MAX_IMM_TX_PKT_LEN = FW_WR_IMMDLEN_M,
|
||||
|
||||
/*
|
||||
* Max size of a WR sent through a control TX queue.
|
||||
@ -1149,7 +1149,7 @@ int t4vf_eth_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
wr_mid = FW_WR_LEN16(DIV_ROUND_UP(flits, 2));
|
||||
wr_mid = FW_WR_LEN16_V(DIV_ROUND_UP(flits, 2));
|
||||
if (unlikely(credits < ETHTXQ_STOP_THRES)) {
|
||||
/*
|
||||
* After we're done injecting the Work Request for this
|
||||
@ -1161,7 +1161,7 @@ int t4vf_eth_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
* has opened up.
|
||||
*/
|
||||
txq_stop(txq);
|
||||
wr_mid |= FW_WR_EQUEQ | FW_WR_EQUIQ;
|
||||
wr_mid |= FW_WR_EQUEQ_F | FW_WR_EQUIQ_F;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1191,9 +1191,9 @@ int t4vf_eth_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
int eth_xtra_len = skb_network_offset(skb) - ETH_HLEN;
|
||||
|
||||
wr->op_immdlen =
|
||||
cpu_to_be32(FW_WR_OP(FW_ETH_TX_PKT_VM_WR) |
|
||||
FW_WR_IMMDLEN(sizeof(*lso) +
|
||||
sizeof(*cpl)));
|
||||
cpu_to_be32(FW_WR_OP_V(FW_ETH_TX_PKT_VM_WR) |
|
||||
FW_WR_IMMDLEN_V(sizeof(*lso) +
|
||||
sizeof(*cpl)));
|
||||
/*
|
||||
* Fill in the LSO CPL message.
|
||||
*/
|
||||
@ -1228,8 +1228,8 @@ int t4vf_eth_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
|
||||
len = is_eth_imm(skb) ? skb->len + sizeof(*cpl) : sizeof(*cpl);
|
||||
wr->op_immdlen =
|
||||
cpu_to_be32(FW_WR_OP(FW_ETH_TX_PKT_VM_WR) |
|
||||
FW_WR_IMMDLEN(len));
|
||||
cpu_to_be32(FW_WR_OP_V(FW_ETH_TX_PKT_VM_WR) |
|
||||
FW_WR_IMMDLEN_V(len));
|
||||
|
||||
/*
|
||||
* Set up TX Packet CPL pointer, control word and perform
|
||||
@ -2084,10 +2084,10 @@ int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq,
|
||||
* into OS-independent common code ...
|
||||
*/
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
FW_CMD_EXEC);
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_CMD_EXEC_F);
|
||||
cmd.alloc_to_len16 = cpu_to_be32(FW_IQ_CMD_ALLOC |
|
||||
FW_IQ_CMD_IQSTART(1) |
|
||||
FW_LEN16(cmd));
|
||||
@ -2246,10 +2246,10 @@ int t4vf_sge_alloc_eth_txq(struct adapter *adapter, struct sge_eth_txq *txq,
|
||||
* into the common code ...
|
||||
*/
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_EQ_ETH_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
FW_CMD_EXEC);
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_EQ_ETH_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_CMD_EXEC_F);
|
||||
cmd.alloc_to_len16 = cpu_to_be32(FW_EQ_ETH_CMD_ALLOC |
|
||||
FW_EQ_ETH_CMD_EQSTART |
|
||||
FW_LEN16(cmd));
|
||||
|
@ -67,7 +67,7 @@ enum chip_type {
|
||||
/*
|
||||
* The "len16" field of a Firmware Command Structure ...
|
||||
*/
|
||||
#define FW_LEN16(fw_struct) FW_CMD_LEN16(sizeof(fw_struct) / 16)
|
||||
#define FW_LEN16(fw_struct) FW_CMD_LEN16_V(sizeof(fw_struct) / 16)
|
||||
|
||||
/*
|
||||
* Per-VF statistics.
|
||||
|
@ -204,20 +204,20 @@ int t4vf_wr_mbox_core(struct adapter *adapter, const void *cmd, int size,
|
||||
|
||||
/* return value in low-order little-endian word */
|
||||
v = t4_read_reg(adapter, mbox_data);
|
||||
if (FW_CMD_RETVAL_GET(v))
|
||||
if (FW_CMD_RETVAL_G(v))
|
||||
dump_mbox(adapter, "FW Error", mbox_data);
|
||||
|
||||
if (rpl) {
|
||||
/* request bit in high-order BE word */
|
||||
WARN_ON((be32_to_cpu(*(const u32 *)cmd)
|
||||
& FW_CMD_REQUEST) == 0);
|
||||
& FW_CMD_REQUEST_F) == 0);
|
||||
get_mbox_rpl(adapter, rpl, size, mbox_data);
|
||||
WARN_ON((be32_to_cpu(*(u32 *)rpl)
|
||||
& FW_CMD_REQUEST) != 0);
|
||||
& FW_CMD_REQUEST_F) != 0);
|
||||
}
|
||||
t4_write_reg(adapter, mbox_ctl,
|
||||
MBOWNER(MBOX_OWNER_NONE));
|
||||
return -FW_CMD_RETVAL_GET(v);
|
||||
return -FW_CMD_RETVAL_G(v);
|
||||
}
|
||||
}
|
||||
|
||||
@ -287,9 +287,9 @@ int t4vf_port_init(struct adapter *adapter, int pidx)
|
||||
* like MAC address, etc.
|
||||
*/
|
||||
memset(&vi_cmd, 0, sizeof(vi_cmd));
|
||||
vi_cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_VI_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ);
|
||||
vi_cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_VI_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F);
|
||||
vi_cmd.alloc_to_len16 = cpu_to_be32(FW_LEN16(vi_cmd));
|
||||
vi_cmd.type_viid = cpu_to_be16(FW_VI_CMD_VIID(pi->viid));
|
||||
v = t4vf_wr_mbox(adapter, &vi_cmd, sizeof(vi_cmd), &vi_rpl);
|
||||
@ -308,9 +308,9 @@ int t4vf_port_init(struct adapter *adapter, int pidx)
|
||||
return 0;
|
||||
|
||||
memset(&port_cmd, 0, sizeof(port_cmd));
|
||||
port_cmd.op_to_portid = cpu_to_be32(FW_CMD_OP(FW_PORT_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ |
|
||||
port_cmd.op_to_portid = cpu_to_be32(FW_CMD_OP_V(FW_PORT_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F |
|
||||
FW_PORT_CMD_PORTID(pi->port_id));
|
||||
port_cmd.action_to_len16 =
|
||||
cpu_to_be32(FW_PORT_CMD_ACTION(FW_PORT_ACTION_GET_PORT_INFO) |
|
||||
@ -349,8 +349,8 @@ int t4vf_fw_reset(struct adapter *adapter)
|
||||
struct fw_reset_cmd cmd;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_write = cpu_to_be32(FW_CMD_OP(FW_RESET_CMD) |
|
||||
FW_CMD_WRITE);
|
||||
cmd.op_to_write = cpu_to_be32(FW_CMD_OP_V(FW_RESET_CMD) |
|
||||
FW_CMD_WRITE_F);
|
||||
cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));
|
||||
return t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), NULL);
|
||||
}
|
||||
@ -377,12 +377,12 @@ static int t4vf_query_params(struct adapter *adapter, unsigned int nparams,
|
||||
return -EINVAL;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_PARAMS_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ);
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PARAMS_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F);
|
||||
len16 = DIV_ROUND_UP(offsetof(struct fw_params_cmd,
|
||||
param[nparams].mnem), 16);
|
||||
cmd.retval_len16 = cpu_to_be32(FW_CMD_LEN16(len16));
|
||||
cmd.retval_len16 = cpu_to_be32(FW_CMD_LEN16_V(len16));
|
||||
for (i = 0, p = &cmd.param[0]; i < nparams; i++, p++)
|
||||
p->mnem = htonl(*params++);
|
||||
|
||||
@ -415,12 +415,12 @@ int t4vf_set_params(struct adapter *adapter, unsigned int nparams,
|
||||
return -EINVAL;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_PARAMS_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE);
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PARAMS_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F);
|
||||
len16 = DIV_ROUND_UP(offsetof(struct fw_params_cmd,
|
||||
param[nparams]), 16);
|
||||
cmd.retval_len16 = cpu_to_be32(FW_CMD_LEN16(len16));
|
||||
cmd.retval_len16 = cpu_to_be32(FW_CMD_LEN16_V(len16));
|
||||
for (i = 0, p = &cmd.param[0]; i < nparams; i++, p++) {
|
||||
p->mnem = cpu_to_be32(*params++);
|
||||
p->val = cpu_to_be32(*vals++);
|
||||
@ -545,9 +545,9 @@ int t4vf_get_rss_glb_config(struct adapter *adapter)
|
||||
* our RSS configuration.
|
||||
*/
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_write = cpu_to_be32(FW_CMD_OP(FW_RSS_GLB_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ);
|
||||
cmd.op_to_write = cpu_to_be32(FW_CMD_OP_V(FW_RSS_GLB_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F);
|
||||
cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));
|
||||
v = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl);
|
||||
if (v)
|
||||
@ -621,9 +621,9 @@ int t4vf_get_vfres(struct adapter *adapter)
|
||||
* with error on command failure.
|
||||
*/
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_PFVF_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ);
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PFVF_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F);
|
||||
cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));
|
||||
v = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl);
|
||||
if (v)
|
||||
@ -669,9 +669,9 @@ int t4vf_read_rss_vi_config(struct adapter *adapter, unsigned int viid,
|
||||
int v;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_RSS_VI_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_RSS_VI_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F |
|
||||
FW_RSS_VI_CONFIG_CMD_VIID(viid));
|
||||
cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));
|
||||
v = t4vf_wr_mbox(adapter, &cmd, sizeof(cmd), &rpl);
|
||||
@ -719,9 +719,9 @@ int t4vf_write_rss_vi_config(struct adapter *adapter, unsigned int viid,
|
||||
struct fw_rss_vi_config_cmd cmd, rpl;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_RSS_VI_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_RSS_VI_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_RSS_VI_CONFIG_CMD_VIID(viid));
|
||||
cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));
|
||||
switch (adapter->params.rss.mode) {
|
||||
@ -777,9 +777,9 @@ int t4vf_config_rss_range(struct adapter *adapter, unsigned int viid,
|
||||
* Initialize firmware command template to write the RSS table.
|
||||
*/
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_RSS_IND_TBL_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_RSS_IND_TBL_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_RSS_IND_TBL_CMD_VIID(viid));
|
||||
cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));
|
||||
|
||||
@ -866,10 +866,10 @@ int t4vf_alloc_vi(struct adapter *adapter, int port_id)
|
||||
* VIID.
|
||||
*/
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_VI_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
FW_CMD_EXEC);
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_VI_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_CMD_EXEC_F);
|
||||
cmd.alloc_to_len16 = cpu_to_be32(FW_LEN16(cmd) |
|
||||
FW_VI_CMD_ALLOC);
|
||||
cmd.portid_pkd = FW_VI_CMD_PORTID(port_id);
|
||||
@ -896,9 +896,9 @@ int t4vf_free_vi(struct adapter *adapter, int viid)
|
||||
* Execute a VI command to free the Virtual Interface.
|
||||
*/
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_VI_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC);
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_VI_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F);
|
||||
cmd.alloc_to_len16 = cpu_to_be32(FW_LEN16(cmd) |
|
||||
FW_VI_CMD_FREE);
|
||||
cmd.type_viid = cpu_to_be16(FW_VI_CMD_VIID(viid));
|
||||
@ -920,9 +920,9 @@ int t4vf_enable_vi(struct adapter *adapter, unsigned int viid,
|
||||
struct fw_vi_enable_cmd cmd;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_VI_ENABLE_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_ENABLE_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F |
|
||||
FW_VI_ENABLE_CMD_VIID(viid));
|
||||
cmd.ien_to_len16 = cpu_to_be32(FW_VI_ENABLE_CMD_IEN(rx_en) |
|
||||
FW_VI_ENABLE_CMD_EEN(tx_en) |
|
||||
@ -944,9 +944,9 @@ int t4vf_identify_port(struct adapter *adapter, unsigned int viid,
|
||||
struct fw_vi_enable_cmd cmd;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_VI_ENABLE_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_ENABLE_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F |
|
||||
FW_VI_ENABLE_CMD_VIID(viid));
|
||||
cmd.ien_to_len16 = cpu_to_be32(FW_VI_ENABLE_CMD_LED |
|
||||
FW_LEN16(cmd));
|
||||
@ -986,9 +986,9 @@ int t4vf_set_rxmode(struct adapter *adapter, unsigned int viid,
|
||||
vlanex = FW_VI_RXMODE_CMD_VLANEXEN_MASK;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_VI_RXMODE_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_RXMODE_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_VI_RXMODE_CMD_VIID(viid));
|
||||
cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));
|
||||
cmd.mtu_to_vlanexen =
|
||||
@ -1046,14 +1046,14 @@ int t4vf_alloc_mac_filt(struct adapter *adapter, unsigned int viid, bool free,
|
||||
int i;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_VI_MAC_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
(free ? FW_CMD_EXEC : 0) |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
(free ? FW_CMD_EXEC_F : 0) |
|
||||
FW_VI_MAC_CMD_VIID(viid));
|
||||
cmd.freemacs_to_len16 =
|
||||
cpu_to_be32(FW_VI_MAC_CMD_FREEMACS(free) |
|
||||
FW_CMD_LEN16(len16));
|
||||
FW_CMD_LEN16_V(len16));
|
||||
|
||||
for (i = 0, p = cmd.u.exact; i < fw_naddr; i++, p++) {
|
||||
p->valid_to_idx = cpu_to_be16(
|
||||
@ -1135,11 +1135,11 @@ int t4vf_change_mac(struct adapter *adapter, unsigned int viid,
|
||||
idx = persist ? FW_VI_MAC_ADD_PERSIST_MAC : FW_VI_MAC_ADD_MAC;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_VI_MAC_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_VI_MAC_CMD_VIID(viid));
|
||||
cmd.freemacs_to_len16 = cpu_to_be32(FW_CMD_LEN16(len16));
|
||||
cmd.freemacs_to_len16 = cpu_to_be32(FW_CMD_LEN16_V(len16));
|
||||
p->valid_to_idx = cpu_to_be16(FW_VI_MAC_CMD_VALID |
|
||||
FW_VI_MAC_CMD_IDX(idx));
|
||||
memcpy(p->macaddr, addr, sizeof(p->macaddr));
|
||||
@ -1172,13 +1172,13 @@ int t4vf_set_addr_hash(struct adapter *adapter, unsigned int viid,
|
||||
u.exact[0]), 16);
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_VI_MAC_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_MAC_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_VI_ENABLE_CMD_VIID(viid));
|
||||
cmd.freemacs_to_len16 = cpu_to_be32(FW_VI_MAC_CMD_HASHVECEN |
|
||||
FW_VI_MAC_CMD_HASHUNIEN(ucast) |
|
||||
FW_CMD_LEN16(len16));
|
||||
FW_CMD_LEN16_V(len16));
|
||||
cmd.u.hash.hashvec = cpu_to_be64(vec);
|
||||
return t4vf_wr_mbox_core(adapter, &cmd, sizeof(cmd), NULL, sleep_ok);
|
||||
}
|
||||
@ -1214,11 +1214,11 @@ int t4vf_get_port_stats(struct adapter *adapter, int pidx,
|
||||
int ret;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP(FW_VI_STATS_CMD) |
|
||||
cmd.op_to_viid = cpu_to_be32(FW_CMD_OP_V(FW_VI_STATS_CMD) |
|
||||
FW_VI_STATS_CMD_VIID(pi->viid) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ);
|
||||
cmd.retval_len16 = cpu_to_be32(FW_CMD_LEN16(len16));
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F);
|
||||
cmd.retval_len16 = cpu_to_be32(FW_CMD_LEN16_V(len16));
|
||||
cmd.u.ctl.nstats_ix =
|
||||
cpu_to_be16(FW_VI_STATS_CMD_IX(ix) |
|
||||
FW_VI_STATS_CMD_NSTATS(nstats));
|
||||
@ -1273,9 +1273,9 @@ int t4vf_iq_free(struct adapter *adapter, unsigned int iqtype,
|
||||
struct fw_iq_cmd cmd;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC);
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F);
|
||||
cmd.alloc_to_len16 = cpu_to_be32(FW_IQ_CMD_FREE |
|
||||
FW_LEN16(cmd));
|
||||
cmd.type_to_iqandstindex =
|
||||
@ -1299,9 +1299,9 @@ int t4vf_eth_eq_free(struct adapter *adapter, unsigned int eqid)
|
||||
struct fw_eq_eth_cmd cmd;
|
||||
|
||||
memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP(FW_EQ_ETH_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC);
|
||||
cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_EQ_ETH_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F);
|
||||
cmd.alloc_to_len16 = cpu_to_be32(FW_EQ_ETH_CMD_FREE |
|
||||
FW_LEN16(cmd));
|
||||
cmd.eqid_pkd = cpu_to_be32(FW_EQ_ETH_CMD_EQID(eqid));
|
||||
@ -1318,7 +1318,7 @@ int t4vf_eth_eq_free(struct adapter *adapter, unsigned int eqid)
|
||||
int t4vf_handle_fw_rpl(struct adapter *adapter, const __be64 *rpl)
|
||||
{
|
||||
const struct fw_cmd_hdr *cmd_hdr = (const struct fw_cmd_hdr *)rpl;
|
||||
u8 opcode = FW_CMD_OP_GET(be32_to_cpu(cmd_hdr->hi));
|
||||
u8 opcode = FW_CMD_OP_G(be32_to_cpu(cmd_hdr->hi));
|
||||
|
||||
switch (opcode) {
|
||||
case FW_PORT_CMD: {
|
||||
|
@ -451,9 +451,9 @@ csio_fcoe_alloc_vnp(struct csio_hw *hw, struct csio_lnode *ln)
|
||||
|
||||
/* Process Mbox response of VNP command */
|
||||
rsp = (struct fw_fcoe_vnp_cmd *)(mbp->mb);
|
||||
if (FW_CMD_RETVAL_GET(ntohl(rsp->alloc_to_len16)) != FW_SUCCESS) {
|
||||
if (FW_CMD_RETVAL_G(ntohl(rsp->alloc_to_len16)) != FW_SUCCESS) {
|
||||
csio_ln_err(ln, "FCOE VNP ALLOC cmd returned 0x%x!\n",
|
||||
FW_CMD_RETVAL_GET(ntohl(rsp->alloc_to_len16)));
|
||||
FW_CMD_RETVAL_G(ntohl(rsp->alloc_to_len16)));
|
||||
ret = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
@ -526,9 +526,9 @@ csio_fcoe_free_vnp(struct csio_hw *hw, struct csio_lnode *ln)
|
||||
|
||||
/* Process Mbox response of VNP command */
|
||||
rsp = (struct fw_fcoe_vnp_cmd *)(mbp->mb);
|
||||
if (FW_CMD_RETVAL_GET(ntohl(rsp->alloc_to_len16)) != FW_SUCCESS) {
|
||||
if (FW_CMD_RETVAL_G(ntohl(rsp->alloc_to_len16)) != FW_SUCCESS) {
|
||||
csio_ln_err(ln, "FCOE VNP FREE cmd returned 0x%x!\n",
|
||||
FW_CMD_RETVAL_GET(ntohl(rsp->alloc_to_len16)));
|
||||
FW_CMD_RETVAL_G(ntohl(rsp->alloc_to_len16)));
|
||||
ret = -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -1370,9 +1370,9 @@ csio_hw_fw_config_file(struct csio_hw *hw,
|
||||
caps_cmd = (struct fw_caps_config_cmd *)(mbp->mb);
|
||||
CSIO_INIT_MBP(mbp, caps_cmd, CSIO_MB_DEFAULT_TMO, hw, NULL, 1);
|
||||
caps_cmd->op_to_write =
|
||||
htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ);
|
||||
htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F);
|
||||
caps_cmd->cfvalid_to_len16 =
|
||||
htonl(FW_CAPS_CONFIG_CMD_CFVALID |
|
||||
FW_CAPS_CONFIG_CMD_MEMTYPE_CF(mtype) |
|
||||
@ -1407,9 +1407,9 @@ csio_hw_fw_config_file(struct csio_hw *hw,
|
||||
* And now tell the firmware to use the configuration we just loaded.
|
||||
*/
|
||||
caps_cmd->op_to_write =
|
||||
htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE);
|
||||
htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F);
|
||||
caps_cmd->cfvalid_to_len16 = htonl(FW_LEN16(*caps_cmd));
|
||||
|
||||
if (csio_mb_issue(hw, mbp)) {
|
||||
@ -1678,7 +1678,7 @@ csio_get_fcoe_resinfo(struct csio_hw *hw)
|
||||
}
|
||||
|
||||
rsp = (struct fw_fcoe_res_info_cmd *)(mbp->mb);
|
||||
retval = FW_CMD_RETVAL_GET(ntohl(rsp->retval_len16));
|
||||
retval = FW_CMD_RETVAL_G(ntohl(rsp->retval_len16));
|
||||
if (retval != FW_SUCCESS) {
|
||||
csio_err(hw, "FW_FCOE_RES_INFO_CMD failed with ret x%x\n",
|
||||
retval);
|
||||
|
@ -307,12 +307,12 @@ csio_t4_memory_rw(struct csio_hw *hw, u32 win, int mtype, u32 addr,
|
||||
* MEM_EDC1 = 1
|
||||
* MEM_MC = 2 -- T4
|
||||
*/
|
||||
edc_size = EDRAM_SIZE_GET(csio_rd_reg32(hw, MA_EDRAM0_BAR));
|
||||
edc_size = EDRAM0_SIZE_G(csio_rd_reg32(hw, MA_EDRAM0_BAR_A));
|
||||
if (mtype != MEM_MC1)
|
||||
memoffset = (mtype * (edc_size * 1024 * 1024));
|
||||
else {
|
||||
mc_size = EXT_MEM_SIZE_GET(csio_rd_reg32(hw,
|
||||
MA_EXT_MEMORY_BAR));
|
||||
mc_size = EXT_MEM_SIZE_G(csio_rd_reg32(hw,
|
||||
MA_EXT_MEMORY_BAR_A));
|
||||
memoffset = (MEM_MC0 * edc_size + mc_size) * 1024 * 1024;
|
||||
}
|
||||
|
||||
@ -383,11 +383,12 @@ static void
|
||||
csio_t4_dfs_create_ext_mem(struct csio_hw *hw)
|
||||
{
|
||||
u32 size;
|
||||
int i = csio_rd_reg32(hw, MA_TARGET_MEM_ENABLE);
|
||||
if (i & EXT_MEM_ENABLE) {
|
||||
size = csio_rd_reg32(hw, MA_EXT_MEMORY_BAR);
|
||||
int i = csio_rd_reg32(hw, MA_TARGET_MEM_ENABLE_A);
|
||||
|
||||
if (i & EXT_MEM_ENABLE_F) {
|
||||
size = csio_rd_reg32(hw, MA_EXT_MEMORY_BAR_A);
|
||||
csio_add_debugfs_mem(hw, "mc", MEM_MC,
|
||||
EXT_MEM_SIZE_GET(size));
|
||||
EXT_MEM_SIZE_G(size));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -298,12 +298,12 @@ csio_t5_memory_rw(struct csio_hw *hw, u32 win, int mtype, u32 addr,
|
||||
* MEM_MC0 = 2 -- For T5
|
||||
* MEM_MC1 = 3 -- For T5
|
||||
*/
|
||||
edc_size = EDRAM_SIZE_GET(csio_rd_reg32(hw, MA_EDRAM0_BAR));
|
||||
edc_size = EDRAM0_SIZE_G(csio_rd_reg32(hw, MA_EDRAM0_BAR_A));
|
||||
if (mtype != MEM_MC1)
|
||||
memoffset = (mtype * (edc_size * 1024 * 1024));
|
||||
else {
|
||||
mc_size = EXT_MEM_SIZE_GET(csio_rd_reg32(hw,
|
||||
MA_EXT_MEMORY_BAR));
|
||||
mc_size = EXT_MEM_SIZE_G(csio_rd_reg32(hw,
|
||||
MA_EXT_MEMORY_BAR_A));
|
||||
memoffset = (MEM_MC0 * edc_size + mc_size) * 1024 * 1024;
|
||||
}
|
||||
|
||||
@ -372,16 +372,17 @@ static void
|
||||
csio_t5_dfs_create_ext_mem(struct csio_hw *hw)
|
||||
{
|
||||
u32 size;
|
||||
int i = csio_rd_reg32(hw, MA_TARGET_MEM_ENABLE);
|
||||
if (i & EXT_MEM_ENABLE) {
|
||||
size = csio_rd_reg32(hw, MA_EXT_MEMORY_BAR);
|
||||
int i = csio_rd_reg32(hw, MA_TARGET_MEM_ENABLE_A);
|
||||
|
||||
if (i & EXT_MEM_ENABLE_F) {
|
||||
size = csio_rd_reg32(hw, MA_EXT_MEMORY_BAR_A);
|
||||
csio_add_debugfs_mem(hw, "mc0", MEM_MC0,
|
||||
EXT_MEM_SIZE_GET(size));
|
||||
EXT_MEM_SIZE_G(size));
|
||||
}
|
||||
if (i & EXT_MEM1_ENABLE) {
|
||||
size = csio_rd_reg32(hw, MA_EXT_MEMORY1_BAR);
|
||||
if (i & EXT_MEM1_ENABLE_F) {
|
||||
size = csio_rd_reg32(hw, MA_EXT_MEMORY1_BAR_A);
|
||||
csio_add_debugfs_mem(hw, "mc1", MEM_MC1,
|
||||
EXT_MEM_SIZE_GET(size));
|
||||
EXT_MEM_SIZE_G(size));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -128,10 +128,10 @@ static int csio_setup_debugfs(struct csio_hw *hw)
|
||||
if (IS_ERR_OR_NULL(hw->debugfs_root))
|
||||
return -1;
|
||||
|
||||
i = csio_rd_reg32(hw, MA_TARGET_MEM_ENABLE);
|
||||
if (i & EDRAM0_ENABLE)
|
||||
i = csio_rd_reg32(hw, MA_TARGET_MEM_ENABLE_A);
|
||||
if (i & EDRAM0_ENABLE_F)
|
||||
csio_add_debugfs_mem(hw, "edc0", MEM_EDC0, 5);
|
||||
if (i & EDRAM1_ENABLE)
|
||||
if (i & EDRAM1_ENABLE_F)
|
||||
csio_add_debugfs_mem(hw, "edc1", MEM_EDC1, 5);
|
||||
|
||||
hw->chip_ops->chip_dfs_create_ext_mem(hw);
|
||||
|
@ -603,7 +603,7 @@ csio_ln_vnp_read_cbfn(struct csio_hw *hw, struct csio_mb *mbp)
|
||||
enum fw_retval retval;
|
||||
__be32 nport_id;
|
||||
|
||||
retval = FW_CMD_RETVAL_GET(ntohl(rsp->alloc_to_len16));
|
||||
retval = FW_CMD_RETVAL_G(ntohl(rsp->alloc_to_len16));
|
||||
if (retval != FW_SUCCESS) {
|
||||
csio_err(hw, "FCOE VNP read cmd returned error:0x%x\n", retval);
|
||||
mempool_free(mbp, hw->mb_mempool);
|
||||
@ -770,7 +770,7 @@ csio_ln_read_fcf_cbfn(struct csio_hw *hw, struct csio_mb *mbp)
|
||||
(struct fw_fcoe_fcf_cmd *)(mbp->mb);
|
||||
enum fw_retval retval;
|
||||
|
||||
retval = FW_CMD_RETVAL_GET(ntohl(rsp->retval_len16));
|
||||
retval = FW_CMD_RETVAL_G(ntohl(rsp->retval_len16));
|
||||
if (retval != FW_SUCCESS) {
|
||||
csio_ln_err(ln, "FCOE FCF cmd failed with ret x%x\n",
|
||||
retval);
|
||||
@ -1506,7 +1506,7 @@ csio_fcoe_fwevt_handler(struct csio_hw *hw, __u8 cpl_op, __be64 *cmd)
|
||||
}
|
||||
} else if (cpl_op == CPL_FW6_PLD) {
|
||||
wr = (struct fw_wr_hdr *) (cmd + 4);
|
||||
if (FW_WR_OP_GET(be32_to_cpu(wr->hi))
|
||||
if (FW_WR_OP_G(be32_to_cpu(wr->hi))
|
||||
== FW_RDEV_WR) {
|
||||
|
||||
rdev_wr = (struct fw_rdev_wr *) (cmd + 4);
|
||||
@ -1574,17 +1574,17 @@ out_pld:
|
||||
return;
|
||||
} else {
|
||||
csio_warn(hw, "unexpected WR op(0x%x) recv\n",
|
||||
FW_WR_OP_GET(be32_to_cpu((wr->hi))));
|
||||
FW_WR_OP_G(be32_to_cpu((wr->hi))));
|
||||
CSIO_INC_STATS(hw, n_cpl_unexp);
|
||||
}
|
||||
} else if (cpl_op == CPL_FW6_MSG) {
|
||||
wr = (struct fw_wr_hdr *) (cmd);
|
||||
if (FW_WR_OP_GET(be32_to_cpu(wr->hi)) == FW_FCOE_ELS_CT_WR) {
|
||||
if (FW_WR_OP_G(be32_to_cpu(wr->hi)) == FW_FCOE_ELS_CT_WR) {
|
||||
csio_ln_mgmt_wr_handler(hw, wr,
|
||||
sizeof(struct fw_fcoe_els_ct_wr));
|
||||
} else {
|
||||
csio_warn(hw, "unexpected WR op(0x%x) recv\n",
|
||||
FW_WR_OP_GET(be32_to_cpu((wr->hi))));
|
||||
FW_WR_OP_G(be32_to_cpu((wr->hi))));
|
||||
CSIO_INC_STATS(hw, n_cpl_unexp);
|
||||
}
|
||||
} else {
|
||||
@ -1668,12 +1668,12 @@ csio_ln_prep_ecwr(struct csio_ioreq *io_req, uint32_t wr_len,
|
||||
__be32 port_id;
|
||||
|
||||
wr = (struct fw_fcoe_els_ct_wr *)fw_wr;
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP(FW_FCOE_ELS_CT_WR) |
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP_V(FW_FCOE_ELS_CT_WR) |
|
||||
FW_FCOE_ELS_CT_WR_IMMDLEN(immd_len));
|
||||
|
||||
wr_len = DIV_ROUND_UP(wr_len, 16);
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID(flow_id) |
|
||||
FW_WR_LEN16(wr_len));
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID_V(flow_id) |
|
||||
FW_WR_LEN16_V(wr_len));
|
||||
wr->els_ct_type = sub_op;
|
||||
wr->ctl_pri = 0;
|
||||
wr->cp_en_class = 0;
|
||||
|
@ -59,7 +59,7 @@ csio_mb_fw_retval(struct csio_mb *mbp)
|
||||
|
||||
hdr = (struct fw_cmd_hdr *)(mbp->mb);
|
||||
|
||||
return FW_CMD_RETVAL_GET(ntohl(hdr->lo));
|
||||
return FW_CMD_RETVAL_G(ntohl(hdr->lo));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -81,9 +81,9 @@ csio_mb_hello(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, tmo, hw, cbfn, 1);
|
||||
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP(FW_HELLO_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE);
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP_V(FW_HELLO_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F);
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
cmdp->err_to_clearinit = htonl(
|
||||
FW_HELLO_CMD_MASTERDIS(master == CSIO_MASTER_CANT) |
|
||||
FW_HELLO_CMD_MASTERFORCE(master == CSIO_MASTER_MUST) |
|
||||
@ -112,7 +112,7 @@ csio_mb_process_hello_rsp(struct csio_hw *hw, struct csio_mb *mbp,
|
||||
struct fw_hello_cmd *rsp = (struct fw_hello_cmd *)(mbp->mb);
|
||||
uint32_t value;
|
||||
|
||||
*retval = FW_CMD_RETVAL_GET(ntohl(rsp->retval_len16));
|
||||
*retval = FW_CMD_RETVAL_G(ntohl(rsp->retval_len16));
|
||||
|
||||
if (*retval == FW_SUCCESS) {
|
||||
hw->fwrev = ntohl(rsp->fwrev);
|
||||
@ -144,9 +144,9 @@ csio_mb_bye(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, tmo, hw, cbfn, 1);
|
||||
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP(FW_BYE_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE);
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP_V(FW_BYE_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F);
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
}
|
||||
|
||||
@ -167,9 +167,9 @@ csio_mb_reset(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, tmo, hw, cbfn, 1);
|
||||
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP(FW_RESET_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE);
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP_V(FW_RESET_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F);
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
cmdp->val = htonl(reset);
|
||||
cmdp->halt_pkd = htonl(halt);
|
||||
|
||||
@ -202,12 +202,12 @@ csio_mb_params(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, tmo, hw, cbfn, 1);
|
||||
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP(FW_PARAMS_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
(wr ? FW_CMD_WRITE : FW_CMD_READ) |
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP_V(FW_PARAMS_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
(wr ? FW_CMD_WRITE_F : FW_CMD_READ_F) |
|
||||
FW_PARAMS_CMD_PFN(pf) |
|
||||
FW_PARAMS_CMD_VFN(vf));
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
/* Write Params */
|
||||
if (wr) {
|
||||
@ -245,7 +245,7 @@ csio_mb_process_read_params_rsp(struct csio_hw *hw, struct csio_mb *mbp,
|
||||
uint32_t i;
|
||||
__be32 *p = &rsp->param[0].val;
|
||||
|
||||
*retval = FW_CMD_RETVAL_GET(ntohl(rsp->retval_len16));
|
||||
*retval = FW_CMD_RETVAL_G(ntohl(rsp->retval_len16));
|
||||
|
||||
if (*retval == FW_SUCCESS)
|
||||
for (i = 0; i < nparams; i++, p += 2)
|
||||
@ -271,9 +271,9 @@ csio_mb_ldst(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo, int reg)
|
||||
* specified PCI-E Configuration Space register.
|
||||
*/
|
||||
ldst_cmd->op_to_addrspace =
|
||||
htonl(FW_CMD_OP(FW_LDST_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ |
|
||||
htonl(FW_CMD_OP_V(FW_LDST_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F |
|
||||
FW_LDST_CMD_ADDRSPACE(FW_LDST_ADDRSPC_FUNC_PCIE));
|
||||
ldst_cmd->cycles_to_len16 = htonl(FW_LEN16(struct fw_ldst_cmd));
|
||||
ldst_cmd->u.pcie.select_naccess = FW_LDST_CMD_NACCESS(1);
|
||||
@ -306,10 +306,10 @@ csio_mb_caps_config(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, tmo, hw, cbfn, wr ? 0 : 1);
|
||||
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
(wr ? FW_CMD_WRITE : FW_CMD_READ));
|
||||
cmdp->cfvalid_to_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
(wr ? FW_CMD_WRITE_F : FW_CMD_READ_F));
|
||||
cmdp->cfvalid_to_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
/* Read config */
|
||||
if (!wr)
|
||||
@ -351,21 +351,21 @@ csio_mb_port(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, tmo, hw, cbfn, 1);
|
||||
|
||||
cmdp->op_to_portid = htonl(FW_CMD_OP(FW_PORT_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
(wr ? FW_CMD_EXEC : FW_CMD_READ) |
|
||||
cmdp->op_to_portid = htonl(FW_CMD_OP_V(FW_PORT_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
(wr ? FW_CMD_EXEC_F : FW_CMD_READ_F) |
|
||||
FW_PORT_CMD_PORTID(portid));
|
||||
if (!wr) {
|
||||
cmdp->action_to_len16 = htonl(
|
||||
FW_PORT_CMD_ACTION(FW_PORT_ACTION_GET_PORT_INFO) |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
return;
|
||||
}
|
||||
|
||||
/* Set port */
|
||||
cmdp->action_to_len16 = htonl(
|
||||
FW_PORT_CMD_ACTION(FW_PORT_ACTION_L1_CFG) |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
if (fc & PAUSE_RX)
|
||||
lfc |= FW_PORT_CAP_FC_RX;
|
||||
@ -393,7 +393,7 @@ csio_mb_process_read_port_rsp(struct csio_hw *hw, struct csio_mb *mbp,
|
||||
{
|
||||
struct fw_port_cmd *rsp = (struct fw_port_cmd *)(mbp->mb);
|
||||
|
||||
*retval = FW_CMD_RETVAL_GET(ntohl(rsp->action_to_len16));
|
||||
*retval = FW_CMD_RETVAL_G(ntohl(rsp->action_to_len16));
|
||||
|
||||
if (*retval == FW_SUCCESS)
|
||||
*caps = ntohs(rsp->u.info.pcap);
|
||||
@ -415,9 +415,9 @@ csio_mb_initialize(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, tmo, hw, cbfn, 1);
|
||||
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP(FW_INITIALIZE_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE);
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->op_to_write = htonl(FW_CMD_OP_V(FW_INITIALIZE_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F);
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
}
|
||||
|
||||
@ -443,13 +443,13 @@ csio_mb_iq_alloc(struct csio_hw *hw, struct csio_mb *mbp, void *priv,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, priv, cbfn, 1);
|
||||
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_EXEC |
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP_V(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_EXEC_F |
|
||||
FW_IQ_CMD_PFN(iq_params->pfn) |
|
||||
FW_IQ_CMD_VFN(iq_params->vfn));
|
||||
|
||||
cmdp->alloc_to_len16 = htonl(FW_IQ_CMD_ALLOC |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
cmdp->type_to_iqandstindex = htonl(
|
||||
FW_IQ_CMD_VIID(iq_params->viid) |
|
||||
@ -499,12 +499,12 @@ csio_mb_iq_write(struct csio_hw *hw, struct csio_mb *mbp, void *priv,
|
||||
if (!cascaded_req)
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, priv, cbfn, 1);
|
||||
|
||||
cmdp->op_to_vfn |= htonl(FW_CMD_OP(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE |
|
||||
cmdp->op_to_vfn |= htonl(FW_CMD_OP_V(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F |
|
||||
FW_IQ_CMD_PFN(iq_params->pfn) |
|
||||
FW_IQ_CMD_VFN(iq_params->vfn));
|
||||
cmdp->alloc_to_len16 |= htonl(iq_start_stop |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
cmdp->iqid |= htons(iq_params->iqid);
|
||||
cmdp->fl0id |= htons(iq_params->fl0id);
|
||||
cmdp->fl1id |= htons(iq_params->fl1id);
|
||||
@ -588,7 +588,7 @@ csio_mb_iq_alloc_write_rsp(struct csio_hw *hw, struct csio_mb *mbp,
|
||||
{
|
||||
struct fw_iq_cmd *rsp = (struct fw_iq_cmd *)(mbp->mb);
|
||||
|
||||
*ret_val = FW_CMD_RETVAL_GET(ntohl(rsp->alloc_to_len16));
|
||||
*ret_val = FW_CMD_RETVAL_G(ntohl(rsp->alloc_to_len16));
|
||||
if (*ret_val == FW_SUCCESS) {
|
||||
iq_params->physiqid = ntohs(rsp->physiqid);
|
||||
iq_params->iqid = ntohs(rsp->iqid);
|
||||
@ -622,12 +622,12 @@ csio_mb_iq_free(struct csio_hw *hw, struct csio_mb *mbp, void *priv,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, priv, cbfn, 1);
|
||||
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_EXEC |
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP_V(FW_IQ_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_EXEC_F |
|
||||
FW_IQ_CMD_PFN(iq_params->pfn) |
|
||||
FW_IQ_CMD_VFN(iq_params->vfn));
|
||||
cmdp->alloc_to_len16 = htonl(FW_IQ_CMD_FREE |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
cmdp->type_to_iqandstindex = htonl(FW_IQ_CMD_TYPE(iq_params->type));
|
||||
|
||||
cmdp->iqid = htons(iq_params->iqid);
|
||||
@ -657,12 +657,12 @@ csio_mb_eq_ofld_alloc(struct csio_hw *hw, struct csio_mb *mbp, void *priv,
|
||||
struct fw_eq_ofld_cmd *cmdp = (struct fw_eq_ofld_cmd *)(mbp->mb);
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, priv, cbfn, 1);
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP(FW_EQ_OFLD_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_EXEC |
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP_V(FW_EQ_OFLD_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_EXEC_F |
|
||||
FW_EQ_OFLD_CMD_PFN(eq_ofld_params->pfn) |
|
||||
FW_EQ_OFLD_CMD_VFN(eq_ofld_params->vfn));
|
||||
cmdp->alloc_to_len16 = htonl(FW_EQ_OFLD_CMD_ALLOC |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
} /* csio_mb_eq_ofld_alloc */
|
||||
|
||||
@ -704,12 +704,12 @@ csio_mb_eq_ofld_write(struct csio_hw *hw, struct csio_mb *mbp, void *priv,
|
||||
if (!cascaded_req)
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, priv, cbfn, 1);
|
||||
|
||||
cmdp->op_to_vfn |= htonl(FW_CMD_OP(FW_EQ_OFLD_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_WRITE |
|
||||
cmdp->op_to_vfn |= htonl(FW_CMD_OP_V(FW_EQ_OFLD_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_WRITE_F |
|
||||
FW_EQ_OFLD_CMD_PFN(eq_ofld_params->pfn) |
|
||||
FW_EQ_OFLD_CMD_VFN(eq_ofld_params->vfn));
|
||||
cmdp->alloc_to_len16 |= htonl(eq_start_stop |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
cmdp->eqid_pkd |= htonl(FW_EQ_OFLD_CMD_EQID(eq_ofld_params->eqid));
|
||||
|
||||
@ -773,7 +773,7 @@ csio_mb_eq_ofld_alloc_write_rsp(struct csio_hw *hw,
|
||||
{
|
||||
struct fw_eq_ofld_cmd *rsp = (struct fw_eq_ofld_cmd *)(mbp->mb);
|
||||
|
||||
*ret_val = FW_CMD_RETVAL_GET(ntohl(rsp->alloc_to_len16));
|
||||
*ret_val = FW_CMD_RETVAL_G(ntohl(rsp->alloc_to_len16));
|
||||
|
||||
if (*ret_val == FW_SUCCESS) {
|
||||
eq_ofld_params->eqid = FW_EQ_OFLD_CMD_EQID_GET(
|
||||
@ -807,12 +807,12 @@ csio_mb_eq_ofld_free(struct csio_hw *hw, struct csio_mb *mbp, void *priv,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, priv, cbfn, 1);
|
||||
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP(FW_EQ_OFLD_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_EXEC |
|
||||
cmdp->op_to_vfn = htonl(FW_CMD_OP_V(FW_EQ_OFLD_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_EXEC_F |
|
||||
FW_EQ_OFLD_CMD_PFN(eq_ofld_params->pfn) |
|
||||
FW_EQ_OFLD_CMD_VFN(eq_ofld_params->vfn));
|
||||
cmdp->alloc_to_len16 = htonl(FW_EQ_OFLD_CMD_FREE |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
cmdp->eqid_pkd = htonl(FW_EQ_OFLD_CMD_EQID(eq_ofld_params->eqid));
|
||||
|
||||
} /* csio_mb_eq_ofld_free */
|
||||
@ -840,15 +840,15 @@ csio_write_fcoe_link_cond_init_mb(struct csio_lnode *ln, struct csio_mb *mbp,
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, ln, cbfn, 1);
|
||||
|
||||
cmdp->op_to_portid = htonl((
|
||||
FW_CMD_OP(FW_FCOE_LINK_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_WRITE |
|
||||
FW_CMD_OP_V(FW_FCOE_LINK_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_WRITE_F |
|
||||
FW_FCOE_LINK_CMD_PORTID(port_id)));
|
||||
cmdp->sub_opcode_fcfi = htonl(
|
||||
FW_FCOE_LINK_CMD_SUB_OPCODE(sub_opcode) |
|
||||
FW_FCOE_LINK_CMD_FCFI(fcfi));
|
||||
cmdp->lstatus = link_status;
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
} /* csio_write_fcoe_link_cond_init_mb */
|
||||
|
||||
@ -873,11 +873,11 @@ csio_fcoe_read_res_info_init_mb(struct csio_hw *hw, struct csio_mb *mbp,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, hw, cbfn, 1);
|
||||
|
||||
cmdp->op_to_read = htonl((FW_CMD_OP(FW_FCOE_RES_INFO_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ));
|
||||
cmdp->op_to_read = htonl((FW_CMD_OP_V(FW_FCOE_RES_INFO_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F));
|
||||
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
} /* csio_fcoe_read_res_info_init_mb */
|
||||
|
||||
@ -908,13 +908,13 @@ csio_fcoe_vnp_alloc_init_mb(struct csio_lnode *ln, struct csio_mb *mbp,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, ln, cbfn, 1);
|
||||
|
||||
cmdp->op_to_fcfi = htonl((FW_CMD_OP(FW_FCOE_VNP_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC |
|
||||
cmdp->op_to_fcfi = htonl((FW_CMD_OP_V(FW_FCOE_VNP_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F |
|
||||
FW_FCOE_VNP_CMD_FCFI(fcfi)));
|
||||
|
||||
cmdp->alloc_to_len16 = htonl(FW_FCOE_VNP_CMD_ALLOC |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
cmdp->gen_wwn_to_vnpi = htonl(FW_FCOE_VNP_CMD_VNPI(vnpi));
|
||||
|
||||
@ -948,11 +948,11 @@ csio_fcoe_vnp_read_init_mb(struct csio_lnode *ln, struct csio_mb *mbp,
|
||||
(struct fw_fcoe_vnp_cmd *)(mbp->mb);
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, ln, cbfn, 1);
|
||||
cmdp->op_to_fcfi = htonl(FW_CMD_OP(FW_FCOE_VNP_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ |
|
||||
cmdp->op_to_fcfi = htonl(FW_CMD_OP_V(FW_FCOE_VNP_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F |
|
||||
FW_FCOE_VNP_CMD_FCFI(fcfi));
|
||||
cmdp->alloc_to_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->alloc_to_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
cmdp->gen_wwn_to_vnpi = htonl(FW_FCOE_VNP_CMD_VNPI(vnpi));
|
||||
}
|
||||
|
||||
@ -978,12 +978,12 @@ csio_fcoe_vnp_free_init_mb(struct csio_lnode *ln, struct csio_mb *mbp,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, ln, cbfn, 1);
|
||||
|
||||
cmdp->op_to_fcfi = htonl(FW_CMD_OP(FW_FCOE_VNP_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_EXEC |
|
||||
cmdp->op_to_fcfi = htonl(FW_CMD_OP_V(FW_FCOE_VNP_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_EXEC_F |
|
||||
FW_FCOE_VNP_CMD_FCFI(fcfi));
|
||||
cmdp->alloc_to_len16 = htonl(FW_FCOE_VNP_CMD_FREE |
|
||||
FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
cmdp->gen_wwn_to_vnpi = htonl(FW_FCOE_VNP_CMD_VNPI(vnpi));
|
||||
}
|
||||
|
||||
@ -1009,11 +1009,11 @@ csio_fcoe_read_fcf_init_mb(struct csio_lnode *ln, struct csio_mb *mbp,
|
||||
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, ln, cbfn, 1);
|
||||
|
||||
cmdp->op_to_fcfi = htonl(FW_CMD_OP(FW_FCOE_FCF_CMD) |
|
||||
FW_CMD_REQUEST |
|
||||
FW_CMD_READ |
|
||||
cmdp->op_to_fcfi = htonl(FW_CMD_OP_V(FW_FCOE_FCF_CMD) |
|
||||
FW_CMD_REQUEST_F |
|
||||
FW_CMD_READ_F |
|
||||
FW_FCOE_FCF_CMD_FCFI(fcfi));
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16));
|
||||
cmdp->retval_len16 = htonl(FW_CMD_LEN16_V(sizeof(*cmdp) / 16));
|
||||
|
||||
} /* csio_fcoe_read_fcf_init_mb */
|
||||
|
||||
@ -1029,9 +1029,9 @@ csio_fcoe_read_portparams_init_mb(struct csio_hw *hw, struct csio_mb *mbp,
|
||||
CSIO_INIT_MBP(mbp, cmdp, mb_tmo, hw, cbfn, 1);
|
||||
mbp->mb_size = 64;
|
||||
|
||||
cmdp->op_to_flowid = htonl(FW_CMD_OP(FW_FCOE_STATS_CMD) |
|
||||
FW_CMD_REQUEST | FW_CMD_READ);
|
||||
cmdp->free_to_len16 = htonl(FW_CMD_LEN16(CSIO_MAX_MB_SIZE/16));
|
||||
cmdp->op_to_flowid = htonl(FW_CMD_OP_V(FW_FCOE_STATS_CMD) |
|
||||
FW_CMD_REQUEST_F | FW_CMD_READ_F);
|
||||
cmdp->free_to_len16 = htonl(FW_CMD_LEN16_V(CSIO_MAX_MB_SIZE/16));
|
||||
|
||||
cmdp->u.ctl.nstats_port = FW_FCOE_STATS_CMD_NSTATS(portparams->nstats) |
|
||||
FW_FCOE_STATS_CMD_PORT(portparams->portid);
|
||||
@ -1053,7 +1053,7 @@ csio_mb_process_portparams_rsp(struct csio_hw *hw,
|
||||
uint8_t *src;
|
||||
uint8_t *dst;
|
||||
|
||||
*retval = FW_CMD_RETVAL_GET(ntohl(rsp->free_to_len16));
|
||||
*retval = FW_CMD_RETVAL_G(ntohl(rsp->free_to_len16));
|
||||
|
||||
memset(&stats, 0, sizeof(struct fw_fcoe_port_stats));
|
||||
|
||||
@ -1305,7 +1305,7 @@ csio_mb_issue(struct csio_hw *hw, struct csio_mb *mbp)
|
||||
hdr = cpu_to_be64(csio_rd_reg64(hw, data_reg));
|
||||
fw_hdr = (struct fw_cmd_hdr *)&hdr;
|
||||
|
||||
switch (FW_CMD_OP_GET(ntohl(fw_hdr->hi))) {
|
||||
switch (FW_CMD_OP_G(ntohl(fw_hdr->hi))) {
|
||||
case FW_DEBUG_CMD:
|
||||
csio_mb_debug_cmd_handler(hw);
|
||||
continue;
|
||||
@ -1498,7 +1498,7 @@ csio_mb_isr_handler(struct csio_hw *hw)
|
||||
hdr = cpu_to_be64(csio_rd_reg64(hw, data_reg));
|
||||
fw_hdr = (struct fw_cmd_hdr *)&hdr;
|
||||
|
||||
switch (FW_CMD_OP_GET(ntohl(fw_hdr->hi))) {
|
||||
switch (FW_CMD_OP_G(ntohl(fw_hdr->hi))) {
|
||||
case FW_DEBUG_CMD:
|
||||
csio_mb_debug_cmd_handler(hw);
|
||||
return -EINVAL;
|
||||
@ -1571,11 +1571,11 @@ csio_mb_tmo_handler(struct csio_hw *hw)
|
||||
fw_hdr = (struct fw_cmd_hdr *)(mbp->mb);
|
||||
|
||||
csio_dbg(hw, "Mailbox num:%x op:0x%x timed out\n", hw->pfn,
|
||||
FW_CMD_OP_GET(ntohl(fw_hdr->hi)));
|
||||
FW_CMD_OP_G(ntohl(fw_hdr->hi)));
|
||||
|
||||
mbm->mcurrent = NULL;
|
||||
CSIO_INC_STATS(mbm, n_tmo);
|
||||
fw_hdr->lo = htonl(FW_CMD_RETVAL(FW_ETIMEDOUT));
|
||||
fw_hdr->lo = htonl(FW_CMD_RETVAL_V(FW_ETIMEDOUT));
|
||||
|
||||
return mbp;
|
||||
}
|
||||
@ -1624,10 +1624,10 @@ csio_mb_cancel_all(struct csio_hw *hw, struct list_head *cbfn_q)
|
||||
hdr = (struct fw_cmd_hdr *)(mbp->mb);
|
||||
|
||||
csio_dbg(hw, "Cancelling pending mailbox num %x op:%x\n",
|
||||
hw->pfn, FW_CMD_OP_GET(ntohl(hdr->hi)));
|
||||
hw->pfn, FW_CMD_OP_G(ntohl(hdr->hi)));
|
||||
|
||||
CSIO_INC_STATS(mbm, n_cancel);
|
||||
hdr->lo = htonl(FW_CMD_RETVAL(FW_HOSTERROR));
|
||||
hdr->lo = htonl(FW_CMD_RETVAL_V(FW_HOSTERROR));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -230,10 +230,10 @@ csio_scsi_init_cmd_wr(struct csio_ioreq *req, void *addr, uint32_t size)
|
||||
struct csio_dma_buf *dma_buf;
|
||||
uint8_t imm = csio_hw_to_scsim(hw)->proto_cmd_len;
|
||||
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP(FW_SCSI_CMD_WR) |
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP_V(FW_SCSI_CMD_WR) |
|
||||
FW_SCSI_CMD_WR_IMMDLEN(imm));
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID(rn->flowid) |
|
||||
FW_WR_LEN16(
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID_V(rn->flowid) |
|
||||
FW_WR_LEN16_V(
|
||||
DIV_ROUND_UP(size, 16)));
|
||||
|
||||
wr->cookie = (uintptr_t) req;
|
||||
@ -391,10 +391,10 @@ csio_scsi_init_read_wr(struct csio_ioreq *req, void *wrp, uint32_t size)
|
||||
uint8_t imm = csio_hw_to_scsim(hw)->proto_cmd_len;
|
||||
struct scsi_cmnd *scmnd = csio_scsi_cmnd(req);
|
||||
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP(FW_SCSI_READ_WR) |
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP_V(FW_SCSI_READ_WR) |
|
||||
FW_SCSI_READ_WR_IMMDLEN(imm));
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID(rn->flowid) |
|
||||
FW_WR_LEN16(DIV_ROUND_UP(size, 16)));
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID_V(rn->flowid) |
|
||||
FW_WR_LEN16_V(DIV_ROUND_UP(size, 16)));
|
||||
wr->cookie = (uintptr_t)req;
|
||||
wr->iqid = cpu_to_be16(csio_q_physiqid(hw, req->iq_idx));
|
||||
wr->tmo_val = (uint8_t)(req->tmo);
|
||||
@ -444,10 +444,10 @@ csio_scsi_init_write_wr(struct csio_ioreq *req, void *wrp, uint32_t size)
|
||||
uint8_t imm = csio_hw_to_scsim(hw)->proto_cmd_len;
|
||||
struct scsi_cmnd *scmnd = csio_scsi_cmnd(req);
|
||||
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP(FW_SCSI_WRITE_WR) |
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP_V(FW_SCSI_WRITE_WR) |
|
||||
FW_SCSI_WRITE_WR_IMMDLEN(imm));
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID(rn->flowid) |
|
||||
FW_WR_LEN16(DIV_ROUND_UP(size, 16)));
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID_V(rn->flowid) |
|
||||
FW_WR_LEN16_V(DIV_ROUND_UP(size, 16)));
|
||||
wr->cookie = (uintptr_t)req;
|
||||
wr->iqid = cpu_to_be16(csio_q_physiqid(hw, req->iq_idx));
|
||||
wr->tmo_val = (uint8_t)(req->tmo);
|
||||
@ -674,9 +674,9 @@ csio_scsi_init_abrt_cls_wr(struct csio_ioreq *req, void *addr, uint32_t size,
|
||||
struct csio_rnode *rn = req->rnode;
|
||||
struct fw_scsi_abrt_cls_wr *wr = (struct fw_scsi_abrt_cls_wr *)addr;
|
||||
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP(FW_SCSI_ABRT_CLS_WR));
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID(rn->flowid) |
|
||||
FW_WR_LEN16(
|
||||
wr->op_immdlen = cpu_to_be32(FW_WR_OP_V(FW_SCSI_ABRT_CLS_WR));
|
||||
wr->flowid_len16 = cpu_to_be32(FW_WR_FLOWID_V(rn->flowid) |
|
||||
FW_WR_LEN16_V(
|
||||
DIV_ROUND_UP(size, 16)));
|
||||
|
||||
wr->cookie = (uintptr_t) req;
|
||||
|
@ -101,7 +101,7 @@
|
||||
|
||||
/* WR status is at the same position as retval in a CMD header */
|
||||
#define csio_wr_status(_wr) \
|
||||
(FW_CMD_RETVAL_GET(ntohl(((struct fw_cmd_hdr *)(_wr))->lo)))
|
||||
(FW_CMD_RETVAL_G(ntohl(((struct fw_cmd_hdr *)(_wr))->lo)))
|
||||
|
||||
struct csio_hw;
|
||||
|
||||
|
@ -499,10 +499,10 @@ static inline void send_tx_flowc_wr(struct cxgbi_sock *csk)
|
||||
skb = alloc_wr(flowclen, 0, GFP_ATOMIC);
|
||||
flowc = (struct fw_flowc_wr *)skb->head;
|
||||
flowc->op_to_nparams =
|
||||
htonl(FW_WR_OP(FW_FLOWC_WR) | FW_FLOWC_WR_NPARAMS(8));
|
||||
htonl(FW_WR_OP_V(FW_FLOWC_WR) | FW_FLOWC_WR_NPARAMS_V(8));
|
||||
flowc->flowid_len16 =
|
||||
htonl(FW_WR_LEN16(DIV_ROUND_UP(72, 16)) |
|
||||
FW_WR_FLOWID(csk->tid));
|
||||
htonl(FW_WR_LEN16_V(DIV_ROUND_UP(72, 16)) |
|
||||
FW_WR_FLOWID_V(csk->tid));
|
||||
flowc->mnemval[0].mnemonic = FW_FLOWC_MNEM_PFNVFN;
|
||||
flowc->mnemval[0].val = htonl(csk->cdev->pfvf);
|
||||
flowc->mnemval[1].mnemonic = FW_FLOWC_MNEM_CH;
|
||||
@ -542,30 +542,31 @@ static inline void make_tx_data_wr(struct cxgbi_sock *csk, struct sk_buff *skb,
|
||||
{
|
||||
struct fw_ofld_tx_data_wr *req;
|
||||
unsigned int submode = cxgbi_skcb_ulp_mode(skb) & 3;
|
||||
unsigned int wr_ulp_mode = 0;
|
||||
unsigned int wr_ulp_mode = 0, val;
|
||||
|
||||
req = (struct fw_ofld_tx_data_wr *)__skb_push(skb, sizeof(*req));
|
||||
|
||||
if (is_ofld_imm(skb)) {
|
||||
req->op_to_immdlen = htonl(FW_WR_OP(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL(1) |
|
||||
FW_WR_IMMDLEN(dlen));
|
||||
req->flowid_len16 = htonl(FW_WR_FLOWID(csk->tid) |
|
||||
FW_WR_LEN16(credits));
|
||||
req->op_to_immdlen = htonl(FW_WR_OP_V(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL_F |
|
||||
FW_WR_IMMDLEN_V(dlen));
|
||||
req->flowid_len16 = htonl(FW_WR_FLOWID_V(csk->tid) |
|
||||
FW_WR_LEN16_V(credits));
|
||||
} else {
|
||||
req->op_to_immdlen =
|
||||
cpu_to_be32(FW_WR_OP(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL(1) |
|
||||
FW_WR_IMMDLEN(0));
|
||||
cpu_to_be32(FW_WR_OP_V(FW_OFLD_TX_DATA_WR) |
|
||||
FW_WR_COMPL_F |
|
||||
FW_WR_IMMDLEN_V(0));
|
||||
req->flowid_len16 =
|
||||
cpu_to_be32(FW_WR_FLOWID(csk->tid) |
|
||||
FW_WR_LEN16(credits));
|
||||
cpu_to_be32(FW_WR_FLOWID_V(csk->tid) |
|
||||
FW_WR_LEN16_V(credits));
|
||||
}
|
||||
if (submode)
|
||||
wr_ulp_mode = FW_OFLD_TX_DATA_WR_ULPMODE(ULP2_MODE_ISCSI) |
|
||||
FW_OFLD_TX_DATA_WR_ULPSUBMODE(submode);
|
||||
wr_ulp_mode = FW_OFLD_TX_DATA_WR_ULPMODE_V(ULP2_MODE_ISCSI) |
|
||||
FW_OFLD_TX_DATA_WR_ULPSUBMODE_V(submode);
|
||||
val = skb_peek(&csk->write_queue) ? 0 : 1;
|
||||
req->tunnel_to_proxy = htonl(wr_ulp_mode |
|
||||
FW_OFLD_TX_DATA_WR_SHOVE(skb_peek(&csk->write_queue) ? 0 : 1));
|
||||
FW_OFLD_TX_DATA_WR_SHOVE_V(val));
|
||||
req->plen = htonl(len);
|
||||
if (!cxgbi_sock_flag(csk, CTPF_TX_DATA_SENT))
|
||||
cxgbi_sock_set_flag(csk, CTPF_TX_DATA_SENT);
|
||||
|
Loading…
Reference in New Issue
Block a user