A method of re-ordering packets received via a hybrid automatic repeat request, HARQ, transmission on a number of ARQ channels, wherein the ARQ channels are sequentially interlaced, wherein each packet is coded and partitioned into a number of subpackets (SP0, SP1, SP2) composed of a first subpacket and other subpackets (SP1,SP2) and transmitted sequentially on a respective ARQ channel, wherein each subpacket (SP0, SP1, SP2) contains sufficient information to allow a receiving station to decode the subpacket (SP0, SP1, SP2) and recover the packet, wherein the first subpacket is transmitted first followed by the other subpackets (SP1, SP2) in sequential order, wherein each of the other subpackets is transmitted if the previously transmitted subpacket is decoded in error and consequently the corresponding packet cannot be recovered from the previously transmitted subpacket, the method comprising: receiving a first subpacket for an ARQ channel on a start frame; recovering a packet by decoding the first subpacket for the ARQ channel; determining upon recovering the packet that no earlier packet is pending on another ARQ channel,if either one of the following two conditions is met: a) determining a designated frame by subtracting the number of ARQ channels from the start frame; and determining that no earlier packet is pending on another ARQ channel if a subpacket was decoded for each ARQ channel on or after the designated frame; or b) determining a time window starting on the start frame and having a duration determined by multiplying the number of ARQ channels by the number of subpackets for each packet minus one; and determining that no earlier packet is pending on another ARQ channel if no subpacket was decoded for each ARQ channel in the time window; forwarding the recovered packet for the ARQ channel to upper layers upon determining that no earlier packet is pending on another ARQ channel; and storing the recovered packet for the ARQ channel upon determining that at least one earlier packet is pending on another ARQ channel. receiving a first subpacket for an ARQ channel on a start frame; recovering a packet by decoding the first subpacket for the ARQ channel; determining upon recovering the packet that no earlier packet is pending on another ARQ channel,if either one of the following two conditions is met: a) determining a designated frame by subtracting the number of ARQ channels from the start frame; and determining that no earlier packet is pending on another ARQ channel if a subpacket was decoded for each ARQ channel on or after the designated frame; or b) determining a time window starting on the start frame and having a duration determined by multiplying the number of ARQ channels by the number of subpackets for each packet minus one; and determining that no earlier packet is pending on another ARQ channel if no subpacket was decoded for each ARQ channel in the time window; a) determining a designated frame by subtracting the number of ARQ channels from the start frame; and determining that no earlier packet is pending on another ARQ channel if a subpacket was decoded for each ARQ channel on or after the designated frame; or b) determining a time window starting on the start frame and having a duration determined by multiplying the number of ARQ channels by the number of subpackets for each packet minus one; and determining that no earlier packet is pending on another ARQ channel if no subpacket was decoded for each ARQ channel in the time window; forwarding the recovered packet for the ARQ channel to upper layers upon determining that no earlier packet is pending on another ARQ channel; and storing the recovered packet for the ARQ channel upon determining that at least one earlier packet is pending on another ARQ channel.