fixed bug in attaching nics to hosts, changed documentation format and generator (buggy but usable)
This commit is contained in:
@@ -1,11 +1,95 @@
|
||||
# network/network_nic.h
|
||||
|
||||
## class NetworkNic — public interface
|
||||
|
||||
### `virtual void recv_pkt(Packet &pkt, PortId ingress) override;`
|
||||
### `void attach_host(Host* host) noexcept;`
|
||||
### `void detach_host(Host* host) noexcept;`
|
||||
### `void set_status(NodeStatus s, Time new_latency = Time(0)) noexcept;`
|
||||
### `const NicTelemetry &telemetry() const noexcept { ... }`
|
||||
### `void set_port_blacklisted(PortId port, bool blacklisted) noexcept;`
|
||||
### `bool is_port_blacklisted(PortId port) const noexcept;`
|
||||
## `NicSchedulingWeights::NetworkNic::NetworkNic`
|
||||
`NetworkNic(Simulator *const sim, NodeId id, uint16_t total_ports, SwitchBuffer *const buf, Time nic_latency, Bytes mice_elephant_threshold, PacketSeq ooo_threshold, CCType cc_type, LBType lb_type, Bytes cc_init_cwnd, Bytes cc_max_cwnd, const NicSchedulingWeights &schedw) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::enqueue_packet`
|
||||
`void enqueue_packet(PortId port, QClass cls, Packet pkt) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::is_elephant`
|
||||
`bool is_elephant(Bytes sz) const noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::lookup_rtt_and_erase`
|
||||
`bool lookup_rtt_and_erase(const Packet &ack_like, Time now, Time &out_rtt) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::make_ack_packet`
|
||||
`Packet make_ack_packet(const Packet &rx_data, PortId ingress) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::make_data_packet`
|
||||
`Packet make_data_packet(NodeId dst, PortId out_port, FlowPriority prio, FlowId fid, PacketSeq seq, Bytes payload) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::make_nack_packet`
|
||||
`Packet make_nack_packet(NodeId peer, FlowId flow, PacketSeq miss, FlowPriority prio, PortId ingress) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::make_trim_back_response`
|
||||
`Packet make_trim_back_response(const Packet &trim, PortId ingress) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::pick_next_qclass`
|
||||
`bool pick_next_qclass(const PortQueues &pq, QClass &out_cls) const noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::pick_src_port_for_flow`
|
||||
`PortId pick_src_port_for_flow(NodeId dst) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::port_drain_task`
|
||||
`void port_drain_task(PortId port) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::record_tx_timestamp`
|
||||
`void record_tx_timestamp(const Packet &pkt) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::schedule_ack`
|
||||
`void schedule_ack(const Packet &rx_data, PortId ingress) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::schedule_nack`
|
||||
`void schedule_nack(NodeId peer, FlowId flow, PacketSeq missing_seq, FlowPriority prio, PortId ingress) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::schedule_port_if_needed`
|
||||
`void schedule_port_if_needed(PortId port) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::schedule_trim_back_response`
|
||||
`void schedule_trim_back_response(const Packet &trim, PortId ingress) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::start_tx_multicast`
|
||||
`void start_tx_multicast(PacketGroups gmask, Bytes size, FlowPriority prio)`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::start_tx_unicast`
|
||||
`void start_tx_unicast(NodeId dst, Bytes size, FlowPriority prio)`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::try_send_one`
|
||||
`bool try_send_one(PortId port, QClass cls) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::PortQueues::txkey`
|
||||
`static inline std::uint64_t txkey(FlowId f, PacketSeq s) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::attach_host`
|
||||
`void attach_host(Host *host) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::detach_host`
|
||||
`void detach_host(Host *host) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::is_port_blacklisted`
|
||||
`bool is_port_blacklisted(PortId port) const noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::recv_pkt`
|
||||
`virtual void recv_pkt(Packet &pkt, PortId ingress) override`
|
||||
## `NicSchedulingWeights::NetworkNic::send_flow`
|
||||
`void send_flow(NodeId dst, Bytes size, FlowPriority desired = FlowPriority::AUTO)`
|
||||
## `NicSchedulingWeights::NetworkNic::send_flow`
|
||||
`void send_flow(PacketGroups group_mask, Bytes size, FlowPriority desired = FlowPriority::AUTO)`
|
||||
## `NicSchedulingWeights::NetworkNic::set_port_blacklisted`
|
||||
`void set_port_blacklisted(PortId port, bool blacklisted) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::set_status`
|
||||
`void set_status(NodeStatus s, Time new_latency = Time(0)) noexcept`
|
||||
## `NicSchedulingWeights::NetworkNic::telemetry`
|
||||
`const NicTelemetry &telemetry() const noexcept`
|
||||
## `enqueue_packet`
|
||||
`void enqueue_packet(PortId port, QClass cls, Packet pkt) noexcept;`
|
||||
## `lookup_rtt_and_erase`
|
||||
`bool lookup_rtt_and_erase(const Packet &ack_like, Time now, Time &out_rtt) noexcept;`
|
||||
## `make_ack_packet`
|
||||
`Packet make_ack_packet(const Packet &rx_data, PortId ingress) noexcept;`
|
||||
## `make_data_packet`
|
||||
`Packet make_data_packet(NodeId dst, PortId out_port, FlowPriority prio, FlowId fid, PacketSeq seq, Bytes payload) noexcept;`
|
||||
## `make_nack_packet`
|
||||
`Packet make_nack_packet(NodeId peer, FlowId flow, PacketSeq miss, FlowPriority prio, PortId ingress) noexcept;`
|
||||
## `make_trim_back_response`
|
||||
`Packet make_trim_back_response(const Packet &trim, PortId ingress) noexcept;`
|
||||
## `pick_src_port_for_flow`
|
||||
`PortId pick_src_port_for_flow(NodeId dst) noexcept;`
|
||||
## `port_drain_task`
|
||||
`void port_drain_task(PortId port) noexcept;`
|
||||
## `record_tx_timestamp`
|
||||
`void record_tx_timestamp(const Packet &pkt) noexcept;`
|
||||
## `schedule_ack`
|
||||
`void schedule_ack(const Packet &rx_data, PortId ingress) noexcept;`
|
||||
## `schedule_nack`
|
||||
`void schedule_nack(NodeId peer, FlowId flow, PacketSeq missing_seq, FlowPriority prio, PortId ingress) noexcept;`
|
||||
## `schedule_port_if_needed`
|
||||
`void schedule_port_if_needed(PortId port) noexcept;`
|
||||
## `schedule_trim_back_response`
|
||||
`void schedule_trim_back_response(const Packet &trim, PortId ingress) noexcept;`
|
||||
## `set_port_blacklisted`
|
||||
`void set_port_blacklisted(PortId port, bool blacklisted) noexcept;`
|
||||
## `start_tx_multicast`
|
||||
`void start_tx_multicast(PacketGroups gmask, Bytes size, FlowPriority prio);`
|
||||
## `start_tx_unicast`
|
||||
`void start_tx_unicast(NodeId dst, Bytes size, FlowPriority prio);`
|
||||
## `try_send_one`
|
||||
`bool try_send_one(PortId port, QClass cls) noexcept;`
|
||||
## `txkey`
|
||||
`static inline std::uint64_t txkey(FlowId f, PacketSeq s) noexcept;`
|
||||
Reference in New Issue
Block a user