Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3856 → Rev 3857

/drivers/ethernet/RTL8139.asm
23,8 → 23,13
MAX_DEVICES = 16
 
RBLEN = 3 ; Receive buffer size: 0==8K 1==16k 2==32k 3==64k
NUM_TX_DESC = 4
 
TXRR = 8 ; total retries = 16+(TXRR*16)
TX_MXDMA = 6 ; 0=16 1=32 2=64 3=128 4=256 5=512 6=1024 7=2048
ERTXTH = 8 ; in unit of 32 bytes e.g:(8*32)=256
RX_MXDMA = 7 ; 0=16 1=32 2=64 3=128 4=256 5=512 6=1024 7=unlimited
RXFTH = 7 ; 0=16 1=32 2=64 3=128 4=256 5=512 6=1024 7=no threshold
 
DEBUG = 1
__DEBUG__ = 1
__DEBUG_LEVEL__ = 2 ; 1 = verbose, 2 = errors only
119,12 → 124,6
BIT_IFG1 = 25
BIT_IFG0 = 24
 
TXRR = 8 ; total retries = 16+(TXRR*16)
TX_MXDMA = 6 ; 0=16 1=32 2=64 3=128 4=256 5=512 6=1024 7=2048
ERTXTH = 8 ; in unit of 32 bytes e.g:(8*32)=256
RX_MXDMA = 7 ; 0=16 1=32 2=64 3=128 4=256 5=512 6=1024 7=unlimited
RXFTH = 7 ; 0=16 1=32 2=64 3=128 4=256 5=512 6=1024 7=no threshold
 
RX_CONFIG = (RBLEN shl BIT_RBLEN) or \
(RX_MXDMA shl BIT_RX_MXDMA) or \
(1 shl BIT_NOWRAP) or \
135,8 → 134,9
(1 shl BIT_AR) or \ ; Accept Runt packets (smaller then 64 bytes)
(1 shl BIT_AM) ; Accept multicast packets
 
RX_BUFFER_SIZE = (8192 shl RBLEN);+16
RX_BUFFER_SIZE = (8192 shl RBLEN);+16+1500
MAX_ETH_FRAME_SIZE = 1514
NUM_TX_DESC = 4 ; not user selectable
 
EE_93C46_REG_ETH_ID = 7 ; MAC offset
EE_93C46_READ_CMD = (6 shl 6) ; 110b + 6bit address
177,13 → 177,18
ISR_ROK = 1 shl 0
 
INTERRUPT_MASK = ISR_ROK or \
ISR_RER or \
ISR_TOK or \
ISR_TER or \
ISR_RXOVW or \
ISR_PUN or \
ISR_FIFOOVW or \
ISR_LENCHG or \
ISR_TOK or \
ISR_TER
ISR_TIMEOUT or \
ISR_SERR
 
 
 
TSR_OWN = 1 shl 13
TSR_TUN = 1 shl 14
TSR_TOK = 1 shl 15
608,7 → 613,7
mov dword[eax], 0 ; clear receive flags for first packet (really needed??)
DEBUGF 1, "RX buffer virtual addr=0x%x\n", eax
GetRealAddr
DEBUGF 1, "RX buffer real addr=0x%x\n", eax
DEBUGF 1, "RX buffer physical addr=0x%x\n", eax
set_io REG_RBSTART
out dx, eax
 
877,6 → 882,8
test ax, ISR_TOK + ISR_TER
jz @f
 
DEBUGF 1, "Transmit done!\n"
 
push ax
mov ecx, (NUM_TX_DESC-1)*4
.txdescloop:
891,29 → 898,34
cmp [device.TX_DESC+ecx], 0
je .notthisone
 
; .notxd:
; test eax, TSR_TUN
; jz .nobun
; DEBUGF 2, "TX: FIFO Buffer underrun!\n"
;
; .nobun:
; test eax, TSR_OWC
; jz .noowc
; DEBUGF 2, "TX: OWC!\n"
;
; .noowc:
; test eax, TSR_TABT
; jz .notabt
; DEBUGF 2, "TX: TABT!\n"
;
; .notabt:
; test eax, TSR_CRS
; jz .nocsl
; DEBUGF 2, "TX: Carrier Sense Lost!\n"
;
; .nocsl:
DEBUGF 1, "TSD: 0x%x\n", eax
 
DEBUGF 1, "TX OK: free buffer %x\n", [device.TX_DESC+ecx]:8
test eax, TSR_TUN
jz .no_bun
DEBUGF 2, "TX: FIFO Buffer underrun!\n"
 
.no_bun:
test eax, TSR_OWC
jz .no_owc
DEBUGF 2, "TX: OWC!\n"
 
.no_owc:
test eax, TSR_TABT
jz .no_tabt
DEBUGF 2, "TX: TABT!\n"
 
.no_tabt:
test eax, TSR_CRS
jz .no_csl
DEBUGF 2, "TX: Carrier Sense Lost!\n"
 
.no_csl:
test eax, TSR_TOK
jz .no_tok
DEBUGF 1, "TX: Transmit OK!\n"
 
.no_tok:
DEBUGF 1, "free transmit buffer 0x%x\n", [device.TX_DESC+ecx]:8
push ecx ebx
stdcall KernelFree, [device.TX_DESC+ecx]
pop ebx ecx
921,7 → 933,7
 
.notthisone:
sub ecx, 4
ja .txdescloop
jae .txdescloop
pop ax
 
;----------------------------------------------------
988,7 → 1000,7
 
align 4
cable:
DEBUGF 1, "Updating Cable status\n"
DEBUGF 1, "Checking link status:\n"
 
set_io 0
set_io REG_MSR
1003,6 → 1015,7
.100mbps:
mov [device.state], ETH_LINK_100M
call NetLinkChanged
DEBUGF 1, "100 mbit\n"
 
ret
 
1009,6 → 1022,7
.10mbps:
mov [device.state], ETH_LINK_10M
call NetLinkChanged
DEBUGF 1, "10 mbit\n"
 
ret
 
1015,6 → 1029,7
.notconnected:
mov [device.state], ETH_LINK_DOWN
call NetLinkChanged
DEBUGF 1, "no link\n"
 
ret
 
1077,7 → 1092,7
;;;;;;;;;;;;;;;;;;;;;;
 
read_mac:
DEBUGF 2, "Reading MAC:\n"
DEBUGF 1, "Reading MAC:\n"
 
set_io 0
lea edi, [device.mac]
1087,7 → 1102,7
in ax, dx
stosw
 
DEBUGF 2, "%x-%x-%x-%x-%x-%x\n",[edi-6]:2,[edi-5]:2,[edi-4]:2,[edi-3]:2,[edi-2]:2,[edi-1]:2
DEBUGF 1, "%x-%x-%x-%x-%x-%x\n",[edi-6]:2,[edi-5]:2,[edi-4]:2,[edi-3]:2,[edi-2]:2,[edi-1]:2
 
ret