📄 ucc_geth.h
字号:
#define IPGIFG_NON_BACK_TO_BACK_IFG_PART2_SHIFT (31 - 15) /* Non back-to-back inter frame gap part 2. << shift */#define IPGIFG_MINIMUM_IFG_ENFORCEMENT_SHIFT (31 - 23) /* Mimimum IFG Enforcement << shift */#define IPGIFG_BACK_TO_BACK_IFG_SHIFT (31 - 31) /* back-to-back inter frame gap << shift */#define IPGIFG_NON_BACK_TO_BACK_IFG_PART1_MAX 127 /* Non back-to-back inter frame gap part 1. max val */#define IPGIFG_NON_BACK_TO_BACK_IFG_PART2_MAX 127 /* Non back-to-back inter frame gap part 2. max val */#define IPGIFG_MINIMUM_IFG_ENFORCEMENT_MAX 255 /* Mimimum IFG Enforcement max val */#define IPGIFG_BACK_TO_BACK_IFG_MAX 127 /* back-to-back inter frame gap max val */#define IPGIFG_NBTB_CS_IPG_MASK 0x7F000000#define IPGIFG_NBTB_IPG_MASK 0x007F0000#define IPGIFG_MIN_IFG_MASK 0x0000FF00#define IPGIFG_BTB_IPG_MASK 0x0000007F/* UCC GETH HAFDUP (Half Duplex Register) */#define HALFDUP_ALT_BEB_TRUNCATION_SHIFT (31 - 11) /* Alternate Binary Exponential Backoff Truncation << shift */#define HALFDUP_ALT_BEB_TRUNCATION_MAX 0xf /* Alternate Binary Exponential Backoff Truncation max val */#define HALFDUP_ALT_BEB 0x00080000 /* Alternate Binary Exponential Backoff */#define HALFDUP_BACK_PRESSURE_NO_BACKOFF 0x00040000 /* Back pressure no backoff */#define HALFDUP_NO_BACKOFF 0x00020000 /* No Backoff */#define HALFDUP_EXCESSIVE_DEFER 0x00010000 /* Excessive Defer */#define HALFDUP_MAX_RETRANSMISSION_SHIFT (31 - 19) /* Maximum Retransmission << shift */#define HALFDUP_MAX_RETRANSMISSION_MAX 0xf /* Maximum Retransmission max val */#define HALFDUP_COLLISION_WINDOW_SHIFT (31 - 31) /* Collision Window << shift */#define HALFDUP_COLLISION_WINDOW_MAX 0x3f /* Collision Window max val */#define HALFDUP_ALT_BEB_TR_MASK 0x00F00000#define HALFDUP_RETRANS_MASK 0x0000F000#define HALFDUP_COL_WINDOW_MASK 0x0000003F/* UCC GETH UCCS (Ethernet Status Register) */#define UCCS_BPR 0x02 /* Back pressure (in half duplex mode) */#define UCCS_PAU 0x02 /* Pause state (in full duplex mode) */#define UCCS_MPD 0x01 /* Magic Packet Detected *//* UCC GETH IFSTAT (Interface Status Register) */#define IFSTAT_EXCESS_DEFER 0x00000200 /* Excessive transmission defer *//* UCC GETH MACSTNADDR1 (Station Address Part 1 Register) */#define MACSTNADDR1_OCTET_6_SHIFT (31 - 7) /* Station address 6th octet << shift */#define MACSTNADDR1_OCTET_5_SHIFT (31 - 15) /* Station address 5th octet << shift */#define MACSTNADDR1_OCTET_4_SHIFT (31 - 23) /* Station address 4th octet << shift */#define MACSTNADDR1_OCTET_3_SHIFT (31 - 31) /* Station address 3rd octet << shift *//* UCC GETH MACSTNADDR2 (Station Address Part 2 Register) */#define MACSTNADDR2_OCTET_2_SHIFT (31 - 7) /* Station address 2nd octet << shift */#define MACSTNADDR2_OCTET_1_SHIFT (31 - 15) /* Station address 1st octet << shift *//* UCC GETH UEMPR (Ethernet Mac Parameter Register) */#define UEMPR_PAUSE_TIME_VALUE_SHIFT (31 - 15) /* Pause time value << shift */#define UEMPR_EXTENDED_PAUSE_TIME_VALUE_SHIFT (31 - 31) /* Extended pause time value << shift *//* UCC GETH UTBIPAR (Ten Bit Interface Physical Address Register) */#define UTBIPAR_PHY_ADDRESS_SHIFT (31 - 31) /* Phy address << shift */#define UTBIPAR_PHY_ADDRESS_MASK 0x0000001f /* Phy address mask *//* UCC GETH UESCR (Ethernet Statistics Control Register) */#define UESCR_AUTOZ 0x8000 /* Automatically zero addressed statistical counter values */#define UESCR_CLRCNT 0x4000 /* Clear all statistics counters */#define UESCR_MAXCOV_SHIFT (15 - 7) /* Max Coalescing Value << shift */#define UESCR_SCOV_SHIFT (15 - 15) /* Status Coalescing Value << shift *//* UCC GETH UDSR (Data Synchronization Register) */#define UDSR_MAGIC 0x067Estruct ucc_geth_thread_data_tx { u8 res0[104];} __attribute__ ((packed));struct ucc_geth_thread_data_rx { u8 res0[40];} __attribute__ ((packed));/* Send Queue Queue-Descriptor */struct ucc_geth_send_queue_qd { u32 bd_ring_base; /* pointer to BD ring base address */ u8 res0[0x8]; u32 last_bd_completed_address;/* initialize to last entry in BD ring */ u8 res1[0x30];} __attribute__ ((packed));struct ucc_geth_send_queue_mem_region { struct ucc_geth_send_queue_qd sqqd[NUM_TX_QUEUES];} __attribute__ ((packed));struct ucc_geth_thread_tx_pram { u8 res0[64];} __attribute__ ((packed));struct ucc_geth_thread_rx_pram { u8 res0[128];} __attribute__ ((packed));#define THREAD_RX_PRAM_ADDITIONAL_FOR_EXTENDED_FILTERING 64#define THREAD_RX_PRAM_ADDITIONAL_FOR_EXTENDED_FILTERING_8 64#define THREAD_RX_PRAM_ADDITIONAL_FOR_EXTENDED_FILTERING_16 96struct ucc_geth_scheduler { u16 cpucount0; /* CPU packet counter */ u16 cpucount1; /* CPU packet counter */ u16 cecount0; /* QE packet counter */ u16 cecount1; /* QE packet counter */ u16 cpucount2; /* CPU packet counter */ u16 cpucount3; /* CPU packet counter */ u16 cecount2; /* QE packet counter */ u16 cecount3; /* QE packet counter */ u16 cpucount4; /* CPU packet counter */ u16 cpucount5; /* CPU packet counter */ u16 cecount4; /* QE packet counter */ u16 cecount5; /* QE packet counter */ u16 cpucount6; /* CPU packet counter */ u16 cpucount7; /* CPU packet counter */ u16 cecount6; /* QE packet counter */ u16 cecount7; /* QE packet counter */ u32 weightstatus[NUM_TX_QUEUES]; /* accumulated weight factor */ u32 rtsrshadow; /* temporary variable handled by QE */ u32 time; /* temporary variable handled by QE */ u32 ttl; /* temporary variable handled by QE */ u32 mblinterval; /* max burst length interval */ u16 nortsrbytetime; /* normalized value of byte time in tsr units */ u8 fracsiz; /* radix 2 log value of denom. of NorTSRByteTime */ u8 res0[1]; u8 strictpriorityq; /* Strict Priority Mask register */ u8 txasap; /* Transmit ASAP register */ u8 extrabw; /* Extra BandWidth register */ u8 oldwfqmask; /* temporary variable handled by QE */ u8 weightfactor[NUM_TX_QUEUES]; /**< weight factor for queues */ u32 minw; /* temporary variable handled by QE */ u8 res1[0x70 - 0x64];} __attribute__ ((packed));struct ucc_geth_tx_firmware_statistics_pram { u32 sicoltx; /* single collision */ u32 mulcoltx; /* multiple collision */ u32 latecoltxfr; /* late collision */ u32 frabortduecol; /* frames aborted due to transmit collision */ u32 frlostinmactxer; /* frames lost due to internal MAC error transmission that are not counted on any other counter */ u32 carriersenseertx; /* carrier sense error */ u32 frtxok; /* frames transmitted OK */ u32 txfrexcessivedefer; /* frames with defferal time greater than specified threshold */ u32 txpkts256; /* total packets (including bad) between 256 and 511 octets */ u32 txpkts512; /* total packets (including bad) between 512 and 1023 octets */ u32 txpkts1024; /* total packets (including bad) between 1024 and 1518 octets */ u32 txpktsjumbo; /* total packets (including bad) between 1024 and MAXLength octets */} __attribute__ ((packed));struct ucc_geth_rx_firmware_statistics_pram { u32 frrxfcser; /* frames with crc error */ u32 fraligner; /* frames with alignment error */ u32 inrangelenrxer; /* in range length error */ u32 outrangelenrxer; /* out of range length error */ u32 frtoolong; /* frame too long */ u32 runt; /* runt */ u32 verylongevent; /* very long event */ u32 symbolerror; /* symbol error */ u32 dropbsy; /* drop because of BD not ready */ u8 res0[0x8]; u32 mismatchdrop; /* drop because of MAC filtering (e.g. address or type mismatch) */ u32 underpkts; /* total frames less than 64 octets */ u32 pkts256; /* total frames (including bad) between 256 and 511 octets */ u32 pkts512; /* total frames (including bad) between 512 and 1023 octets */ u32 pkts1024; /* total frames (including bad) between 1024 and 1518 octets */ u32 pktsjumbo; /* total frames (including bad) between 1024 and MAXLength octets */ u32 frlossinmacer; /* frames lost because of internal MAC error that is not counted in any other counter */ u32 pausefr; /* pause frames */ u8 res1[0x4]; u32 removevlan; /* total frames that had their VLAN tag removed */ u32 replacevlan; /* total frames that had their VLAN tag replaced */ u32 insertvlan; /* total frames that had their VLAN tag inserted */} __attribute__ ((packed));struct ucc_geth_rx_interrupt_coalescing_entry { u32 interruptcoalescingmaxvalue; /* interrupt coalescing max value */ u32 interruptcoalescingcounter; /* interrupt coalescing counter, initialize to interruptcoalescingmaxvalue */} __attribute__ ((packed));struct ucc_geth_rx_interrupt_coalescing_table { struct ucc_geth_rx_interrupt_coalescing_entry coalescingentry[NUM_RX_QUEUES]; /**< interrupt coalescing entry */} __attribute__ ((packed));struct ucc_geth_rx_prefetched_bds { struct qe_bd bd[NUM_BDS_IN_PREFETCHED_BDS]; /* prefetched bd */} __attribute__ ((packed));struct ucc_geth_rx_bd_queues_entry { u32 bdbaseptr; /* BD base pointer */ u32 bdptr; /* BD pointer */ u32 externalbdbaseptr; /* external BD base pointer */ u32 externalbdptr; /* external BD pointer */} __attribute__ ((packed));struct ucc_geth_tx_global_pram { u16 temoder; u8 res0[0x38 - 0x02]; u32 sqptr; /* a base pointer to send queue memory region */ u32 schedulerbasepointer; /* a base pointer to scheduler memory region */ u32 txrmonbaseptr; /* base pointer to Tx RMON statistics counter */ u32 tstate; /* tx internal state. High byte contains function code */ u8 iphoffset[TX_IP_OFFSET_ENTRY_MAX]; u32 vtagtable[0x8]; /* 8 4-byte VLAN tags */ u32 tqptr; /* a base pointer to the Tx Queues Memory Region */ u8 res2[0x80 - 0x74];} __attribute__ ((packed));/* structure representing Extended Filtering Global Parameters in PRAM */struct ucc_geth_exf_global_pram { u32 l2pcdptr; /* individual address filter, high */ u8 res0[0x10 - 0x04];} __attribute__ ((packed));struct ucc_geth_rx_global_pram { u32 remoder; /* ethernet mode reg. */ u32 rqptr; /* base pointer to the Rx Queues Memory Region*/ u32 res0[0x1]; u8 res1[0x20 - 0xC]; u16 typeorlen; /* cutoff point less than which, type/len field is considered length */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -