Wed Jan 25 18:02:45 2012 UTC ()
Pull up following revision(s) (requested by garbled in ticket #1698):
	sys/dev/ic/rtl81x9var.h: revision 1.52
	sys/dev/ic/rtl8169.c: revision 1.134
	sys/dev/ic/rtl81x9reg.h: revision 1.42
Add support to recognize the 8168E model of this chip.  Taken from FreeBSD


(riz)
diff -r1.105.4.8 -r1.105.4.9 src/sys/dev/ic/rtl8169.c
diff -r1.32.4.4 -r1.32.4.5 src/sys/dev/ic/rtl81x9reg.h
diff -r1.41.12.5 -r1.41.12.6 src/sys/dev/ic/rtl81x9var.h

cvs diff -r1.105.4.8 -r1.105.4.9 src/sys/dev/ic/rtl8169.c (expand / switch to unified diff)

--- src/sys/dev/ic/rtl8169.c 2009/06/19 21:51:43 1.105.4.8
+++ src/sys/dev/ic/rtl8169.c 2012/01/25 18:02:44 1.105.4.9
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: rtl8169.c,v 1.105.4.8 2009/06/19 21:51:43 snj Exp $ */ 1/* $NetBSD: rtl8169.c,v 1.105.4.9 2012/01/25 18:02:44 riz Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1997, 1998-2003 4 * Copyright (c) 1997, 1998-2003
5 * Bill Paul <wpaul@windriver.com>. All rights reserved. 5 * Bill Paul <wpaul@windriver.com>. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
@@ -23,27 +23,27 @@ @@ -23,27 +23,27 @@
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD 25 * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
26 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32 * THE POSSIBILITY OF SUCH DAMAGE. 32 * THE POSSIBILITY OF SUCH DAMAGE.
33 */ 33 */
34 34
35#include <sys/cdefs.h> 35#include <sys/cdefs.h>
36__KERNEL_RCSID(0, "$NetBSD: rtl8169.c,v 1.105.4.8 2009/06/19 21:51:43 snj Exp $"); 36__KERNEL_RCSID(0, "$NetBSD: rtl8169.c,v 1.105.4.9 2012/01/25 18:02:44 riz Exp $");
37/* $FreeBSD: /repoman/r/ncvs/src/sys/dev/re/if_re.c,v 1.20 2004/04/11 20:34:08 ru Exp $ */ 37/* $FreeBSD: /repoman/r/ncvs/src/sys/dev/re/if_re.c,v 1.20 2004/04/11 20:34:08 ru Exp $ */
38 38
39/* 39/*
40 * RealTek 8139C+/8169/8169S/8110S PCI NIC driver 40 * RealTek 8139C+/8169/8169S/8110S PCI NIC driver
41 * 41 *
42 * Written by Bill Paul <wpaul@windriver.com> 42 * Written by Bill Paul <wpaul@windriver.com>
43 * Senior Networking Software Engineer 43 * Senior Networking Software Engineer
44 * Wind River Systems 44 * Wind River Systems
45 */ 45 */
46 46
47/* 47/*
48 * This driver is designed to support RealTek's next generation of 48 * This driver is designed to support RealTek's next generation of
49 * 10/100 and 10/100/1000 PCI ethernet controllers. There are currently 49 * 10/100 and 10/100/1000 PCI ethernet controllers. There are currently
@@ -593,26 +593,31 @@ re_attach(struct rtk_softc *sc) @@ -593,26 +593,31 @@ re_attach(struct rtk_softc *sc)
593 *  593 *
594 * These (8168/8111) controllers support jumbo frame 594 * These (8168/8111) controllers support jumbo frame
595 * but it seems that enabling it requires touching 595 * but it seems that enabling it requires touching
596 * additional magic registers. Depending on MAC 596 * additional magic registers. Depending on MAC
597 * revisions some controllers need to disable 597 * revisions some controllers need to disable
598 * checksum offload. So disable jumbo frame until 598 * checksum offload. So disable jumbo frame until
599 * I have better idea what it really requires to 599 * I have better idea what it really requires to
600 * make it support. 600 * make it support.
601 * RTL8168C/CP : supports up to 6KB jumbo frame. 601 * RTL8168C/CP : supports up to 6KB jumbo frame.
602 * RTL8111C/CP : supports up to 9KB jumbo frame. 602 * RTL8111C/CP : supports up to 9KB jumbo frame.
603 */ 603 */
604 sc->sc_quirk |= RTKQ_NOJUMBO; 604 sc->sc_quirk |= RTKQ_NOJUMBO;
605 break; 605 break;
 606 case RTK_HWREV_8168E:
 607 sc->sc_quirk |= RTKQ_DESCV2 | RTKQ_NOEECMD |
 608 RTKQ_MACSTAT | RTKQ_CMDSTOP | RTKQ_PHYWAKE_PM |
 609 RTKQ_NOJUMBO;
 610 break;
606 case RTK_HWREV_8100E: 611 case RTK_HWREV_8100E:
607 case RTK_HWREV_8100E_SPIN2: 612 case RTK_HWREV_8100E_SPIN2:
608 case RTK_HWREV_8101E: 613 case RTK_HWREV_8101E:
609 sc->sc_quirk |= RTKQ_NOJUMBO; 614 sc->sc_quirk |= RTKQ_NOJUMBO;
610 break; 615 break;
611 case RTK_HWREV_8102E: 616 case RTK_HWREV_8102E:
612 case RTK_HWREV_8102EL: 617 case RTK_HWREV_8102EL:
613 case RTK_HWREV_8103E: 618 case RTK_HWREV_8103E:
614 sc->sc_quirk |= RTKQ_DESCV2 | RTKQ_NOEECMD | 619 sc->sc_quirk |= RTKQ_DESCV2 | RTKQ_NOEECMD |
615 RTKQ_MACSTAT | RTKQ_CMDSTOP | RTKQ_NOJUMBO; 620 RTKQ_MACSTAT | RTKQ_CMDSTOP | RTKQ_NOJUMBO;
616 break; 621 break;
617 default: 622 default:
618 aprint_normal_dev(sc->sc_dev, 623 aprint_normal_dev(sc->sc_dev,
@@ -651,26 +656,30 @@ re_attach(struct rtk_softc *sc) @@ -651,26 +656,30 @@ re_attach(struct rtk_softc *sc)
651 else 656 else
652 addr_len = RTK_EEADDR_LEN0; 657 addr_len = RTK_EEADDR_LEN0;
653 658
654 /* 659 /*
655 * Get station address from the EEPROM. 660 * Get station address from the EEPROM.
656 */ 661 */
657 for (i = 0; i < ETHER_ADDR_LEN / 2; i++) { 662 for (i = 0; i < ETHER_ADDR_LEN / 2; i++) {
658 val = rtk_read_eeprom(sc, RTK_EE_EADDR0 + i, addr_len); 663 val = rtk_read_eeprom(sc, RTK_EE_EADDR0 + i, addr_len);
659 eaddr[(i * 2) + 0] = val & 0xff; 664 eaddr[(i * 2) + 0] = val & 0xff;
660 eaddr[(i * 2) + 1] = val >> 8; 665 eaddr[(i * 2) + 1] = val >> 8;
661 } 666 }
662 } 667 }
663 668
 669 /* Take PHY out of power down mode. */
 670 if ((sc->sc_quirk & RTKQ_PHYWAKE_PM) != 0)
 671 CSR_WRITE_1(sc, RTK_PMCH, CSR_READ_1(sc, RTK_PMCH) | 0x80);
 672
664 aprint_normal_dev(sc->sc_dev, "Ethernet address %s\n", 673 aprint_normal_dev(sc->sc_dev, "Ethernet address %s\n",
665 ether_sprintf(eaddr)); 674 ether_sprintf(eaddr));
666 675
667 if (sc->re_ldata.re_tx_desc_cnt > 676 if (sc->re_ldata.re_tx_desc_cnt >
668 PAGE_SIZE / sizeof(struct re_desc)) { 677 PAGE_SIZE / sizeof(struct re_desc)) {
669 sc->re_ldata.re_tx_desc_cnt = 678 sc->re_ldata.re_tx_desc_cnt =
670 PAGE_SIZE / sizeof(struct re_desc); 679 PAGE_SIZE / sizeof(struct re_desc);
671 } 680 }
672 681
673 aprint_verbose_dev(sc->sc_dev, "using %d tx descriptors\n", 682 aprint_verbose_dev(sc->sc_dev, "using %d tx descriptors\n",
674 sc->re_ldata.re_tx_desc_cnt); 683 sc->re_ldata.re_tx_desc_cnt);
675 KASSERT(RE_NEXT_TX_DESC(sc, RE_TX_DESC_CNT(sc) - 1) == 0); 684 KASSERT(RE_NEXT_TX_DESC(sc, RE_TX_DESC_CNT(sc) - 1) == 0);
676 685

cvs diff -r1.32.4.4 -r1.32.4.5 src/sys/dev/ic/rtl81x9reg.h (expand / switch to unified diff)

--- src/sys/dev/ic/rtl81x9reg.h 2009/06/19 21:51:43 1.32.4.4
+++ src/sys/dev/ic/rtl81x9reg.h 2012/01/25 18:02:45 1.32.4.5
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: rtl81x9reg.h,v 1.32.4.4 2009/06/19 21:51:43 snj Exp $ */ 1/* $NetBSD: rtl81x9reg.h,v 1.32.4.5 2012/01/25 18:02:45 riz Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1997, 1998 4 * Copyright (c) 1997, 1998
5 * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. 5 * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
@@ -120,26 +120,27 @@ @@ -120,26 +120,27 @@
120#define RTK_RXLIST_ADDR_HI 0x00E8 /* 64 bits, 256 byte alignment */ 120#define RTK_RXLIST_ADDR_HI 0x00E8 /* 64 bits, 256 byte alignment */
121#define RTK_EARLY_TX_THRESH 0x00EC /* 8 bits */ 121#define RTK_EARLY_TX_THRESH 0x00EC /* 8 bits */
122 122
123/* 123/*
124 * Registers specific to the 8169 gigE chip 124 * Registers specific to the 8169 gigE chip
125 */ 125 */
126#define RTK_GTXSTART 0x0038 /* 8 bits */ 126#define RTK_GTXSTART 0x0038 /* 8 bits */
127#define RTK_TIMERINT_8169 0x0058 /* different offset than 8139 */ 127#define RTK_TIMERINT_8169 0x0058 /* different offset than 8139 */
128#define RTK_PHYAR 0x0060 128#define RTK_PHYAR 0x0060
129#define RTK_CSIDR 0x0064  129#define RTK_CSIDR 0x0064
130#define RTK_CSIAR 0x0068  130#define RTK_CSIAR 0x0068
131#define RTK_TBI_LPAR 0x006A 131#define RTK_TBI_LPAR 0x006A
132#define RTK_GMEDIASTAT 0x006C /* 8 bits */ 132#define RTK_GMEDIASTAT 0x006C /* 8 bits */
 133#define RTK_PMCH 0x006F /* 8 bits */
133#define RTK_EPHYAR 0x0080 134#define RTK_EPHYAR 0x0080
134#define RTK_LDPS 0x0082 /* Link Down Power Saving */ 135#define RTK_LDPS 0x0082 /* Link Down Power Saving */
135#define RTK_DBG_REG 0x00D1 136#define RTK_DBG_REG 0x00D1
136#define RTK_MAXRXPKTLEN 0x00DA /* 16 bits, chip multiplies by 8 */ 137#define RTK_MAXRXPKTLEN 0x00DA /* 16 bits, chip multiplies by 8 */
137#define RTK_IM 0x00E2 138#define RTK_IM 0x00E2
138 139
139/* 140/*
140 * TX config register bits 141 * TX config register bits
141 */ 142 */
142#define RTK_TXCFG_CLRABRT 0x00000001 /* retransmit aborted pkt */ 143#define RTK_TXCFG_CLRABRT 0x00000001 /* retransmit aborted pkt */
143#define RTK_TXCFG_MAXDMA 0x00000700 /* max DMA burst size */ 144#define RTK_TXCFG_MAXDMA 0x00000700 /* max DMA burst size */
144#define RTK_TXCFG_CRCAPPEND 0x00010000 /* CRC append (0 = yes) */ 145#define RTK_TXCFG_CRCAPPEND 0x00010000 /* CRC append (0 = yes) */
145#define RTK_TXCFG_LOOPBKTST 0x00060000 /* loopback test */ 146#define RTK_TXCFG_LOOPBKTST 0x00060000 /* loopback test */
@@ -151,26 +152,27 @@ @@ -151,26 +152,27 @@
151#define RTK_LOOPTEST_ON 0x00020000 152#define RTK_LOOPTEST_ON 0x00020000
152#define RTK_LOOPTEST_ON_CPLUS 0x00060000 153#define RTK_LOOPTEST_ON_CPLUS 0x00060000
153 154
154/* Known revision codes. */ 155/* Known revision codes. */
155#define RTK_HWREV_8169 0x00000000 156#define RTK_HWREV_8169 0x00000000
156#define RTK_HWREV_8110S 0x00800000 157#define RTK_HWREV_8110S 0x00800000
157#define RTK_HWREV_8169S 0x04000000 158#define RTK_HWREV_8169S 0x04000000
158#define RTK_HWREV_8169_8110SB 0x10000000 159#define RTK_HWREV_8169_8110SB 0x10000000
159#define RTK_HWREV_8169_8110SC 0x18000000 160#define RTK_HWREV_8169_8110SC 0x18000000
160#define RTK_HWREV_8102EL 0x24800000 161#define RTK_HWREV_8102EL 0x24800000
161#define RTK_HWREV_8103E 0x24C00000 162#define RTK_HWREV_8103E 0x24C00000
162#define RTK_HWREV_8168D 0x28000000 163#define RTK_HWREV_8168D 0x28000000
163#define RTK_HWREV_8168DP 0x28800000 164#define RTK_HWREV_8168DP 0x28800000
 165#define RTK_HWREV_8168E 0x2C000000
164#define RTK_HWREV_8168_SPIN1 0x30000000 166#define RTK_HWREV_8168_SPIN1 0x30000000
165#define RTK_HWREV_8100E 0x30800000 167#define RTK_HWREV_8100E 0x30800000
166#define RTK_HWREV_8101E 0x34000000 168#define RTK_HWREV_8101E 0x34000000
167#define RTK_HWREV_8102E 0x34800000 169#define RTK_HWREV_8102E 0x34800000
168#define RTK_HWREV_8168_SPIN2 0x38000000 170#define RTK_HWREV_8168_SPIN2 0x38000000
169#define RTK_HWREV_8168_SPIN3 0x38400000 171#define RTK_HWREV_8168_SPIN3 0x38400000
170#define RTK_HWREV_8100E_SPIN2 0x38800000 172#define RTK_HWREV_8100E_SPIN2 0x38800000
171#define RTK_HWREV_8168C 0x3C000000 173#define RTK_HWREV_8168C 0x3C000000
172#define RTK_HWREV_8168C_SPIN2 0x3C400000 174#define RTK_HWREV_8168C_SPIN2 0x3C400000
173#define RTK_HWREV_8168CP 0x3C800000 175#define RTK_HWREV_8168CP 0x3C800000
174#define RTK_HWREV_8139 0x60000000 176#define RTK_HWREV_8139 0x60000000
175#define RTK_HWREV_8139A 0x70000000 177#define RTK_HWREV_8139A 0x70000000
176#define RTK_HWREV_8139AG 0x70800000 178#define RTK_HWREV_8139AG 0x70800000

cvs diff -r1.41.12.5 -r1.41.12.6 src/sys/dev/ic/rtl81x9var.h (expand / switch to unified diff)

--- src/sys/dev/ic/rtl81x9var.h 2009/06/19 21:51:43 1.41.12.5
+++ src/sys/dev/ic/rtl81x9var.h 2012/01/25 18:02:44 1.41.12.6
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: rtl81x9var.h,v 1.41.12.5 2009/06/19 21:51:43 snj Exp $ */ 1/* $NetBSD: rtl81x9var.h,v 1.41.12.6 2012/01/25 18:02:44 riz Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1997, 1998 4 * Copyright (c) 1997, 1998
5 * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. 5 * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
@@ -184,26 +184,27 @@ struct rtk_softc { @@ -184,26 +184,27 @@ struct rtk_softc {
184 bus_space_handle_t rtk_bhandle; /* bus space handle */ 184 bus_space_handle_t rtk_bhandle; /* bus space handle */
185 bus_space_tag_t rtk_btag; /* bus space tag */ 185 bus_space_tag_t rtk_btag; /* bus space tag */
186 u_int sc_quirk; /* chip quirks */ 186 u_int sc_quirk; /* chip quirks */
187#define RTKQ_8129 0x00000001 /* 8129 */ 187#define RTKQ_8129 0x00000001 /* 8129 */
188#define RTKQ_8139CPLUS 0x00000002 /* 8139C+ */ 188#define RTKQ_8139CPLUS 0x00000002 /* 8139C+ */
189#define RTKQ_8169NONS 0x00000004 /* old non-single 8169 */ 189#define RTKQ_8169NONS 0x00000004 /* old non-single 8169 */
190#define RTKQ_PCIE 0x00000008 /* PCIe variants */ 190#define RTKQ_PCIE 0x00000008 /* PCIe variants */
191#define RTKQ_MACLDPS 0x00000010 /* has LDPS register */ 191#define RTKQ_MACLDPS 0x00000010 /* has LDPS register */
192#define RTKQ_DESCV2 0x00000020 /* has V2 TX/RX descriptor */ 192#define RTKQ_DESCV2 0x00000020 /* has V2 TX/RX descriptor */
193#define RTKQ_NOJUMBO 0x00000040 /* no jumbo MTU support */ 193#define RTKQ_NOJUMBO 0x00000040 /* no jumbo MTU support */
194#define RTKQ_NOEECMD 0x00000080 /* unusable EEPROM command */ 194#define RTKQ_NOEECMD 0x00000080 /* unusable EEPROM command */
195#define RTKQ_MACSTAT 0x00000100 /* set MACSTAT_DIS on init */ 195#define RTKQ_MACSTAT 0x00000100 /* set MACSTAT_DIS on init */
196#define RTKQ_CMDSTOP 0x00000200 /* set STOPREQ on stop */ 196#define RTKQ_CMDSTOP 0x00000200 /* set STOPREQ on stop */
 197#define RTKQ_PHYWAKE_PM 0x00000400 /* wake PHY from power down */
197 198
198 bus_dma_tag_t sc_dmat; 199 bus_dma_tag_t sc_dmat;
199 200
200 bus_dma_segment_t sc_dmaseg; /* for rtk(4) */ 201 bus_dma_segment_t sc_dmaseg; /* for rtk(4) */
201 int sc_dmanseg; /* for rtk(4) */ 202 int sc_dmanseg; /* for rtk(4) */
202 203
203 bus_dmamap_t recv_dmamap; /* for rtk(4) */ 204 bus_dmamap_t recv_dmamap; /* for rtk(4) */
204 void * rtk_rx_buf; 205 void * rtk_rx_buf;
205 206
206 struct rtk_tx_desc rtk_tx_descs[RTK_TX_LIST_CNT]; 207 struct rtk_tx_desc rtk_tx_descs[RTK_TX_LIST_CNT];
207 SIMPLEQ_HEAD(, rtk_tx_desc) rtk_tx_free; 208 SIMPLEQ_HEAD(, rtk_tx_desc) rtk_tx_free;
208 SIMPLEQ_HEAD(, rtk_tx_desc) rtk_tx_dirty; 209 SIMPLEQ_HEAD(, rtk_tx_desc) rtk_tx_dirty;
209 210