# network/nic/congestion_control.h
## `CongestionControl::CongestionControl`
`explicit CongestionControl(Bytes init_cwnd, Bytes max_cwnd) noexcept`
## `CongestionControl::cwnd`
`Bytes cwnd() const noexcept`
## `CongestionControl::cwnd_max`
`Bytes cwnd_max() const noexcept`
## `CongestionControl::is_allowed_to_send`
`virtual bool is_allowed_to_send(Bytes bytes_outstanding, Bytes next_bytes) const noexcept`
## `CongestionControl::update`
`virtual void update(const Packet &pkt, Time rtt) noexcept = 0`
## `CongestionControl::~CongestionControl`
`virtual ~CongestionControl() = default`
## `DCQCN::DCQCN`
`explicit DCQCN(Bytes init_cwnd, Bytes max_cwnd) noexcept`
## `DCQCN::update`
`virtual void update(const Packet &pkt, Time rtt) noexcept override`
## `NSCC::NSCC`
`explicit NSCC(Bytes init_cwnd, Bytes max_cwnd) noexcept`
## `NSCC::update`
`virtual void update(const Packet &pkt, Time rtt) noexcept override`