gem5  v21.2.0.0
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
gem5::EtherSwitch::Interface Class Reference

Model for an Ethernet switch port. More...

#include <etherswitch.hh>

Inheritance diagram for gem5::EtherSwitch::Interface:
gem5::EtherInt gem5::Serializable gem5::Port


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 ()
InterfacelookupDestPort (networking::EthAddr destAddr)
void learnSenderAddr (networking::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 gem5::EtherInt
 EtherInt (const std::string &name, int idx=InvalidPortID)
virtual ~EtherInt ()
const std::string & name () const
 Return port name (for DPRINTF). More...
void bind (Port &peer) override
 Attach to a peer port. More...
void unbind () override
 Dettach from a peer port. More...
void setPeer (EtherInt *p)
EtherIntgetPeer ()
void recvDone ()
bool sendPacket (EthPacketPtr packet)
bool askBusy ()
virtual bool isBusy ()
- Public Member Functions inherited from gem5::Port
virtual ~Port ()
 Virtual destructor due to inheritance. More...
PortgetPeer ()
 Return a reference to this port's peer. More...
const std::string name () const
 Return port name (for DPRINTF). More...
PortID getId () const
 Get the port id. More...
bool isConnected () const
 Is this port currently connected to a peer? More...
void takeOverFrom (Port *old)
 A utility function to make it easier to swap out ports. More...
- Public Member Functions inherited from gem5::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 Member Functions inherited from gem5::Port
void reportUnbound () const
 Port (const std::string &_name, PortID _id)
 Abstract base class for ports. More...

Protected Attributes

PortFifo outputFifo
 output fifo at each interface More...
EventFunctionWrapper txEvent
- Protected Attributes inherited from gem5::EtherInt
std::string portName
- Protected Attributes inherited from gem5::Port
const PortID id
 A numeric identifier to distinguish ports in a vector, and set to InvalidPortID in case this port is not part of a vector. More...
 A pointer to this port's peer. More...
bool _connected
 Whether this port is currently connected to a peer port. More...

Private Attributes

const double ticksPerByte
const Tick switchDelay
const Tick delayVar
const unsigned interfaceId

Additional Inherited Members

- Static Public Member Functions inherited from gem5::Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section. More...
static void generateCheckpointOut (const std::string &cpt_dir, std::ofstream &outstream)
 Generate a checkpoint file so that the serialization can be routed to it. More...

Detailed Description

Model for an Ethernet switch port.

Definition at line 69 of file etherswitch.hh.

Constructor & Destructor Documentation

◆ Interface()

gem5::EtherSwitch::Interface::Interface ( const std::string &  name,
EtherSwitch _etherSwitch,
uint64_t  outputBufferSize,
Tick  delay,
Tick  delay_var,
double  rate,
unsigned  id 

Definition at line 126 of file

References transmit().

Member Function Documentation

◆ enqueue()

void gem5::EtherSwitch::Interface::enqueue ( EthPacketPtr  packet,
unsigned  senderId 

enqueue packet to the outputFifo

Definition at line 165 of file

References gem5::curTick().

Referenced by recvPacket().

◆ learnSenderAddr()

void gem5::EtherSwitch::Interface::learnSenderAddr ( networking::EthAddr  srcMacAddr,
Interface sender 

◆ lookupDestPort()

EtherSwitch::Interface * gem5::EtherSwitch::Interface::lookupDestPort ( networking::EthAddr  destAddr)

Definition at line 213 of file

References gem5::curTick(), and DPRINTF.

◆ recvPacket()

bool gem5::EtherSwitch::Interface::recvPacket ( EthPacketPtr  packet)

When a packet is received from a device, route it through an (several) output queue(s)

Implements gem5::EtherInt.

Definition at line 138 of file

References gem5::networking::EthAddr::broadcast(), DPRINTF, enqueue(), gem5::networking::EthAddr::multicast(), gem5::Named::name(), and gem5::EtherInt::name().

◆ sendDone()

void gem5::EtherSwitch::Interface::sendDone ( )

Implements gem5::EtherInt.

Definition at line 84 of file etherswitch.hh.

◆ serialize()

void gem5::EtherSwitch::Interface::serialize ( CheckpointOut cp) const

Serialize an object.

Output an object's state into the current checkpoint section.

cpCheckpoint state

Implements gem5::Serializable.

Definition at line 276 of file


◆ switchingDelay()

Tick gem5::EtherSwitch::Interface::switchingDelay ( )

Definition at line 202 of file

References gem5::Random::random(), and gem5::random_mt.

◆ transmit()

void gem5::EtherSwitch::Interface::transmit ( )

Definition at line 181 of file

References gem5::curTick(), DPRINTF, and gem5::sim_clock::as_int::ns.

Referenced by Interface().

◆ unserialize()

void gem5::EtherSwitch::Interface::unserialize ( CheckpointIn cp)

Unserialize an object.

Read an object's state from the current checkpoint section.

cpCheckpoint state

Implements gem5::Serializable.

Definition at line 289 of file


Member Data Documentation

◆ delayVar

const Tick gem5::EtherSwitch::Interface::delayVar

Definition at line 96 of file etherswitch.hh.

◆ interfaceId

const unsigned gem5::EtherSwitch::Interface::interfaceId

Definition at line 97 of file etherswitch.hh.

◆ outputFifo

PortFifo gem5::EtherSwitch::Interface::outputFifo

output fifo at each interface

Definition at line 173 of file etherswitch.hh.

◆ parent

EtherSwitch* gem5::EtherSwitch::Interface::parent

Definition at line 99 of file etherswitch.hh.

◆ switchDelay

const Tick gem5::EtherSwitch::Interface::switchDelay

Definition at line 95 of file etherswitch.hh.

◆ ticksPerByte

const double gem5::EtherSwitch::Interface::ticksPerByte

Definition at line 94 of file etherswitch.hh.

◆ txEvent

EventFunctionWrapper gem5::EtherSwitch::Interface::txEvent

Definition at line 175 of file etherswitch.hh.

The documentation for this class was generated from the following files:

Generated on Tue Dec 21 2021 11:35:00 for gem5 by doxygen 1.8.17