40 likes | 97 Views
Learn how we construct a prototype driver supporting the receiving of network packets using RealTek interrupts and registers. Discover the functions for packet reception, interrupt statuses, and more. Try out the companion application 'nicread.cpp' for testing and walkthroughs.
E N D
Using RealTek interrupts We construct a prototype driver that supports receiving of network packets
Interrupt Mask Register 15 14 13 6 5 4 3 2 1 0 S E R R T i m e O u t L e n C h g reserved R X F O V F P U N / L C R X B O V F T E R T O K R E R R O K 0x3C Legend ROK (Received OK packet) TOK (Transmit completed OK) RER (Received Error packet) TER (Transmit was aborted) RxBOvf (Receive Buffer Overflowed) SERR (System Error on PCI bus) RxFOvf (Receive FIFO Overflowed) LenChg (Cable Length changed) TimeOut (Timer Count == Timer Intr) PUN/LC (Packet Underrun/Link Changed) (0 = masked, 1=unmasked)
Interrupt Status Register 15 14 13 6 5 4 3 2 1 0 S E R R T i m e O u t L e n C h g reserved R X F O V F P U N / L C R X B O V F T E R T O K R E R R O K 0x3E Legend ROK (Received OK packet) TOK (Transmit completed OK) RER (Received Error packet) TER (Transmit was aborted) RxBOvf (Receive Buffer Overflowed) SERR (System Error on PCI bus) RxFOvf (Receive FIFO Overflowed) LenChg (Cable Length changed) TimeOut (Timer Count == Timer Intr) PUN/LC (Packet Underrun/Link Changed) (0 = inactive, 1=active) NOTE: An ‘active’ bit is cleared by writing ‘1’ to that bit
A code ‘walkthrough’ • We have written an initial ‘prototype’ for a character-mode device-driver for the 8139 • It supports packet-reception (w/ interrupts) • A companion application (‘nicread.cpp’) is useful for testing this device driver • We will walk through the driver’s design • Can you spot any ‘bugs’ in this driver? • Can you implement packet-transmission?