24 #ifndef VXGE_CACHE_LINE_SIZE 25 #define VXGE_CACHE_LINE_SIZE 4096 30 #define VXGE_HW_MAC_MAX_WIRE_PORTS 2 31 #define VXGE_HW_MAC_MAX_AGGR_PORTS 2 32 #define VXGE_HW_MAC_MAX_PORTS 3 34 #define VXGE_HW_MIN_MTU 68 35 #define VXGE_HW_MAX_MTU 9600 36 #define VXGE_HW_DEFAULT_MTU 1500 42 #ifndef ____cacheline_aligned 43 #define ____cacheline_aligned 49 #define VXGE_NONE 0x00 50 #define VXGE_INFO 0x01 51 #define VXGE_INTR 0x02 52 #define VXGE_XMIT 0x04 53 #define VXGE_POLL 0x08 55 #define VXGE_TRACE 0x20 56 #define VXGE_ALL (VXGE_INFO|VXGE_INTR|VXGE_XMIT\ 57 |VXGE_POLL|VXGE_ERR|VXGE_TRACE) 59 #define NULL_VPID 0xFFFFFFFF 61 #define VXGE_HW_EVENT_BASE 0 62 #define VXGE_LL_EVENT_BASE 100 64 #define VXGE_HW_BASE_INF 100 65 #define VXGE_HW_BASE_ERR 200 66 #define VXGE_HW_BASE_BADCFG 300 67 #define VXGE_HW_DEF_DEVICE_POLL_MILLIS 1000 68 #define VXGE_HW_MAX_PAYLOAD_SIZE_512 2 157 #define VXGE_HW_RING_RXD_RTH_BUCKET_GET(ctrl0) vxge_bVALn(ctrl0, 0, 7) 159 #define VXGE_HW_RING_RXD_LIST_OWN_ADAPTER vxge_mBIT(7) 161 #define VXGE_HW_RING_RXD_FAST_PATH_ELIGIBLE_GET(ctrl0) vxge_bVALn(ctrl0, 8, 1) 163 #define VXGE_HW_RING_RXD_L3_CKSUM_CORRECT_GET(ctrl0) vxge_bVALn(ctrl0, 9, 1) 165 #define VXGE_HW_RING_RXD_L4_CKSUM_CORRECT_GET(ctrl0) vxge_bVALn(ctrl0, 10, 1) 167 #define VXGE_HW_RING_RXD_T_CODE_GET(ctrl0) vxge_bVALn(ctrl0, 12, 4) 168 #define VXGE_HW_RING_RXD_T_CODE(val) vxge_vBIT(val, 12, 4) 170 #define VXGE_HW_RING_RXD_T_CODE_UNUSED VXGE_HW_RING_T_CODE_UNUSED 172 #define VXGE_HW_RING_RXD_SYN_GET(ctrl0) vxge_bVALn(ctrl0, 16, 1) 174 #define VXGE_HW_RING_RXD_IS_ICMP_GET(ctrl0) vxge_bVALn(ctrl0, 17, 1) 176 #define VXGE_HW_RING_RXD_RTH_SPDM_HIT_GET(ctrl0) vxge_bVALn(ctrl0, 18, 1) 178 #define VXGE_HW_RING_RXD_RTH_IT_HIT_GET(ctrl0) vxge_bVALn(ctrl0, 19, 1) 180 #define VXGE_HW_RING_RXD_RTH_HASH_TYPE_GET(ctrl0) vxge_bVALn(ctrl0, 20, 4) 182 #define VXGE_HW_RING_RXD_IS_VLAN_GET(ctrl0) vxge_bVALn(ctrl0, 24, 1) 184 #define VXGE_HW_RING_RXD_ETHER_ENCAP_GET(ctrl0) vxge_bVALn(ctrl0, 25, 2) 186 #define VXGE_HW_RING_RXD_FRAME_PROTO_GET(ctrl0) vxge_bVALn(ctrl0, 27, 5) 188 #define VXGE_HW_RING_RXD_L3_CKSUM_GET(ctrl0) vxge_bVALn(ctrl0, 32, 16) 190 #define VXGE_HW_RING_RXD_L4_CKSUM_GET(ctrl0) vxge_bVALn(ctrl0, 48, 16) 194 #define VXGE_HW_RING_RXD_1_BUFFER0_SIZE_GET(ctrl1) vxge_bVALn(ctrl1, 2, 14) 195 #define VXGE_HW_RING_RXD_1_BUFFER0_SIZE(val) vxge_vBIT(val, 2, 14) 196 #define VXGE_HW_RING_RXD_1_BUFFER0_SIZE_MASK vxge_vBIT(0x3FFF, 2, 14) 198 #define VXGE_HW_RING_RXD_1_RTH_HASH_VAL_GET(ctrl1) vxge_bVALn(ctrl1, 16, 32) 200 #define VXGE_HW_RING_RXD_VLAN_TAG_GET(ctrl1) vxge_bVALn(ctrl1, 48, 16) 214 #define VXGE_HW_FIFO_TXD_LIST_OWN_ADAPTER vxge_mBIT(7) 216 #define VXGE_HW_FIFO_TXD_T_CODE_GET(ctrl0) vxge_bVALn(ctrl0, 12, 4) 217 #define VXGE_HW_FIFO_TXD_T_CODE(val) vxge_vBIT(val, 12, 4) 218 #define VXGE_HW_FIFO_TXD_T_CODE_UNUSED VXGE_HW_FIFO_T_CODE_UNUSED 220 #define VXGE_HW_FIFO_TXD_GATHER_CODE(val) vxge_vBIT(val, 22, 2) 221 #define VXGE_HW_FIFO_TXD_GATHER_CODE_FIRST VXGE_HW_FIFO_GATHER_CODE_FIRST 222 #define VXGE_HW_FIFO_TXD_GATHER_CODE_LAST VXGE_HW_FIFO_GATHER_CODE_LAST 224 #define VXGE_HW_FIFO_TXD_LSO_EN vxge_mBIT(30) 225 #define VXGE_HW_FIFO_TXD_LSO_MSS(val) vxge_vBIT(val, 34, 14) 226 #define VXGE_HW_FIFO_TXD_BUFFER_SIZE(val) vxge_vBIT(val, 48, 16) 229 #define VXGE_HW_FIFO_TXD_TX_CKO_IPV4_EN vxge_mBIT(5) 230 #define VXGE_HW_FIFO_TXD_TX_CKO_TCP_EN vxge_mBIT(6) 231 #define VXGE_HW_FIFO_TXD_TX_CKO_UDP_EN vxge_mBIT(7) 232 #define VXGE_HW_FIFO_TXD_VLAN_ENABLE vxge_mBIT(15) 234 #define VXGE_HW_FIFO_TXD_VLAN_TAG(val) vxge_vBIT(val, 16, 16) 235 #define VXGE_HW_FIFO_TXD_NO_BW_LIMIT vxge_mBIT(43) 237 #define VXGE_HW_FIFO_TXD_INT_NUMBER(val) vxge_vBIT(val, 34, 6) 239 #define VXGE_HW_FIFO_TXD_INT_TYPE_PER_LIST vxge_mBIT(46) 240 #define VXGE_HW_FIFO_TXD_INT_TYPE_UTILZ vxge_mBIT(47) 257 #define VXGE_HW_FW_STRLEN 32 293 #define VXGE_HW_NODBW_GET_TYPE(ctrl0) vxge_bVALn(ctrl0, 0, 8) 294 #define VXGE_HW_NODBW_TYPE(val) vxge_vBIT(val, 0, 8) 295 #define VXGE_HW_NODBW_TYPE_NODBW 0 297 #define VXGE_HW_NODBW_GET_LAST_TXD_NUMBER(ctrl0) vxge_bVALn(ctrl0, 32, 8) 298 #define VXGE_HW_NODBW_LAST_TXD_NUMBER(val) vxge_vBIT(val, 32, 8) 300 #define VXGE_HW_NODBW_GET_NO_SNOOP(ctrl0) vxge_bVALn(ctrl0, 56, 8) 301 #define VXGE_HW_NODBW_LIST_NO_SNOOP(val) vxge_vBIT(val, 56, 8) 302 #define VXGE_HW_NODBW_LIST_NO_SNOOP_TXD_READ_TXD0_WRITE 0x2 303 #define VXGE_HW_NODBW_LIST_NO_SNOOP_TX_FRAME_DATA_READ 0x1 329 #define VXGE_HW_FIFO_TXD_DEPTH 128 341 #define VXGE_HW_MAX_RXDS_PER_BLOCK_1 127 345 #define END_OF_BLOCK 0xFEFFFFFFFFFFFFFFULL 364 #define VXGE_HW_RING_RXD_QWORDS_MODE_1 4 367 #define VXGE_HW_RING_RXD_QWORD_LIMIT 16 371 #define VXGE_HW_RING_BUF_PER_BLOCK 9 375 #define VXGE_HW_RING_RX_POLL_WEIGHT 8 393 #define VXGE_HW_VP_NOT_OPEN 0 394 #define VXGE_HW_VP_OPEN 1 409 #define VXGE_HW_INFO_LEN 64 410 #define VXGE_HW_PMD_INFO_LEN 16 411 #define VXGE_MAX_PRINT_BUF_SIZE 128 429 #define VXGE_HW_NO_MR_NO_SR_NORMAL_FUNCTION 0 430 #define VXGE_HW_MR_NO_SR_VH0_BASE_FUNCTION 1 431 #define VXGE_HW_NO_MR_SR_VH0_FUNCTION0 2 432 #define VXGE_HW_NO_MR_SR_VH0_VIRTUAL_FUNCTION 3 433 #define VXGE_HW_MR_SR_VH0_INVALID_CONFIG 4 434 #define VXGE_HW_SR_VH_FUNCTION0 5 435 #define VXGE_HW_SR_VH_VIRTUAL_FUNCTION 6 436 #define VXGE_HW_VH_NORMAL_FUNCTION 7 438 #define VXGE_HW_FUNCTION_MODE_MIN 0 439 #define VXGE_HW_FUNCTION_MODE_MAX 11 441 #define VXGE_HW_FUNCTION_MODE_SINGLE_FUNCTION 0 442 #define VXGE_HW_FUNCTION_MODE_MULTI_FUNCTION 1 443 #define VXGE_HW_FUNCTION_MODE_SRIOV 2 444 #define VXGE_HW_FUNCTION_MODE_MRIOV 3 445 #define VXGE_HW_FUNCTION_MODE_MRIOV_8 4 446 #define VXGE_HW_FUNCTION_MODE_MULTI_FUNCTION_17 5 447 #define VXGE_HW_FUNCTION_MODE_SRIOV_8 6 448 #define VXGE_HW_FUNCTION_MODE_SRIOV_4 7 449 #define VXGE_HW_FUNCTION_MODE_MULTI_FUNCTION_2 8 450 #define VXGE_HW_FUNCTION_MODE_MULTI_FUNCTION_4 9 451 #define VXGE_HW_FUNCTION_MODE_MRIOV_4 10 452 #define VXGE_HW_FUNCTION_MODE_MULTI_FUNCTION_DIRECT_IO 11 479 #define VXGE_HW_DEVICE_MAGIC 0x12345678 480 #define VXGE_HW_DEVICE_DEAD 0xDEADDEAD 492 #define VXGE_HW_DEVICE_ACCESS_RIGHT_VPATH 0x1 493 #define VXGE_HW_DEVICE_ACCESS_RIGHT_SRPCIM 0x2 494 #define VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM 0x4 517 #define VXGE_HW_DEVICE_LINK_STATE_SET(hldev, ls) (hldev->link_state = ls) 519 #define VXGE_HW_DEVICE_TIM_INT_MASK_SET(m0, m1, i) { \ 521 m0[0] |= vxge_vBIT(0x8, (i*4), 4); \ 522 m0[1] |= vxge_vBIT(0x4, (i*4), 4); \ 525 m1[0] = 0x80000000; \ 526 m1[1] = 0x40000000; \ 530 #define VXGE_HW_DEVICE_TIM_INT_MASK_RESET(m0, m1, i) { \ 532 m0[0] &= ~vxge_vBIT(0x8, (i*4), 4); \ 533 m0[1] &= ~vxge_vBIT(0x4, (i*4), 4); \ 565 if (++(*
offset) >= upper_limit)
681 u64 mask,
u32 max_millis);
762 #define vxge_debug(mask, fmt...) do { \ 763 if (debug_filter & mask) \ 767 #define vxge_trace() vxge_debug(VXGE_TRACE, "%s:%d\n", __func__, __LINE__);
#define VXGE_HW_FIFO_TXD_DEPTH
vxge_hw_txdl_state
enum enum vxge_hw_txdl_state - Descriptor (TXDL) state.
enum vxge_hw_status __vxge_hw_vpath_pci_read(struct __vxge_hw_virtualpath *vpath, u32 phy_func_0, u32 offset, u32 *val)
struct vxge_hw_device_date fw_date
enum vxge_hw_status vxge_hw_vpath_close(struct __vxge_hw_virtualpath *vpath)
#define VXGE_HW_BASE_BADCFG
struct __vxge_hw_virtualpath * vpathh
struct vxge_hw_device_date flash_date
struct vxge_hw_legacy_reg * legacy_reg
static unsigned int unsigned int reg
struct vxge_hw_fifo_txd - Transmit Descriptor
vxge_hw_device_link_state
enum enum vxge_hw_device_link_state - Link state enumeration.
struct vxge_hw_device_version fw_version
char date[VXGE_HW_FW_STRLEN]
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
struct __vxge_hw_virtualpath * vpathh
#define VXGE_HW_FW_STRLEN
struct vxge_hw_device_date - Date Format @day: Day @month: Month @year: Year
void __vxge_hw_device_host_info_get(struct __vxge_hw_device *hldev)
struct __vxge_hw_virtualpath virtual_path
void vxge_hw_device_terminate(struct __vxge_hw_device *devh)
uint8_t size
Entry size (in 32-bit words)
#define VXGE_HW_RING_RXD_1_BUFFER0_SIZE_MASK
uint32_t readl(volatile uint32_t *io_addr)
Read 32-bit dword from memory-mapped device.
struct vxge_hw_common_reg * common_reg
static void __vxge_hw_pio_mem_write32_upper(u32 val, void __iomem *addr)
struct __vxge_hw_non_offload_db_wrapper * nofl_db
u64 reserved_2_pNext_RxD_block
u32 __vxge_hw_vpath_func_id_get(struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg)
static enum vxge_hw_device_link_state vxge_hw_device_link_state_get(struct __vxge_hw_device *devh)
vxge_hw_device_link_state_get - Get link state.
static void vxge_hw_ring_rxd_offset_up(u16 *offset)
static void vxge_hw_fifo_txd_offset_up(u16 *offset)
u64 __vxge_hw_vpath_pci_func_mode_get(u32 vp_id, struct vxge_hw_vpath_reg __iomem *vpath_reg)
u64 pNext_RxD_Blk_physical
static void __vxge_hw_desc_offset_up(u16 upper_limit, u16 *offset)
enum vxge_hw_status vxge_hw_get_func_mode(struct __vxge_hw_device *hldev, u32 *func_mode)
struct vxge_hw_device_hw_info - Device information @host_type: Host Type @func_id: Function Id @vpath...
enum vxge_hw_status __vxge_hw_vpath_card_info_get(struct vxge_hw_vpath_reg __iomem *vpath_reg, struct vxge_hw_device_hw_info *hw_info)
enum vxge_hw_status __vxge_hw_vpath_addr_get(struct vxge_hw_vpath_reg __iomem *vpath_reg, u8(macaddr)[ETH_ALEN], u8(macaddr_mask)[ETH_ALEN])
#define VXGE_HW_TITAN_SRPCIM_REG_SPACES
struct vxge_hw_vpath_reg * vp_reg
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
enum vxge_hw_status __vxge_hw_kdfc_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg, struct vxge_hw_vpath_reg __iomem *vpath_reg)
#define VXGE_HW_RING_RXD_1_BUFFER0_SIZE(val)
struct io_buffer * iobuf[VXGE_HW_RING_BUF_PER_BLOCK+1]
static const u16 debug_filter
vxge_debug @mask: mask for the debug @fmt: printf like format string
u8 serial_number[VXGE_HW_INFO_LEN]
struct vxge_hw_common_reg * common_reg
void writel(uint32_t data, volatile uint32_t *io_addr)
Write 32-bit dword to memory-mapped device.
#define VXGE_HW_MAX_VIRTUAL_PATHS
enum vxge_hw_status vxge_hw_vpath_recover_from_reset(struct __vxge_hw_virtualpath *vpath)
#define VXGE_HW_TITAN_VPATH_REG_SPACES
void vxge_hw_vpath_rx_doorbell_init(struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status __vxge_hw_device_vpath_reset_in_prog_check(u64 __iomem *vpath_rst_in_prog)
struct __vxge_hw_ring_block * rxdl
struct vxge_hw_device_version flash_version
enum vxge_hw_status __vxge_hw_vpath_reset_check(struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status vxge_hw_set_fw_api(struct __vxge_hw_device *hldev, u64 vp_id, u32 action, u32 offset, u64 data0, u64 data1)
#define VXGE_HW_TITAN_VPMGMT_REG_SPACES
void __vxge_hw_device_pci_e_init(struct __vxge_hw_device *hldev)
#define vxge_bVALn(bits, loc, n)
u8(mac_addrs)[VXGE_HW_MAX_VIRTUAL_PATHS][ETH_ALEN]
enum vxge_hw_status vxge_hw_vpath_strip_fcs_check(struct __vxge_hw_device *hldev, u64 vpath_mask)
enum vxge_hw_status __vxge_hw_vpath_fw_ver_get(struct vxge_hw_vpath_reg __iomem *vpath_reg, struct vxge_hw_device_hw_info *hw_info)
u8 product_desc[VXGE_HW_INFO_LEN]
static enum vxge_hw_status __vxge_hw_pio_mem_write64(u64 val64, void __iomem *addr, u64 mask, u32 max_millis)
enum vxge_hw_status vxge_hw_vpath_reset(struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status vxge_hw_device_initialize(struct __vxge_hw_device **devh, void *bar0, struct pci_device *pdev, u8 titan1)
struct vxge_hw_vpath_reg * vpath_reg[VXGE_HW_TITAN_VPATH_REG_SPACES]
struct vxge_hw_vpmgmt_reg * vpmgmt_reg[VXGE_HW_TITAN_VPMGMT_REG_SPACES]
struct __vxge_hw_non_offload_db_wrapper * nofl_db
enum vxge_hw_status vxge_hw_vpath_open(struct __vxge_hw_device *hldev, struct vxge_vpath *vpath)
struct __vxge_hw_device - Hal device object @magic: Magic Number @bar0: BAR0 virtual address.
struct vxge_hw_device_hw_info hw_info
void vxge_hw_vpath_set_zero_rx_frm_len(struct __vxge_hw_device *hldev)
struct vxge_hw_vpmgmt_reg * vpmgmt_reg
u8 part_number[VXGE_HW_INFO_LEN]
static void __vxge_hw_pio_mem_write32_lower(u32 val, void __iomem *addr)
struct __vxge_hw_ring ringh
struct vxge_hw_vpath_reg * vp_reg
struct vxge_hw_toc_reg * toc_reg
void * data
Start of data.
static void vxge_hw_ring_rxd_1b_set(struct vxge_hw_ring_rxd_1 *rxdp, struct io_buffer *iob, u32 size)
vxge_hw_ring_rxd_1b_set - Prepare 1-buffer-mode descriptor.
enum vxge_hw_status __vxge_hw_device_initialize(struct __vxge_hw_device *hldev)
#define VXGE_HW_RING_BUF_PER_BLOCK
enum vxge_hw_status vxge_hw_device_hw_info_get(struct pci_device *pdev, void __iomem *bar0, struct vxge_hw_device_hw_info *hw_info)
vxge_hw_device_hw_info_get - Get the hw information Returns the vpath mask that has the bits set for ...
enum vxge_hw_status vxge_hw_vpath_mtu_set(struct __vxge_hw_virtualpath *vpath, u32 new_mtu)
enum vxge_hw_status __vxge_hw_vpath_swapper_set(struct vxge_hw_vpath_reg __iomem *vpath_reg)
struct vxge_hw_vpath_reg * vp_reg
void vxge_hw_vpath_enable(struct __vxge_hw_virtualpath *vpath)
struct __vxge_hw_device * hldev
uint16_t offset
Offset to command line.
struct vxge_hw_mrpcim_reg * mrpcim_reg
struct __vxge_hw_fifo fifoh
struct vxge_hw_fifo_txd * txdl
enum vxge_hw_status __vxge_hw_legacy_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg)
enum vxge_hw_status __vxge_hw_device_register_poll(void __iomem *reg, u64 mask, u32 max_millis)
struct vxge_hw_ring_rxd_1 rxd[VXGE_HW_MAX_RXDS_PER_BLOCK_1]
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.
struct vxge_hw_ring_rxd_1 - One buffer mode RxD for ring
#define VXGE_HW_MAX_RXDS_PER_BLOCK_1
struct vxge_hw_srpcim_reg * srpcim_reg[VXGE_HW_TITAN_SRPCIM_REG_SPACES]
char version[VXGE_HW_FW_STRLEN]
enum vxge_hw_device_link_state link_state