Rev 869 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 869 | Rev 907 | ||
---|---|---|---|
Line 30... | Line 30... | ||
30 | ;; ;; |
30 | ;; ;; |
31 | ;; See file COPYING for details ;; |
31 | ;; See file COPYING for details ;; |
32 | ;; ;; |
32 | ;; ;; |
33 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
33 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 34... | Line 34... | ||
34 | 34 | ||
Line 35... | Line 35... | ||
35 | $Revision: 869 $ |
35 | $Revision: 907 $ |
36 | 36 | ||
37 | 37 | ||
Line 351... | Line 351... | ||
351 | ; IPRX queue. |
351 | ; IPRX queue. |
352 | ; If no queue entry is available, the packet is silently discarded |
352 | ; If no queue entry is available, the packet is silently discarded |
353 | ; All registers may be destroyed |
353 | ; All registers may be destroyed |
354 | ; |
354 | ; |
355 | ;*************************************************************************** |
355 | ;*************************************************************************** |
- | 356 | uglobal |
|
- | 357 | ether_IP_handler_cnt dd ? |
|
- | 358 | endg |
|
356 | ether_IP_handler: |
359 | ether_IP_handler: |
357 | mov eax, EMPTY_QUEUE |
360 | mov eax, EMPTY_QUEUE |
358 | call dequeue |
361 | call dequeue |
359 | cmp ax, NO_BUFFER |
362 | cmp ax, NO_BUFFER |
360 | je eiph00x |
363 | je eiph00x |
Line 374... | Line 377... | ||
374 | mov ecx, IPBUFFSIZE / 4 ; Copy all of the available |
377 | mov ecx, IPBUFFSIZE / 4 ; Copy all of the available |
375 | ; data across - worse case |
378 | ; data across - worse case |
376 | cld |
379 | cld |
377 | rep movsd |
380 | rep movsd |
Line -... | Line 381... | ||
- | 381 | ||
- | 382 | ; inc [ether_IP_handler_cnt] |
|
- | 383 | ; DEBUGF 1, "K : ether_IP_handler (%u)\n", [ether_IP_handler_cnt] |
|
378 | 384 | ||
379 | ; And finally, place the buffer in the IPRX queue |
385 | ; And finally, place the buffer in the IPRX queue |
380 | pop ebx |
386 | pop ebx |
381 | mov eax, IPIN_QUEUE |
387 | mov eax, IPIN_QUEUE |
Line 460... | Line 466... | ||
460 | je .is_ip ; It's IP |
466 | je .is_ip ; It's IP |
Line 461... | Line 467... | ||
461 | 467 | ||
462 | cmp ax, ETHER_ARP |
468 | cmp ax, ETHER_ARP |
Line -... | Line 469... | ||
- | 469 | je .is_arp ; It is ARP |
|
- | 470 | ||
463 | je .is_arp ; It is ARP |
471 | DEBUGF 1,"K : eth_rx - dumped (%u)\n", ax |
Line 464... | Line 472... | ||
464 | 472 | inc [dumped_rx_count] |
|
465 | jmp .exit ; If not IP or ARP, ignore |
473 | jmp .exit ; If not IP or ARP, ignore |
466 | 474 | ||
467 | .is_ip: |
475 | .is_ip: |
468 | DEBUGF 1,"K : eth_rx - IP packet\n" |
476 | ; DEBUGF 1,"K : eth_rx - IP packet\n" |
Line 469... | Line 477... | ||
469 | inc dword [ip_rx_count] |
477 | inc dword [ip_rx_count] |
470 | call ether_IP_handler |
478 | call ether_IP_handler |
471 | jmp .exit |
479 | jmp .exit |
472 | 480 | ||
Line 473... | Line 481... | ||
473 | .is_arp: |
481 | .is_arp: |
474 | DEBUGF 1,"K : eth_rx - ARP packet\n" |
482 | ; DEBUGF 1,"K : eth_rx - ARP packet\n" |