mtd: onenand: add workaround for SYNC_WRITE mode
[safe/jmp/linux-2.6] / drivers / net / cnic.h
index 5192d4a..a0d853d 100644 (file)
@@ -1,6 +1,6 @@
 /* cnic.h: Broadcom CNIC core network driver.
  *
- * Copyright (c) 2006-2009 Broadcom Corporation
+ * Copyright (c) 2006-2010 Broadcom Corporation
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -101,7 +101,7 @@ struct cnic_redirect_entry {
 #define BNX2X_KWQ_DATA(cp, x)                                          \
        &(cp)->kwq_16_data[BNX2X_KWQ_DATA_PG(cp, x)][BNX2X_KWQ_DATA_IDX(cp, x)]
 
-#define DEF_IPID_COUNT         0xc001
+#define DEF_IPID_START         0x8000
 
 #define DEF_KA_TIMEOUT         10000
 #define DEF_KA_INTERVAL                300000
@@ -176,6 +176,7 @@ struct cnic_local {
        unsigned long ulp_flags[MAX_CNIC_ULP_TYPE];
 #define ULP_F_INIT     0
 #define ULP_F_START    1
+#define ULP_F_CALL_PENDING     2
        struct cnic_ulp_ops *ulp_ops[MAX_CNIC_ULP_TYPE];
 
        /* protected by ulp_lock */
@@ -223,9 +224,13 @@ struct cnic_local {
        u16             kcq_prod_idx;
        u32             kcq_io_addr;
 
-       void                            *status_blk;
-       struct status_block_msix        *bnx2_status_blk;
-       struct host_status_block        *bnx2x_status_blk;
+       union {
+               void                            *gen;
+               struct status_block_msix        *bnx2;
+               struct host_status_block        *bnx2x;
+       } status_blk;
+
+       struct host_def_status_block    *bnx2x_def_status_blk;
 
        u32                             status_blk_num;
        u32                             int_num;
@@ -257,6 +262,7 @@ struct cnic_local {
        struct cnic_ctx         *ctx_arr;
        int                     ctx_blks;
        int                     ctx_blk_size;
+       unsigned long           ctx_align;
        int                     cids_per_blk;
 
        u32                     chip_id;
@@ -289,11 +295,73 @@ struct bnx2x_bd_chain_next {
        u8      reserved[8];
 };
 
+#define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T      (1)
+
 #define ISCSI_RAMROD_CMD_ID_UPDATE_CONN                (ISCSI_KCQE_OPCODE_UPDATE_CONN)
 #define ISCSI_RAMROD_CMD_ID_INIT               (ISCSI_KCQE_OPCODE_INIT)
 
 #define CDU_REGION_NUMBER_XCM_AG 2
 #define CDU_REGION_NUMBER_UCM_AG 4
 
+#define CDU_VALID_DATA(_cid, _region, _type)   \
+       (((_cid) << 8) | (((_region)&0xf)<<4) | (((_type)&0xf)))
+
+#define CDU_CRC8(_cid, _region, _type) \
+       (calc_crc8(CDU_VALID_DATA(_cid, _region, _type), 0xff))
+
+#define CDU_RSRVD_VALUE_TYPE_A(_cid, _region, _type)   \
+       (0x80 | ((CDU_CRC8(_cid, _region, _type)) & 0x7f))
+
+#define BNX2X_CONTEXT_MEM_SIZE         1024
+#define BNX2X_FCOE_CID                 16
+
+/* iSCSI client IDs are 17, 19, 21, 23 */
+#define BNX2X_ISCSI_BASE_CL_ID         17
+#define BNX2X_ISCSI_CL_ID(vn)          (BNX2X_ISCSI_BASE_CL_ID + ((vn) << 1))
+
+#define BNX2X_ISCSI_L2_CID             17
+#define BNX2X_ISCSI_START_CID          18
+#define BNX2X_ISCSI_NUM_CONNECTIONS    128
+#define BNX2X_ISCSI_TASK_CONTEXT_SIZE  128
+#define BNX2X_ISCSI_MAX_PENDING_R2TS   4
+#define BNX2X_ISCSI_R2TQE_SIZE         8
+#define BNX2X_ISCSI_HQ_BD_SIZE         64
+#define BNX2X_ISCSI_CONN_BUF_SIZE      64
+#define BNX2X_ISCSI_GLB_BUF_SIZE       64
+#define BNX2X_ISCSI_PBL_NOT_CACHED     0xff
+#define BNX2X_ISCSI_PDU_HEADER_NOT_CACHED      0xff
+#define BNX2X_HW_CID(x, func)          ((x) | (((func) % PORT_MAX) << 23) | \
+                                        (((func) >> 1) << 17))
+#define BNX2X_SW_CID(x)                        (x & 0x1ffff)
+#define BNX2X_CHIP_NUM_57711           0x164f
+#define BNX2X_CHIP_NUM_57711E          0x1650
+#define BNX2X_CHIP_NUM(x)              (x >> 16)
+#define BNX2X_CHIP_IS_57711(x)         \
+       (BNX2X_CHIP_NUM(x) == BNX2X_CHIP_NUM_57711)
+#define BNX2X_CHIP_IS_57711E(x)                \
+       (BNX2X_CHIP_NUM(x) == BNX2X_CHIP_NUM_57711E)
+#define BNX2X_CHIP_IS_E1H(x)           \
+       (BNX2X_CHIP_IS_57711(x) || BNX2X_CHIP_IS_57711E(x))
+#define IS_E1H_OFFSET                  BNX2X_CHIP_IS_E1H(cp->chip_id)
+
+#define BNX2X_RX_DESC_CNT              (BCM_PAGE_SIZE / sizeof(struct eth_rx_bd))
+#define BNX2X_MAX_RX_DESC_CNT          (BNX2X_RX_DESC_CNT - 2)
+#define BNX2X_RCQ_DESC_CNT             (BCM_PAGE_SIZE / sizeof(union eth_rx_cqe))
+#define BNX2X_MAX_RCQ_DESC_CNT         (BNX2X_RCQ_DESC_CNT - 1)
+
+#define BNX2X_DEF_SB_ID                        16
+
+#define BNX2X_ISCSI_RX_SB_INDEX_NUM                                    \
+               ((HC_INDEX_DEF_U_ETH_ISCSI_RX_CQ_CONS << \
+                 USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER_SHIFT) & \
+                USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER)
+
+#define BNX2X_SHMEM_ADDR(base, field)  (base + \
+                                        offsetof(struct shmem_region, field))
+
+#define CNIC_PORT(cp)                  ((cp)->func % PORT_MAX)
+#define CNIC_FUNC(cp)                  ((cp)->func)
+#define CNIC_E1HVN(cp)                 ((cp)->func >> 1)
+
 #endif