iPXE
vxge_config.h
Go to the documentation of this file.
1/*
2 * vxge-config.h: iPXE driver for Neterion Inc's X3100 Series 10GbE
3 * PCIe I/O Virtualized Server Adapter.
4 *
5 * Copyright(c) 2002-2010 Neterion Inc.
6 *
7 * This software may be used and distributed according to the terms of
8 * the GNU General Public License (GPL), incorporated herein by
9 * reference. Drivers based on or derived from this code fall under
10 * the GPL and must retain the authorship, copyright and license
11 * notice.
12 *
13 */
14
15FILE_LICENCE(GPL2_ONLY);
16
17#ifndef VXGE_CONFIG_H
18#define VXGE_CONFIG_H
19
20#include <stdint.h>
21#include <ipxe/list.h>
22#include <ipxe/pci.h>
23
24#ifndef VXGE_CACHE_LINE_SIZE
25#define VXGE_CACHE_LINE_SIZE 4096
26#endif
27
28#define WAIT_FACTOR 1
29
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
33
34#define VXGE_HW_MIN_MTU 68
35#define VXGE_HW_MAX_MTU 9600
36#define VXGE_HW_DEFAULT_MTU 1500
37
38#ifndef __iomem
39#define __iomem
40#endif
41
42#ifndef ____cacheline_aligned
43#define ____cacheline_aligned
44#endif
45
46/**
47 * debug filtering masks
48 */
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
54#define VXGE_ERR 0x10
55#define VXGE_TRACE 0x20
56#define VXGE_ALL (VXGE_INFO|VXGE_INTR|VXGE_XMIT\
57 |VXGE_POLL|VXGE_ERR|VXGE_TRACE)
58
59#define NULL_VPID 0xFFFFFFFF
60
61#define VXGE_HW_EVENT_BASE 0
62#define VXGE_LL_EVENT_BASE 100
63
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
69
75
83
117
128
130};
131
132/**
133 * enum enum vxge_hw_device_link_state - Link state enumeration.
134 * @VXGE_HW_LINK_NONE: Invalid link state.
135 * @VXGE_HW_LINK_DOWN: Link is down.
136 * @VXGE_HW_LINK_UP: Link is up.
137 *
138 */
144
145/*forward declaration*/
146struct vxge_vpath;
148
149/**
150 * struct vxge_hw_ring_rxd_1 - One buffer mode RxD for ring
151 *
152 * One buffer mode RxD for ring structure
153 */
157#define VXGE_HW_RING_RXD_RTH_BUCKET_GET(ctrl0) vxge_bVALn(ctrl0, 0, 7)
158
159#define VXGE_HW_RING_RXD_LIST_OWN_ADAPTER vxge_mBIT(7)
160
161#define VXGE_HW_RING_RXD_FAST_PATH_ELIGIBLE_GET(ctrl0) vxge_bVALn(ctrl0, 8, 1)
162
163#define VXGE_HW_RING_RXD_L3_CKSUM_CORRECT_GET(ctrl0) vxge_bVALn(ctrl0, 9, 1)
164
165#define VXGE_HW_RING_RXD_L4_CKSUM_CORRECT_GET(ctrl0) vxge_bVALn(ctrl0, 10, 1)
166
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)
169
170#define VXGE_HW_RING_RXD_T_CODE_UNUSED VXGE_HW_RING_T_CODE_UNUSED
171
172#define VXGE_HW_RING_RXD_SYN_GET(ctrl0) vxge_bVALn(ctrl0, 16, 1)
173
174#define VXGE_HW_RING_RXD_IS_ICMP_GET(ctrl0) vxge_bVALn(ctrl0, 17, 1)
175
176#define VXGE_HW_RING_RXD_RTH_SPDM_HIT_GET(ctrl0) vxge_bVALn(ctrl0, 18, 1)
177
178#define VXGE_HW_RING_RXD_RTH_IT_HIT_GET(ctrl0) vxge_bVALn(ctrl0, 19, 1)
179
180#define VXGE_HW_RING_RXD_RTH_HASH_TYPE_GET(ctrl0) vxge_bVALn(ctrl0, 20, 4)
181
182#define VXGE_HW_RING_RXD_IS_VLAN_GET(ctrl0) vxge_bVALn(ctrl0, 24, 1)
183
184#define VXGE_HW_RING_RXD_ETHER_ENCAP_GET(ctrl0) vxge_bVALn(ctrl0, 25, 2)
185
186#define VXGE_HW_RING_RXD_FRAME_PROTO_GET(ctrl0) vxge_bVALn(ctrl0, 27, 5)
187
188#define VXGE_HW_RING_RXD_L3_CKSUM_GET(ctrl0) vxge_bVALn(ctrl0, 32, 16)
189
190#define VXGE_HW_RING_RXD_L4_CKSUM_GET(ctrl0) vxge_bVALn(ctrl0, 48, 16)
191
193
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)
197
198#define VXGE_HW_RING_RXD_1_RTH_HASH_VAL_GET(ctrl1) vxge_bVALn(ctrl1, 16, 32)
199
200#define VXGE_HW_RING_RXD_VLAN_TAG_GET(ctrl1) vxge_bVALn(ctrl1, 48, 16)
201
203};
204
205/**
206 * struct vxge_hw_fifo_txd - Transmit Descriptor
207 *
208 * Transmit descriptor (TxD).Fifo descriptor contains configured number
209 * (list) of TxDs. * For more details please refer to Titan User Guide,
210 * Section 5.4.2 "Transmit Descriptor (TxD) Format".
211 */
214#define VXGE_HW_FIFO_TXD_LIST_OWN_ADAPTER vxge_mBIT(7)
215
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
219
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
223
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)
227
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)
233
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)
236
237#define VXGE_HW_FIFO_TXD_INT_NUMBER(val) vxge_vBIT(val, 34, 6)
238
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)
241
243
245};
246
247/**
248 * struct vxge_hw_device_date - Date Format
249 * @day: Day
250 * @month: Month
251 * @year: Year
252 * @date: Date in string format
253 *
254 * Structure for returning date
255 */
256
257#define VXGE_HW_FW_STRLEN 32
264
271
273 u32 vp_id,
274 struct vxge_hw_vpath_reg __iomem *vpath_reg);
275
276/*
277 * struct __vxge_hw_non_offload_db_wrapper - Non-offload Doorbell Wrapper
278 * @control_0: Bits 0 to 7 - Doorbell type.
279 * Bits 8 to 31 - Reserved.
280 * Bits 32 to 39 - The highest TxD in this TxDL.
281 * Bits 40 to 47 - Reserved.
282 * Bits 48 to 55 - Reserved.
283 * Bits 56 to 63 - No snoop flags.
284 * @txdl_ptr: The starting location of the TxDL in host memory.
285 *
286 * Created by the host and written to the adapter via PIO to a Kernel Doorbell
287 * FIFO. All non-offload doorbell wrapper fields must be written by the host as
288 * part of a doorbell write. Consumed by the adapter but is not written by the
289 * adapter.
290 */
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
296
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)
299
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
304
306};
307
308/*
309 * struct __vxge_hw_fifo - Fifo.
310 * @vp_id: Virtual path id
311 * @tx_intr_num: Interrupt Number associated with the TX
312 * @txdl: Start pointer of the txdl list of this fifo.
313 * iPXE does not support tx fragmentation, so we need
314 * only one txd in a list
315 * @depth: total number of lists in this fifo
316 * @hw_offset: txd index from where adapter owns the txd list
317 * @sw_offset: txd index from where driver owns the txd list
318 *
319 * @stats: Statistics of this fifo
320 *
321 */
336
337/* Structure that represents the Rx descriptor block which contains
338 * 128 Rx descriptors.
339 */
341#define VXGE_HW_MAX_RXDS_PER_BLOCK_1 127
343
345#define END_OF_BLOCK 0xFEFFFFFFFFFFFFFFULL
346 /* 0xFEFFFFFFFFFFFFFF to mark last Rxd in this blk */
348 /* Logical ptr to next */
350 /* Buff0_ptr.In a 32 bit arch the upper 32 bits should be 0 */
352};
353
354/*
355 * struct __vxge_hw_ring - Ring channel.
356 *
357 * Note: The structure is cache line aligned to better utilize
358 * CPU cache performance.
359 */
364#define VXGE_HW_RING_RXD_QWORDS_MODE_1 4
367#define VXGE_HW_RING_RXD_QWORD_LIMIT 16
369
371#define VXGE_HW_RING_BUF_PER_BLOCK 9
374
375#define VXGE_HW_RING_RX_POLL_WEIGHT 8
377
380};
381
382/*
383 * struct __vxge_hw_virtualpath - Virtual Path
384 *
385 * Virtual path structure to encapsulate the data related to a virtual path.
386 * Virtual paths are allocated by the HW upon getting configuration from the
387 * driver and inserted into the list of virtual paths.
388 */
409#define VXGE_HW_INFO_LEN 64
410#define VXGE_HW_PMD_INFO_LEN 16
411#define VXGE_MAX_PRINT_BUF_SIZE 128
412/**
413 * struct vxge_hw_device_hw_info - Device information
414 * @host_type: Host Type
415 * @func_id: Function Id
416 * @vpath_mask: vpath bit mask
417 * @fw_version: Firmware version
418 * @fw_date: Firmware Date
419 * @flash_version: Firmware version
420 * @flash_date: Firmware Date
421 * @mac_addrs: Mac addresses for each vpath
422 * @mac_addr_masks: Mac address masks for each vpath
423 *
424 * Returns the vpath mask that has the bits set for each vpath allocated
425 * for the driver and the first mac address for each vpath
426 */
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
440
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
453
465};
466
467/**
468 * struct __vxge_hw_device - Hal device object
469 * @magic: Magic Number
470 * @bar0: BAR0 virtual address.
471 * @pdev: Physical device handle
472 * @config: Confguration passed by the LL driver at initialization
473 * @link_state: Link state
474 *
475 * HW device object. Represents Titan adapter
476 */
516
517#define VXGE_HW_DEVICE_LINK_STATE_SET(hldev, ls) (hldev->link_state = ls)
518
519#define VXGE_HW_DEVICE_TIM_INT_MASK_SET(m0, m1, i) { \
520 if (i < 16) { \
521 m0[0] |= vxge_vBIT(0x8, (i*4), 4); \
522 m0[1] |= vxge_vBIT(0x4, (i*4), 4); \
523 } \
524 else { \
525 m1[0] = 0x80000000; \
526 m1[1] = 0x40000000; \
527 } \
528}
529
530#define VXGE_HW_DEVICE_TIM_INT_MASK_RESET(m0, m1, i) { \
531 if (i < 16) { \
532 m0[0] &= ~vxge_vBIT(0x8, (i*4), 4); \
533 m0[1] &= ~vxge_vBIT(0x4, (i*4), 4); \
534 } \
535 else { \
536 m1[0] = 0; \
537 m1[1] = 0; \
538 } \
539}
540
541/**
542 * enum enum vxge_hw_txdl_state - Descriptor (TXDL) state.
543 * @VXGE_HW_TXDL_STATE_NONE: Invalid state.
544 * @VXGE_HW_TXDL_STATE_AVAIL: Descriptor is available for reservation.
545 * @VXGE_HW_TXDL_STATE_POSTED: Descriptor is posted for processing by the
546 * device.
547 * @VXGE_HW_TXDL_STATE_FREED: Descriptor is free and can be reused for
548 * filling-in and posting later.
549 *
550 * Titan/HW descriptor states.
551 *
552 */
559
560
561/* fifo and ring circular buffer offset tracking apis */
562static inline void __vxge_hw_desc_offset_up(u16 upper_limit,
563 u16 *offset)
564{
565 if (++(*offset) >= upper_limit)
566 *offset = 0;
567}
568
569/* rxd offset handling apis */
575/* txd offset handling apis */
580
581/**
582 * vxge_hw_ring_rxd_1b_set - Prepare 1-buffer-mode descriptor.
583 * @rxdh: Descriptor handle.
584 * @dma_pointer: DMA address of a single receive buffer this descriptor
585 * should carry. Note that by the time vxge_hw_ring_rxd_1b_set is called,
586 * the receive buffer should be already mapped to the device
587 * @size: Size of the receive @dma_pointer buffer.
588 *
589 * Prepare 1-buffer-mode Rx descriptor for posting
590 * (via vxge_hw_ring_rxd_post()).
591 *
592 * This inline helper-function does not return any parameters and always
593 * succeeds.
594 *
595 */
596static inline
598 struct io_buffer *iob, u32 size)
599{
600 rxdp->host_control = (intptr_t)(iob);
601 rxdp->buffer0_ptr = virt_to_bus(iob->data);
604}
605
607 struct pci_device *pdev,
608 void __iomem *bar0,
609 struct vxge_hw_device_hw_info *hw_info);
610
613 struct vxge_hw_vpath_reg __iomem *vpath_reg,
614 struct vxge_hw_device_hw_info *hw_info);
615
618 struct vxge_hw_vpath_reg __iomem *vpath_reg,
619 struct vxge_hw_device_hw_info *hw_info);
620
621/**
622 * vxge_hw_device_link_state_get - Get link state.
623 * @devh: HW device handle.
624 *
625 * Get link state.
626 * Returns: link state.
627 */
628static inline
630 struct __vxge_hw_device *devh)
631{
632 return devh->link_state;
633}
634
636
638 struct __vxge_hw_device **devh,
639 void *bar0,
640 struct pci_device *pdev,
641 u8 titan1);
642
644vxge_hw_vpath_open(struct __vxge_hw_device *hldev, struct vxge_vpath *vpath);
645
648
650
652
655
656void
658
660vxge_hw_vpath_mtu_set(struct __vxge_hw_virtualpath *vpath, u32 new_mtu);
661
662void
664
665void
667
670
673
676 struct vxge_hw_vpath_reg __iomem *vpath_reg);
677
680 void __iomem *reg,
681 u64 mask, u32 max_millis);
682
683#ifndef readq
684static inline u64 readq(void __iomem *addr)
685{
686 u64 ret = 0;
687 ret = readl(addr + 4);
688 ret <<= 32;
689 ret |= readl(addr);
690
691 return ret;
692}
693#endif
694
695#ifndef writeq
696static inline void writeq(u64 val, void __iomem *addr)
697{
698 writel((u32) (val), addr);
699 writel((u32) (val >> 32), (addr + 4));
700}
701#endif
702
704{
705 writel(val, addr + 4);
706}
707
709{
710 writel(val, addr);
711}
712
713static inline enum vxge_hw_status
715 u64 mask, u32 max_millis)
716{
718
720 wmb();
722 wmb();
723
724 status = __vxge_hw_device_register_poll(addr, mask, max_millis);
725 return status;
726}
727
728void
730
733
736 struct __vxge_hw_virtualpath *vpath,
737 u32 phy_func_0,
738 u32 offset,
739 u32 *val);
740
743 struct vxge_hw_vpath_reg __iomem *vpath_reg,
744 u8 (macaddr)[ETH_ALEN],
745 u8 (macaddr_mask)[ETH_ALEN]);
746
747u32
749
752
755
756/**
757 * vxge_debug
758 * @mask: mask for the debug
759 * @fmt: printf like format string
760 */
761static const u16 debug_filter = VXGE_ERR;
762#define vxge_debug(mask, fmt...) do { \
763 if (debug_filter & mask) \
764 DBG(fmt); \
765 } while (0);
766
767#define vxge_trace() vxge_debug(VXGE_TRACE, "%s:%d\n", __func__, __LINE__);
768
770vxge_hw_get_func_mode(struct __vxge_hw_device *hldev, u32 *func_mode);
771
774 u64 vp_id, u32 action,
776void
778
779#endif
u32 data1
Definition ar9003_mac.h:4
u32 data0
Definition ar9003_mac.h:2
unsigned long intptr_t
Definition stdint.h:21
uint16_t offset
Offset to command line.
Definition bzimage.h:3
uint32_t addr
Buffer address.
Definition dwmac.h:9
uint8_t status
Status.
Definition ena.h:5
uint16_t size
Buffer size.
Definition dwmac.h:3
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896
#define ETH_ALEN
Definition if_ether.h:9
#define u8
Definition igbvf_osdep.h:40
#define __iomem
Definition igbvf_osdep.h:46
#define wmb()
Definition io.h:546
#define readq(io_addr)
Definition io.h:234
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition io.h:184
#define writeq(data, io_addr)
Definition io.h:273
void __asmcall int val
Definition setjmp.h:12
uint64_t u64
Definition stdint.h:26
Linked lists.
static unsigned int unsigned int reg
Definition myson.h:162
PCI bus.
@ rxdp
Definition sis900.h:32
struct __vxge_hw_device - Hal device object @magic: Magic Number @bar0: BAR0 virtual address.
struct vxge_hw_srpcim_reg * srpcim_reg[VXGE_HW_TITAN_SRPCIM_REG_SPACES]
struct vxge_hw_device_hw_info hw_info
struct vxge_hw_toc_reg * toc_reg
struct vxge_hw_common_reg * common_reg
struct vxge_hw_mrpcim_reg * mrpcim_reg
struct vxge_hw_legacy_reg * legacy_reg
struct vxge_hw_vpmgmt_reg * vpmgmt_reg[VXGE_HW_TITAN_VPMGMT_REG_SPACES]
struct vxge_hw_vpath_reg * vpath_reg[VXGE_HW_TITAN_VPATH_REG_SPACES]
struct net_device * ndev
enum vxge_hw_device_link_state link_state
struct __vxge_hw_virtualpath virtual_path
struct pci_device * pdev
struct vxgedev * vdev
void __iomem * bar0
struct vxge_hw_vpath_reg * vp_reg
struct __vxge_hw_non_offload_db_wrapper * nofl_db
struct __vxge_hw_virtualpath * vpathh
struct vxge_hw_fifo_txd * txdl
struct vxge_hw_ring_rxd_1 rxd[VXGE_HW_MAX_RXDS_PER_BLOCK_1]
struct vxge_hw_vpath_reg * vp_reg
struct io_buffer * iobuf[VXGE_HW_RING_BUF_PER_BLOCK+1]
struct __vxge_hw_ring_block * rxdl
struct vxge_hw_common_reg * common_reg
struct __vxge_hw_virtualpath * vpathh
struct vxge_hw_vpmgmt_reg * vpmgmt_reg
struct vxge_hw_vpath_reg * vp_reg
struct __vxge_hw_fifo fifoh
struct __vxge_hw_ring ringh
struct __vxge_hw_non_offload_db_wrapper * nofl_db
struct __vxge_hw_device * hldev
A persistent I/O buffer.
Definition iobuf.h:38
void * data
Start of data.
Definition iobuf.h:53
A network device.
Definition netdevice.h:353
A PCI device.
Definition pci.h:211
char date[VXGE_HW_FW_STRLEN]
struct vxge_hw_device_hw_info - Device information @host_type: Host Type @func_id: Function Id @vpath...
struct vxge_hw_device_version flash_version
struct vxge_hw_device_date flash_date
u8 serial_number[VXGE_HW_INFO_LEN]
u8 product_desc[VXGE_HW_INFO_LEN]
u8(mac_addrs)[VXGE_HW_MAX_VIRTUAL_PATHS][ETH_ALEN]
struct vxge_hw_device_version fw_version
u8(mac_addr_masks)[VXGE_HW_MAX_VIRTUAL_PATHS][ETH_ALEN]
struct vxge_hw_device_date fw_date
u8 part_number[VXGE_HW_INFO_LEN]
char version[VXGE_HW_FW_STRLEN]
struct vxge_hw_fifo_txd - Transmit Descriptor
struct vxge_hw_ring_rxd_1 - One buffer mode RxD for ring
#define u16
Definition vga.h:20
#define u32
Definition vga.h:21
static void vxge_hw_fifo_txd_offset_up(u16 *offset)
static void __vxge_hw_pio_mem_write32_upper(u32 val, void __iomem *addr)
void vxge_hw_vpath_enable(struct __vxge_hw_virtualpath *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)
#define VXGE_HW_RING_RXD_1_BUFFER0_SIZE_MASK
#define VXGE_HW_INFO_LEN
vxge_hw_device_link_state
enum enum vxge_hw_device_link_state - Link state enumeration.
@ VXGE_HW_LINK_NONE
@ VXGE_HW_LINK_UP
@ VXGE_HW_LINK_DOWN
enum vxge_hw_status vxge_hw_vpath_mtu_set(struct __vxge_hw_virtualpath *vpath, u32 new_mtu)
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)
Definition vxge_config.c:48
#define VXGE_HW_BASE_ERR
Definition vxge_config.h:65
enum vxge_hw_status vxge_hw_get_func_mode(struct __vxge_hw_device *hldev, u32 *func_mode)
Definition vxge_config.c:98
#define VXGE_HW_FIFO_TXD_DEPTH
enum vxge_hw_status vxge_hw_device_initialize(struct __vxge_hw_device **devh, void *bar0, struct pci_device *pdev, u8 titan1)
enum vxge_hw_status vxge_hw_vpath_recover_from_reset(struct __vxge_hw_virtualpath *vpath)
void __vxge_hw_device_host_info_get(struct __vxge_hw_device *hldev)
enum vxge_hw_status vxge_hw_vpath_strip_fcs_check(struct __vxge_hw_device *hldev, u64 vpath_mask)
void vxge_hw_vpath_set_zero_rx_frm_len(struct __vxge_hw_device *hldev)
Definition vxge_config.c:31
static void __vxge_hw_desc_offset_up(u16 upper_limit, u16 *offset)
#define VXGE_HW_BASE_INF
Definition vxge_config.h:64
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)
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_check(struct __vxge_hw_virtualpath *vpath)
static const u16 debug_filter
vxge_debug @mask: mask for the debug @fmt: printf like format string
enum vxge_hw_status vxge_hw_vpath_reset(struct __vxge_hw_virtualpath *vpath)
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.
vxge_hw_txdl_state
enum enum vxge_hw_txdl_state - Descriptor (TXDL) state.
@ VXGE_HW_TXDL_STATE_AVAIL
@ VXGE_HW_TXDL_STATE_NONE
@ VXGE_HW_TXDL_STATE_POSTED
@ VXGE_HW_TXDL_STATE_FREED
#define VXGE_HW_RING_RXD_1_BUFFER0_SIZE(val)
void vxge_hw_device_terminate(struct __vxge_hw_device *devh)
u64 __vxge_hw_vpath_pci_func_mode_get(u32 vp_id, struct vxge_hw_vpath_reg __iomem *vpath_reg)
enum vxge_hw_status __vxge_hw_vpath_pci_read(struct __vxge_hw_virtualpath *vpath, u32 phy_func_0, u32 offset, u32 *val)
#define VXGE_HW_BASE_BADCFG
Definition vxge_config.h:66
enum vxge_hw_status __vxge_hw_device_initialize(struct __vxge_hw_device *hldev)
#define VXGE_HW_FW_STRLEN
struct vxge_hw_device_date - Date Format @day: Day @month: Month @year: Year
#define VXGE_ERR
Definition vxge_config.h:54
#define VXGE_HW_RING_BUF_PER_BLOCK
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_vpath_open(struct __vxge_hw_device *hldev, struct vxge_vpath *vpath)
vxge_hw_status
Definition vxge_config.h:70
@ VXGE_HW_ERR_SWAPPER_CTRL
Definition vxge_config.h:89
@ VXGE_HW_INF_SW_LRO_UNCAPABLE
Definition vxge_config.h:80
@ VXGE_HW_BADCFG_VPATH_MTU
@ VXGE_HW_ERR_INVALID_TOTAL_BANDWIDTH
@ VXGE_HW_INF_SW_LRO_FLUSH_SESSION
Definition vxge_config.h:81
@ VXGE_HW_ERR_INVALID_PCI_INFO
Definition vxge_config.h:96
@ VXGE_HW_ERR_SLOT_FREEZE
@ VXGE_HW_ERR_VERSION_CONFLICT
Definition vxge_config.h:95
@ VXGE_HW_ERR_INVALID_FUNC_MODE
@ VXGE_HW_BADCFG_VPATH_RPA_STRIP_VLAN_TAG
@ VXGE_HW_ERR_INVALID_PORT
@ VXGE_HW_ERR_INVALID_L2_SWITCH_STATE
@ VXGE_HW_INF_OUT_OF_DESCRIPTORS
Definition vxge_config.h:77
@ VXGE_HW_BADCFG_VPATH_MIN_BANDWIDTH
@ VXGE_HW_ERR_INVALID_MTU_SIZE
Definition vxge_config.h:90
@ VXGE_HW_ERR_INVALID_DEVICE
Definition vxge_config.h:94
@ VXGE_HW_ERR_WRONG_IRQ
Definition vxge_config.h:88
@ VXGE_HW_BADCFG_VPATH_PRIORITY
@ VXGE_HW_ERR_OUT_OF_SPACE
@ VXGE_HW_ERR_INVALID_DP_MODE
@ VXGE_HW_ERR_VPATH_NOT_AVAILABLE
Definition vxge_config.h:86
@ VXGE_HW_ERR_INVALID_MIN_BANDWIDTH
@ VXGE_HW_BADCFG_VPATH_BANDWIDTH_LIMIT
@ VXGE_HW_ERR_INVALID_MAX_BANDWIDTH
@ VXGE_HW_FAIL
Definition vxge_config.h:72
@ VXGE_HW_BADCFG_RTS_MAC_EN
@ VXGE_HW_PENDING
Definition vxge_config.h:73
@ VXGE_HW_OK
Definition vxge_config.h:71
@ VXGE_HW_BADCFG_INTR_MODE
@ VXGE_HW_ERR_INVALID_BANDWIDTH_LIMIT
@ VXGE_HW_ERR_INVALID_TCODE
Definition vxge_config.h:97
@ VXGE_HW_ERR_INVALID_TYPE
Definition vxge_config.h:92
@ VXGE_HW_BADCFG_VPATH_AGGR_ACK
@ VXGE_HW_ERR_INVALID_BLOCK_SIZE
Definition vxge_config.h:98
@ VXGE_HW_ERR_OUT_OF_MEMORY
Definition vxge_config.h:85
@ VXGE_HW_ERR_INVALID_HANDLE
Definition vxge_config.h:84
@ VXGE_HW_INF_NO_MORE_COMPLETED_DESCRIPTORS
Definition vxge_config.h:76
@ VXGE_HW_BADCFG_RING_INDICATE_MAX_PKTS
@ VXGE_HW_ERR_PRIVILAGED_OPEARATION
@ VXGE_HW_ERR_INVALID_STATE
Definition vxge_config.h:99
@ VXGE_HW_ERR_INVALID_OFFSET
Definition vxge_config.h:93
@ VXGE_HW_ERR_VPATH
@ VXGE_HW_COMPLETIONS_REMAIN
Definition vxge_config.h:74
@ VXGE_HW_INF_SW_LRO_FLUSH_BOTH
Definition vxge_config.h:82
@ VXGE_HW_ERR_INVALID_CATCH_BASIN_MODE
@ VXGE_HW_ERR_INVALID_INDEX
Definition vxge_config.h:91
@ VXGE_HW_ERR_CRITICAL
@ VXGE_HW_BADCFG_FIFO_BLOCKS
@ VXGE_HW_ERR_RESET_IN_PROGRESS
@ VXGE_HW_ERR_INVALID_FAILURE_BEHAVIOUR
@ VXGE_HW_ERR_VPATH_NOT_OPEN
Definition vxge_config.h:87
@ VXGE_HW_INF_SW_LRO_CONT
Definition vxge_config.h:79
@ VXGE_HW_INF_SW_LRO_BEGIN
Definition vxge_config.h:78
@ VXGE_HW_EOF_TRACE_BUF
@ VXGE_HW_ERR_FIFO
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_addr_get(struct vxge_hw_vpath_reg __iomem *vpath_reg, u8(macaddr)[ETH_ALEN], u8(macaddr_mask)[ETH_ALEN])
enum vxge_hw_status vxge_hw_vpath_close(struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status __vxge_hw_device_register_poll(void __iomem *reg, u64 mask, u32 max_millis)
static void __vxge_hw_pio_mem_write32_lower(u32 val, void __iomem *addr)
enum vxge_hw_status __vxge_hw_vpath_swapper_set(struct vxge_hw_vpath_reg __iomem *vpath_reg)
static void vxge_hw_ring_rxd_offset_up(u16 *offset)
void __vxge_hw_device_pci_e_init(struct __vxge_hw_device *hldev)
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)
#define VXGE_HW_MAX_RXDS_PER_BLOCK_1
#define __iomem
Definition vxge_config.h:39
enum vxge_hw_status __vxge_hw_legacy_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg)
u32 __vxge_hw_vpath_func_id_get(struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg)
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_TITAN_VPATH_REG_SPACES
Definition vxge_reg.h:54
#define VXGE_HW_TITAN_VPMGMT_REG_SPACES
Definition vxge_reg.h:53
#define vxge_bVALn(bits, loc, n)
Definition vxge_reg.h:35
u64 vpath_rst_in_prog
Definition vxge_reg.h:151
#define VXGE_HW_TITAN_SRPCIM_REG_SPACES
Definition vxge_reg.h:52
#define VXGE_HW_MAX_VIRTUAL_PATHS
#define readl
Definition w89c840.c:157
#define writel
Definition w89c840.c:160