A switch comprising: an input port (102a-c) to receive an adaptive data packet and an associated destination local identifier, DLID, to indicate a destination node for the adaptive data packet to be sent to that destination node; route lookup circuitry (106a-c) coupled to the input port (102a-c), the route lookup circuitry (106a-c) to: determine a first plurality of output ports (104a-c) that are available to send the adaptive data packet to the destination node; and select a second plurality of output ports (104a-c) from the first plurality of output ports (104a-c) based on respective congestion levels associated with individual output ports (104a-c) of the first plurality of output ports (104a-c); an input queue (108a-c) coupled to the route lookup circuitry (106a-c), the input queue (108a-c) to buffer the adaptive data packet after the selection of the second plurality of output ports (104a-c); route selection circuitry (110a-c) coupled to the input queue (108a-c), the route selection circuitry (110a-c) to select, after the adaptive data packet is buffered in the input queue (108a-c), an output port to which to send the adaptive data packet, from the second plurality of output ports (104a-c), based on updated congestion levels associated with the second plurality of output ports (104a-c); and crossbar circuitry coupled to the route selection circuitry (110a-c) to route the adaptive data packet from the input queue (108a-c) to the output port selected from the second plurality of output ports (104a-c); wherein the adaptive data packet is to be adaptively routed to a destination output port (104a-c) by the switch based on the respective congestion levels associated with the output ports (104a-c) of the first set of output ports (104a-c); and wherein the updated congestion levels are different than the respective congestion levels, thereby allowing the switch to use most up-to-date congestion information and adapt to any changes in congestion that occur while the adaptive data packet is buffered in the input queue (108a-c). an input port (102a-c) to receive an adaptive data packet and an associated destination local identifier, DLID, to indicate a destination node for the adaptive data packet to be sent to that destination node; route lookup circuitry (106a-c) coupled to the input port (102a-c), the route lookup circuitry (106a-c) to: determine a first plurality of output ports (104a-c) that are available to send the adaptive data packet to the destination node; and select a second plurality of output ports (104a-c) from the first plurality of output ports (104a-c) based on respective congestion levels associated with individual output ports (104a-c) of the first plurality of output ports (104a-c); determine a first plurality of output ports (104a-c) that are available to send the adaptive data packet to the destination node; and select a second plurality of output ports (104a-c) from the first plurality of output ports (104a-c) based on respective congestion levels associated with individual output ports (104a-c) of the first plurality of output ports (104a-c); an input queue (108a-c) coupled to the route lookup circuitry (106a-c), the input queue (108a-c) to buffer the adaptive data packet after the selection of the second plurality of output ports (104a-c); route selection circuitry (110a-c) coupled to the input queue (108a-c), the route selection circuitry (110a-c) to select, after the adaptive data packet is buffered in the input queue (108a-c), an output port to which to send the adaptive data packet, from the second plurality of output ports (104a-c), based on updated congestion levels associated with the second plurality of output ports (104a-c); and crossbar circuitry coupled to the route selection circuitry (110a-c) to route the adaptive data packet from the input queue (108a-c) to the output port selected from the second plurality of output ports (104a-c); wherein the adaptive data packet is to be adaptively routed to a destination output port (104a-c) by the switch based on the respective congestion levels associated with the output ports (104a-c) of the first set of output ports (104a-c); and wherein the updated congestion levels are different than the respective congestion levels, thereby allowing the switch to use most up-to-date congestion information and adapt to any changes in congestion that occur while the adaptive data packet is buffered in the input queue (108a-c).