summaryrefslogtreecommitdiff
path: root/dev/ns_gige.cc
AgeCommit message (Collapse)Author
2005-06-05Merge zizzer:/bk/m5 into zeep.eecs.umich.edu:/z/saidi/work/m5-cleanAli Saidi
--HG-- extra : convert_revision : 0c339eb7574f59665690f7e8457eff0b21e3c4c9
2005-06-05split uart into urt8250 and uart8530Ali Saidi
fix some doxygen comments SConscript: Added split uart files dev/ns_gige.cc: dev/ns_gige.hh: dev/ns_gige_reg.h: dev/tsunami.cc: dev/tsunami_cchip.cc: dev/tsunami_io.cc: dev/tsunami_pchip.cc: dev/tsunamireg.h: fix doxgyen file comment dev/uart.cc: dev/uart.hh: python/m5/objects/Uart.py: split uart into urt8250 and uart8530 --HG-- extra : convert_revision : 2e70aad892a37620d7909017648bca6d7d69d678
2005-06-04shuffle files around for new directory structureNathan Binkert
--HG-- rename : cpu/base_cpu.cc => cpu/base.cc rename : cpu/base_cpu.hh => cpu/base.hh rename : cpu/beta_cpu/2bit_local_pred.cc => cpu/o3/2bit_local_pred.cc rename : cpu/beta_cpu/2bit_local_pred.hh => cpu/o3/2bit_local_pred.hh rename : cpu/beta_cpu/alpha_full_cpu.cc => cpu/o3/alpha_cpu.cc rename : cpu/beta_cpu/alpha_full_cpu.hh => cpu/o3/alpha_cpu.hh rename : cpu/beta_cpu/alpha_full_cpu_builder.cc => cpu/o3/alpha_cpu_builder.cc rename : cpu/beta_cpu/alpha_full_cpu_impl.hh => cpu/o3/alpha_cpu_impl.hh rename : cpu/beta_cpu/alpha_dyn_inst.cc => cpu/o3/alpha_dyn_inst.cc rename : cpu/beta_cpu/alpha_dyn_inst.hh => cpu/o3/alpha_dyn_inst.hh rename : cpu/beta_cpu/alpha_dyn_inst_impl.hh => cpu/o3/alpha_dyn_inst_impl.hh rename : cpu/beta_cpu/alpha_impl.hh => cpu/o3/alpha_impl.hh rename : cpu/beta_cpu/alpha_params.hh => cpu/o3/alpha_params.hh rename : cpu/beta_cpu/bpred_unit.cc => cpu/o3/bpred_unit.cc rename : cpu/beta_cpu/bpred_unit.hh => cpu/o3/bpred_unit.hh rename : cpu/beta_cpu/bpred_unit_impl.hh => cpu/o3/bpred_unit_impl.hh rename : cpu/beta_cpu/btb.cc => cpu/o3/btb.cc rename : cpu/beta_cpu/btb.hh => cpu/o3/btb.hh rename : cpu/beta_cpu/comm.hh => cpu/o3/comm.hh rename : cpu/beta_cpu/commit.cc => cpu/o3/commit.cc rename : cpu/beta_cpu/commit.hh => cpu/o3/commit.hh rename : cpu/beta_cpu/commit_impl.hh => cpu/o3/commit_impl.hh rename : cpu/beta_cpu/full_cpu.cc => cpu/o3/cpu.cc rename : cpu/beta_cpu/full_cpu.hh => cpu/o3/cpu.hh rename : cpu/beta_cpu/cpu_policy.hh => cpu/o3/cpu_policy.hh rename : cpu/beta_cpu/decode.cc => cpu/o3/decode.cc rename : cpu/beta_cpu/decode.hh => cpu/o3/decode.hh rename : cpu/beta_cpu/decode_impl.hh => cpu/o3/decode_impl.hh rename : cpu/beta_cpu/fetch.cc => cpu/o3/fetch.cc rename : cpu/beta_cpu/fetch.hh => cpu/o3/fetch.hh rename : cpu/beta_cpu/fetch_impl.hh => cpu/o3/fetch_impl.hh rename : cpu/beta_cpu/free_list.cc => cpu/o3/free_list.cc rename : cpu/beta_cpu/free_list.hh => cpu/o3/free_list.hh rename : cpu/beta_cpu/iew.cc => cpu/o3/iew.cc rename : cpu/beta_cpu/iew.hh => cpu/o3/iew.hh rename : cpu/beta_cpu/iew_impl.hh => cpu/o3/iew_impl.hh rename : cpu/beta_cpu/inst_queue.cc => cpu/o3/inst_queue.cc rename : cpu/beta_cpu/inst_queue.hh => cpu/o3/inst_queue.hh rename : cpu/beta_cpu/inst_queue_impl.hh => cpu/o3/inst_queue_impl.hh rename : cpu/beta_cpu/mem_dep_unit.cc => cpu/o3/mem_dep_unit.cc rename : cpu/beta_cpu/mem_dep_unit.hh => cpu/o3/mem_dep_unit.hh rename : cpu/beta_cpu/mem_dep_unit_impl.hh => cpu/o3/mem_dep_unit_impl.hh rename : cpu/beta_cpu/ras.cc => cpu/o3/ras.cc rename : cpu/beta_cpu/ras.hh => cpu/o3/ras.hh rename : cpu/beta_cpu/regfile.hh => cpu/o3/regfile.hh rename : cpu/beta_cpu/rename.cc => cpu/o3/rename.cc rename : cpu/beta_cpu/rename.hh => cpu/o3/rename.hh rename : cpu/beta_cpu/rename_impl.hh => cpu/o3/rename_impl.hh rename : cpu/beta_cpu/rename_map.cc => cpu/o3/rename_map.cc rename : cpu/beta_cpu/rename_map.hh => cpu/o3/rename_map.hh rename : cpu/beta_cpu/rob.cc => cpu/o3/rob.cc rename : cpu/beta_cpu/rob.hh => cpu/o3/rob.hh rename : cpu/beta_cpu/rob_impl.hh => cpu/o3/rob_impl.hh rename : cpu/beta_cpu/sat_counter.cc => cpu/o3/sat_counter.cc rename : cpu/beta_cpu/sat_counter.hh => cpu/o3/sat_counter.hh rename : cpu/beta_cpu/store_set.cc => cpu/o3/store_set.cc rename : cpu/beta_cpu/store_set.hh => cpu/o3/store_set.hh rename : cpu/beta_cpu/tournament_pred.cc => cpu/o3/tournament_pred.cc rename : cpu/beta_cpu/tournament_pred.hh => cpu/o3/tournament_pred.hh rename : cpu/ooo_cpu/ooo_cpu.cc => cpu/ozone/cpu.cc rename : cpu/ooo_cpu/ooo_cpu.hh => cpu/ozone/cpu.hh rename : cpu/ooo_cpu/ooo_impl.hh => cpu/ozone/cpu_impl.hh rename : cpu/ooo_cpu/ea_list.cc => cpu/ozone/ea_list.cc rename : cpu/ooo_cpu/ea_list.hh => cpu/ozone/ea_list.hh rename : cpu/simple_cpu/simple_cpu.cc => cpu/simple/cpu.cc rename : cpu/simple_cpu/simple_cpu.hh => cpu/simple/cpu.hh rename : cpu/full_cpu/smt.hh => cpu/smt.hh rename : cpu/full_cpu/op_class.hh => encumbered/cpu/full/op_class.hh extra : convert_revision : c4a891d8d6d3e0e9e5ea56be47d851da44d8c032
2005-06-01Standardize clock parameter names to 'clock'.Steve Reinhardt
Fix description for Bus clock_ratio (no longer a ratio). Add Clock param type (generic Frequency or Latency). cpu/base_cpu.cc: cpu/base_cpu.hh: cpu/beta_cpu/alpha_full_cpu_builder.cc: cpu/simple_cpu/simple_cpu.cc: dev/ide_ctrl.cc: dev/ns_gige.cc: dev/ns_gige.hh: dev/pciconfigall.cc: dev/sinic.cc: dev/tsunami_cchip.cc: dev/tsunami_io.cc: dev/tsunami_pchip.cc: dev/uart.cc: python/m5/objects/BaseCPU.py: python/m5/objects/BaseCache.py: python/m5/objects/BaseSystem.py: python/m5/objects/Bus.py: python/m5/objects/Ethernet.py: python/m5/objects/Root.py: sim/universe.cc: Standardize clock parameter names to 'clock'. Fix description for Bus clock_ratio (no longer a ratio). python/m5/config.py: Minor tweaks on Frequency/Latency: - added new Clock param type to avoid ambiguities - factored out init code into getLatency() - made RootFrequency *not* a subclass of Frequency so it can't be directly assigned to a Frequency paremeter --HG-- extra : convert_revision : fc4bb8562df171b454bbf696314cda57e1ec8506
2005-05-28ns_gige_reg.h, ns_gige.cc:Lisa Hsu
clean up code to eliminate license issues. dev/ns_gige.cc: dev/ns_gige_reg.h: clean up code to eliminate license issues. --HG-- extra : convert_revision : 64adbd87faa5ce5ac6b9da4fd95b12796487c8f9
2005-04-29Add suport for no allocation of cache block on a dma read passing through a ↵Ron Dreslinski
cache from the cpu-side interface --HG-- extra : convert_revision : 0a3b3741924ed39c1c8710d0963e4c8f3e73f81a
2005-04-24Add the m5 parameter to the ns83820 device model so that weNathan Binkert
can pass simulator specific options to the device driver. dev/ns_gige.cc: Add the m5 register and parameter to the ns83820 device model so that we can pass simulator specific options to the device driver. dev/ns_gige.hh: dev/ns_gige_reg.h: Add the m5 register to the ns83820 device model --HG-- extra : convert_revision : 84674887560fa3b607e725b8e5bc8272761fcf09
2005-04-11Make the notion of a global event tick independent of the actualNathan Binkert
CPU cycle ticks. This allows the user to have CPUs of different frequencies, and also allows frequencies and latencies that are not evenly divisible by the CPU frequency. For now, the CPU frequency is still set to the global frequency, but soon, we'll hopefully make the global frequency fixed at something like 1THz and set all other frequencies independently. arch/alpha/ev5.cc: The cycles counter is based on the current cpu cycle. cpu/base_cpu.cc: frequency isn't the cpu parameter anymore, cycleTime is. cpu/base_cpu.hh: frequency isn't the cpu parameter anymore, cycleTime is. create several public functions for getting the cpu frequency and the numbers of ticks for a given number of cycles, etc. cpu/memtest/memtest.cc: cpu/simple_cpu/simple_cpu.cc: cpu/simple_cpu/simple_cpu.hh: cpu/trace/trace_cpu.cc: Now that ticks aren't cpu cycles, fixup code to advance by the proper number of ticks. cpu/memtest/memtest.hh: cpu/trace/trace_cpu.hh: Provide a function to get the number of ticks for a given number of cycles. dev/alpha_console.cc: Update for changes in the way that frequencies and latencies are accessed. Move some stuff to init() dev/alpha_console.hh: Need a pointer to the system and the cpu to get the frequency so we can pass the info to the console code. dev/etherbus.cc: dev/etherbus.hh: dev/etherlink.cc: dev/etherlink.hh: dev/ethertap.cc: dev/ide_disk.hh: dev/ns_gige.cc: dev/ns_gige.hh: update for changes in the way bandwidths are passed from python to C++ to accomidate the new way that ticks works. dev/ide_disk.cc: update for changes in the way bandwidths are passed from python to C++ to accomidate the new way that ticks works. Add some extra debugging printfs dev/platform.cc: dev/sinic.cc: dev/sinic.hh: outline the constructor and destructor dev/platform.hh: outline the constructor and destructor. don't keep track of the interrupt frequency. Only provide the accessor function. dev/tsunami.cc: dev/tsunami.hh: outline the constructor and destructor Don't set the interrupt frequency here. Get it from the actual device that does the interrupting. dev/tsunami_io.cc: dev/tsunami_io.hh: Make the interrupt interval a configuration parameter. (And convert the interval to the new latency/frequency stuff in the python) kern/linux/linux_system.cc: update for changes in the way bandwidths are passed from python to C++ to accomidate the new way that ticks works. For now, we must get the boot cpu's frequency as a parameter since allowing the system to have a pointer to the boot cpu would cause a cycle. kern/tru64/tru64_system.cc: For now, we must get the boot cpu's frequency as a parameter since allowing the system to have a pointer to the boot cpu would cause a cycle. python/m5/config.py: Fix support for cycle_time relative latencies and frequencies. Add support for getting a NetworkBandwidth or a MemoryBandwidth. python/m5/objects/BaseCPU.mpy: All CPUs now have a cycle_time. The default is the global frequency, but it is now possible to set the global frequency to some large value (like 1THz) and set each CPU frequency independently. python/m5/objects/BaseCache.mpy: python/m5/objects/Ide.mpy: Make this a Latency parameter python/m5/objects/BaseSystem.mpy: We need to pass the boot CPU's frequency to the system python/m5/objects/Ethernet.mpy: Update parameter types to use latency and bandwidth types python/m5/objects/Platform.mpy: this frequency isn't needed. We get it from the clock interrupt. python/m5/objects/Tsunami.mpy: The clock generator should hold the frequency sim/eventq.hh: Need to remove this assertion because the writeback event queue is different from the CPU's event queue which can cause this assertion to fail. sim/process.cc: Fix comment. sim/system.hh: Struct member to hold the boot CPU's frequency. sim/universe.cc: remove unneeded variable. --HG-- extra : convert_revision : 51efe4041095234bf458d9b3b0d417f4cae16fdc
2005-03-29expose variables for number of global events per simulated second,Nathan Binkert
millisecond, microsecond, etc. so that the user can explicitly convert between system ticks and time and know what sorts of expensive operations are being used for that conversion. arch/alpha/alpha_tru64_process.cc: arch/alpha/pseudo_inst.cc: dev/etherdump.cc: dev/etherlink.cc: dev/ns_gige.cc: dev/sinic.cc: dev/tsunami_io.cc: dev/uart.cc: sim/stat_control.cc: sim/syscall_emul.hh: Use the new variables for getting the event clock dev/etherdump.hh: delete variables that are no longer needed. --HG-- extra : convert_revision : d95fc7d44909443e1b7952a24ef822ef051c7cf2
2005-03-16Some changes to NSGigE's DPRINTF's that helped when I was doing NAT stuff.Lisa Hsu
--HG-- extra : convert_revision : d36c84a835667d4c67f46432a90b9557b0710eac
2005-01-19Merge zizzer:/bk/m5 into zeep.eecs.umich.edu:/z/saidi/work/m5Ali Saidi
--HG-- extra : convert_revision : d5e6f6e696d7607f89894856d940afc89ae8e37b
2005-01-19added total bytes/bandwidth/packets formulas to nicsAli Saidi
cleaned up stability code and wrote some better help for stats.py fixed sample bug in info.py dev/ns_gige.cc: dev/ns_gige.hh: dev/sinic.cc: dev/sinic.hh: add total bandwidth/packets/bytes stats util/stats/info.py: fixed samples bug util/stats/stats.py: cleaned up stability code and wrote a bit better help --HG-- extra : convert_revision : cae06f4fac744d7a51ee0909f21f03509151ea8f
2005-01-19Fix serialization of txPacket (need to properly calculate the length before ↵Ron Dreslinski
serialization) --HG-- extra : convert_revision : e93321495d19afb86949daf2c14102ffb6bcef41
2005-01-15New and improved configuration mechanism. No more writing ofNathan Binkert
wierd ini files. The ini files are still used as an intermediate step, but a sophisticated python library exists to help build them more easily. SConscript: add the new embedded file stuff remove all of the old object description junk base/inifile.cc: base/inifile.hh: get rid of findDefault and findAppend since they were the source of much evil. base/trace.cc: For now, if we don't have the dprintf_stream set up, dump to standard out. We probably want a command line option for this. dev/alpha_console.cc: PioDevice now takes a platform parameter. All PioDevices must have a pio_latency parameter. We stick a dummy parameter in here for now until we get rid of the builder stuff. dev/alpha_console.hh: don't need Platform anymore dev/baddev.cc: PioDevice now takes a platform parameter. All PioDevices must have a pio_latency parameter. We stick a dummy parameter in here for now until we get rid of the builder stuff. Same for the platform parameter, though we just pass the PioDevice a null parameter since it isn't used by this device and it's quicker. dev/baddev.hh: fix #include guards dev/etherlink.cc: rename parameters. dev/ethertap.cc: rename parameters dev/ide_ctrl.cc: All devices need an address even if it will get overwritten later. dev/ide_disk.cc: use an enum for the drive ID stuff. rename disk_delay -> delay Actually, I think that we should implement "cable select" and have the controller tell the drive what it is. dev/io_device.cc: dev/io_device.hh: All IO devices take a Platform * dev/ns_gige.cc: all devices need an io_bus. rename header_bus to io_bus We don't need stuff for the interrupt controller since it's all in the platform now. dev/ns_gige.hh: We don't need stuff for the interrupt controller now since it's all in the platform. dev/pciconfigall.cc: Pass a dummy NULL to the PioDevice for the platform since we don't need one. dev/pcidev.cc: Move a bunch of common functionality into the PciDev dev/platform.hh: remove unneeded code dev/tsunami.cc: remove unused param dev/tsunami_cchip.cc: pass platform pointer dev/tsunami_io.cc: dev/tsunami_pchip.cc: dev/uart.cc: pass platform variable dev/uart.hh: don't need to keep a platform pointer. it's in the base class kern/linux/linux_system.cc: kern/tru64/tru64_system.cc: rename some parameters sim/builder.cc: clean up builder code. use more parameters from the config node. all sections with a type= are now created, the old mechanisms no longer work sim/builder.hh: remove some extra variables since they are found in the ConfigNode sim/main.cc: add a quick hack command line argument -X to dump out the embedded files. (probably should be fixed up a little.) accept .mpy files printing to the streams has to happen after the hierarchy is built since we're moving away from param contexts sim/param.cc: add parsing support for ranges sim/process.cc: isValid isn't very useful anymore. interpret the names stdout, stderr, cout, cerr for the file descriptors sim/pyconfig/SConscript: Add Action handlers for creating an embedded python file and for creating an embedded C file. use these action handlers to embed all objects found in the objects tree into the binary along with the importer and the m5config stuff sim/pyconfig/m5config.py: Major changes to the original configuration file generator. These changes largely involve implementing copy-on-write like semantics for all of the SimObjects. Real documentation must be written. sim/universe.cc: Universe becomes a SimObject since we don't really have the notion of param contexts in the python code. --HG-- rename : sim/pyconfig/m5configbase.py => sim/pyconfig/m5config.py extra : convert_revision : c353453e5beb91c37f15755998fc0d8858c6829a
2004-11-18Merge zizzer.eecs.umich.edu:/z/m5/Bitkeeper/m5Nathan Binkert
into zizzer.eecs.umich.edu:/.automount/ziff/z/binkertn/research/m5/latest --HG-- extra : convert_revision : 3127ab9f076b5ecce897a1c7de2678b58b73f7fb
2004-11-18always initalize the size of a packet (forgotten on checkpointsNathan Binkert
in some places). use the constructor for setting the size. --HG-- extra : convert_revision : fad322c1d45b1952804cf35942b5685d70128e59
2004-11-18add a bunch of stats for interrupt classification, coalescing ↵Lisa Hsu
characterization, and dropped packets. --HG-- extra : convert_revision : 421af424ec104afc352c073408a166fce6a31c70
2004-11-17serialization fix for the NS GigE driverNathan Binkert
dev/ns_gige.cc: We need to serialize the rxFragPtr --HG-- extra : convert_revision : 1f68c9d7ae2dbeea69e60d988ea6392622104f52
2004-11-16Fix a bug where we would improperly calculate if the FIFO wasNathan Binkert
full by adding a reserve feature to the packet fifo which allows us to reserve space in the fifo if only part of a packet was copied into the fifo. dev/ns_gige.cc: use the new reserve feature in the fifo to properly determine when we're full. assert that adding a packet to the fifo suceeds. dev/pktfifo.hh: add the ability to reserve space in the fifo. This is useful for partial writing of packets into the fifo. --HG-- extra : convert_revision : 83f871f34fac237bb464c9513cf6490b5c62420e
2004-11-13Get rid of obsolete sim/sim_stats.* files (looks like theseSteve Reinhardt
are replaced by sim/stats.hh and sim/stat_control.*) dev/ns_gige.cc: dev/sinic.cc: Include sim/stats.hh instead of sim/sim_stats.hh --HG-- extra : convert_revision : 5e07932eab45ae4fb719baa4f94c5f62092a8446
2004-11-13Use the new PacketFifo class to avoid manual calculationsNathan Binkert
--HG-- extra : convert_revision : afa193904b7ed4d5e5c50e9dcb78e8e855b00ecc
2004-11-13change the serialization of a packet so that we don'tNathan Binkert
do a nameOut. This fixes a subtle bug in serialization that can pop up. --HG-- extra : convert_revision : b52df977dcbef1c9bd0d4405ba0b36dff3737cdf
2004-11-13we shouldn't ever pass around references to PacketPtrs,Nathan Binkert
const references are ok, or pass by value. --HG-- extra : convert_revision : 7280a1c7d22b9294fddbe50f02f6f4c6ca9b2e5b
2004-11-13Use parameter structs for initialization so it's easierNathan Binkert
to add new devices. Abstract the Platform more so that it is unnecessary to know know platform specifics for interrupting or translating PCI DMA addresses. dev/ide_ctrl.cc: convert to parameter struct for initialization use the interrupt functions in the PciDev base class convert from tsunami to using platform We don't need an interrupt controller here. dev/ide_ctrl.hh: don't use Tsunami, use Platform make the IdeDisk a friend so that it can access my plaform convert to parameter struct for construction dev/ide_disk.cc: don't use tsunami references, but platform references dev/ns_gige.cc: Convert to parameter struct for initialzation. Use code in base class for interrupts so we don't need to know anything about the platform. Don't need an IntrControl *. dev/ns_gige.hh: We don't need a Tsunami * anymore convert to a parameter struct for construction dev/pcidev.cc: deal with new parameter struct dev/pcidev.hh: - Move all of the configuration parameters into a param struct that we can pass into the constructor. - Add a Platform * for accessing new generic interrupt post/clear and dma address translation fuctions - Create functions for posting/clearing interrupts and translating dma addresses dev/platform.cc: have default functions that panic on pci calls dev/platform.hh: don't make the pci stuff pure virtual, but rather provide default implementations that panic. Also, add dma address translation. dev/tsunami.cc: this-> isn't necessary here. add pci address translation dev/tsunami.hh: implement the pciToDma address translation --HG-- extra : convert_revision : 7db27a2fa1f1bd84704921ec7ca0280b5653c43e
2004-11-13Macros are nasty, so let's get rid of them. Convert allNathan Binkert
all macros in ev5.hh to inline functions or constant typed variables and make them follow our style while we're at it. All of the stuff in this file actually belongs in the ISA traits code, but this is a first step at getting things done in the right manner. arch/alpha/alpha_memory.cc: arch/alpha/alpha_memory.hh: arch/alpha/ev5.cc: arch/alpha/isa_desc: dev/ns_gige.cc: kern/tru64/tru64_events.cc: deal with changes in ev5.hh arch/alpha/ev5.hh: Macros are nasty, so let's get rid of them. Convert all all macros to inline functions or constant typed variables. Make them follow our style while we're at it. All of the stuff in this file actually belongs in the ISA traits code, but this is a first step at getting things done in the right manner. arch/alpha/isa_traits.hh: move some of the ev5 specific code into the isa arch/alpha/vtophys.cc: base/remote_gdb.cc: deal with isa addition cpu/exec_context.hh: be less isa specific and use the isa traits to figure out what we can. dev/alpha_console.cc: dev/pciconfigall.cc: dev/tsunami_cchip.cc: dev/tsunami_io.cc: dev/tsunami_pchip.cc: dev/uart.cc: deal with changes in ev5.hh I don't believe this masking is actually necessary. We should look at removing it later. dev/ide_ctrl.cc: sort #includes deal with changes in ev5.hh --HG-- extra : convert_revision : c8a3adf0a4b1d198aefe38fc38b295abf289b08a
2004-10-25Merge zizzer:/bk/m5 into zeep.eecs.umich.edu:/z/saidi/work/m5-smpAli Saidi
--HG-- extra : convert_revision : 59173b5d4599cfe1cbaa96705e9731ee5a8d8647
2004-10-25changes to make interrupts part of the platform rather than tsunamiAli Saidi
specific --HG-- extra : convert_revision : f51788dd41c23f13b253268bb2b286a5225ef087
2004-10-23flesh out the TCP/IP/Ethernet supportNathan Binkert
base/refcnt.hh: reorganize the RefCountingPtr a little bit to make it easier to derive from dev/etherpkt.hh: this doesn't belong here. use the inet.hh stuff dev/ns_gige.cc: dev/ns_gige.hh: use newer features in the tcp/ip/ethernet stuff --HG-- extra : convert_revision : 32c1953c95655c1f4c70e0d8adedfd94beead624
2004-10-23get rid of some unused variablesNathan Binkert
--HG-- extra : convert_revision : 187cee0e0bad09bbaff059eb60f20d7d32c1b52c
2004-10-22Clean up the Range class and associated usages. The code wasNathan Binkert
never clear about whether the end of the range was inclusive or exclusive. Make it inclusive, but also provide a RangeSize() function that will generate a Range based on a start and a size. This, in combination with using the comparison operators, makes almost all usages of the range not care how it is stored. base/range.cc: Make the end of the range inclusive. start/end -> first/last (end seems too much like end() in stl) base/range.hh: Make the end of the range inclusive. Fix all comparison operators so that they work correctly with an inclusive range. Also, when comparing one range to another with <, <=, >, >=, we only look at the beginning of the range beacuse x <= y should be the same as x < y || x == y. (This wasn't the case before.) Add a few functions for making a range: RangeSize is start and size RangeEx is start and end where end is exclusive RangeIn is start and end where end is inclusive start/end -> first/last (end seems too much like end() in stl) dev/alpha_console.cc: dev/baddev.cc: dev/ide_ctrl.cc: dev/ns_gige.cc: dev/pciconfigall.cc: dev/pcidev.cc: dev/tsunami_cchip.cc: dev/tsunami_io.cc: dev/tsunami_pchip.cc: dev/uart.cc: Use the RangeSize function to create a range. --HG-- extra : convert_revision : 29a7eb7fce745680f1c77fefff456c2144bc3994
2004-09-20Clean up network header stuff and make it more generic. UseNathan Binkert
libdnet when we can instead of our own home grown stuff. SConscript: separate the crc code into its own file base/inet.cc: move the crc stuff to crc.cc add generic code for calculating ip/tcp/udp checksums base/inet.hh: - move crc stuff to crc.hh - #include all of the libdnet stuff. (this makes base/inet.hh the only file you need to include if you want to use this kind of stuff.) - Wrap some of the libdnet structs to get easier access to structure members. These wrappers will automatically deal with masking/shifting/ byte-swapping. base/refcnt.hh: If one derives from RefCountingPtr, they should have access to the internal data pointer. build/SConstruct: make #include of dnet stuff work dev/etherlink.cc: dev/ethertap.cc: dev/ethertap.hh: EtherPacket -> PacketData dev/etherpkt.cc: EtherPacket -> PacketData add a function for populating extra info about a packet. Basically just gives pointers to ethernet/ip/tcp/udp headers if they exist. dev/etherpkt.hh: EtherPacket -> PacketData remove most of the packet header stuff from teh PacketData class and just add a few generic functions for grabbing various headers that may exist in the packet. The old functionality is contained in the headers. dev/ns_gige.cc: - IP -> Ip, UDP -> Udp, TCP ->Tcp when used in variable names - get rid of our own byte swapping functions. - whack checksum code and use libdnet version. - Get pointers to the various packet headers and grab info from those headers. (The byte swapping in the headers now.) - Add stats for Udp Checksums dev/ns_gige.hh: use libdnet for checksum code. IP -> Ip, TCP -> Tcp in variable names add stats for UDP checksums --HG-- extra : convert_revision : 96c4160e1967b7c0090acd456df4a76e1f3aab53
2004-08-20Fixup interrupting of the ethernet device.Nathan Binkert
dev/ns_gige.cc: clean up the interrupt handling code so that it is simpler and less prone to bugs. I hope I removed the bug where the: assert(intrTick >= curTick || intrTick == 0); would get triggered. I'm pretty sure that was due to intrTick not being cleared when the interrupt was cleared. This code probably still needs to be looked at more closely to make sure interrupts are not missed. --HG-- extra : convert_revision : 61e2eb043540f2534a80c9b633006a71e7d6e282
2004-08-11cleanup interrupt code for gigabit deviceNathan Binkert
dev/ns_gige.cc: Clean up the interrupt code. Do a better job determining when coalescing should happen. Remove some bogus comments Stop using magic numbers in initialization and comment what the various numbers do dev/ns_gige_reg.h: #define describing which interrupts cannot be delayed and which interrrupts we don't implement --HG-- extra : convert_revision : eb196afa0bf448e1849dd2bd30dde32134effee7
2004-07-30better debuggingNathan Binkert
dev/ns_gige.cc: Make all DPRINTF statements take one line. If they need two lines, break them up into separate statements. This makes grep much more effective since *every* line will be prefixed by the cycle that the trace message is from and the object that caused the message. normalize some debugging statements so that searching is easier (e.g. always say rxState, not rx state or receive state) break into the debugger when a packet is dropped since we don't really like dropping packets. --HG-- extra : convert_revision : 9cf309ca2143a6b8c8215ac5dd6a31aae60173cd
2004-07-30Fix a few bugs in the receive state machine. In doing back to trackingNathan Binkert
whether or not the state machine is enabled rather than tracking the specific instance of trying to halt the state machine. dev/ns_gige.cc: change back to tracking the state machine's enableness instead of whether or not it is trying to halt. Also fix a major bug that would cause the NIC to drop packets when the rx state machine was idle, but enabled. Fix a couple other bugs in the state machine where the idle interrupt would happen at the wrong time. Add a warning to deal with improper values of intrTick dev/ns_gige.hh: We need to keep track of whether the state machine is enabled or not separately from the control register since the bits don't always reflect the truth. --HG-- extra : convert_revision : 20056b225fa62a0744473babfd693506aa5f29b2
2004-07-30make all ethernet dma use the new interfaceNathan Binkert
--HG-- extra : convert_revision : 1cab883fac2bffd83cb035ebf28958c15118dfdc
2004-07-30better debugging of DMA operationsNathan Binkert
dev/ns_gige.cc: use the new PhysicalMemory dma_read and dma_write functions --HG-- extra : convert_revision : 427049d43355f02ac8bdfe2e60c24825dd734006
2004-07-26styleNathan Binkert
--HG-- extra : convert_revision : 7489726b6c7bd11af603a448e4ff56c1e46139fe
2004-07-21Wrap tracing stuff in #if TRACING_ON to avoid compile errorNathan Binkert
in m5.fast --HG-- extra : convert_revision : 329d810bfe282e88133ca35da62ee6dcc73a38f5
2004-07-14Fix infinite loop in ns_gige stat machineNathan Binkert
argh! dev/ns_gige.cc: Exit the state machine so that we don't come right back where we started and enter an infinite loop. --HG-- extra : convert_revision : a5f2b5b5a692de6c80e4b02d7f9bc5d27fe17252
2004-07-12make the cache access latency a parameter that is based on busNathan Binkert
ticks for the most commonly accessed devices. dev/baddev.cc: Get rid of the constant cache access latency. For unimportant devices, don't add any latency. dev/ide_ctrl.cc: dev/ide_ctrl.hh: dev/ns_gige.cc: dev/pciconfigall.cc: dev/pciconfigall.hh: dev/tsunami_cchip.cc: dev/tsunami_cchip.hh: dev/tsunami_io.cc: dev/tsunami_io.hh: dev/tsunami_pchip.cc: dev/tsunami_pchip.hh: dev/uart.cc: dev/uart.hh: make the cache access latency a parameter that is based on bus ticks. dev/io_device.cc: dev/io_device.hh: add an io latency variable dev/ns_gige.hh: this moved to io_device.hh --HG-- extra : convert_revision : 4883130feeaef48abee492eddf0b8eb40eb94789
2004-07-12make tx/rx fifo size a param, also fix the empty dma problem by adjusting ↵Lisa Hsu
the state machine. dev/ns_gige.cc: make tx/rx fifo sizes a param. the default is 128K for each. also, make the state machine not move onto txFragRead if there is no room in the txfifo for data. dev/ns_gige.hh: make tx/rx fifo size a param --HG-- extra : convert_revision : ed91eb31c2b21d4cdc6de87d8641df6197be5209
2004-07-09when you add caches, dma commands within the state machine are delayed and ↵Lisa Hsu
cause the state machine to exit until the dma comes back. thus, all relevant code must be executed BEFORE going to do the dma code. dev/ns_gige.cc: rearrange code so nothing gets skipped when "doing dma." --HG-- extra : convert_revision : cca66885f45e7df1831e2d8ccaddf5ece7600b13
2004-07-06tag each mem_req as coming from the nic if it is DMA'd from the NIC. the ↵Lisa Hsu
NIC tells the DMA interface, which in turn sets a new nic_req flag in the MemReq it makes. dev/ns_gige.cc: tell all outgoing dma events that this request is from the NIC --HG-- extra : convert_revision : 62af17a2728a0ff729e7723dc29bd0d130ca5fe3
2004-07-05these changes are an undo from my last changeset. these are meant for later.Lisa Hsu
--HG-- extra : convert_revision : 0126918ef293cba02aaaa61dff3c471eb4743116
2004-07-04almost forgot to do this - hope it doesn't mess up schedule.Lisa Hsu
dev/ns_gige.cc: dev/ns_gige.hh: add the stats nate wanted --HG-- extra : convert_revision : b59d586def7df31741b53cdb59cf3b19253caf26
2004-06-30fix transmit side checksum offloading to not generate a pseudo header.Lisa Hsu
dev/ns_gige.cc: transmit side checksum offloading doesn't need pseudo header generation, it just takes the pseudo header checksum and uses it. --HG-- extra : convert_revision : 9741bd650415c18ed37b06a453b23610d028135b
2004-06-21lLisa Hsu
base/traceflags.py: added some more traceflags for ethernet to break it up better dev/etherpkt.hh: since we are not network host order, must reverse bytes for these typechecks. also, overload isTcp/UdpPkt to take an argument so you don't have to reget the ip header if you've already got one. dev/ns_gige.cc: 1) add some functions that reverse Endianness so we can generate adn evaluate checksum adn dprintf data accurately/more understandably 2) forget about the implementation of fifo fill/drain thresholds, it's not used by the driver much, nor does it matter with use sending/receiving in whole packets anyway. get rid of teh associated variables. 3) get rid of txFifoCnt the variable, it's redundant and unnecessary, just use txFifoAvail. 4) change io_enable to ioEnable, just to be picky. 5) modify some DPRINTF's to be clearer, also added a lot, and spread them into better traceflag categories 6) fix the device bug! it's the intrTick = 0 at teh beginning of cpuInterrupt(). 7) clear some bools in regsReset() so they don't holdover wrong state 8) fix pseudo header generation for Tcp checksumming to account for network order dev/ns_gige.hh: change io_enable to ioEnable, get rid of fill/drain thresh related variables and txFifoCnt, which is redundant --HG-- extra : convert_revision : c538b75731f3c9e04354f57e6df9a40aeca5096d
2004-06-12minor mods for mimicking NS83820 functionalityLisa Hsu
dev/ide_ctrl.cc: generalize these #defs dev/ide_ctrl.hh: put these in pcireg.h dev/ns_gige.cc: do i need io_enable? and assert will fail if i actually need to implement it, which may give clue as to wehtehr i need to implmeent the mem_enable and bm_enable stuff. dev/ns_gige.hh: implement this in case it's needed dev/pcireg.h: put these defs in pcireg instead --HG-- extra : convert_revision : 5e3581b5da17410f943907139bd479f15d2231e8
2004-06-11fix serializationLisa Hsu
dev/ns_gige.cc: fix serialization and move regsReset into the cc file dev/ns_gige.hh: put regsReset into cc instead of here in hh --HG-- extra : convert_revision : 3a8796fa583e0765503104a9dbe28cc69f1a8fa9