aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/cnic.h
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
commitada47b5fe13d89735805b566185f4885f5a3f750 (patch)
tree644b88f8a71896307d71438e9b3af49126ffb22b /drivers/net/cnic.h
parent43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff)
parent3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff)
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/net/cnic.h')
-rw-r--r--drivers/net/cnic.h77
1 files changed, 72 insertions, 5 deletions
diff --git a/drivers/net/cnic.h b/drivers/net/cnic.h
index a94b302bb464..a0d853dff983 100644
--- a/drivers/net/cnic.h
+++ b/drivers/net/cnic.h
@@ -1,6 +1,6 @@
1/* cnic.h: Broadcom CNIC core network driver. 1/* cnic.h: Broadcom CNIC core network driver.
2 * 2 *
3 * Copyright (c) 2006-2009 Broadcom Corporation 3 * Copyright (c) 2006-2010 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
@@ -101,7 +101,7 @@ struct cnic_redirect_entry {
101#define BNX2X_KWQ_DATA(cp, x) \ 101#define BNX2X_KWQ_DATA(cp, x) \
102 &(cp)->kwq_16_data[BNX2X_KWQ_DATA_PG(cp, x)][BNX2X_KWQ_DATA_IDX(cp, x)] 102 &(cp)->kwq_16_data[BNX2X_KWQ_DATA_PG(cp, x)][BNX2X_KWQ_DATA_IDX(cp, x)]
103 103
104#define DEF_IPID_COUNT 0xc001 104#define DEF_IPID_START 0x8000
105 105
106#define DEF_KA_TIMEOUT 10000 106#define DEF_KA_TIMEOUT 10000
107#define DEF_KA_INTERVAL 300000 107#define DEF_KA_INTERVAL 300000
@@ -224,9 +224,13 @@ struct cnic_local {
224 u16 kcq_prod_idx; 224 u16 kcq_prod_idx;
225 u32 kcq_io_addr; 225 u32 kcq_io_addr;
226 226
227 void *status_blk; 227 union {
228 struct status_block_msix *bnx2_status_blk; 228 void *gen;
229 struct host_status_block *bnx2x_status_blk; 229 struct status_block_msix *bnx2;
230 struct host_status_block *bnx2x;
231 } status_blk;
232
233 struct host_def_status_block *bnx2x_def_status_blk;
230 234
231 u32 status_blk_num; 235 u32 status_blk_num;
232 u32 int_num; 236 u32 int_num;
@@ -258,6 +262,7 @@ struct cnic_local {
258 struct cnic_ctx *ctx_arr; 262 struct cnic_ctx *ctx_arr;
259 int ctx_blks; 263 int ctx_blks;
260 int ctx_blk_size; 264 int ctx_blk_size;
265 unsigned long ctx_align;
261 int cids_per_blk; 266 int cids_per_blk;
262 267
263 u32 chip_id; 268 u32 chip_id;
@@ -290,11 +295,73 @@ struct bnx2x_bd_chain_next {
290 u8 reserved[8]; 295 u8 reserved[8];
291}; 296};
292 297
298#define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T (1)
299
293#define ISCSI_RAMROD_CMD_ID_UPDATE_CONN (ISCSI_KCQE_OPCODE_UPDATE_CONN) 300#define ISCSI_RAMROD_CMD_ID_UPDATE_CONN (ISCSI_KCQE_OPCODE_UPDATE_CONN)
294#define ISCSI_RAMROD_CMD_ID_INIT (ISCSI_KCQE_OPCODE_INIT) 301#define ISCSI_RAMROD_CMD_ID_INIT (ISCSI_KCQE_OPCODE_INIT)
295 302
296#define CDU_REGION_NUMBER_XCM_AG 2 303#define CDU_REGION_NUMBER_XCM_AG 2
297#define CDU_REGION_NUMBER_UCM_AG 4 304#define CDU_REGION_NUMBER_UCM_AG 4
298 305
306#define CDU_VALID_DATA(_cid, _region, _type) \
307 (((_cid) << 8) | (((_region)&0xf)<<4) | (((_type)&0xf)))
308
309#define CDU_CRC8(_cid, _region, _type) \
310 (calc_crc8(CDU_VALID_DATA(_cid, _region, _type), 0xff))
311
312#define CDU_RSRVD_VALUE_TYPE_A(_cid, _region, _type) \
313 (0x80 | ((CDU_CRC8(_cid, _region, _type)) & 0x7f))
314
315#define BNX2X_CONTEXT_MEM_SIZE 1024
316#define BNX2X_FCOE_CID 16
317
318/* iSCSI client IDs are 17, 19, 21, 23 */
319#define BNX2X_ISCSI_BASE_CL_ID 17
320#define BNX2X_ISCSI_CL_ID(vn) (BNX2X_ISCSI_BASE_CL_ID + ((vn) << 1))
321
322#define BNX2X_ISCSI_L2_CID 17
323#define BNX2X_ISCSI_START_CID 18
324#define BNX2X_ISCSI_NUM_CONNECTIONS 128
325#define BNX2X_ISCSI_TASK_CONTEXT_SIZE 128
326#define BNX2X_ISCSI_MAX_PENDING_R2TS 4
327#define BNX2X_ISCSI_R2TQE_SIZE 8
328#define BNX2X_ISCSI_HQ_BD_SIZE 64
329#define BNX2X_ISCSI_CONN_BUF_SIZE 64
330#define BNX2X_ISCSI_GLB_BUF_SIZE 64
331#define BNX2X_ISCSI_PBL_NOT_CACHED 0xff
332#define BNX2X_ISCSI_PDU_HEADER_NOT_CACHED 0xff
333#define BNX2X_HW_CID(x, func) ((x) | (((func) % PORT_MAX) << 23) | \
334 (((func) >> 1) << 17))
335#define BNX2X_SW_CID(x) (x & 0x1ffff)
336#define BNX2X_CHIP_NUM_57711 0x164f
337#define BNX2X_CHIP_NUM_57711E 0x1650
338#define BNX2X_CHIP_NUM(x) (x >> 16)
339#define BNX2X_CHIP_IS_57711(x) \
340 (BNX2X_CHIP_NUM(x) == BNX2X_CHIP_NUM_57711)
341#define BNX2X_CHIP_IS_57711E(x) \
342 (BNX2X_CHIP_NUM(x) == BNX2X_CHIP_NUM_57711E)
343#define BNX2X_CHIP_IS_E1H(x) \
344 (BNX2X_CHIP_IS_57711(x) || BNX2X_CHIP_IS_57711E(x))
345#define IS_E1H_OFFSET BNX2X_CHIP_IS_E1H(cp->chip_id)
346
347#define BNX2X_RX_DESC_CNT (BCM_PAGE_SIZE / sizeof(struct eth_rx_bd))
348#define BNX2X_MAX_RX_DESC_CNT (BNX2X_RX_DESC_CNT - 2)
349#define BNX2X_RCQ_DESC_CNT (BCM_PAGE_SIZE / sizeof(union eth_rx_cqe))
350#define BNX2X_MAX_RCQ_DESC_CNT (BNX2X_RCQ_DESC_CNT - 1)
351
352#define BNX2X_DEF_SB_ID 16
353
354#define BNX2X_ISCSI_RX_SB_INDEX_NUM \
355 ((HC_INDEX_DEF_U_ETH_ISCSI_RX_CQ_CONS << \
356 USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER_SHIFT) & \
357 USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER)
358
359#define BNX2X_SHMEM_ADDR(base, field) (base + \
360 offsetof(struct shmem_region, field))
361
362#define CNIC_PORT(cp) ((cp)->func % PORT_MAX)
363#define CNIC_FUNC(cp) ((cp)->func)
364#define CNIC_E1HVN(cp) ((cp)->func >> 1)
365
299#endif 366#endif
300 367