Lines Matching +full:tx +full:- +full:threshold
12 * are provided to you under the BSD-type license terms provided
17 * - Redistributions of source code must retain the above copyright
19 * - Redistributions in binary form must reproduce the above
23 * - Neither the name of Marvell nor the names of its contributors
57 * D-Link PCI vendor ID
91 * D-Link gigabit ethernet device ID
133 #define PCI_Y2_PIG_ENA BIT(31) /* Enable Plug-in-Go (YUKON-2) */
134 #define PCI_Y2_DLL_DIS BIT(30) /* Disable PCI DLL (YUKON-2) */
135 #define PCI_Y2_PHY2_COMA BIT(29) /* Set PHY 2 to Coma Mode (YUKON-2) */
136 #define PCI_Y2_PHY1_COMA BIT(28) /* Set PHY 1 to Coma Mode (YUKON-2) */
137 #define PCI_Y2_PHY2_POWD BIT(27) /* Set PHY 2 to Power Down (YUKON-2) */
138 #define PCI_Y2_PHY1_POWD BIT(26) /* Set PHY 1 to Power Down (YUKON-2) */
150 #define PCI_PEX_LEGNAT BIT(15) /* PEX PM legacy/native (YUKON-2) */
160 #define PCI_CLS_OPT BIT(3) /* Cache Line Size PCI-X (YUKON-2) */
163 #define PCI_VPD_WR_THR (0xff<<24) /* Bit 31..24: VPD Write Threshold */
181 /* PCI_OUR_STATUS 32 bit Adapter Status Register (Yukon-2) */
183 #define PCI_OS_PCIX BIT(30) /* PCI-X Bus */
184 #define PCI_OS_MODE_MSK (3<<28) /* Bit 29..28: PCI-X Bus Mode Mask */
186 #define PCI_OS_PCI_X BIT(26) /* PCI/PCI-X Bus (0 = PEX) */
191 #define PCI_OS_SPEED(val) ((val & PCI_OS_MODE_MSK) >> 28) /* PCI-X Spd */
194 #define PCI_OS_SPD_X66 1 /* PCI-X 66MHz Bus */
195 #define PCI_OS_SPD_X100 2 /* PCI-X 100MHz Bus */
196 #define PCI_OS_SPD_X133 3 /* PCI-X 133MHz Bus */
198 /* PCI_OUR_REG_4 32 bit Our Register 4 (Yukon-ECU only) */
211 /* PCI_OUR_REG_5 - 32 bit Our Register 5 (Yukon-ECU only) */
215 /* PEX_DEV_CTRL 16 bit PEX Device Control (Yukon-2) */
225 #define PEX_DC_EN_NFA_ER_RP BIT(1) /* Enable Non-Fatal Error Report */
230 /* PEX_LNK_STAT 16 bit PEX Link Status (Yukon-2) */
237 /* PEX_UNC_ERR_STAT PEX Uncorrectable Errors Status Register (Yukon-2) */
265 /* Special ISR registers (Yukon-2 only) */
274 * - completely empty (this is the RAP Block window)
290 #define B2_Y2_CLK_GATE 0x011d /* 8 bit Clock Gating (Yukon-2) */
291 #define B2_Y2_HW_RES 0x011e /* 8 bit HW Resources (Yukon-2) */
323 #define SELECT_RAM_BUFFER(rb, addr) (addr | (rb << 6)) /* Yukon-2 only */
326 /* Yukon-2: use SELECT_RAM_BUFFER() to access the RAM buffer */
328 * The HW-Spec. calls this registers Timeout Value 0..11. But this names are
349 * Bank 4 - 5
352 #define TXA_ITI_INI 0x0200 /* 32 bit Tx Arb Interval Timer Init Val */
353 #define TXA_ITI_VAL 0x0204 /* 32 bit Tx Arb Interval Timer Value */
354 #define TXA_LIM_INI 0x0208 /* 32 bit Tx Arb Limit Counter Init Val */
355 #define TXA_LIM_VAL 0x020c /* 32 bit Tx Arb Limit Counter Value */
356 #define TXA_CTRL 0x0210 /* 8 bit Tx Arbiter Control Register */
357 #define TXA_TEST 0x0211 /* 8 bit Tx Arbiter Test Register */
358 #define TXA_STAT 0x0212 /* 8 bit Tx Arbiter Status Register */
362 /* RSS key registers for Yukon-2 Family */
363 #define B4_RSS_KEY 0x0220 /* 4x32 bit RSS Key register (Yukon-2) */
369 /* 0x0280 - 0x0292: MAC 2 */
374 * Bank 8 - 15
425 * Bank 16 - 23
435 #define RB_RX_UTPP 0x10 /* 32 bit Rx Upper Threshold, Pause Packet */
436 #define RB_RX_LTPP 0x14 /* 32 bit Rx Lower Threshold, Pause Packet */
437 #define RB_RX_UTHP 0x18 /* 32 bit Rx Upper Threshold, High Prio */
438 #define RB_RX_LTHP 0x1c /* 32 bit Rx Lower Threshold, High Prio */
448 /* Receive GMAC FIFO (YUKON and Yukon-2), use MR_ADDR() to access */
453 #define RX_GMF_FL_THR 0x0c50 /* 32 bit Rx GMAC FIFO Flush Threshold */
454 #define RX_GMF_TR_THR 0x0c54 /* 32 bit Rx Truncation Threshold (Yukon-2) */
455 #define RX_GMF_UP_THR 0x0c58 /* 8 bit Rx Upper Pause Thr (Yukon-EC_U) */
456 #define RX_GMF_LP_THR 0x0c5a /* 8 bit Rx Lower Pause Thr (Yukon-EC_U) */
457 #define RX_GMF_VLAN 0x0c5c /* 32 bit Rx VLAN Type Register (Yukon-2) */
466 /* 0x0c80 - 0x0cbf: MAC 2 */
467 /* 0x0cc0 - 0x0cff: reserved */
472 /* Transmit GMAC FIFO (YUKON and Yukon-2), use MR_ADDR() to access */
474 #define TX_GMF_EA 0x0d40 /* 32 bit Tx GMAC FIFO End Address */
475 #define TX_GMF_AE_THR 0x0d44 /* 32 bit Tx GMAC FIFO Almost Empty Thresh. */
476 #define TX_GMF_CTRL_T 0x0d48 /* 32 bit Tx GMAC FIFO Control/Test */
477 #define TX_GMF_VLAN 0x0d5c /* 32 bit Tx VLAN Type Register (Yukon-2) */
478 #define TX_GMF_WP 0x0d60 /* 32 bit Tx GMAC FIFO Write Pointer */
479 #define TX_GMF_WSP 0x0d64 /* 32 bit Tx GMAC FIFO Write Shadow Pointer */
480 #define TX_GMF_WLEV 0x0d68 /* 32 bit Tx GMAC FIFO Write Level */
481 #define TX_GMF_RP 0x0d70 /* 32 bit Tx GMAC FIFO Read Pointer */
482 #define TX_GMF_RSTP 0x0d74 /* 32 bit Tx GMAC FIFO Restart Pointer */
483 #define TX_GMF_RLEV 0x0d78 /* 32 bit Tx GMAC FIFO Read Level */
488 /* 0x0d80 - 0x0dbf: MAC 2 */
489 /* 0x0daa - 0x0dff: reserved */
503 /* Polling Unit Registers (Yukon-2 only) */
508 /* ASF Subsystem Registers (Yukon-2 only) */
523 /* Status BMU Registers (Yukon-2 only) */
532 #define STAT_TX_IDX_TH 0x0e98 /* 16 bit Status Tx Indx Thrshld Reg */
534 /* FIFO Control/Status Registers (Yukon-2 only) */
542 /* Level and ISR Timer Registers (Yukon-2 only) */
547 #define STAT_TX_TIMER_INI 0x0ec0 /* 32 bit Tx Timer Init. Value Reg */
548 #define STAT_TX_TIMER_CNT 0x0ec4 /* 32 bit Tx Timer Counter Reg */
549 #define STAT_TX_TIMER_CTRL 0x0ec8 /* 8 bit Tx Timer Control Reg */
550 #define STAT_TX_TIMER_TEST 0x0ec9 /* 8 bit Tx Timer Test Reg */
557 #define ST_TXRP_IDX_MASK 0x0fff /* Tx Report Index Mask */
558 #define ST_TXTH_IDX_MASK 0x0fff /* Tx Threshold Index Mask */
571 /* Wake-up Frame Pattern Match Control Registers (YUKON only) */
573 #define WOL_REG_OFFS 0x20 /* HW-Bug: Address is + 0x20 against spec. */
580 #define WOL_PATT_PME 0x0f2a /* 8 bit WOL PME Match Enable (Yukon-2) */
581 #define WOL_PATT_ASFM 0x0f2b /* 8 bit WOL ASF Match Enable (Yukon-2) */
595 * Bank 32 - 33
600 /* offset to configuration space on Yukon-2 */
611 #define Y2_VMAIN_AVAIL BIT(17) /* VMAIN available (YUKON-2 only) */
612 #define Y2_VAUX_AVAIL BIT(16) /* VAUX available (YUKON-2 only) */
613 #define Y2_HW_WOL_ON BIT(15) /* HW WOL On (Yukon-EC Ultra A1 only) */
614 #define Y2_HW_WOL_OFF BIT(14) /* HW WOL Off (Yukon-EC Ultra A1 only) */
615 #define Y2_ASF_ENABLE BIT(13) /* ASF Unit Enable (YUKON-2 only) */
616 #define Y2_ASF_DISABLE BIT(12) /* ASF Unit Disable (YUKON-2 only) */
617 #define Y2_CLK_RUN_ENA BIT(11) /* CLK_RUN Enable (YUKON-2 only) */
618 #define Y2_CLK_RUN_DIS BIT(10) /* CLK_RUN Disable (YUKON-2 only) */
619 #define Y2_LED_STAT_ON BIT(9) /* Status LED On (YUKON-2 only) */
620 #define Y2_LED_STAT_OFF BIT(8) /* Status LED Off (YUKON-2 only) */
656 #define Y2_IS_TWSI_RDY BIT(26) /* IRQ on end of TWSI Tx */
686 #define Y2_IS_PCI_EXP BIT(25) /* PCI-Express interrupt */
687 #define Y2_IS_PCI_NEXP BIT(24) /* PCI-Express error similar to PCI error */
692 #define Y2_IS_TCP_TXS2 BIT(9) /* TCP length mismatch sync Tx queue IRQ */
693 #define Y2_IS_TCP_TXA2 BIT(8) /* TCP length mismatch async Tx queue IRQ */
698 #define Y2_IS_TCP_TXS1 BIT(1) /* TCP length mismatch sync Tx queue IRQ */
699 #define Y2_IS_TCP_TXA1 BIT(0) /* TCP length mismatch async Tx queue IRQ */
718 * as they are pre-yukon 2 chips
722 #define CHIP_ID_YUKON_LITE 0xb1 /* Chip ID for YUKON-Lite (Rev. A1-A3) */
723 #define CHIP_ID_YUKON_LP 0xb2 /* Chip ID for YUKON-LP */
725 #define CHIP_ID_YUKON_XL 0xb3 /* Chip ID for YUKON-2 XL */
726 #define CHIP_ID_YUKON_EC_U 0xb4 /* Chip ID for YUKON-2 EC Ultra */
727 #define CHIP_ID_YUKON_EX 0xb5 /* Chip ID for YUKON-2 Extreme */
728 #define CHIP_ID_YUKON_EC 0xb6 /* Chip ID for YUKON-2 EC */
729 #define CHIP_ID_YUKON_FE 0xb7 /* Chip ID for YUKON-2 FE */
730 #define CHIP_ID_YUKON_FE_P 0xb8 /* Chip ID for YUKON-2 FE+ */
731 #define CHIP_ID_YUKON_SUPR 0xb9 /* Chip ID for YUKON-2 Supreme */
732 #define CHIP_ID_YUKON_UL_2 0xba /* Chip ID for YUKON-2 Ultra 2 */
735 #define CHIP_REV_YU_LITE_A1 3 /* Chip Rev. for YUKON-Lite A1,A2 */
736 #define CHIP_REV_YU_LITE_A3 7 /* Chip Rev. for YUKON-Lite A3 */
738 #define CHIP_REV_YU_XL_A0 0 /* Chip Rev. for Yukon-2 A0 */
739 #define CHIP_REV_YU_XL_A1 1 /* Chip Rev. for Yukon-2 A1 */
740 #define CHIP_REV_YU_XL_A2 2 /* Chip Rev. for Yukon-2 A2 */
741 #define CHIP_REV_YU_XL_A3 3 /* Chip Rev. for Yukon-2 A3 */
743 #define CHIP_REV_YU_EC_A1 0 /* Chip Rev. for Yukon-EC A1/A0 */
744 #define CHIP_REV_YU_EC_A2 1 /* Chip Rev. for Yukon-EC A2 */
745 #define CHIP_REV_YU_EC_A3 2 /* Chip Rev. for Yukon-EC A3 */
747 #define CHIP_REV_YU_EC_U_A0 1 /* Chip Rev. for Yukon-EC Ultra A0 */
748 #define CHIP_REV_YU_EC_U_A1 2 /* Chip Rev. for Yukon-EC Ultra A1 */
749 #define CHIP_REV_YU_EC_U_B0 3 /* Chip Rev. for Yukon-EC Ultra B0 */
750 #define CHIP_REV_YU_EC_U_B1 5 /* Chip Rev. for Yukon-EC Ultra B1 */
751 #define CHIP_REV_YU_FE_A1 1 /* Chip Rev. for Yukon-FE A1 */
752 #define CHIP_REV_YU_FE_A2 3 /* Chip Rev. for Yukon-FE A2 */
753 #define CHIP_REV_YU_EX_A0 1 /* Chip Rev. for Yukon-Extreme A0 */
754 #define CHIP_REV_YU_EX_B0 2 /* Chip Rev. for Yukon-Extreme B0 */
756 #define CHIP_REV_YU_SU_A0 0 /* Chip Rev. for Yukon-Supreme A0 */
757 #define CHIP_REV_YU_SU_B0 1 /* Chip Rev. for Yukon-Supreme B0 */
758 #define CHIP_REV_YU_SU_B1 3 /* Chip Rev. for Yukon-Supreme B1 */
762 /* B2_Y2_CLK_GATE - 8 bit Clock Gating (Yukon-2 only) */
772 /* B2_Y2_HW_RES 8 bit HW Resources (Yukon-2 only) */
783 /* B2_Y2_CLK_CTRL 32 bit Core Clck Frqncy Control Rgstr (Yukon-2/EC) */
784 /* Yukon-EC/FE */
787 /* Yukon-2 */
883 /* Y2_PEX_PHY_ADDR/DATA PEX PHY address and data reg (Yukon-2 only) */
900 /* TXA_ITI_INI 32 bit Tx Arb Interval Timer Init Val */
901 /* TXA_ITI_VAL 32 bit Tx Arb Interval Timer Value */
902 /* TXA_LIM_INI 32 bit Tx Arb Limit Counter Init Val */
903 /* TXA_LIM_VAL 32 bit Tx Arb Limit Counter Value */
906 /* TXA_CTRL 8 bit Tx Arbiter Control Register */
907 #define TXA_ENA_FSYNC BIT(7) /* Enable force of sync Tx queue */
908 #define TXA_DIS_FSYNC BIT(6) /* Disable force of sync Tx queue */
913 #define TXA_ENA_ARB BIT(1) /* Enable Tx Arbiter */
914 #define TXA_DIS_ARB BIT(0) /* Disable Tx Arbiter */
916 /* TXA_TEST 8 bit Tx Arbiter Test Register */
917 #define TXA_INT_T_ON BIT(5) /* Tx Arb Interval Timer Test On */
918 #define TXA_INT_T_OFF BIT(4) /* Tx Arb Interval Timer Test Off */
919 #define TXA_INT_T_STEP BIT(3) /* Tx Arb Interval Timer Step */
920 #define TXA_LIM_T_ON BIT(2) /* Tx Arb Limit Timer Test On */
921 #define TXA_LIM_T_OFF BIT(1) /* Tx Arb Limit Timer Test Off */
922 #define TXA_LIM_T_STEP BIT(0) /* Tx Arb Limit Timer Step */
924 /* TXA_STAT 8 bit Tx Arbiter Status Register */
930 /* Rx BMU Control / Status Registers (Yukon-2) */
939 #define BMU_CLR_IRQ_TCP BIT(11) /* Clear IRQ on TCP seg. error (Tx) */
941 #define BMU_STOP BIT(9) /* Stop Rx/Tx Queue */
942 #define BMU_START BIT(8) /* Start Rx/Tx Queue */
956 /* Tx BMU Control / Status Registers (Yukon-2) */
964 #define F_TX_CHK_AUTO_OFF BIT(31) /* Tx csum auto-calc Off (Yukon EX) */
965 #define F_TX_CHK_AUTO_ON BIT(30) /* Tx csum auto-calc On (Yukon EX) */
967 #define F_EMPTY BIT(27) /* Tx FIFO: empty flag */
974 /* Queue Prefetch Unt Offsts, use Y2_PREF_Q_ADDR() to addrss (Yukon-2 only) */
986 /* RB_RX_UTPP 32 bit Rx Upper Threshold, Pause Pack */
987 /* RB_RX_LTPP 32 bit Rx Lower Threshold, Pause Pack */
988 /* RB_RX_UTHP 32 bit Rx Upper Threshold, High Prio */
989 /* RB_RX_LTHP 32 bit Rx Lower Threshold, High Prio */
1016 /* RAM Buffer High Pause Threshold values */
1021 /* Threshold values for Yukon-EC Ultra */
1022 #define MSK_ECU_ULPP 0x0080 /* Upper Pause Threshold (multiples of 8) */
1024 #define MSK_DEV521_ULPP 0x00c4 /* Upper Pause Threshold for Dev. 5.21 */
1025 #define MSK_EXT_ULPP 0x05c0 /* Upper Pause Threshold (multiples of 8) */
1026 #define MSK_ECU_LLPP 0x0060 /* Lower Pause Threshold (multiples of 8) */
1027 #define MSK_ECU_AE_THR 0x0070 /* Almost Empty Threshold */
1028 #define MSK_ECU_TXFF_LEV 0x01a0 /* Tx BMU FIFO Level */
1032 #define MSK_BMU_TX_WM 0x600 /* BMU Tx Watermark */
1046 #define Q_ASF_T1 0x140 /* ASF Tx Queue 1 */
1047 #define Q_ASF_T2 0x1c0 /* ASF Tx Queue 2 */
1053 /* Minimum RAM Buffer Tx Queue Size */
1087 /* WOL_PATT_PME 8 bit WOL PME Match Enable (Yukon-2) */
1093 * Marvell-PHY Registers, indirect addressed over GMAC
1095 /* Marvell-specific registers */
1096 /* 0x0b - 0x0e: reserved */
1123 #define PHY_MARV_ID1_B2 0x0C25 /* Yukon-Plus (PHY 88E1011) */
1124 #define PHY_MARV_ID1_C2 0x0CC2 /* Yukon-EC (PHY 88E1111) */
1125 #define PHY_MARV_ID1_Y2 0x0C91 /* Yukon-2 (PHY 88E1112) */
1126 #define PHY_MARV_ID1_FE 0x0C83 /* Yukon-FE (PHY 88E3082 Rev.A1) */
1127 #define PHY_MARV_ID1_ECU 0x0CB0 /* Yukon-2 (PHY 88E1149 Rev.B2?) */
1131 #define PHY_M_PC_TX_FFD_MSK (3<<14) /* Bit 15..14: Tx FIFO Depth Mask */
1153 /* for Yukon-2 Gigabit Ethernet PHY (88E1112 only) */
1189 #define PHY_M_PS_TX_P_EN BIT(3) /* Tx Pause Enabled */
1202 #define PHY_M_IS_AN_ERROR BIT(15) /* Auto-Negotiation Error */
1206 #define PHY_M_IS_AN_COMPL BIT(11) /* Auto-Negotiation Completed */
1237 #define PHY_M_EC_FIB_AN_ENA BIT(3) /* Fbr Aut-Neg. Enbl (88E1011S only) */
1239 #define PHY_M_EC_TX_TIM_CT BIT(1) /* RGMII Tx Timing Control */
1262 #define PHY_M_LEDC_TX_C_LSB BIT(6) /* Tx Control (LSB, 88E1111 only) */
1270 #define PHY_M_LEDC_TX_CTRL BIT(0) /* Tx Activity / Link */
1271 #define PHY_M_LEDC_TX_C_MSB BIT(0) /* Tx Control (MSB, 88E1111 only) */
1299 #define PHY_M_LED_MO_TX(x) (x) /* Bit 1.. 0: Tx */
1371 #define PHY_M_FESC_SEL_CL_A BIT(0) /* Select Class A driver (100B-TX) */
1373 /* for Yukon-2 Gigabit Ethernet PHY (88E1112 only) */
1382 #define PHY_M_MAC_MD_AUTO 3 /* Auto Copper/1000Base-X */
1384 #define PHY_M_MAC_MD_1000BX 7 /* 1000Base-X only */
1428 #define GM_TX_FLOW_CTRL 0x0010 /* 16 bit r/w Transmit Flow-Control */
1447 #define GM_TX_IRQ_SRC 0x0044 /* 16 bit r/o Tx Overflow IRQ Source */
1449 #define GM_TR_IRQ_SRC 0x004c /* 16 bit r/o Tx/Rx Over. IRQ Source */
1452 #define GM_TX_IRQ_MSK 0x0050 /* 16 bit r/w Tx Overflow IRQ Mask */
1454 #define GM_TR_IRQ_MSK 0x0058 /* 16 bit r/w Tx/Rx Over. IRQ Mask */
1466 * MIB Counters base address definitions (low word) -
1482 #define GM_RXF_127B (GM_MIB_CNT_BASE + 104) /* 65-127 Byte Rx Frame */
1483 #define GM_RXF_255B (GM_MIB_CNT_BASE + 112) /* 128-255 Byte Rx Frame */
1484 #define GM_RXF_511B (GM_MIB_CNT_BASE + 120) /* 256-511 Byte Rx Frame */
1485 #define GM_RXF_1023B (GM_MIB_CNT_BASE + 128) /* 512-1023 Byte Rx Frame */
1486 #define GM_RXF_1518B (GM_MIB_CNT_BASE + 136) /* 1024-1518 Byte Rx Frame */
1487 #define GM_RXF_MAX_SZ (GM_MIB_CNT_BASE + 144) /* 1519-MaxSize Byte Rx Frame */
1493 #define GM_TXF_UC_OK (GM_MIB_CNT_BASE + 192) /* Unicast Frames TX OK */
1494 #define GM_TXF_BC_OK (GM_MIB_CNT_BASE + 200) /* BCast Frames TX OK */
1495 #define GM_TXF_MPAUSE (GM_MIB_CNT_BASE + 208) /* Pause MAC Ctrl Frames TX */
1496 #define GM_TXF_MC_OK (GM_MIB_CNT_BASE + 216) /* MCast Frames TX OK */
1497 #define GM_TXO_OK_LO (GM_MIB_CNT_BASE + 224) /* Octets TX OK Low */
1498 #define GM_TXO_OK_HI (GM_MIB_CNT_BASE + 232) /* Octets TX OK High */
1499 #define GM_TXF_64B (GM_MIB_CNT_BASE + 240) /* 64 Byte Tx Frame */
1500 #define GM_TXF_127B (GM_MIB_CNT_BASE + 248) /* 65-127 Byte Tx Frame */
1501 #define GM_TXF_255B (GM_MIB_CNT_BASE + 256) /* 128-255 Byte Tx Frame */
1502 #define GM_TXF_511B (GM_MIB_CNT_BASE + 264) /* 256-511 Byte Tx Frame */
1503 #define GM_TXF_1023B (GM_MIB_CNT_BASE + 272) /* 512-1023 Byte Tx Frame */
1504 #define GM_TXF_1518B (GM_MIB_CNT_BASE + 280) /* 1024-1518 Byte Tx Frame */
1505 #define GM_TXF_MAX_SZ (GM_MIB_CNT_BASE + 288) /* 1519-MaxSize Byte Tx Frame */
1506 #define GM_TXF_SPARE1 (GM_MIB_CNT_BASE + 296) /* Tx spare 1 */
1507 #define GM_TXF_COL (GM_MIB_CNT_BASE + 304) /* Tx Collision */
1508 #define GM_TXF_LAT_COL (GM_MIB_CNT_BASE + 312) /* Tx Late Collision */
1509 #define GM_TXF_ABO_COL (GM_MIB_CNT_BASE + 320) /* Tx Excessive Col */
1510 #define GM_TXF_MUL_COL (GM_MIB_CNT_BASE + 328) /* Tx Multiple Collision */
1511 #define GM_TXF_SNG_COL (GM_MIB_CNT_BASE + 336) /* Tx Single Collision */
1512 #define GM_TXE_FIFO_UR (GM_MIB_CNT_BASE + 344) /* Tx FIFO Underrun Event */
1527 #define GM_GPSR_FC_TX_DIS BIT(13) /* Tx Flow-Control Mode Disabled */
1530 #define GM_GPSR_TX_ACTIVE BIT(10) /* Tx in Progress */
1536 #define GM_GPSR_FC_RX_DIS BIT(2) /* Rx Flow-Control Mode Disabled */
1539 #define GM_GPCR_RMII_PH_ENA BIT(15) /* Enbl RMII for PHY (Yukon-FE only) */
1540 #define GM_GPCR_RMII_LB_ENA BIT(14) /* Enable RMII Lpbck (Yukon-FE only) */
1541 #define GM_GPCR_FC_TX_DIS BIT(13) /* Disable Tx Flow-Control Mode */
1549 #define GM_GPCR_FC_RX_DIS BIT(4) /* Disable Rx Flow-Control Mode */
1551 #define GM_GPCR_AU_DUP_DIS BIT(2) /* Disable Auto-Update Duplex */
1552 #define GM_GPCR_AU_FCT_DIS BIT(1) /* Disable Auto-Update Flow-C. */
1553 #define GM_GPCR_AU_SPD_DIS BIT(0) /* Disable Auto-Update Speed */
1560 #define GM_TXCR_FORCE_JAM BIT(15) /* Force Jam / Flow-Control */
1565 /* (Yukon-2 only) */
1573 #define GM_RXCR_CRC_DIS BIT(13) /* Remove 4-byte CRC */
1574 #define GM_RXCR_PASS_FC BIT(12) /* Pass FC pckts FIFO (Yukon-1 only) */
1581 /* (Yukon-2 only) */
1595 /* r/o on Yukon, r/w on Yukon-EC */
1596 #define GM_SMOD_LIMIT_4 BIT(10) /* 4 consecutive Tx trials */
1599 #define GM_NEW_FLOW_CTRL BIT(6) /* Enable New Flow-Control */
1600 #define GM_SMOD_IPG_MSK 0x1f /* Bit 4.. 0: Intr-Pckt Gap (IPG) */
1630 #define GMR_FS_GOOD_FC BIT(7) /* Good Flow-Control Packet */
1631 #define GMR_FS_BAD_FC BIT(6) /* Bad Flow-Control Packet */
1662 /* TX_GMF_EA 32 bit Tx GMAC FIFO End Address */
1663 /* TX_GMF_AE_THR 32 bit Tx GMAC FIFO Almost Empty Thresh. */
1664 /* TX_GMF_WP 32 bit Tx GMAC FIFO Write Pointer */
1665 /* TX_GMF_WSP 32 bit Tx GMAC FIFO Write Shadow Pointer */
1666 /* TX_GMF_WLEV 32 bit Tx GMAC FIFO Write Level */
1667 /* TX_GMF_RP 32 bit Tx GMAC FIFO Read Pointer */
1668 /* TX_GMF_RSTP 32 bit Tx GMAC FIFO Restart Pointer */
1669 /* TX_GMF_RLEV 32 bit Tx GMAC FIFO Read Level */
1693 /* TX_GMF_CTRL_T 32 bit Tx GMAC FIFO Control/Test (YUKON and Yukon-2) */
1694 #define TX_STFW_DIS BIT(31) /* Disable Store & Forward (Yukon-EC Ultra) */
1695 #define TX_STFW_ENA BIT(30) /* Enable Store & Forward (Yukon-EC Ultra) */
1698 #define TX_JUMBO_ENA BIT(23) /* Enable Jumbo Mode (Yukon-EC Ultra) */
1699 #define TX_JUMBO_DIS BIT(22) /* Disable Jumbo Mode (Yukon-EC Ultra) */
1704 #define GMF_CLI_TX_FU BIT(6) /* Clear IRQ Tx FIFO Underrun */
1705 #define GMF_CLI_TX_FC BIT(5) /* Clear IRQ Tx Frame Complete */
1706 #define GMF_CLI_TX_PE BIT(4) /* Clear IRQ Tx Parity Error */
1713 #define RX_GMF_FL_THR_DEF 0x0a /* Rx GMAC FIFO Flush Threshold default */
1720 /* POLL_CTRL 32 bit Polling Unit control register (Yukon-2 only) */
1747 /* STAT_CTRL 32 bit Status BMU control register (Yukon-2 only) */
1759 #define GMC_BYP_MACSECTX_ON BIT(11) /* Bypass macsec TX */
1760 #define GMC_BYP_MACSECTX_OFF BIT(10) /* Bypass macsec TX off */
1773 #define GPC_SEL_BDT BIT(28) /* Select Bi-Dir. Transfer for MDC/MDIO */
1817 ddi_put32(d->d_regsh, (uint32_t *)(void *)(d->d_regs + (reg)), (v))
1819 ddi_put16(d->d_regsh, (uint16_t *)(void *)(d->d_regs + (reg)), (v))
1821 ddi_put8(d->d_regsh, (uint8_t *)(void *)(d->d_regs + (reg)), (v))
1824 ddi_get32(d->d_regsh, (uint32_t *)(void *)(d->d_regs + (reg)))
1826 ddi_get16(d->d_regsh, (uint16_t *)(void *)(d->d_regs + (reg)))
1828 ddi_get8(d->d_regsh, (uint8_t *)(void *)(d->d_regs + (reg)))
1839 ((BASE_GMAC_1 + (port) * (BASE_GMAC_2 - BASE_GMAC_1)) | (reg))
1852 (ddi_get32((ring)->r_acch, &(ring)->r_kaddr[i].desc_status))
1855 (ddi_get32((ring)->r_acch, &(ring)->r_kaddr[i].desc_status))
1858 (ddi_get32((ring)->r_acch, &(ring)->r_kaddr[i].desc_control))
1861 (ddi_put32((ring)->r_acch, &(ring)->r_kaddr[i].desc_status, v))
1864 (ddi_put32((ring)->r_acch, &(ring)->r_kaddr[i].desc_status, v))
1867 (ddi_put32((ring)->r_acch, &(ring)->r_kaddr[i].desc_control, v))
1870 (void) ddi_dma_sync((ring)->r_dmah, (i) * sizeof (yge_desc_t), \
1874 bzero((ring)->r_kaddr, (ring)->r_size)
1877 (void) ddi_dma_sync((ring)->r_dmah, 0, 0, (flags))
1880 (void) ddi_dma_sync(b->b_dmah, 0, 0, flags)
1921 /* mask and shift value to get Tx async queue status for port 1 */
1925 /* mask and shift value to get Tx sync queue status for port 1 */
1929 /* mask and shift value to get Tx async queue status for port 2 */
1936 /* mask and shift value to get Tx sync queue status for port 2 */
1942 /* YUKON-2 bit values */
1948 /* YUKON-2 Control flags */
1965 /* YUKON-2 Rx/Tx opcodes defines */
1984 /* YUKON-2 STATUS opcodes defines */
1994 /* YUKON-2 SPECIAL opcodes defines */
2009 #define BMU_STFWD BIT(26) /* (Tx) Store & Forward Frame */
2010 #define BMU_NO_FCS BIT(25) /* (Tx) Disable MAC FCS (CRC) generation */
2011 #define BMU_SW BIT(24) /* (Tx) 1 bit res. for SW use */
2056 /* Note: We could conceivably change this to support 64-bit */
2068 #define YGE_PROC_MAX (YGE_RX_RING_CNT - 1)
2097 /* Tx stats. */
2188 * TX lock used to protect transmit exclusive resources.
2198 * All of these locks are shaerd between both ports on a multi-port device.
2207 #define RX_LOCK(dev) mutex_enter(&dev->d_rxlock);
2208 #define RX_UNLOCK(dev) mutex_exit(&dev->d_rxlock);
2209 #define TX_LOCK(dev) mutex_enter(&dev->d_txlock);
2210 #define TX_UNLOCK(dev) mutex_exit(&dev->d_txlock);
2211 #define PHY_LOCK(dev) mutex_enter(&dev->d_phylock);
2212 #define PHY_UNLOCK(dev) mutex_exit(&dev->d_phylock);
2224 #define TASK_LOCK(dev) mutex_enter(&(dev)->d_task_mtx)
2225 #define TASK_UNLOCK(dev) mutex_exit(&(dev)->d_task_mtx)
2226 #define TASK_WAIT(dev) cv_wait(&(dev)->d_task_cv, &(dev)->d_task_mtx)
2227 #define TASK_SIGNAL(dev) cv_signal(&(dev)->d_task_cv)
2229 #define YGE_USECS(sc, us) ((sc)->d_clock * (us))
2247 uint32_t p_txq; /* Tx. Async Queue offset */
2248 uint32_t p_txsq; /* Tx. Syn Queue offset */
2286 (((dev)->d_Features[((ReqFeature) & 0x30000000UL) >> 28] &\
2295 #define HWF_FORCE_AUTO_NEG 0x04000000UL /* Force Auto-Negotiation */
2300 #define HWF_TX_IP_ID_INCR_ON 0x00200000UL /* Enable Tx IP ID Increment */
2303 #define HWF_NEW_FLOW_CONTROL 0x00040000UL /* New Flow-Control support */
2311 #define HWF_WA_DEV_53 0x11000000UL /* 5.3 (Tx Done LSOv2 rep) */
2313 #define HWF_WA_DEV_4217 0x10400000UL /* 4.217 (PCI-E blockage) */
2316 #define HWF_WA_DEV_4185 0x10080000UL /* 4.185 (ECU Tx h check) */
2325 #define HWF_WA_DEV_427 0x10000400UL /* 4.27 (Tx Done Rep) */
2335 #define HWF_WA_DEV_428 0x10000004UL /* 4.28 (Poll-U &BigEndi) */
2337 /* for Yu-L Rev. A0 only */
2345 #define HWF_WA_DEV_515 0x20000080UL /* 5.15 (MACsec TX underr) */
2349 #define HWF_WA_DEV_520 0x20000008UL /* 5.20 (Tx lost of data) */
2350 #define HWF_WA_DEV_511 0x20000004UL /* 5.11 (Tx Underrun) */
2351 #define HWF_WA_DEV_510 0x20000002UL /* 5.10 (Tx Checksum) */