An apparatus, comprising: a memory; and a processor operatively coupled to the memory, the processor is configured to: send a data packet from an edge device to a switch module from a plurality of switch modules in a multi-stage switch, receive, at the edge device, a first flow control signal including a severity value when an available capacity of an output queue of the switch module meets a threshold, the severity value indicating a level of congestion at the output queue, wherein the first flow control signal includes a priority identifier giving a priority to the first flow control signal higher than a priority of a plurality of data signals to be transmitted in the multi-stage switch, determine, based on a source identifier of the first flow control signal, an identifier of a source peripheral processing device that originated the data packet, and send, from the edge device to the source peripheral processing device and based on the identifier, a second flow control signal such that the source peripheral processing device modifies data transmission to the edge device to reduce the level of congestion at the output queue. a memory; and a processor operatively coupled to the memory, the processor is configured to: send a data packet from an edge device to a switch module from a plurality of switch modules in a multi-stage switch, receive, at the edge device, a first flow control signal including a severity value when an available capacity of an output queue of the switch module meets a threshold, the severity value indicating a level of congestion at the output queue, wherein the first flow control signal includes a priority identifier giving a priority to the first flow control signal higher than a priority of a plurality of data signals to be transmitted in the multi-stage switch, determine, based on a source identifier of the first flow control signal, an identifier of a source peripheral processing device that originated the data packet, and send, from the edge device to the source peripheral processing device and based on the identifier, a second flow control signal such that the source peripheral processing device modifies data transmission to the edge device to reduce the level of congestion at the output queue. send a data packet from an edge device to a switch module from a plurality of switch modules in a multi-stage switch, receive, at the edge device, a first flow control signal including a severity value when an available capacity of an output queue of the switch module meets a threshold, the severity value indicating a level of congestion at the output queue, wherein the first flow control signal includes a priority identifier giving a priority to the first flow control signal higher than a priority of a plurality of data signals to be transmitted in the multi-stage switch, determine, based on a source identifier of the first flow control signal, an identifier of a source peripheral processing device that originated the data packet, and send, from the edge device to the source peripheral processing device and based on the identifier, a second flow control signal such that the source peripheral processing device modifies data transmission to the edge device to reduce the level of congestion at the output queue.