gem5
|
Model for an Ethernet switch port. More...
#include <etherswitch.hh>
Classes | |
class | PortFifo |
struct | PortFifoEntry |
Public Member Functions | |
Interface (const std::string &name, EtherSwitch *_etherSwitch, uint64_t outputBufferSize, Tick delay, Tick delay_var, double rate, unsigned id) | |
bool | recvPacket (EthPacketPtr packet) |
When a packet is received from a device, route it through an (several) output queue(s) More... | |
void | enqueue (EthPacketPtr packet, unsigned senderId) |
enqueue packet to the outputFifo More... | |
void | sendDone () |
Tick | switchingDelay () |
Interface * | lookupDestPort (Net::EthAddr destAddr) |
void | learnSenderAddr (Net::EthAddr srcMacAddr, Interface *sender) |
void | serialize (CheckpointOut &cp) const |
Serialize an object. More... | |
void | unserialize (CheckpointIn &cp) |
Unserialize an object. More... | |
Public Member Functions inherited from EtherInt | |
EtherInt (const std::string &name) | |
virtual | ~EtherInt () |
const std::string & | name () const |
Return port name (for DPRINTF). More... | |
void | setPeer (EtherInt *p) |
EtherInt * | getPeer () |
void | recvDone () |
bool | sendPacket (EthPacketPtr packet) |
bool | askBusy () |
virtual bool | isBusy () |
Public Member Functions inherited from Serializable | |
Serializable () | |
virtual | ~Serializable () |
void | serializeSection (CheckpointOut &cp, const char *name) const |
Serialize an object into a new section. More... | |
void | serializeSection (CheckpointOut &cp, const std::string &name) const |
void | unserializeSection (CheckpointIn &cp, const char *name) |
Unserialize an a child object. More... | |
void | unserializeSection (CheckpointIn &cp, const std::string &name) |
Protected Member Functions | |
void | transmit () |
Protected Attributes | |
PortFifo | outputFifo |
output fifo at each interface More... | |
EventWrapper< Interface,&Interface::transmit > | txEvent |
Protected Attributes inherited from EtherInt | |
std::string | portName |
EtherInt * | peer |
Private Attributes | |
const double | ticksPerByte |
const Tick | switchDelay |
const Tick | delayVar |
const unsigned | interfaceId |
EtherSwitch * | parent |
Additional Inherited Members | |
Static Public Member Functions inherited from Serializable | |
static const std::string & | currentSection () |
Get the fully-qualified name of the active section. More... | |
static void | serializeAll (const std::string &cpt_dir) |
static void | unserializeGlobals (CheckpointIn &cp) |
Static Public Attributes inherited from Serializable | |
static int | ckptCount = 0 |
static int | ckptMaxCount = 0 |
static int | ckptPrevCount = -1 |
Model for an Ethernet switch port.
Definition at line 70 of file etherswitch.hh.
EtherSwitch::Interface::Interface | ( | const std::string & | name, |
EtherSwitch * | _etherSwitch, | ||
uint64_t | outputBufferSize, | ||
Tick | delay, | ||
Tick | delay_var, | ||
double | rate, | ||
unsigned | id | ||
) |
Definition at line 128 of file etherswitch.cc.
void EtherSwitch::Interface::enqueue | ( | EthPacketPtr | packet, |
unsigned | senderId | ||
) |
enqueue packet to the outputFifo
Definition at line 166 of file etherswitch.cc.
References curTick().
Referenced by recvPacket().
void EtherSwitch::Interface::learnSenderAddr | ( | Net::EthAddr | srcMacAddr, |
Interface * | sender | ||
) |
Definition at line 238 of file etherswitch.cc.
References curTick(), DPRINTF, EtherSwitch::SwitchTableEntry::interface, and EtherInt::name().
EtherSwitch::Interface * EtherSwitch::Interface::lookupDestPort | ( | Net::EthAddr | destAddr | ) |
Definition at line 214 of file etherswitch.cc.
|
virtual |
When a packet is received from a device, route it through an (several) output queue(s)
Implements EtherInt.
Definition at line 139 of file etherswitch.cc.
References Net::EthAddr::broadcast(), DPRINTF, enqueue(), Net::EthAddr::multicast(), EtherInt::name(), and SimObject::name().
|
inlinevirtual |
Implements EtherInt.
Definition at line 85 of file etherswitch.hh.
|
virtual |
Serialize an object.
Output an object's state into the current checkpoint section.
cp | Checkpoint state |
Implements Serializable.
Definition at line 277 of file etherswitch.cc.
References SERIALIZE_SCALAR.
Tick EtherSwitch::Interface::switchingDelay | ( | ) |
Definition at line 203 of file etherswitch.cc.
References Random::random(), and random_mt.
|
protected |
Definition at line 182 of file etherswitch.cc.
|
virtual |
Unserialize an object.
Read an object's state from the current checkpoint section.
cp | Checkpoint state |
Implements Serializable.
Definition at line 290 of file etherswitch.cc.
References UNSERIALIZE_SCALAR.
|
private |
Definition at line 97 of file etherswitch.hh.
|
private |
Definition at line 98 of file etherswitch.hh.
|
protected |
output fifo at each interface
Definition at line 173 of file etherswitch.hh.
|
private |
Definition at line 100 of file etherswitch.hh.
|
private |
Definition at line 96 of file etherswitch.hh.
|
private |
Definition at line 95 of file etherswitch.hh.
|
protected |
Definition at line 175 of file etherswitch.hh.