Ethernet.py revision 2210
14309Sgblack@eecs.umich.edufrom m5 import * 24309Sgblack@eecs.umich.edufrom Device import DmaDevice 34309Sgblack@eecs.umich.edufrom Pci import PciDevice 44309Sgblack@eecs.umich.edu 54309Sgblack@eecs.umich.educlass EtherInt(SimObject): 64309Sgblack@eecs.umich.edu type = 'EtherInt' 74309Sgblack@eecs.umich.edu abstract = True 84309Sgblack@eecs.umich.edu peer = Param.EtherInt(NULL, "peer interface") 94309Sgblack@eecs.umich.edu 104309Sgblack@eecs.umich.educlass EtherLink(SimObject): 114309Sgblack@eecs.umich.edu type = 'EtherLink' 124309Sgblack@eecs.umich.edu int1 = Param.EtherInt("interface 1") 134309Sgblack@eecs.umich.edu int2 = Param.EtherInt("interface 2") 144309Sgblack@eecs.umich.edu delay = Param.Latency('0us', "packet transmit delay") 154309Sgblack@eecs.umich.edu delay_var = Param.Latency('0ns', "packet transmit delay variability") 164309Sgblack@eecs.umich.edu speed = Param.NetworkBandwidth('1Gbps', "link speed") 174309Sgblack@eecs.umich.edu dump = Param.EtherDump(NULL, "dump object") 184309Sgblack@eecs.umich.edu 194309Sgblack@eecs.umich.educlass EtherBus(SimObject): 204309Sgblack@eecs.umich.edu type = 'EtherBus' 214309Sgblack@eecs.umich.edu loopback = Param.Bool(True, "send packet back to the sending interface") 224309Sgblack@eecs.umich.edu dump = Param.EtherDump(NULL, "dump object") 234309Sgblack@eecs.umich.edu speed = Param.NetworkBandwidth('100Mbps', "bus speed in bits per second") 244309Sgblack@eecs.umich.edu 254309Sgblack@eecs.umich.educlass EtherTap(EtherInt): 264309Sgblack@eecs.umich.edu type = 'EtherTap' 274309Sgblack@eecs.umich.edu bufsz = Param.Int(10000, "tap buffer size") 284309Sgblack@eecs.umich.edu dump = Param.EtherDump(NULL, "dump object") 294309Sgblack@eecs.umich.edu port = Param.UInt16(3500, "tap port") 304309Sgblack@eecs.umich.edu 314309Sgblack@eecs.umich.educlass EtherDump(SimObject): 324309Sgblack@eecs.umich.edu type = 'EtherDump' 334309Sgblack@eecs.umich.edu file = Param.String("dump file") 344309Sgblack@eecs.umich.edu maxlen = Param.Int(96, "max portion of packet data to dump") 354309Sgblack@eecs.umich.edu 364309Sgblack@eecs.umich.eduif build_env['ALPHA_TLASER']: 374309Sgblack@eecs.umich.edu 384309Sgblack@eecs.umich.edu class EtherDev(DmaDevice): 394309Sgblack@eecs.umich.edu type = 'EtherDev' 404309Sgblack@eecs.umich.edu hardware_address = Param.EthernetAddr(NextEthernetAddr, 414309Sgblack@eecs.umich.edu "Ethernet Hardware Address") 424309Sgblack@eecs.umich.edu 434309Sgblack@eecs.umich.edu dma_data_free = Param.Bool(False, "DMA of Data is free") 444309Sgblack@eecs.umich.edu dma_desc_free = Param.Bool(False, "DMA of Descriptors is free") 454309Sgblack@eecs.umich.edu dma_read_delay = Param.Latency('0us', "fixed delay for dma reads") 464309Sgblack@eecs.umich.edu dma_read_factor = Param.Latency('0us', "multiplier for dma reads") 474309Sgblack@eecs.umich.edu dma_write_delay = Param.Latency('0us', "fixed delay for dma writes") 484309Sgblack@eecs.umich.edu dma_write_factor = Param.Latency('0us', "multiplier for dma writes") 494309Sgblack@eecs.umich.edu dma_no_allocate = Param.Bool(True, "Should we allocate cache on read") 504309Sgblack@eecs.umich.edu 514309Sgblack@eecs.umich.edu rx_filter = Param.Bool(True, "Enable Receive Filter") 524309Sgblack@eecs.umich.edu rx_delay = Param.Latency('1us', "Receive Delay") 534309Sgblack@eecs.umich.edu tx_delay = Param.Latency('1us', "Transmit Delay") 544309Sgblack@eecs.umich.edu 554309Sgblack@eecs.umich.edu intr_delay = Param.Latency('0us', "Interrupt Delay") 564309Sgblack@eecs.umich.edu payload_bus = Param.Bus(NULL, "The IO Bus to attach to for payload") 574309Sgblack@eecs.umich.edu physmem = Param.PhysicalMemory(Parent.any, "Physical Memory") 584309Sgblack@eecs.umich.edu tlaser = Param.Turbolaser(Parent.any, "Turbolaser") 594309Sgblack@eecs.umich.edu 604309Sgblack@eecs.umich.edu class EtherDevInt(EtherInt): 614309Sgblack@eecs.umich.edu type = 'EtherDevInt' 624309Sgblack@eecs.umich.edu device = Param.EtherDev("Ethernet device of this interface") 634309Sgblack@eecs.umich.edu 644309Sgblack@eecs.umich.educlass EtherDevBase(PciDevice): 654309Sgblack@eecs.umich.edu hardware_address = Param.EthernetAddr(NextEthernetAddr, 664309Sgblack@eecs.umich.edu "Ethernet Hardware Address") 674309Sgblack@eecs.umich.edu 684309Sgblack@eecs.umich.edu clock = Param.Clock('0ns', "State machine processor frequency") 694309Sgblack@eecs.umich.edu 704309Sgblack@eecs.umich.edu physmem = Param.PhysicalMemory(Parent.any, "Physical Memory") 714309Sgblack@eecs.umich.edu 724309Sgblack@eecs.umich.edu hier = Param.HierParams(Parent.any, "Hierarchy global variables") 734309Sgblack@eecs.umich.edu payload_bus = Param.Bus(NULL, "The IO Bus to attach to for payload") 744309Sgblack@eecs.umich.edu dma_read_delay = Param.Latency('0us', "fixed delay for dma reads") 754309Sgblack@eecs.umich.edu dma_read_factor = Param.Latency('0us', "multiplier for dma reads") 764309Sgblack@eecs.umich.edu dma_write_delay = Param.Latency('0us', "fixed delay for dma writes") 774309Sgblack@eecs.umich.edu dma_write_factor = Param.Latency('0us', "multiplier for dma writes") 784309Sgblack@eecs.umich.edu dma_no_allocate = Param.Bool(True, "Should we allocate cache on read") 794309Sgblack@eecs.umich.edu 804309Sgblack@eecs.umich.edu rx_delay = Param.Latency('1us', "Receive Delay") 814309Sgblack@eecs.umich.edu tx_delay = Param.Latency('1us', "Transmit Delay") 824309Sgblack@eecs.umich.edu rx_fifo_size = Param.MemorySize('512kB', "max size of rx fifo") 834309Sgblack@eecs.umich.edu tx_fifo_size = Param.MemorySize('512kB', "max size of tx fifo") 844309Sgblack@eecs.umich.edu 854309Sgblack@eecs.umich.edu rx_filter = Param.Bool(True, "Enable Receive Filter") 864309Sgblack@eecs.umich.edu intr_delay = Param.Latency('10us', "Interrupt propagation delay") 874309Sgblack@eecs.umich.edu rx_thread = Param.Bool(False, "dedicated kernel thread for transmit") 884309Sgblack@eecs.umich.edu tx_thread = Param.Bool(False, "dedicated kernel threads for receive") 894309Sgblack@eecs.umich.edu rss = Param.Bool(False, "Receive Side Scaling") 904309Sgblack@eecs.umich.edu 914309Sgblack@eecs.umich.educlass NSGigE(EtherDevBase): 924309Sgblack@eecs.umich.edu type = 'NSGigE' 934309Sgblack@eecs.umich.edu 944309Sgblack@eecs.umich.edu dma_data_free = Param.Bool(False, "DMA of Data is free") 954309Sgblack@eecs.umich.edu dma_desc_free = Param.Bool(False, "DMA of Descriptors is free") 964309Sgblack@eecs.umich.edu 974309Sgblack@eecs.umich.edu 984309Sgblack@eecs.umich.educlass NSGigEInt(EtherInt): 994309Sgblack@eecs.umich.edu type = 'NSGigEInt' 1004309Sgblack@eecs.umich.edu device = Param.NSGigE("Ethernet device of this interface") 1014309Sgblack@eecs.umich.edu 1024309Sgblack@eecs.umich.educlass Sinic(EtherDevBase): 1034309Sgblack@eecs.umich.edu type = 'Sinic' 1044309Sgblack@eecs.umich.edu 1054309Sgblack@eecs.umich.edu rx_max_copy = Param.MemorySize('1514B', "rx max copy") 1064309Sgblack@eecs.umich.edu tx_max_copy = Param.MemorySize('16kB', "tx max copy") 1074309Sgblack@eecs.umich.edu rx_max_intr = Param.UInt32(10, "max rx packets per interrupt") 1084309Sgblack@eecs.umich.edu rx_fifo_threshold = Param.MemorySize('48kB', "rx fifo high threshold") 1094309Sgblack@eecs.umich.edu tx_fifo_threshold = Param.MemorySize('16kB', "tx fifo low threshold") 1104309Sgblack@eecs.umich.edu 1114309Sgblack@eecs.umich.educlass SinicInt(EtherInt): 1124309Sgblack@eecs.umich.edu type = 'SinicInt' 1134309Sgblack@eecs.umich.edu device = Param.Sinic("Ethernet device of this interface") 1144309Sgblack@eecs.umich.edu