| Zeile 22: | Zeile 22: | ||
#define RTL8168_CFG9346 0x50 // 93C46 command register | #define RTL8168_CFG9346 0x50 // 93C46 command register | ||
#define RTL8168_RPS 0xDA // Max Receive Packet Size | #define RTL8168_RPS 0xDA // Max Receive Packet Size | ||
| + | #define RTL8168_ETTHR 0xEC // Early transmit threshold | ||
</c> | </c> | ||
| Zeile 57: | Zeile 58: | ||
<c> | <c> | ||
outb(port_base + RTL8168_CFG9346, 0xC0); // Entsperren der Konfigurationsregister durch Schreiben von 0xC0 in das 93C46-Kommandoregister | outb(port_base + RTL8168_CFG9346, 0xC0); // Entsperren der Konfigurationsregister durch Schreiben von 0xC0 in das 93C46-Kommandoregister | ||
| − | outl(port_base + RTL8168_RXCONFIG, 0x0000E70F); // RxConfig = | + | outl(port_base + RTL8168_RXCONFIG, 0x0000E70F); // RxConfig = Rx FIFO threshold: no; Max DMA burst size: unbeschränkt; Promiscuous mode |
outb(port_base + RTL8168_CHIPCMD, 0x04); // Aktiviere Tx, bevor TxConfig gesetzt wird | outb(port_base + RTL8168_CHIPCMD, 0x04); // Aktiviere Tx, bevor TxConfig gesetzt wird | ||
| − | outl(port_base + RTL8168_TXCONFIG, 0x03000700); // TxConfig = | + | outl(port_base + RTL8168_TXCONFIG, 0x03000700); // TxConfig = InterFrameGap time: normal, Max DMA burst size: unbeschränkt |
outw(port_base + RTL8168_RPS, 0x1FFF); // Maximale Größe empfangener Pakete (hier: 8 KiB) | outw(port_base + RTL8168_RPS, 0x1FFF); // Maximale Größe empfangener Pakete (hier: 8 KiB) | ||
| + | outb(port_base + RTL8168_ETTHR, 0x3F); // Early transmit threshold: Keine vorzeitige Übertragung | ||
outl(port_base + RTL8168_TXDESC, paging_getPhysAddr(rAdapter->Tx_Descriptors)); // Adresse des ersten Tx-Descriptors (normale Priorität) | outl(port_base + RTL8168_TXDESC, paging_getPhysAddr(rAdapter->Tx_Descriptors)); // Adresse des ersten Tx-Descriptors (normale Priorität) | ||